mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-04-20 14:56:17 -04:00
Merge branch 'main' into fix/token-generator
This commit is contained in:
commit
8a49f233a0
27 changed files with 1008 additions and 358 deletions
34
.github/ISSUE_TEMPLATE/bug-report.md
vendored
34
.github/ISSUE_TEMPLATE/bug-report.md
vendored
|
@ -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
48
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal 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
|
56
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
56
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
name: 🚀 New feature proposal
|
||||||
|
description: Propose a new feature to be added to 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
|
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
|
@ -15,7 +15,7 @@ jobs:
|
||||||
- run: corepack enable
|
- run: corepack enable
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 20
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
|
|
69
.github/workflows/codeql-analysis.yml
vendored
69
.github/workflows/codeql-analysis.yml
vendored
|
@ -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
|
|
2
.github/workflows/docker-nightly-release.yml
vendored
2
.github/workflows/docker-nightly-release.yml
vendored
|
@ -32,7 +32,7 @@ jobs:
|
||||||
- run: corepack enable
|
- run: corepack enable
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 20
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
|
|
2
.github/workflows/e2e-tests.yml
vendored
2
.github/workflows/e2e-tests.yml
vendored
|
@ -18,7 +18,7 @@ jobs:
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 20
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Get Playwright version
|
- name: Get Playwright version
|
||||||
|
|
2
.github/workflows/releases.yml
vendored
2
.github/workflows/releases.yml
vendored
|
@ -61,7 +61,7 @@ jobs:
|
||||||
|
|
||||||
- uses: actions/setup-node@v3
|
- uses: actions/setup-node@v3
|
||||||
with:
|
with:
|
||||||
node-version: 16
|
node-version: 20
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
|
|
34
CHANGELOG.md
34
CHANGELOG.md
|
@ -2,6 +2,40 @@
|
||||||
|
|
||||||
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.
|
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.10-33e5294
|
||||||
|
|
||||||
|
### 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**: improved issues template (2852c30)
|
||||||
|
- **issues**: improved bug issue template (#1046) (a799234)
|
||||||
|
|
||||||
## Version 2023.12.21-5ed3693
|
## Version 2023.12.21-5ed3693
|
||||||
|
|
||||||
### Features
|
### Features
|
||||||
|
|
31
components.d.ts
vendored
31
components.d.ts
vendored
|
@ -12,6 +12,7 @@ declare module '@vue/runtime-core' {
|
||||||
'404.page': typeof import('./src/pages/404.page.vue')['default']
|
'404.page': typeof import('./src/pages/404.page.vue')['default']
|
||||||
About: typeof import('./src/pages/About.vue')['default']
|
About: typeof import('./src/pages/About.vue')['default']
|
||||||
App: typeof import('./src/App.vue')['default']
|
App: typeof import('./src/App.vue')['default']
|
||||||
|
AsciiTextDrawer: typeof import('./src/tools/ascii-text-drawer/ascii-text-drawer.vue')['default']
|
||||||
'Base.layout': typeof import('./src/layouts/base.layout.vue')['default']
|
'Base.layout': typeof import('./src/layouts/base.layout.vue')['default']
|
||||||
Base64FileConverter: typeof import('./src/tools/base64-file-converter/base64-file-converter.vue')['default']
|
Base64FileConverter: typeof import('./src/tools/base64-file-converter/base64-file-converter.vue')['default']
|
||||||
Base64StringConverter: typeof import('./src/tools/base64-string-converter/base64-string-converter.vue')['default']
|
Base64StringConverter: typeof import('./src/tools/base64-string-converter/base64-string-converter.vue')['default']
|
||||||
|
@ -88,28 +89,17 @@ declare module '@vue/runtime-core' {
|
||||||
HttpStatusCodes: typeof import('./src/tools/http-status-codes/http-status-codes.vue')['default']
|
HttpStatusCodes: typeof import('./src/tools/http-status-codes/http-status-codes.vue')['default']
|
||||||
IbanValidatorAndParser: typeof import('./src/tools/iban-validator-and-parser/iban-validator-and-parser.vue')['default']
|
IbanValidatorAndParser: typeof import('./src/tools/iban-validator-and-parser/iban-validator-and-parser.vue')['default']
|
||||||
'IconMdi:brushVariant': typeof import('~icons/mdi/brush-variant')['default']
|
'IconMdi:brushVariant': typeof import('~icons/mdi/brush-variant')['default']
|
||||||
'IconMdi:contentCopy': typeof import('~icons/mdi/content-copy')['default']
|
|
||||||
'IconMdi:kettleSteamOutline': typeof import('~icons/mdi/kettle-steam-outline')['default']
|
'IconMdi:kettleSteamOutline': typeof import('~icons/mdi/kettle-steam-outline')['default']
|
||||||
IconMdiArrowDown: typeof import('~icons/mdi/arrow-down')['default']
|
|
||||||
IconMdiArrowRightBottom: typeof import('~icons/mdi/arrow-right-bottom')['default']
|
|
||||||
IconMdiCamera: typeof import('~icons/mdi/camera')['default']
|
|
||||||
IconMdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
|
IconMdiChevronDown: typeof import('~icons/mdi/chevron-down')['default']
|
||||||
IconMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default']
|
IconMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default']
|
||||||
IconMdiClose: typeof import('~icons/mdi/close')['default']
|
IconMdiClose: typeof import('~icons/mdi/close')['default']
|
||||||
IconMdiContentCopy: typeof import('~icons/mdi/content-copy')['default']
|
IconMdiContentCopy: typeof import('~icons/mdi/content-copy')['default']
|
||||||
IconMdiDeleteOutline: typeof import('~icons/mdi/delete-outline')['default']
|
|
||||||
IconMdiDownload: typeof import('~icons/mdi/download')['default']
|
|
||||||
IconMdiEye: typeof import('~icons/mdi/eye')['default']
|
IconMdiEye: typeof import('~icons/mdi/eye')['default']
|
||||||
IconMdiEyeOff: typeof import('~icons/mdi/eye-off')['default']
|
IconMdiEyeOff: typeof import('~icons/mdi/eye-off')['default']
|
||||||
IconMdiHeart: typeof import('~icons/mdi/heart')['default']
|
IconMdiHeart: typeof import('~icons/mdi/heart')['default']
|
||||||
IconMdiPause: typeof import('~icons/mdi/pause')['default']
|
|
||||||
IconMdiPlay: typeof import('~icons/mdi/play')['default']
|
|
||||||
IconMdiRecord: typeof import('~icons/mdi/record')['default']
|
|
||||||
IconMdiRefresh: typeof import('~icons/mdi/refresh')['default']
|
|
||||||
IconMdiSearch: typeof import('~icons/mdi/search')['default']
|
IconMdiSearch: typeof import('~icons/mdi/search')['default']
|
||||||
IconMdiTranslate: typeof import('~icons/mdi/translate')['default']
|
IconMdiTranslate: typeof import('~icons/mdi/translate')['default']
|
||||||
IconMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default']
|
IconMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default']
|
||||||
IconMdiVideo: typeof import('~icons/mdi/video')['default']
|
|
||||||
InputCopyable: typeof import('./src/components/InputCopyable.vue')['default']
|
InputCopyable: typeof import('./src/components/InputCopyable.vue')['default']
|
||||||
IntegerBaseConverter: typeof import('./src/tools/integer-base-converter/integer-base-converter.vue')['default']
|
IntegerBaseConverter: typeof import('./src/tools/integer-base-converter/integer-base-converter.vue')['default']
|
||||||
Ipv4AddressConverter: typeof import('./src/tools/ipv4-address-converter/ipv4-address-converter.vue')['default']
|
Ipv4AddressConverter: typeof import('./src/tools/ipv4-address-converter/ipv4-address-converter.vue')['default']
|
||||||
|
@ -136,39 +126,25 @@ declare module '@vue/runtime-core' {
|
||||||
MenuLayout: typeof import('./src/components/MenuLayout.vue')['default']
|
MenuLayout: typeof import('./src/components/MenuLayout.vue')['default']
|
||||||
MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default']
|
MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default']
|
||||||
MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default']
|
MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default']
|
||||||
NAlert: typeof import('naive-ui')['NAlert']
|
|
||||||
NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default']
|
NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default']
|
||||||
NCheckbox: typeof import('naive-ui')['NCheckbox']
|
|
||||||
NCode: typeof import('naive-ui')['NCode']
|
NCode: typeof import('naive-ui')['NCode']
|
||||||
NCollapseTransition: typeof import('naive-ui')['NCollapseTransition']
|
NCollapseTransition: typeof import('naive-ui')['NCollapseTransition']
|
||||||
NColorPicker: typeof import('naive-ui')['NColorPicker']
|
|
||||||
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
|
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
|
||||||
NDatePicker: typeof import('naive-ui')['NDatePicker']
|
|
||||||
NDivider: typeof import('naive-ui')['NDivider']
|
NDivider: typeof import('naive-ui')['NDivider']
|
||||||
NDynamicInput: typeof import('naive-ui')['NDynamicInput']
|
|
||||||
NEllipsis: typeof import('naive-ui')['NEllipsis']
|
NEllipsis: typeof import('naive-ui')['NEllipsis']
|
||||||
NForm: typeof import('naive-ui')['NForm']
|
|
||||||
NFormItem: typeof import('naive-ui')['NFormItem']
|
NFormItem: typeof import('naive-ui')['NFormItem']
|
||||||
NGi: typeof import('naive-ui')['NGi']
|
NGi: typeof import('naive-ui')['NGi']
|
||||||
NGrid: typeof import('naive-ui')['NGrid']
|
NGrid: typeof import('naive-ui')['NGrid']
|
||||||
NH1: typeof import('naive-ui')['NH1']
|
NH1: typeof import('naive-ui')['NH1']
|
||||||
NH2: typeof import('naive-ui')['NH2']
|
|
||||||
NH3: typeof import('naive-ui')['NH3']
|
NH3: typeof import('naive-ui')['NH3']
|
||||||
NIcon: typeof import('naive-ui')['NIcon']
|
NIcon: typeof import('naive-ui')['NIcon']
|
||||||
NImage: typeof import('naive-ui')['NImage']
|
|
||||||
NInputGroup: typeof import('naive-ui')['NInputGroup']
|
|
||||||
NInputGroupLabel: typeof import('naive-ui')['NInputGroupLabel']
|
|
||||||
NInputNumber: typeof import('naive-ui')['NInputNumber']
|
NInputNumber: typeof import('naive-ui')['NInputNumber']
|
||||||
|
NLabel: typeof import('naive-ui')['NLabel']
|
||||||
NLayout: typeof import('naive-ui')['NLayout']
|
NLayout: typeof import('naive-ui')['NLayout']
|
||||||
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
|
NLayoutSider: typeof import('naive-ui')['NLayoutSider']
|
||||||
NMenu: typeof import('naive-ui')['NMenu']
|
NMenu: typeof import('naive-ui')['NMenu']
|
||||||
NProgress: typeof import('naive-ui')['NProgress']
|
|
||||||
NScrollbar: typeof import('naive-ui')['NScrollbar']
|
NScrollbar: typeof import('naive-ui')['NScrollbar']
|
||||||
NSlider: typeof import('naive-ui')['NSlider']
|
NSpin: typeof import('naive-ui')['NSpin']
|
||||||
NStatistic: typeof import('naive-ui')['NStatistic']
|
|
||||||
NSwitch: typeof import('naive-ui')['NSwitch']
|
|
||||||
NTable: typeof import('naive-ui')['NTable']
|
|
||||||
NTag: typeof import('naive-ui')['NTag']
|
|
||||||
NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default']
|
NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default']
|
||||||
OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default']
|
OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default']
|
||||||
PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default']
|
PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default']
|
||||||
|
@ -183,6 +159,7 @@ declare module '@vue/runtime-core' {
|
||||||
RouterLink: typeof import('vue-router')['RouterLink']
|
RouterLink: typeof import('vue-router')['RouterLink']
|
||||||
RouterView: typeof import('vue-router')['RouterView']
|
RouterView: typeof import('vue-router')['RouterView']
|
||||||
RsaKeyPairGenerator: typeof import('./src/tools/rsa-key-pair-generator/rsa-key-pair-generator.vue')['default']
|
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']
|
SlugifyString: typeof import('./src/tools/slugify-string/slugify-string.vue')['default']
|
||||||
SpanCopyable: typeof import('./src/components/SpanCopyable.vue')['default']
|
SpanCopyable: typeof import('./src/components/SpanCopyable.vue')['default']
|
||||||
SqlPrettify: typeof import('./src/tools/sql-prettify/sql-prettify.vue')['default']
|
SqlPrettify: typeof import('./src/tools/sql-prettify/sql-prettify.vue')['default']
|
||||||
|
|
455
locales/de.yml
Normal file
455
locales/de.yml
Normal 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.
|
397
locales/en.yml
397
locales/en.yml
|
@ -1,422 +1,393 @@
|
||||||
'404':
|
|
||||||
notFound: 404 Not Found
|
|
||||||
sorry: Sorry, this page does not seem to exist
|
|
||||||
maybe: Maybe the cache is doing tricky things, try force-refreshing?
|
|
||||||
backHome: Back home
|
|
||||||
home:
|
home:
|
||||||
categories:
|
categories:
|
||||||
newestTools: Newest tools
|
newestTools: Newest tools
|
||||||
favoriteTools: Your favorite tools
|
favoriteTools: 'Your favorite tools'
|
||||||
allTools: All the tools
|
allTools: 'All the tools'
|
||||||
subtitle: Handy tools for developers
|
subtitle: 'Handy tools for developers'
|
||||||
toggleMenu: Toggle menu
|
toggleMenu: 'Toggle menu'
|
||||||
home: Home
|
home: Home
|
||||||
uiLib: UI Lib
|
uiLib: 'UI Lib'
|
||||||
support: Support IT Tools development
|
support: 'Support IT-Tools development'
|
||||||
buyMeACoffee: Buy me a coffee
|
buyMeACoffee: 'Buy me a coffee'
|
||||||
follow:
|
follow:
|
||||||
title: You like it-tools?
|
title: 'You like it-tools?'
|
||||||
p1: Give us a star on
|
p1: 'Give us a star on'
|
||||||
githubRepository: IT-Tools GitHub repository
|
githubRepository: 'IT-Tools GitHub repository'
|
||||||
p2: or follow us on
|
p2: 'or follow us on'
|
||||||
twitterAccount: IT-Tools Twitter account
|
twitterAccount: 'IT-Tools Twitter account'
|
||||||
thankYou: Thank you !
|
thankYou: 'Thank you!'
|
||||||
nav:
|
nav:
|
||||||
github: GitHub repository
|
github: 'GitHub repository'
|
||||||
githubRepository: IT-Tools GitHub repository
|
githubRepository: 'IT-Tools GitHub repository'
|
||||||
twitter: Twitter account
|
twitter: 'Twitter account'
|
||||||
twitterAccount: IT Tools Twitter account
|
twitterAccount: 'IT Tools Twitter account'
|
||||||
about: About IT-Tools
|
about: 'About IT-Tools'
|
||||||
aboutLabel: About
|
aboutLabel: 'About'
|
||||||
darkMode: Dark mode
|
darkMode: 'Dark mode'
|
||||||
lightMode: Light mode
|
lightMode: 'Light mode'
|
||||||
mode: Toggle dark/light mode
|
mode: 'Toggle dark/light mode'
|
||||||
about:
|
about:
|
||||||
content: >
|
content: >
|
||||||
# About IT-Tools
|
# About IT-Tools
|
||||||
|
|
||||||
This wonderful website, made with ❤ by [Corentin
|
This wonderful website, made with ❤ by [Corentin Thomasset](https://github.com/CorentinTh) , aggregates useful tools for developer and people working in IT. If you find it useful, please feel free to share it to people you think may find it useful too and don't forget to bookmark it in your shortcut bar!
|
||||||
Thomasset](https://github.com/CorentinTh) , aggregates useful tools for
|
|
||||||
developer and people working in IT. If you find it useful, please feel free
|
|
||||||
to share it to people you think may find it useful too and don't forget to
|
|
||||||
bookmark it in your shortcut bar!
|
|
||||||
|
|
||||||
IT Tools is open-source (under the MIT license) and free, and will always
|
IT Tools is open-source (under the MIT license) and free, and will always be, but it costs me money to host and renew the domain name. If you want to support my work, and encourage me to add more tools, please consider supporting by [sponsoring me](https://www.buymeacoffee.com/cthmsst).
|
||||||
be, but it costs me money to host and renew the domain name. If you want to
|
|
||||||
support my work, and encourage me to add more tools, please consider
|
|
||||||
supporting by [sponsoring me](https://www.buymeacoffee.com/cthmsst).
|
|
||||||
|
|
||||||
## Technologies
|
## Technologies
|
||||||
|
|
||||||
IT Tools is made in Vue.js (Vue 3) with the the Naive UI component library
|
IT Tools is made in Vue.js (Vue 3) with the the Naive UI component library and is hosted and continuously deployed by Vercel. Third-party open-source libraries are used in some tools, you may find the complete list in the [package.json](https://github.com/CorentinTh/it-tools/blob/main/package.json) file of the repository.
|
||||||
and is hosted and continuously deployed by Vercel. Third-party open-source
|
|
||||||
libraries are used in some tools, you may find the complete list in the
|
|
||||||
[package.json](https://github.com/CorentinTh/it-tools/blob/main/package.json)
|
|
||||||
file of the repository.
|
|
||||||
|
|
||||||
## Found a bug? A tool is missing?
|
## Found a bug? A tool is missing?
|
||||||
|
|
||||||
If you need a tool that is currently not present here, and you think can be
|
If you need a tool that is currently not present here, and you think can be useful, you are welcome to submit a feature request in the [issues section](https://github.com/CorentinTh/it-tools/issues/new/choose) in the GitHub repository.
|
||||||
useful, you are welcome to submit a feature request in the [issues
|
|
||||||
section](https://github.com/CorentinTh/it-tools/issues/new/choose) in the
|
|
||||||
GitHub repository.
|
|
||||||
|
|
||||||
And if you found a bug, or something doesn't work as expected, please file a
|
And if you found a bug, or something doesn't work as expected, please file a bug report in the [issues section](https://github.com/CorentinTh/it-tools/issues/new/choose) in the GitHub repository.
|
||||||
bug report in the [issues
|
|
||||||
section](https://github.com/CorentinTh/it-tools/issues/new/choose) in the
|
404:
|
||||||
GitHub repository.
|
notFound: '404 Not Found'
|
||||||
|
sorry: 'Sorry, this page does not seem to exist'
|
||||||
|
maybe: 'Maybe the cache is doing tricky things, try force-refreshing?'
|
||||||
|
backHome: 'Back home'
|
||||||
favoriteButton:
|
favoriteButton:
|
||||||
remove: Remove from favorites
|
remove: 'Remove from favorites'
|
||||||
add: Add to favorites
|
add: 'Add to favorites'
|
||||||
toolCard:
|
toolCard:
|
||||||
new: New
|
new: New
|
||||||
search:
|
search:
|
||||||
label: Search
|
label: Search
|
||||||
tools:
|
tools:
|
||||||
categories:
|
categories:
|
||||||
favorite-tools: Your favorite tools
|
favorite-tools: 'Your favorite tools'
|
||||||
crypto: Crypto
|
crypto: Crypto
|
||||||
converter: Converter
|
converter: Converter
|
||||||
web: Web
|
web: Web
|
||||||
images and videos: Images & Videos
|
images and videos: 'Images & Videos'
|
||||||
development: Development
|
development: Development
|
||||||
network: Network
|
network: Network
|
||||||
math: Math
|
math: Math
|
||||||
measurement: Measurement
|
measurement: Measurement
|
||||||
text: Text
|
text: Text
|
||||||
data: Data
|
data: Data
|
||||||
|
|
||||||
password-strength-analyser:
|
password-strength-analyser:
|
||||||
title: Password strength analyser
|
title: Password strength analyser
|
||||||
description: >-
|
description: Discover the strength of your password with this client-side-only password strength analyser and crack time estimation tool.
|
||||||
Discover the strength of your password with this client side only password
|
|
||||||
strength analyser and crack time estimation tool.
|
|
||||||
chronometer:
|
chronometer:
|
||||||
title: Chronometer
|
title: Chronometer
|
||||||
description: >-
|
description: Monitor the duration of a thing. Basically a chronometer with simple chronometer features.
|
||||||
Monitor the duration of a thing. Basically a chronometer with simple
|
|
||||||
chronometer features.
|
|
||||||
token-generator:
|
token-generator:
|
||||||
title: Token generator
|
title: Token generator
|
||||||
description: >-
|
description: Generate random string with the chars you want, uppercase or lowercase letters, numbers and/or symbols.
|
||||||
Generate random string with the chars you want, uppercase or lowercase
|
|
||||||
letters, numbers and/or symbols.
|
|
||||||
uppercase: Uppercase (ABC...)
|
uppercase: Uppercase (ABC...)
|
||||||
lowercase: Lowercase (abc...)
|
lowercase: Lowercase (abc...)
|
||||||
numbers: Numbers (123...)
|
numbers: Numbers (123...)
|
||||||
symbols: Symbols (!-;...)
|
symbols: Symbols (!-;...)
|
||||||
length: Length
|
length: Length
|
||||||
tokenPlaceholder: The token...
|
tokenPlaceholder: 'The token...'
|
||||||
copied: Token copied to the clipboard
|
copied: Token copied to the clipboard
|
||||||
button:
|
button:
|
||||||
copy: Copy
|
copy: Copy
|
||||||
refresh: Refresh
|
refresh: Refresh
|
||||||
count: Tokens to generate
|
|
||||||
percentage-calculator:
|
percentage-calculator:
|
||||||
title: Percentage calculator
|
title: Percentage calculator
|
||||||
description: >-
|
description: Easily calculate percentages from a value to another value, or from a percentage to a value.
|
||||||
Easily calculate percentages from a value to another value, or from a
|
|
||||||
percentage to a value.
|
|
||||||
svg-placeholder-generator:
|
svg-placeholder-generator:
|
||||||
title: SVG placeholder generator
|
title: SVG placeholder generator
|
||||||
description: Generate svg images to use as placeholder in your applications.
|
description: Generate svg images to use as a placeholder in your applications.
|
||||||
|
|
||||||
json-to-csv:
|
json-to-csv:
|
||||||
title: JSON to CSV
|
title: JSON to CSV
|
||||||
description: Convert JSON to CSV with automatic header detection.
|
description: Convert JSON to CSV with automatic header detection.
|
||||||
|
|
||||||
camera-recorder:
|
camera-recorder:
|
||||||
title: Camera recorder
|
title: Camera recorder
|
||||||
description: Take a picture or record a video from your webcam or camera.
|
description: Take a picture or record a video from your webcam or camera.
|
||||||
|
|
||||||
keycode-info:
|
keycode-info:
|
||||||
title: Keycode info
|
title: Keycode info
|
||||||
description: >-
|
description: Find the javascript keycode, code, location and modifiers of any pressed key.
|
||||||
Find the javascript keycode, code, location and modifiers of any pressed
|
|
||||||
key.
|
|
||||||
emoji-picker:
|
emoji-picker:
|
||||||
title: Emoji picker
|
title: Emoji picker
|
||||||
description: >-
|
description: Copy and paste emojis easily and get the unicode and code points value of each emoji.
|
||||||
Copy and paste emojis easily and get the unicode and code points value of
|
|
||||||
each emoji.
|
|
||||||
color-converter:
|
color-converter:
|
||||||
title: Color converter
|
title: Color converter
|
||||||
description: Convert color between the different formats (hex, rgb, hsl and css name)
|
description: Convert color between the different formats (hex, rgb, hsl and css name)
|
||||||
|
|
||||||
bcrypt:
|
bcrypt:
|
||||||
title: Bcrypt
|
title: Bcrypt
|
||||||
description: >-
|
description: Hash and compare text string using bcrypt. Bcrypt is a password-hashing function based on the Blowfish cipher.
|
||||||
Hash and compare text string using bcrypt. Bcrypt is a password-hashing
|
|
||||||
function based on the Blowfish cipher.
|
|
||||||
crontab-generator:
|
crontab-generator:
|
||||||
title: Crontab generator
|
title: Crontab generator
|
||||||
description: >-
|
description: Validate and generate crontab and get the human-readable description of the cron schedule.
|
||||||
Validate and generate crontab and get the human readable description of
|
|
||||||
the cron schedule.
|
|
||||||
http-status-codes:
|
http-status-codes:
|
||||||
title: HTTP status codes
|
title: HTTP status codes
|
||||||
description: The list of all HTTP status codes their name and their meaning.
|
description: The list of all HTTP status codes, their name, and their meaning.
|
||||||
|
|
||||||
sql-prettify:
|
sql-prettify:
|
||||||
title: SQL prettify and format
|
title: SQL prettify and format
|
||||||
description: >-
|
description: Format and prettify your SQL queries online (it supports various SQL dialects).
|
||||||
Format and prettify your SQL queries online (it supports various SQL
|
|
||||||
dialects).
|
|
||||||
benchmark-builder:
|
benchmark-builder:
|
||||||
title: Benchmark builder
|
title: Benchmark builder
|
||||||
description: >-
|
description: Easily compare execution time of tasks with this very simple online benchmark builder.
|
||||||
Easily compare execution time of tasks with this very simple online
|
|
||||||
benchmark builder.
|
|
||||||
git-memo:
|
git-memo:
|
||||||
title: Git cheatsheet
|
title: Git cheatsheet
|
||||||
description: >-
|
description: Git is a decentralized version management software. With this cheatsheet, you will have quick access to the most common git commands.
|
||||||
Git is a decentralized version management software. With this cheatsheet
|
|
||||||
you will have a quick access to the most common git commands.
|
|
||||||
slugify-string:
|
slugify-string:
|
||||||
title: Slugify string
|
title: Slugify string
|
||||||
description: Make a string url, filename and id safe.
|
description: Make a string url, filename and id safe.
|
||||||
|
|
||||||
encryption:
|
encryption:
|
||||||
title: Encrypt / decrypt text
|
title: Encrypt / decrypt text
|
||||||
description: >-
|
description: Encrypt clear text and decrypt ciphertext using crypto algorithms like AES, TripleDES, Rabbit or RC4.
|
||||||
Encrypt and decrypt text clear text using crypto algorithm like AES,
|
|
||||||
TripleDES, Rabbit or RC4.
|
|
||||||
random-port-generator:
|
random-port-generator:
|
||||||
title: Random port generator
|
title: Random port generator
|
||||||
description: >-
|
description: Generate random port numbers outside of the range of "known" ports (0-1023).
|
||||||
Generate random port numbers outside of the range of "known" ports
|
|
||||||
(0-1023).
|
|
||||||
yaml-prettify:
|
yaml-prettify:
|
||||||
title: YAML prettify and format
|
title: YAML prettify and format
|
||||||
description: Prettify your YAML string to a human friendly readable format.
|
description: Prettify your YAML string into a friendly, human-readable format.
|
||||||
|
|
||||||
eta-calculator:
|
eta-calculator:
|
||||||
title: ETA calculator
|
title: ETA calculator
|
||||||
description: >-
|
description: An ETA (Estimated Time of Arrival) calculator to determine the approximate end time of a task, for example, the end time and duration of a file download.
|
||||||
An ETA (Estimated Time of Arrival) calculator to know the approximate end
|
|
||||||
time of a task, for example the moment of ending of a download.
|
|
||||||
roman-numeral-converter:
|
roman-numeral-converter:
|
||||||
title: Roman numeral converter
|
title: Roman numeral converter
|
||||||
description: Convert Roman numerals to numbers and convert numbers to Roman numerals.
|
description: Convert Roman numerals to numbers and convert numbers to Roman numerals.
|
||||||
|
|
||||||
hmac-generator:
|
hmac-generator:
|
||||||
title: Hmac generator
|
title: Hmac generator
|
||||||
description: >-
|
description: Computes a hash-based message authentication code (HMAC) using a secret key and your favorite hashing function.
|
||||||
Computes a hash-based message authentication code (HMAC) using a secret
|
|
||||||
key and your favorite hashing function.
|
|
||||||
bip39-generator:
|
bip39-generator:
|
||||||
title: BIP39 passphrase generator
|
title: BIP39 passphrase generator
|
||||||
description: >-
|
description: Generate a BIP39 passphrase from an existing or random mnemonic, or get the mnemonic from the passphrase.
|
||||||
Generate BIP39 passphrase from existing or random mnemonic, or get the
|
|
||||||
mnemonic from the passphrase.
|
|
||||||
base64-file-converter:
|
base64-file-converter:
|
||||||
title: Base64 file converter
|
title: Base64 file converter
|
||||||
description: Convert string, files or images into a it\'s base64 representation.
|
description: Convert a string, file, or image into its base64 representation.
|
||||||
|
|
||||||
list-converter:
|
list-converter:
|
||||||
title: List converter
|
title: List converter
|
||||||
description: >-
|
description: This tool can process column-based data and apply various changes (transpose, add prefix and suffix, reverse list, sort list, lowercase values, truncate values) to each row.
|
||||||
This tool can process column-based data and apply various changes
|
|
||||||
(transpose, add prefix and suffix, reverse list, sort list, lowercase
|
|
||||||
values, truncate values) to each row.
|
|
||||||
base64-string-converter:
|
base64-string-converter:
|
||||||
title: Base64 string encoder/decoder
|
title: Base64 string encoder/decoder
|
||||||
description: Simply encode and decode string into a their base64 representation.
|
description: Simply encode and decode strings into their base64 representation.
|
||||||
|
|
||||||
toml-to-yaml:
|
toml-to-yaml:
|
||||||
title: TOML to YAML
|
title: TOML to YAML
|
||||||
description: Parse and convert TOML to YAML.
|
description: Parse and convert TOML to YAML.
|
||||||
|
|
||||||
math-evaluator:
|
math-evaluator:
|
||||||
title: Math evaluator
|
title: Math evaluator
|
||||||
description: >-
|
description: A calculator for evaluating mathematical expressions. You can use functions like sqrt, cos, sin, abs, etc.
|
||||||
A calculator for evaluating mathematical expressions. You can use
|
|
||||||
functions like sqrt, cos, sin, abs, etc.
|
|
||||||
json-to-yaml-converter:
|
json-to-yaml-converter:
|
||||||
title: JSON to YAML converter
|
title: JSON to YAML converter
|
||||||
description: Simply convert JSON to YAML with this live online converter.
|
description: Simply convert JSON to YAML with this online live converter.
|
||||||
|
|
||||||
url-parser:
|
url-parser:
|
||||||
title: Url parser
|
title: URL parser
|
||||||
description: >-
|
description: Parse a URL into its separate constituent parts (protocol, origin, params, port, username-password, ...)
|
||||||
Parse an url string to get all the different parts (protocol, origin,
|
|
||||||
params, port, username-password, ...)
|
|
||||||
iban-validator-and-parser:
|
iban-validator-and-parser:
|
||||||
title: IBAN validator and parser
|
title: IBAN validator and parser
|
||||||
description: >-
|
description: Validate and parse IBAN numbers. Check if an IBAN is valid and get the country, BBAN, if it is a QR-IBAN and the IBAN friendly format.
|
||||||
Validate and parse IBAN numbers. Check if IBAN is valid and get the
|
|
||||||
country, BBAN, if it is a QR-IBAN and the IBAN friendly format.
|
|
||||||
user-agent-parser:
|
user-agent-parser:
|
||||||
title: User-agent parser
|
title: User-agent parser
|
||||||
description: >-
|
description: Detect and parse Browser, Engine, OS, CPU, and Device type/model from an user-agent string.
|
||||||
Detect and parse Browser, Engine, OS, CPU, and Device type/model from an
|
|
||||||
user-agent string.
|
|
||||||
numeronym-generator:
|
numeronym-generator:
|
||||||
title: Numeronym generator
|
title: Numeronym generator
|
||||||
description: >-
|
description: A numeronym is a word where a number is used to form an abbreviation. For example, "i18n" is a numeronym of "internationalization" where 18 stands for the number of letters between the first i and the last n in the word.
|
||||||
A numeronym is a word where a number is used to form an abbreviation. For
|
|
||||||
example, "i18n" is a numeronym of "internationalization" where 18 stands
|
|
||||||
for the number of letters between the first i and the last n in the word.
|
|
||||||
case-converter:
|
case-converter:
|
||||||
title: Case converter
|
title: Case converter
|
||||||
description: Change the case of a string and chose between different formats
|
description: Transform the case of a string and choose between different formats
|
||||||
|
|
||||||
html-entities:
|
html-entities:
|
||||||
title: Escape html entities
|
title: Escape HTML entities
|
||||||
description: >-
|
description: Escape or unescape HTML entities (replace characters like <,>, &, " and \' with their HTML version)
|
||||||
Escape or unescape html entities (replace <,>, &, " and \' to their html
|
|
||||||
version)
|
|
||||||
json-prettify:
|
json-prettify:
|
||||||
title: JSON prettify and format
|
title: JSON prettify and format
|
||||||
description: Prettify your JSON string to a human friendly readable format.
|
description: Prettify your JSON string into a friendly, human-readable format.
|
||||||
|
|
||||||
docker-run-to-docker-compose-converter:
|
docker-run-to-docker-compose-converter:
|
||||||
title: Docker run to Docker compose converter
|
title: Docker run to Docker compose converter
|
||||||
description: Turns docker run commands into docker-compose files!
|
description: Transforms "docker run" commands into docker-compose files!
|
||||||
|
|
||||||
mac-address-lookup:
|
mac-address-lookup:
|
||||||
title: MAC address lookup
|
title: MAC address lookup
|
||||||
description: Find the vendor and manufacturer of a device by its MAC address.
|
description: Find the vendor and manufacturer of a device by its MAC address.
|
||||||
|
|
||||||
mime-types:
|
mime-types:
|
||||||
title: Mime types
|
title: MIME types
|
||||||
description: Convert mime types to extensions and vice-versa.
|
description: Convert MIME types to file extensions and vice-versa.
|
||||||
|
|
||||||
toml-to-json:
|
toml-to-json:
|
||||||
title: TOML to JSON
|
title: TOML to JSON
|
||||||
description: Parse and convert TOML to JSON.
|
description: Parse and convert TOML to JSON.
|
||||||
|
|
||||||
lorem-ipsum-generator:
|
lorem-ipsum-generator:
|
||||||
title: Lorem ipsum generator
|
title: Lorem ipsum generator
|
||||||
description: >-
|
description: Lorem ipsum is a placeholder text commonly used to demonstrate the visual form of a document or a typeface without relying on meaningful content
|
||||||
Lorem ipsum is a placeholder text commonly used to demonstrate the visual
|
|
||||||
form of a document or a typeface without relying on meaningful content
|
|
||||||
qrcode-generator:
|
qrcode-generator:
|
||||||
title: QR Code generator
|
title: QR Code generator
|
||||||
description: >-
|
description: Generate and download a QR code for a URL (or just plain text), and customize the background and foreground colors.
|
||||||
Generate and download QR-code for an url or just a text and customize the
|
|
||||||
background and foreground colors.
|
|
||||||
wifi-qrcode-generator:
|
wifi-qrcode-generator:
|
||||||
title: WiFi QR Code generator
|
title: WiFi QR Code generator
|
||||||
description: Generate and download QR-codes for quick connections to WiFi networks.
|
description: Generate and download QR codes for quick connections to WiFi networks.
|
||||||
|
|
||||||
xml-formatter:
|
xml-formatter:
|
||||||
title: XML formatter
|
title: XML formatter
|
||||||
description: Prettify your XML string to a human friendly readable format.
|
description: Prettify your XML string into a friendly, human-readable format.
|
||||||
|
|
||||||
temperature-converter:
|
temperature-converter:
|
||||||
title: Temperature converter
|
title: Temperature converter
|
||||||
description: >-
|
description: Degrees temperature conversions for Kelvin, Celsius, Fahrenheit, Rankine, Delisle, Newton, Réaumur, and Rømer.
|
||||||
Temperature degrees conversions for Kelvin, Celsius, Fahrenheit, Rankine,
|
|
||||||
Delisle, Newton, Réaumur and Rømer.
|
|
||||||
chmod-calculator:
|
chmod-calculator:
|
||||||
title: Chmod calculator
|
title: Chmod calculator
|
||||||
description: >-
|
description: Compute your chmod permissions and commands with this online chmod calculator.
|
||||||
Compute your chmod permissions and commands with this online chmod
|
|
||||||
calculator.
|
|
||||||
rsa-key-pair-generator:
|
rsa-key-pair-generator:
|
||||||
title: RSA key pair generator
|
title: RSA key pair generator
|
||||||
description: Generate new random RSA private and public key pem certificates.
|
description: Generate a new random RSA private and public pem certificate key pair.
|
||||||
|
|
||||||
html-wysiwyg-editor:
|
html-wysiwyg-editor:
|
||||||
title: HTML WYSIWYG editor
|
title: HTML WYSIWYG editor
|
||||||
description: >-
|
description: Online, feature-rich WYSIWYG HTML editor which generates the source code of the content immediately.
|
||||||
Online HTML editor with feature-rich WYSIWYG editor, get the source code
|
|
||||||
of the content immediately.
|
|
||||||
yaml-to-toml:
|
yaml-to-toml:
|
||||||
title: YAML to TOML
|
title: YAML to TOML
|
||||||
description: Parse and convert YAML to TOML.
|
description: Parse and convert YAML to TOML.
|
||||||
|
|
||||||
mac-address-generator:
|
mac-address-generator:
|
||||||
title: MAC address generator
|
title: MAC address generator
|
||||||
description: >-
|
description: Enter the quantity and prefix. MAC addresses will be generated in your chosen case (uppercase or lowercase)
|
||||||
Enter the quantity and prefix. MAC addresses will be generated in your
|
|
||||||
chosen case (uppercase or lowercase)
|
|
||||||
json-diff:
|
json-diff:
|
||||||
title: JSON diff
|
title: JSON diff
|
||||||
description: Compare two JSON objects and get the differences between them.
|
description: Compare two JSON objects and get the differences between them.
|
||||||
|
|
||||||
jwt-parser:
|
jwt-parser:
|
||||||
title: JWT parser
|
title: JWT parser
|
||||||
description: Parse and decode your JSON Web Token (jwt) and display its content.
|
description: Parse and decode your JSON Web Token (jwt) and display its content.
|
||||||
|
|
||||||
date-converter:
|
date-converter:
|
||||||
title: Date-time converter
|
title: Date-time converter
|
||||||
description: Convert date and time into the various different formats
|
description: Convert date and time into the various different formats
|
||||||
|
|
||||||
phone-parser-and-formatter:
|
phone-parser-and-formatter:
|
||||||
title: Phone parser and formatter
|
title: Phone parser and formatter
|
||||||
description: >-
|
description: Parse, validate and format phone numbers. Get information about the phone number, like the country code, type, etc.
|
||||||
Parse, validate and format phone numbers. Get information about the phone
|
|
||||||
number, like the country code, type, etc.
|
|
||||||
ipv4-subnet-calculator:
|
ipv4-subnet-calculator:
|
||||||
title: IPv4 subnet calculator
|
title: IPv4 subnet calculator
|
||||||
description: >-
|
description: Parse your IPv4 CIDR blocks and get all the info you need about your subnet.
|
||||||
Parse your IPv4 CIDR blocks and get all the info you need about your sub
|
|
||||||
network.
|
|
||||||
og-meta-generator:
|
og-meta-generator:
|
||||||
title: Open graph meta generator
|
title: Open graph meta generator
|
||||||
description: Generate open-graph and socials html meta tags for your website.
|
description: Generate open-graph and socials HTML meta tags for your website.
|
||||||
|
|
||||||
ipv6-ula-generator:
|
ipv6-ula-generator:
|
||||||
title: IPv6 ULA generator
|
title: IPv6 ULA generator
|
||||||
description: >-
|
description: Generate your own local, non-routable IP addresses for your network according to RFC4193.
|
||||||
Generate your own local, non-routable IP addresses on your network
|
|
||||||
according to RFC4193.
|
|
||||||
hash-text:
|
hash-text:
|
||||||
title: Hash text
|
title: Hash text
|
||||||
description: >-
|
description: 'Hash a text string using the function you need : MD5, SHA1, SHA256, SHA224, SHA512, SHA384, SHA3 or RIPEMD160'
|
||||||
Hash a text string using the function you need : MD5, SHA1, SHA256,
|
|
||||||
SHA224, SHA512, SHA384, SHA3 or RIPEMD160
|
|
||||||
json-to-toml:
|
json-to-toml:
|
||||||
title: JSON to TOML
|
title: JSON to TOML
|
||||||
description: Parse and convert JSON to TOML.
|
description: Parse and convert JSON to TOML.
|
||||||
|
|
||||||
device-information:
|
device-information:
|
||||||
title: Device information
|
title: Device information
|
||||||
description: >-
|
description: Get information about your current device (screen size, pixel-ratio, user agent, ...)
|
||||||
Get information about your current device (screen size, pixel-ratio, user
|
|
||||||
agent, ...)
|
|
||||||
pdf-signature-checker:
|
pdf-signature-checker:
|
||||||
title: PDF signature checker
|
title: PDF signature checker
|
||||||
description: >-
|
description: Verify the signatures of a PDF file. A signed PDF file contains one or more signatures that may be used to determine whether the contents of the file have been altered since the file was signed.
|
||||||
Verify the signatures of a PDF file. A signed PDF file contains one or
|
|
||||||
more signatures that may be used to determine whether the contents of the
|
|
||||||
file have been altered since the file was signed.
|
|
||||||
json-minify:
|
json-minify:
|
||||||
title: JSON minify
|
title: JSON minify
|
||||||
description: Minify and compress your JSON by removing unnecessary white spaces.
|
description: Minify and compress your JSON by removing unnecessary whitespace.
|
||||||
|
|
||||||
ulid-generator:
|
ulid-generator:
|
||||||
title: ULID generator
|
title: ULID generator
|
||||||
description: >-
|
description: Generate random Universally Unique Lexicographically Sortable Identifier (ULID).
|
||||||
Generate random Universally Unique Lexicographically Sortable Identifier
|
|
||||||
(ULID).
|
|
||||||
string-obfuscator:
|
string-obfuscator:
|
||||||
title: String obfuscator
|
title: String obfuscator
|
||||||
description: >-
|
description: Obfuscate a string (like a secret, an IBAN, or a token) to make it shareable and identifiable without revealing its content.
|
||||||
Obfuscate a string (like a secret, an IBAN, or a token) to make it
|
|
||||||
shareable and identifiable without revealing its content.
|
|
||||||
base-converter:
|
base-converter:
|
||||||
title: Integer base converter
|
title: Integer base converter
|
||||||
description: >-
|
description: Convert a number between different bases (decimal, hexadecimal, binary, octal, base64, ...)
|
||||||
Convert number between different bases (decimal, hexadecimal, binary,
|
|
||||||
octal, base64, ...)
|
|
||||||
yaml-to-json-converter:
|
yaml-to-json-converter:
|
||||||
title: YAML to JSON converter
|
title: YAML to JSON converter
|
||||||
description: Simply convert YAML to JSON with this live online converter.
|
description: Simply convert YAML to JSON with this online live converter.
|
||||||
|
|
||||||
uuid-generator:
|
uuid-generator:
|
||||||
title: UUIDs generator
|
title: UUIDs generator
|
||||||
description: >-
|
description: A Universally Unique Identifier (UUID) is a 128-bit number used to identify information in computer systems. The number of possible UUIDs is 16^32, which is 2^128 or about 3.4x10^38 (which is a lot!).
|
||||||
A Universally Unique Identifier (UUID) is a 128-bit number used to
|
|
||||||
identify information in computer systems. The number of possible UUIDs is
|
|
||||||
16^32, which is 2^128 or about 3.4x10^38 (which is a lot!).
|
|
||||||
ipv4-address-converter:
|
ipv4-address-converter:
|
||||||
title: Ipv4 address converter
|
title: IPv4 address converter
|
||||||
description: Convert an ip address into decimal, binary, hexadecimal or event in ipv6
|
description: Convert an IP address into decimal, binary, hexadecimal, or even an IPv6 representation of it.
|
||||||
|
|
||||||
text-statistics:
|
text-statistics:
|
||||||
title: Text statistics
|
title: Text statistics
|
||||||
description: >-
|
description: Get information about a text, the number of characters, the number of words, its size in bytes, ...
|
||||||
Get information about a text, the amount of characters, the amount of
|
|
||||||
words, it\'s size, ...
|
|
||||||
text-to-nato-alphabet:
|
text-to-nato-alphabet:
|
||||||
title: Text to NATO alphabet
|
title: Text to NATO alphabet
|
||||||
description: Transform text into NATO phonetic alphabet for oral transmission.
|
description: Transform text into the NATO phonetic alphabet for oral transmission.
|
||||||
|
|
||||||
basic-auth-generator:
|
basic-auth-generator:
|
||||||
title: Basic auth generator
|
title: Basic auth generator
|
||||||
description: Generate a base64 basic auth header from an username and a password.
|
description: Generate a base64 basic auth header from a username and password.
|
||||||
|
|
||||||
text-to-unicode:
|
text-to-unicode:
|
||||||
title: Text to Unicode
|
title: Text to Unicode
|
||||||
description: Parse and convert text to unicode and vice-versa
|
description: Parse and convert text to unicode and vice-versa
|
||||||
|
|
||||||
ipv4-range-expander:
|
ipv4-range-expander:
|
||||||
title: IPv4 range expander
|
title: IPv4 range expander
|
||||||
description: >-
|
description: Given a start and an end IPv4 address, this tool calculates a valid IPv4 subnet along with its CIDR notation.
|
||||||
Given a start and an end IPv4 address this tool calculates a valid IPv4
|
|
||||||
network with its CIDR notation.
|
|
||||||
text-diff:
|
text-diff:
|
||||||
title: Text diff
|
title: Text diff
|
||||||
description: Compare two texts and see the differences between them.
|
description: Compare two texts and see the differences between them.
|
||||||
|
|
||||||
otp-generator:
|
otp-generator:
|
||||||
title: OTP code generator
|
title: OTP code generator
|
||||||
description: >-
|
description: Generate and validate time-based OTP (one time password) for multi-factor authentication.
|
||||||
Generate and validate time-based OTP (one time password) for multi-factor
|
|
||||||
authentication.
|
|
||||||
url-encoder:
|
url-encoder:
|
||||||
title: Encode/decode url formatted strings
|
title: Encode/decode URL-formatted strings
|
||||||
description: >-
|
description: Encode text to URL-encoded format (also known as "percent-encoded"), or decode from it.
|
||||||
Encode to url-encoded format (also known as "percent-encoded") or decode
|
|
||||||
from it.
|
|
||||||
text-to-binary:
|
text-to-binary:
|
||||||
title: Text to ASCII binary
|
title: Text to ASCII binary
|
||||||
description: Convert text to its ASCII binary representation and vice versa.
|
description: Convert text to its ASCII binary representation and vice-versa.
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "it-tools",
|
"name": "it-tools",
|
||||||
"version": "2023.12.21-5ed3693",
|
"version": "2024.5.10-33e5294",
|
||||||
"description": "Collection of handy online tools for developers, with great UX. ",
|
"description": "Collection of handy online tools for developers, with great UX. ",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"productivity",
|
"productivity",
|
||||||
|
@ -41,6 +41,7 @@
|
||||||
"@tiptap/pm": "2.1.6",
|
"@tiptap/pm": "2.1.6",
|
||||||
"@tiptap/starter-kit": "2.1.6",
|
"@tiptap/starter-kit": "2.1.6",
|
||||||
"@tiptap/vue-3": "2.0.3",
|
"@tiptap/vue-3": "2.0.3",
|
||||||
|
"@types/figlet": "^1.5.8",
|
||||||
"@vicons/material": "^0.12.0",
|
"@vicons/material": "^0.12.0",
|
||||||
"@vicons/tabler": "^0.12.0",
|
"@vicons/tabler": "^0.12.0",
|
||||||
"@vueuse/core": "^10.3.0",
|
"@vueuse/core": "^10.3.0",
|
||||||
|
@ -57,6 +58,7 @@
|
||||||
"date-fns": "^2.29.3",
|
"date-fns": "^2.29.3",
|
||||||
"dompurify": "^3.0.6",
|
"dompurify": "^3.0.6",
|
||||||
"emojilib": "^3.0.10",
|
"emojilib": "^3.0.10",
|
||||||
|
"figlet": "^1.7.0",
|
||||||
"figue": "^1.2.0",
|
"figue": "^1.2.0",
|
||||||
"fuse.js": "^6.6.2",
|
"fuse.js": "^6.6.2",
|
||||||
"highlight.js": "^11.7.0",
|
"highlight.js": "^11.7.0",
|
||||||
|
|
|
@ -9,7 +9,7 @@ const useWebServer = process.env.NO_WEB_SERVER !== 'true';
|
||||||
*/
|
*/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
testDir: './src',
|
testDir: './src',
|
||||||
testMatch: /.*\.e2e\.(spec\.)?ts/,
|
testMatch: /\.e2e\.(spec\.)?ts$/,
|
||||||
/* Run tests in files in parallel */
|
/* Run tests in files in parallel */
|
||||||
fullyParallel: true,
|
fullyParallel: true,
|
||||||
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
/* Fail the build on CI if you accidentally left test.only in the source code. */
|
||||||
|
@ -57,7 +57,7 @@ export default defineConfig({
|
||||||
&& {
|
&& {
|
||||||
webServer: {
|
webServer: {
|
||||||
command: 'npm run preview',
|
command: 'npm run preview',
|
||||||
url: 'http://127.0.0.1:5050',
|
url: 'http://localhost:5050',
|
||||||
reuseExistingServer: !isCI,
|
reuseExistingServer: !isCI,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
16
pnpm-lock.yaml
generated
16
pnpm-lock.yaml
generated
|
@ -23,6 +23,9 @@ dependencies:
|
||||||
'@tiptap/vue-3':
|
'@tiptap/vue-3':
|
||||||
specifier: 2.0.3
|
specifier: 2.0.3
|
||||||
version: 2.0.3(@tiptap/core@2.1.12)(@tiptap/pm@2.1.6)(vue@3.3.4)
|
version: 2.0.3(@tiptap/core@2.1.12)(@tiptap/pm@2.1.6)(vue@3.3.4)
|
||||||
|
'@types/figlet':
|
||||||
|
specifier: ^1.5.8
|
||||||
|
version: 1.5.8
|
||||||
'@vicons/material':
|
'@vicons/material':
|
||||||
specifier: ^0.12.0
|
specifier: ^0.12.0
|
||||||
version: 0.12.0
|
version: 0.12.0
|
||||||
|
@ -71,6 +74,9 @@ dependencies:
|
||||||
emojilib:
|
emojilib:
|
||||||
specifier: ^3.0.10
|
specifier: ^3.0.10
|
||||||
version: 3.0.10
|
version: 3.0.10
|
||||||
|
figlet:
|
||||||
|
specifier: ^1.7.0
|
||||||
|
version: 1.7.0
|
||||||
figue:
|
figue:
|
||||||
specifier: ^1.2.0
|
specifier: ^1.2.0
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
|
@ -2902,6 +2908,10 @@ packages:
|
||||||
/@types/estree@1.0.0:
|
/@types/estree@1.0.0:
|
||||||
resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==}
|
resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==}
|
||||||
|
|
||||||
|
/@types/figlet@1.5.8:
|
||||||
|
resolution: {integrity: sha512-G22AUvy4Tl95XLE7jmUM8s8mKcoz+Hr+Xm9W90gJsppJq9f9tHvOGkrpn4gRX0q/cLtBdNkWtWCKDg2UDZoZvQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/fs-extra@11.0.1:
|
/@types/fs-extra@11.0.1:
|
||||||
resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
|
resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -5585,6 +5595,12 @@ packages:
|
||||||
web-streams-polyfill: 3.2.1
|
web-streams-polyfill: 3.2.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/figlet@1.7.0:
|
||||||
|
resolution: {integrity: sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==}
|
||||||
|
engines: {node: '>= 0.4.0'}
|
||||||
|
hasBin: true
|
||||||
|
dev: false
|
||||||
|
|
||||||
/figue@1.2.0:
|
/figue@1.2.0:
|
||||||
resolution: {integrity: sha512-CXKr12kiNWjKtUK3X+YHeXKepn80s9Rg6pgZXoLQYEybgwaGJ9uGW4DrBrVK30ZWZf1mcvTbXF56AcovG7gLVw==}
|
resolution: {integrity: sha512-CXKr12kiNWjKtUK3X+YHeXKepn80s9Rg6pgZXoLQYEybgwaGJ9uGW4DrBrVK30ZWZf1mcvTbXF56AcovG7gLVw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
|
@ -3,6 +3,7 @@ const { availableLocales, locale } = useI18n();
|
||||||
|
|
||||||
const localesLong: Record<string, string> = {
|
const localesLong: Record<string, string> = {
|
||||||
en: 'English',
|
en: 'English',
|
||||||
|
de: 'Deutsch',
|
||||||
es: 'Español',
|
es: 'Español',
|
||||||
fr: 'Français',
|
fr: 'Français',
|
||||||
pt: 'Português',
|
pt: 'Português',
|
||||||
|
|
93
src/tools/ascii-text-drawer/ascii-text-drawer.vue
Normal file
93
src/tools/ascii-text-drawer/ascii-text-drawer.vue
Normal file
|
@ -0,0 +1,93 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import figlet from 'figlet';
|
||||||
|
import TextareaCopyable from '@/components/TextareaCopyable.vue';
|
||||||
|
|
||||||
|
const input = ref('Ascii ART');
|
||||||
|
const font = useStorage('ascii-text-drawer:font', 'Standard');
|
||||||
|
const width = useStorage('ascii-text-drawer:width', 80);
|
||||||
|
const output = ref('');
|
||||||
|
const errored = ref(false);
|
||||||
|
const processing = ref(false);
|
||||||
|
|
||||||
|
figlet.defaults({ fontPath: '//unpkg.com/figlet@1.6.0/fonts/' });
|
||||||
|
|
||||||
|
watchEffect(async () => {
|
||||||
|
processing.value = true;
|
||||||
|
try {
|
||||||
|
const options: figlet.Options = {
|
||||||
|
font: font.value as figlet.Fonts,
|
||||||
|
width: width.value,
|
||||||
|
whitespaceBreak: true,
|
||||||
|
};
|
||||||
|
output.value = await (new Promise<string>((resolve, reject) =>
|
||||||
|
figlet.text(input.value, options,
|
||||||
|
(err, text) => {
|
||||||
|
if (err) {
|
||||||
|
reject(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
resolve(text ?? '');
|
||||||
|
})));
|
||||||
|
errored.value = false;
|
||||||
|
}
|
||||||
|
catch (e: any) {
|
||||||
|
errored.value = true;
|
||||||
|
}
|
||||||
|
processing.value = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
const fonts = ['1Row', '3-D', '3D Diagonal', '3D-ASCII', '3x5', '4Max', '5 Line Oblique', 'AMC 3 Line', 'AMC 3 Liv1', 'AMC AAA01', 'AMC Neko', 'AMC Razor', 'AMC Razor2', 'AMC Slash', 'AMC Slider', 'AMC Thin', 'AMC Tubes', 'AMC Untitled', 'ANSI Shadow', 'ASCII New Roman', 'Acrobatic', 'Alligator', 'Alligator2', 'Alpha', 'Alphabet', 'Arrows', 'Avatar', 'B1FF', 'B1FF', 'Banner', 'Banner3-D', 'Banner3', 'Banner4', 'Barbwire', 'Basic', 'Bear', 'Bell', 'Benjamin', 'Big Chief', 'Big Money-ne', 'Big Money-nw', 'Big Money-se', 'Big Money-sw', 'Big', 'Bigfig', 'Binary', 'Block', 'Blocks', 'Bloody', 'Bolger', 'Braced', 'Bright', 'Broadway KB', 'Broadway', 'Bubble', 'Bulbhead', 'Caligraphy', 'Caligraphy2', 'Calvin S', 'Cards', 'Catwalk', 'Chiseled', 'Chunky', 'Coinstak', 'Cola', 'Colossal', 'Computer', 'Contessa', 'Contrast', 'Cosmike', 'Crawford', 'Crawford2', 'Crazy', 'Cricket', 'Cursive', 'Cyberlarge', 'Cybermedium', 'Cybersmall', 'Cygnet', 'DANC4', 'DOS Rebel', 'DWhistled', 'Dancing Font', 'Decimal', 'Def Leppard', 'Delta Corps Priest 1', 'Diamond', 'Diet Cola', 'Digital', 'Doh', 'Doom', 'Dot Matrix', 'Double Shorts', 'Double', 'Dr Pepper', 'Efti Chess', 'Efti Font', 'Efti Italic', 'Efti Piti', 'Efti Robot', 'Efti Wall', 'Efti Water', 'Electronic', 'Elite', 'Epic', 'Fender', 'Filter', 'Fire Font-k', 'Fire Font-s', 'Flipped', 'Flower Power', 'Four Tops', 'Fraktur', 'Fun Face', 'Fun Faces', 'Fuzzy', 'Georgi16', 'Georgia11', 'Ghost', 'Ghoulish', 'Glenyn', 'Goofy', 'Gothic', 'Graceful', 'Gradient', 'Graffiti', 'Greek', 'Heart Left', 'Heart Right', 'Henry 3D', 'Hex', 'Hieroglyphs', 'Hollywood', 'Horizontal Left', 'Horizontal Right', 'ICL-1900', 'Impossible', 'Invita', 'Isometric1', 'Isometric2', 'Isometric3', 'Isometric4', 'Italic', 'Ivrit', 'JS Block Letters', 'JS Bracket Letters', 'JS Capital Curves', 'JS Cursive', 'JS Stick Letters', 'Jacky', 'Jazmine', 'Jerusalem', 'Katakana', 'Kban', 'Keyboard', 'Knob', 'Konto Slant', 'Konto', 'LCD', 'Larry 3D 2', 'Larry 3D', 'Lean', 'Letters', 'Lil Devil', 'Line Blocks', 'Linux', 'Lockergnome', 'Madrid', 'Marquee', 'Maxfour', 'Merlin1', 'Merlin2', 'Mike', 'Mini', 'Mirror', 'Mnemonic', 'Modular', 'Morse', 'Morse2', 'Moscow', 'Mshebrew210', 'Muzzle', 'NScript', 'NT Greek', 'NV Script', 'Nancyj-Fancy', 'Nancyj-Improved', 'Nancyj-Underlined', 'Nancyj', 'Nipples', 'O8', 'OS2', 'Octal', 'Ogre', 'Old Banner', 'Patorjk\'s Cheese', 'Patorjk-HeX', 'Pawp', 'Peaks Slant', 'Peaks', 'Pebbles', 'Pepper', 'Poison', 'Puffy', 'Puzzle', 'Pyramid', 'Rammstein', 'Rectangles', 'Red Phoenix', 'Relief', 'Relief2', 'Reverse', 'Roman', 'Rot13', 'Rot13', 'Rotated', 'Rounded', 'Rowan Cap', 'Rozzo', 'Runic', 'Runyc', 'S Blood', 'SL Script', 'Santa Clara', 'Script', 'Serifcap', 'Shadow', 'Shimrod', 'Short', 'Slant Relief', 'Slant', 'Slide', 'Small Caps', 'Small Isometric1', 'Small Keyboard', 'Small Poison', 'Small Script', 'Small Shadow', 'Small Slant', 'Small Tengwar', 'Small', 'Soft', 'Speed', 'Spliff', 'Stacey', 'Stampate', 'Stampatello', 'Standard', 'Star Strips', 'Star Wars', 'Stellar', 'Stforek', 'Stick Letters', 'Stop', 'Straight', 'Stronger Than All', 'Sub-Zero', 'Swamp Land', 'Swan', 'Sweet', 'THIS', 'Tanja', 'Tengwar', 'Term', 'Test1', 'The Edge', 'Thick', 'Thin', 'Thorned', 'Three Point', 'Ticks Slant', 'Ticks', 'Tiles', 'Tinker-Toy', 'Tombstone', 'Train', 'Trek', 'Tsalagi', 'Tubular', 'Twisted', 'Two Point', 'USA Flag', 'Univers', 'Varsity', 'Wavy', 'Weird', 'Wet Letter', 'Whimsy', 'Wow'];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<c-card style="max-width: 600px;">
|
||||||
|
<c-input-text
|
||||||
|
v-model:value="input"
|
||||||
|
label="Your text:"
|
||||||
|
placeholder="Your text to draw"
|
||||||
|
raw-text
|
||||||
|
multiline
|
||||||
|
rows="4"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<n-divider />
|
||||||
|
|
||||||
|
<n-grid cols="4" x-gap="12" w-full>
|
||||||
|
<n-gi span="2">
|
||||||
|
<c-select
|
||||||
|
v-model:value="font"
|
||||||
|
label-position="top"
|
||||||
|
label="Font:"
|
||||||
|
:options="fonts"
|
||||||
|
searchable="true"
|
||||||
|
placeholder="Select font to use"
|
||||||
|
/>
|
||||||
|
</n-gi>
|
||||||
|
<n-gi span="2">
|
||||||
|
<n-form-item label="Width:" label-placement="top" label-width="100" :show-feedback="false">
|
||||||
|
<n-input-number v-model:value="width" min="0" max="10000" w-full placeholder="Width of the text" />
|
||||||
|
</n-form-item>
|
||||||
|
</n-gi>
|
||||||
|
</n-grid>
|
||||||
|
|
||||||
|
<n-divider />
|
||||||
|
|
||||||
|
<div v-if="processing" flex items-center justify-center>
|
||||||
|
<n-spin size="medium" />
|
||||||
|
<span class="ml-2">Loading font...</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<c-alert v-if="errored" mt-1 text-center type="error">
|
||||||
|
Current settings resulted in error.
|
||||||
|
</c-alert>
|
||||||
|
|
||||||
|
<n-form-item v-if="!processing && !errored" label="Ascii Art text:">
|
||||||
|
<TextareaCopyable
|
||||||
|
:value="output"
|
||||||
|
mb-1 mt-1
|
||||||
|
copy-placement="outside"
|
||||||
|
/>
|
||||||
|
</n-form-item>
|
||||||
|
</c-card>
|
||||||
|
</template>
|
12
src/tools/ascii-text-drawer/index.ts
Normal file
12
src/tools/ascii-text-drawer/index.ts
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import { Artboard } from '@vicons/tabler';
|
||||||
|
import { defineTool } from '../tool';
|
||||||
|
|
||||||
|
export const tool = defineTool({
|
||||||
|
name: 'ASCII Art Text Generator',
|
||||||
|
path: '/ascii-text-drawer',
|
||||||
|
description: 'Create ASCII art text with many fonts and styles.',
|
||||||
|
keywords: ['ascii', 'asciiart', 'text', 'drawer'],
|
||||||
|
component: () => import('./ascii-text-drawer.vue'),
|
||||||
|
icon: Artboard,
|
||||||
|
createdAt: new Date('2024-03-03'),
|
||||||
|
});
|
|
@ -28,7 +28,7 @@ const compareMatch = computed(() => compareSync(compareString.value, compareHash
|
||||||
mb-2
|
mb-2
|
||||||
/>
|
/>
|
||||||
<n-form-item label="Salt count: " label-placement="left" label-width="120">
|
<n-form-item label="Salt count: " label-placement="left" label-width="120">
|
||||||
<n-input-number v-model:value="saltCount" placeholder="Salt rounds..." :max="10" :min="0" w-full />
|
<n-input-number v-model:value="saltCount" placeholder="Salt rounds..." :max="100" :min="0" w-full />
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
|
|
||||||
<c-input-text :value="hashed" readonly text-center />
|
<c-input-text :value="hashed" readonly text-center />
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
import { tool as base64FileConverter } from './base64-file-converter';
|
import { tool as base64FileConverter } from './base64-file-converter';
|
||||||
import { tool as base64StringConverter } from './base64-string-converter';
|
import { tool as base64StringConverter } from './base64-string-converter';
|
||||||
import { tool as basicAuthGenerator } from './basic-auth-generator';
|
import { tool as basicAuthGenerator } from './basic-auth-generator';
|
||||||
|
|
||||||
|
import { tool as asciiTextDrawer } from './ascii-text-drawer';
|
||||||
|
|
||||||
import { tool as textToUnicode } from './text-to-unicode';
|
import { tool as textToUnicode } from './text-to-unicode';
|
||||||
|
import { tool as safelinkDecoder } from './safelink-decoder';
|
||||||
import { tool as pdfSignatureChecker } from './pdf-signature-checker';
|
import { tool as pdfSignatureChecker } from './pdf-signature-checker';
|
||||||
import { tool as numeronymGenerator } from './numeronym-generator';
|
import { tool as numeronymGenerator } from './numeronym-generator';
|
||||||
import { tool as macAddressGenerator } from './mac-address-generator';
|
import { tool as macAddressGenerator } from './mac-address-generator';
|
||||||
|
@ -123,6 +127,7 @@ export const toolsByCategory: ToolCategory[] = [
|
||||||
userAgentParser,
|
userAgentParser,
|
||||||
httpStatusCodes,
|
httpStatusCodes,
|
||||||
jsonDiff,
|
jsonDiff,
|
||||||
|
safelinkDecoder,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -159,7 +164,15 @@ export const toolsByCategory: ToolCategory[] = [
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Text',
|
name: 'Text',
|
||||||
components: [loremIpsumGenerator, textStatistics, emojiPicker, stringObfuscator, textDiff, numeronymGenerator],
|
components: [
|
||||||
|
loremIpsumGenerator,
|
||||||
|
textStatistics,
|
||||||
|
emojiPicker,
|
||||||
|
stringObfuscator,
|
||||||
|
textDiff,
|
||||||
|
numeronymGenerator,
|
||||||
|
asciiTextDrawer,
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Data',
|
name: 'Data',
|
||||||
|
|
|
@ -11,6 +11,9 @@ describe('integer-base-converter', () => {
|
||||||
expect(convertBase({ value: '10100101', fromBase: 2, toBase: 16 })).toEqual('a5');
|
expect(convertBase({ value: '10100101', fromBase: 2, toBase: 16 })).toEqual('a5');
|
||||||
expect(convertBase({ value: '192654', fromBase: 10, toBase: 8 })).toEqual('570216');
|
expect(convertBase({ value: '192654', fromBase: 10, toBase: 8 })).toEqual('570216');
|
||||||
expect(convertBase({ value: 'zz', fromBase: 64, toBase: 10 })).toEqual('2275');
|
expect(convertBase({ value: 'zz', fromBase: 64, toBase: 10 })).toEqual('2275');
|
||||||
|
expect(convertBase({ value: '42540766411283223938465490632011909384', fromBase: 10, toBase: 10 })).toEqual('42540766411283223938465490632011909384');
|
||||||
|
expect(convertBase({ value: '42540766411283223938465490632011909384', fromBase: 10, toBase: 16 })).toEqual('20010db8000085a300000000ac1f8908');
|
||||||
|
expect(convertBase({ value: '20010db8000085a300000000ac1f8908', fromBase: 16, toBase: 10 })).toEqual('42540766411283223938465490632011909384');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,16 +5,16 @@ export function convertBase({ value, fromBase, toBase }: { value: string; fromBa
|
||||||
let decValue = value
|
let decValue = value
|
||||||
.split('')
|
.split('')
|
||||||
.reverse()
|
.reverse()
|
||||||
.reduce((carry: number, digit: string, index: number) => {
|
.reduce((carry: bigint, digit: string, index: number) => {
|
||||||
if (!fromRange.includes(digit)) {
|
if (!fromRange.includes(digit)) {
|
||||||
throw new Error(`Invalid digit "${digit}" for base ${fromBase}.`);
|
throw new Error(`Invalid digit "${digit}" for base ${fromBase}.`);
|
||||||
}
|
}
|
||||||
return (carry += fromRange.indexOf(digit) * fromBase ** index);
|
return (carry += BigInt(fromRange.indexOf(digit)) * BigInt(fromBase) ** BigInt(index));
|
||||||
}, 0);
|
}, 0n);
|
||||||
let newValue = '';
|
let newValue = '';
|
||||||
while (decValue > 0) {
|
while (decValue > 0) {
|
||||||
newValue = toRange[decValue % toBase] + newValue;
|
newValue = toRange[Number(decValue % BigInt(toBase))] + newValue;
|
||||||
decValue = (decValue - (decValue % toBase)) / toBase;
|
decValue = (decValue - (decValue % BigInt(toBase))) / BigInt(toBase);
|
||||||
}
|
}
|
||||||
return newValue || '0';
|
return newValue || '0';
|
||||||
}
|
}
|
||||||
|
|
12
src/tools/safelink-decoder/index.ts
Normal file
12
src/tools/safelink-decoder/index.ts
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import { Mailbox } from '@vicons/tabler';
|
||||||
|
import { defineTool } from '../tool';
|
||||||
|
|
||||||
|
export const tool = defineTool({
|
||||||
|
name: 'Outlook Safelink decoder',
|
||||||
|
path: '/safelink-decoder',
|
||||||
|
description: 'Decode Outlook SafeLink links',
|
||||||
|
keywords: ['outlook', 'safelink', 'decoder'],
|
||||||
|
component: () => import('./safelink-decoder.vue'),
|
||||||
|
icon: Mailbox,
|
||||||
|
createdAt: new Date('2024-03-11'),
|
||||||
|
});
|
21
src/tools/safelink-decoder/safelink-decoder.service.test.ts
Normal file
21
src/tools/safelink-decoder/safelink-decoder.service.test.ts
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
import { describe, expect, it } from 'vitest';
|
||||||
|
import { decodeSafeLinksURL } from './safelink-decoder.service';
|
||||||
|
|
||||||
|
describe('safelink-decoder', () => {
|
||||||
|
describe('decodeSafeLinksURL', () => {
|
||||||
|
describe('decode outlook safelink urls', () => {
|
||||||
|
it('should decode basic safelink urls', () => {
|
||||||
|
expect(decodeSafeLinksURL('https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dsafelink%26rlz%3D1&data=05%7C02%7C%7C1ed07253975b46da1d1508dc3443752a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C638442711583216725%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=%2BQY0HBnnxfI7pzZoxzlhZdDvYu80LwQB0zUUjrffVnk%3D&reserved=0'))
|
||||||
|
.toBe('https://www.google.com/search?q=safelink&rlz=1');
|
||||||
|
});
|
||||||
|
it('should decode encoded safelink urls', () => {
|
||||||
|
expect(decodeSafeLinksURL('https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.google.com%2Fsearch%3Fq%3Dsafelink%26rlz%3D1&data=05%7C02%7C%7C1ed07253975b46da1d1508dc3443752a%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C638442711583216725%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C0%7C%7C%7C&sdata=%2BQY0HBnnxfI7pzZoxzlhZdDvYu80LwQB0zUUjrffVnk%3D&reserved=0'))
|
||||||
|
.toBe('https://www.google.com/search?q=safelink&rlz=1');
|
||||||
|
});
|
||||||
|
it('throw on not outlook safelink urls', () => {
|
||||||
|
expect(() => decodeSafeLinksURL('https://google.com'))
|
||||||
|
.toThrow('Invalid SafeLinks URL provided');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
7
src/tools/safelink-decoder/safelink-decoder.service.ts
Normal file
7
src/tools/safelink-decoder/safelink-decoder.service.ts
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
export function decodeSafeLinksURL(safeLinksUrl: string) {
|
||||||
|
if (!safeLinksUrl.match(/\.safelinks\.protection\.outlook\.com/)) {
|
||||||
|
throw new Error('Invalid SafeLinks URL provided');
|
||||||
|
}
|
||||||
|
|
||||||
|
return new URL(safeLinksUrl).searchParams.get('url');
|
||||||
|
}
|
32
src/tools/safelink-decoder/safelink-decoder.vue
Normal file
32
src/tools/safelink-decoder/safelink-decoder.vue
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { decodeSafeLinksURL } from './safelink-decoder.service';
|
||||||
|
import TextareaCopyable from '@/components/TextareaCopyable.vue';
|
||||||
|
|
||||||
|
const inputSafeLinkUrl = ref('');
|
||||||
|
const outputDecodedUrl = computed(() => {
|
||||||
|
try {
|
||||||
|
return decodeSafeLinksURL(inputSafeLinkUrl.value);
|
||||||
|
}
|
||||||
|
catch (e: any) {
|
||||||
|
return e.toString();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<c-input-text
|
||||||
|
v-model:value="inputSafeLinkUrl"
|
||||||
|
raw-text
|
||||||
|
placeholder="Your input Outlook SafeLink Url..."
|
||||||
|
autofocus
|
||||||
|
label="Your input Outlook SafeLink Url:"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<n-divider />
|
||||||
|
|
||||||
|
<n-form-item label="Output decoded URL:">
|
||||||
|
<TextareaCopyable :value="outputDecodedUrl" :word-wrap="true" />
|
||||||
|
</n-form-item>
|
||||||
|
</div>
|
||||||
|
</template>
|
|
@ -23,7 +23,7 @@ const decodeInput = ref('Hello%20world%20%3A)');
|
||||||
const decodeOutput = computed(() => withDefaultOnError(() => decodeURIComponent(decodeInput.value), ''));
|
const decodeOutput = computed(() => withDefaultOnError(() => decodeURIComponent(decodeInput.value), ''));
|
||||||
|
|
||||||
const decodeValidation = useValidation({
|
const decodeValidation = useValidation({
|
||||||
source: encodeInput,
|
source: decodeInput,
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
validator: value => isNotThrowing(() => decodeURIComponent(value)),
|
validator: value => isNotThrowing(() => decodeURIComponent(value)),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue