From fe349ad69b6a14e0f4b56bef12a6d800c7e6fa1f Mon Sep 17 00:00:00 2001 From: sharevb Date: Sun, 3 Mar 2024 11:37:09 +0100 Subject: [PATCH 01/14] feat(new tool): ascii art generator (#886) * feat(new tool): ascii art generator Fix #829 ; Text ASCII Art Generator (using figlet) * fix: make fonts list searchable * refactor(ascii-generator): updated tool definition * refactor(ascii-generator): equilibrate ui --------- Co-authored-by: Corentin Thomasset --- components.d.ts | 30 +----- package.json | 2 + pnpm-lock.yaml | 16 ++++ .../ascii-text-drawer/ascii-text-drawer.vue | 93 +++++++++++++++++++ src/tools/ascii-text-drawer/index.ts | 12 +++ src/tools/index.ts | 14 ++- 6 files changed, 139 insertions(+), 28 deletions(-) create mode 100644 src/tools/ascii-text-drawer/ascii-text-drawer.vue create mode 100644 src/tools/ascii-text-drawer/index.ts diff --git a/components.d.ts b/components.d.ts index fabbe793..e31119b3 100644 --- a/components.d.ts +++ b/components.d.ts @@ -12,6 +12,7 @@ declare module '@vue/runtime-core' { '404.page': typeof import('./src/pages/404.page.vue')['default'] About: typeof import('./src/pages/About.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'] 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'] @@ -88,28 +89,17 @@ declare module '@vue/runtime-core' { 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'] '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'] - 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'] IconMdiChevronRight: typeof import('~icons/mdi/chevron-right')['default'] IconMdiClose: typeof import('~icons/mdi/close')['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'] IconMdiEyeOff: typeof import('~icons/mdi/eye-off')['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'] IconMdiTranslate: typeof import('~icons/mdi/translate')['default'] IconMdiTriangleDown: typeof import('~icons/mdi/triangle-down')['default'] - IconMdiVideo: typeof import('~icons/mdi/video')['default'] InputCopyable: typeof import('./src/components/InputCopyable.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'] @@ -136,39 +126,25 @@ declare module '@vue/runtime-core' { MenuLayout: typeof import('./src/components/MenuLayout.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'] - NAlert: typeof import('naive-ui')['NAlert'] NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default'] - NCheckbox: typeof import('naive-ui')['NCheckbox'] NCode: typeof import('naive-ui')['NCode'] NCollapseTransition: typeof import('naive-ui')['NCollapseTransition'] - NColorPicker: typeof import('naive-ui')['NColorPicker'] NConfigProvider: typeof import('naive-ui')['NConfigProvider'] - NDatePicker: typeof import('naive-ui')['NDatePicker'] NDivider: typeof import('naive-ui')['NDivider'] - NDynamicInput: typeof import('naive-ui')['NDynamicInput'] NEllipsis: typeof import('naive-ui')['NEllipsis'] - NForm: typeof import('naive-ui')['NForm'] NFormItem: typeof import('naive-ui')['NFormItem'] NGi: typeof import('naive-ui')['NGi'] NGrid: typeof import('naive-ui')['NGrid'] NH1: typeof import('naive-ui')['NH1'] - NH2: typeof import('naive-ui')['NH2'] NH3: typeof import('naive-ui')['NH3'] 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'] + NLabel: typeof import('naive-ui')['NLabel'] NLayout: typeof import('naive-ui')['NLayout'] NLayoutSider: typeof import('naive-ui')['NLayoutSider'] NMenu: typeof import('naive-ui')['NMenu'] - NProgress: typeof import('naive-ui')['NProgress'] NScrollbar: typeof import('naive-ui')['NScrollbar'] - NSlider: typeof import('naive-ui')['NSlider'] - NStatistic: typeof import('naive-ui')['NStatistic'] - NSwitch: typeof import('naive-ui')['NSwitch'] - NTable: typeof import('naive-ui')['NTable'] - NTag: typeof import('naive-ui')['NTag'] + NSpin: typeof import('naive-ui')['NSpin'] 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'] PasswordStrengthAnalyser: typeof import('./src/tools/password-strength-analyser/password-strength-analyser.vue')['default'] diff --git a/package.json b/package.json index 65f29dbd..fd6c02e6 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "@tiptap/pm": "2.1.6", "@tiptap/starter-kit": "2.1.6", "@tiptap/vue-3": "2.0.3", + "@types/figlet": "^1.5.8", "@vicons/material": "^0.12.0", "@vicons/tabler": "^0.12.0", "@vueuse/core": "^10.3.0", @@ -57,6 +58,7 @@ "date-fns": "^2.29.3", "dompurify": "^3.0.6", "emojilib": "^3.0.10", + "figlet": "^1.7.0", "figue": "^1.2.0", "fuse.js": "^6.6.2", "highlight.js": "^11.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6f7c32f..bd6c38c9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ dependencies: '@tiptap/vue-3': specifier: 2.0.3 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': specifier: ^0.12.0 version: 0.12.0 @@ -71,6 +74,9 @@ dependencies: emojilib: specifier: ^3.0.10 version: 3.0.10 + figlet: + specifier: ^1.7.0 + version: 1.7.0 figue: specifier: ^1.2.0 version: 1.2.0 @@ -2902,6 +2908,10 @@ packages: /@types/estree@1.0.0: 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: resolution: {integrity: sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==} dependencies: @@ -5585,6 +5595,12 @@ packages: web-streams-polyfill: 3.2.1 dev: true + /figlet@1.7.0: + resolution: {integrity: sha512-gO8l3wvqo0V7wEFLXPbkX83b7MVjRrk1oRLfYlZXol8nEpb/ON9pcKLI4qpBv5YtOTfrINtqb7b40iYY2FTWFg==} + engines: {node: '>= 0.4.0'} + hasBin: true + dev: false + /figue@1.2.0: resolution: {integrity: sha512-CXKr12kiNWjKtUK3X+YHeXKepn80s9Rg6pgZXoLQYEybgwaGJ9uGW4DrBrVK30ZWZf1mcvTbXF56AcovG7gLVw==} dependencies: diff --git a/src/tools/ascii-text-drawer/ascii-text-drawer.vue b/src/tools/ascii-text-drawer/ascii-text-drawer.vue new file mode 100644 index 00000000..9a6520a4 --- /dev/null +++ b/src/tools/ascii-text-drawer/ascii-text-drawer.vue @@ -0,0 +1,93 @@ + + + diff --git a/src/tools/ascii-text-drawer/index.ts b/src/tools/ascii-text-drawer/index.ts new file mode 100644 index 00000000..cc1ba86c --- /dev/null +++ b/src/tools/ascii-text-drawer/index.ts @@ -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'), +}); diff --git a/src/tools/index.ts b/src/tools/index.ts index 2a477ed2..492ec6f5 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -1,7 +1,11 @@ import { tool as base64FileConverter } from './base64-file-converter'; import { tool as base64StringConverter } from './base64-string-converter'; 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 pdfSignatureChecker } from './pdf-signature-checker'; import { tool as numeronymGenerator } from './numeronym-generator'; import { tool as macAddressGenerator } from './mac-address-generator'; @@ -159,7 +163,15 @@ export const toolsByCategory: ToolCategory[] = [ }, { name: 'Text', - components: [loremIpsumGenerator, textStatistics, emojiPicker, stringObfuscator, textDiff, numeronymGenerator], + components: [ + loremIpsumGenerator, + textStatistics, + emojiPicker, + stringObfuscator, + textDiff, + numeronymGenerator, + asciiTextDrawer, + ], }, { name: 'Data', From d3b32cc14ee127f2a996c5ab0957e20ddc36dd5e Mon Sep 17 00:00:00 2001 From: sharevb Date: Mon, 11 Mar 2024 11:19:32 +0100 Subject: [PATCH 02/14] feat(new tool): Outlook Safelink Decoder (#911) * feat(new tool): Outlook Safelink Decoder Fix #897 * Use native URL parsing Co-authored-by: Corentin THOMASSET * Update src/tools/safelink-decoder/index.ts --------- Co-authored-by: Corentin THOMASSET --- src/tools/index.ts | 3 +- src/tools/safelink-decoder/index.ts | 12 +++++++ .../safelink-decoder.service.test.ts | 21 ++++++++++++ .../safelink-decoder.service.ts | 7 ++++ .../safelink-decoder/safelink-decoder.vue | 32 +++++++++++++++++++ 5 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 src/tools/safelink-decoder/index.ts create mode 100644 src/tools/safelink-decoder/safelink-decoder.service.test.ts create mode 100644 src/tools/safelink-decoder/safelink-decoder.service.ts create mode 100644 src/tools/safelink-decoder/safelink-decoder.vue diff --git a/src/tools/index.ts b/src/tools/index.ts index 492ec6f5..aa861c93 100644 --- a/src/tools/index.ts +++ b/src/tools/index.ts @@ -5,7 +5,7 @@ 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 safelinkDecoder } from './safelink-decoder'; import { tool as pdfSignatureChecker } from './pdf-signature-checker'; import { tool as numeronymGenerator } from './numeronym-generator'; import { tool as macAddressGenerator } from './mac-address-generator'; @@ -127,6 +127,7 @@ export const toolsByCategory: ToolCategory[] = [ userAgentParser, httpStatusCodes, jsonDiff, + safelinkDecoder, ], }, { diff --git a/src/tools/safelink-decoder/index.ts b/src/tools/safelink-decoder/index.ts new file mode 100644 index 00000000..ef865108 --- /dev/null +++ b/src/tools/safelink-decoder/index.ts @@ -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'), +}); diff --git a/src/tools/safelink-decoder/safelink-decoder.service.test.ts b/src/tools/safelink-decoder/safelink-decoder.service.test.ts new file mode 100644 index 00000000..b601f01e --- /dev/null +++ b/src/tools/safelink-decoder/safelink-decoder.service.test.ts @@ -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'); + }); + }); + }); +}); diff --git a/src/tools/safelink-decoder/safelink-decoder.service.ts b/src/tools/safelink-decoder/safelink-decoder.service.ts new file mode 100644 index 00000000..96be00ab --- /dev/null +++ b/src/tools/safelink-decoder/safelink-decoder.service.ts @@ -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'); +} diff --git a/src/tools/safelink-decoder/safelink-decoder.vue b/src/tools/safelink-decoder/safelink-decoder.vue new file mode 100644 index 00000000..01337eb2 --- /dev/null +++ b/src/tools/safelink-decoder/safelink-decoder.vue @@ -0,0 +1,32 @@ + + + From 23f82d956a8af21e176f7268c9414244168bd4eb Mon Sep 17 00:00:00 2001 From: sharevb Date: Mon, 15 Apr 2024 09:43:12 +0200 Subject: [PATCH 03/14] fix(bcrypt tool): allow salt rounds up to 100 (#987) * fix(bcrypt tool): allow salt rounds up to 100 Previously max salt rounds was 10 * chore(github workflows): ci and e2e tests: try updating to node 20 --- .github/workflows/ci.yml | 2 +- .github/workflows/e2e-tests.yml | 2 +- playwright.config.ts | 4 ++-- src/tools/bcrypt/bcrypt.vue | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d5c67208..4dd9ffb7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: - run: corepack enable - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/e2e-tests.yml b/.github/workflows/e2e-tests.yml index b5b04096..13b787ef 100644 --- a/.github/workflows/e2e-tests.yml +++ b/.github/workflows/e2e-tests.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 cache: 'pnpm' - name: Get Playwright version diff --git a/playwright.config.ts b/playwright.config.ts index 3caa0612..5257c526 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -9,7 +9,7 @@ const useWebServer = process.env.NO_WEB_SERVER !== 'true'; */ export default defineConfig({ testDir: './src', - testMatch: /.*\.e2e\.(spec\.)?ts/, + testMatch: /\.e2e\.(spec\.)?ts$/, /* Run tests in files in parallel */ fullyParallel: true, /* Fail the build on CI if you accidentally left test.only in the source code. */ @@ -57,7 +57,7 @@ export default defineConfig({ && { webServer: { command: 'npm run preview', - url: 'http://127.0.0.1:5050', + url: 'http://localhost:5050', reuseExistingServer: !isCI, }, } diff --git a/src/tools/bcrypt/bcrypt.vue b/src/tools/bcrypt/bcrypt.vue index c28c20bf..d4881299 100644 --- a/src/tools/bcrypt/bcrypt.vue +++ b/src/tools/bcrypt/bcrypt.vue @@ -28,7 +28,7 @@ const compareMatch = computed(() => compareSync(compareString.value, compareHash mb-2 /> - + From 9eac9cb2a9d23619b0d3c044f1bc1385aab427e4 Mon Sep 17 00:00:00 2001 From: sharevb Date: Mon, 22 Apr 2024 08:45:51 +0200 Subject: [PATCH 04/14] fix(integer base converter): support bigint (#872) --- .../integer-base-converter.model.test.ts | 3 +++ .../integer-base-converter.model.ts | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/tools/integer-base-converter/integer-base-converter.model.test.ts b/src/tools/integer-base-converter/integer-base-converter.model.test.ts index d0387b64..c7d7db79 100644 --- a/src/tools/integer-base-converter/integer-base-converter.model.test.ts +++ b/src/tools/integer-base-converter/integer-base-converter.model.test.ts @@ -11,6 +11,9 @@ describe('integer-base-converter', () => { expect(convertBase({ value: '10100101', fromBase: 2, toBase: 16 })).toEqual('a5'); expect(convertBase({ value: '192654', fromBase: 10, toBase: 8 })).toEqual('570216'); 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'); }); }); }); diff --git a/src/tools/integer-base-converter/integer-base-converter.model.ts b/src/tools/integer-base-converter/integer-base-converter.model.ts index b4470e57..da0fe77f 100644 --- a/src/tools/integer-base-converter/integer-base-converter.model.ts +++ b/src/tools/integer-base-converter/integer-base-converter.model.ts @@ -5,16 +5,16 @@ export function convertBase({ value, fromBase, toBase }: { value: string; fromBa let decValue = value .split('') .reverse() - .reduce((carry: number, digit: string, index: number) => { + .reduce((carry: bigint, digit: string, index: number) => { if (!fromRange.includes(digit)) { throw new Error(`Invalid digit "${digit}" for base ${fromBase}.`); } - return (carry += fromRange.indexOf(digit) * fromBase ** index); - }, 0); + return (carry += BigInt(fromRange.indexOf(digit)) * BigInt(fromBase) ** BigInt(index)); + }, 0n); let newValue = ''; while (decValue > 0) { - newValue = toRange[decValue % toBase] + newValue; - decValue = (decValue - (decValue % toBase)) / toBase; + newValue = toRange[Number(decValue % BigInt(toBase))] + newValue; + decValue = (decValue - (decValue % BigInt(toBase))) / BigInt(toBase); } return newValue || '0'; } From cb5b462e119d4231b5c07b4ef0ca24ec84ceee8b Mon Sep 17 00:00:00 2001 From: Pavel Gordon Date: Mon, 29 Apr 2024 11:58:08 +0200 Subject: [PATCH 05/14] fix(url-encoder, validation): typo in validation of url-encoder.vue #1024 --- src/tools/url-encoder/url-encoder.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/url-encoder/url-encoder.vue b/src/tools/url-encoder/url-encoder.vue index c43f8193..19025190 100644 --- a/src/tools/url-encoder/url-encoder.vue +++ b/src/tools/url-encoder/url-encoder.vue @@ -23,7 +23,7 @@ const decodeInput = ref('Hello%20world%20%3A)'); const decodeOutput = computed(() => withDefaultOnError(() => decodeURIComponent(decodeInput.value), '')); const decodeValidation = useValidation({ - source: encodeInput, + source: decodeInput, rules: [ { validator: value => isNotThrowing(() => decodeURIComponent(value)), From 221ddfa75c5731d7a5dc1f0b03663ba4fd9e7965 Mon Sep 17 00:00:00 2001 From: Christopher Conley Date: Sun, 5 May 2024 12:49:31 -0400 Subject: [PATCH 06/14] fix(language): English language cleanup (#1036) Fix possessive vs. contraction form of "it," clarification, and some general cleanup --- locales/en.yml | 90 +++++++++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/locales/en.yml b/locales/en.yml index 50d48af9..d09d435a 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -7,7 +7,7 @@ home: toggleMenu: 'Toggle menu' home: Home uiLib: 'UI Lib' - support: 'Support IT Tools development' + support: 'Support IT-Tools development' buyMeACoffee: 'Buy me a coffee' follow: title: 'You like it-tools?' @@ -15,7 +15,7 @@ home: githubRepository: 'IT-Tools GitHub repository' p2: 'or follow us on' twitterAccount: 'IT-Tools Twitter account' - thankYou: 'Thank you !' + thankYou: 'Thank you!' nav: github: 'GitHub repository' githubRepository: 'IT-Tools GitHub repository' @@ -72,7 +72,7 @@ tools: password-strength-analyser: title: Password strength analyser - description: Discover the strength of your password with this client side only password strength analyser and crack time estimation tool. + description: Discover the strength of your password with this client-side-only password strength analyser and crack time estimation tool. chronometer: title: Chronometer @@ -98,7 +98,7 @@ tools: 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: title: JSON to CSV @@ -126,11 +126,11 @@ tools: crontab-generator: title: Crontab generator - description: Validate and generate crontab and get the human readable description of the cron schedule. + description: Validate and generate crontab and get the human-readable description of the cron schedule. 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: title: SQL prettify and format @@ -142,7 +142,7 @@ tools: git-memo: title: Git cheatsheet - description: Git is a decentralized version management software. With this cheatsheet you will have a quick access to the most common git commands. + description: Git is a decentralized version management software. With this cheatsheet, you will have quick access to the most common git commands. slugify-string: title: Slugify string @@ -150,7 +150,7 @@ tools: encryption: title: Encrypt / decrypt text - description: Encrypt and decrypt text clear text using crypto algorithm like AES, TripleDES, Rabbit or RC4. + description: Encrypt clear text and decrypt ciphertext using crypto algorithms like AES, TripleDES, Rabbit or RC4. random-port-generator: title: Random port generator @@ -158,11 +158,11 @@ tools: yaml-prettify: 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: title: ETA calculator - description: 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. + 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. roman-numeral-converter: title: Roman numeral converter @@ -174,11 +174,11 @@ tools: bip39-generator: title: BIP39 passphrase generator - description: Generate BIP39 passphrase from existing or random mnemonic, or get the mnemonic from the passphrase. + description: Generate a BIP39 passphrase from an existing or random mnemonic, or get the mnemonic from the passphrase. 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: title: List converter @@ -186,7 +186,7 @@ tools: base64-string-converter: 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: title: TOML to YAML @@ -198,15 +198,15 @@ tools: 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: - title: Url parser - description: Parse an url string to get all the different parts (protocol, origin, params, port, username-password, ...) + title: URL parser + description: Parse a URL into its separate constituent parts (protocol, origin, params, port, username-password, ...) iban-validator-and-parser: title: IBAN validator and parser - description: 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. + 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. user-agent-parser: title: User-agent parser @@ -218,27 +218,27 @@ tools: 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: - title: Escape html entities - description: Escape or unescape html entities (replace <,>, &, " and \' to their html version) + title: Escape HTML entities + description: Escape or unescape HTML entities (replace characters like <,>, &, " and \' with their HTML version) json-prettify: 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: 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: title: MAC address lookup description: Find the vendor and manufacturer of a device by its MAC address. mime-types: - title: Mime types - description: Convert mime types to extensions and vice-versa. + title: MIME types + description: Convert MIME types to file extensions and vice-versa. toml-to-json: title: TOML to JSON @@ -250,19 +250,19 @@ tools: qrcode-generator: title: QR Code generator - description: Generate and download QR-code for an url or just a text and customize the background and foreground colors. + description: Generate and download a QR code for a URL (or just plain text), and customize the background and foreground colors. wifi-qrcode-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: 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: title: Temperature converter - description: Temperature degrees conversions for Kelvin, Celsius, Fahrenheit, Rankine, Delisle, Newton, Réaumur and Rømer. + description: Degrees temperature conversions for Kelvin, Celsius, Fahrenheit, Rankine, Delisle, Newton, Réaumur, and Rømer. chmod-calculator: title: Chmod calculator @@ -270,11 +270,11 @@ tools: 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: title: HTML WYSIWYG editor - description: Online HTML editor with feature-rich WYSIWYG editor, get the source code of the content immediately. + description: Online, feature-rich WYSIWYG HTML editor which generates the source code of the content immediately. yaml-to-toml: title: YAML to TOML @@ -302,15 +302,15 @@ tools: ipv4-subnet-calculator: title: IPv4 subnet calculator - description: Parse your IPv4 CIDR blocks and get all the info you need about your sub network. + description: Parse your IPv4 CIDR blocks and get all the info you need about your subnet. og-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: title: IPv6 ULA generator - description: Generate your own local, non-routable IP addresses on your network according to RFC4193. + description: Generate your own local, non-routable IP addresses for your network according to RFC4193. hash-text: title: Hash text @@ -330,7 +330,7 @@ tools: 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: title: ULID generator @@ -342,31 +342,31 @@ tools: base-converter: title: Integer base converter - description: Convert number between different bases (decimal, hexadecimal, binary, octal, base64, ...) + description: Convert a number between different bases (decimal, hexadecimal, binary, octal, base64, ...) 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: title: UUIDs generator 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!). ipv4-address-converter: - title: Ipv4 address converter - description: Convert an ip address into decimal, binary, hexadecimal or event in ipv6 + title: IPv4 address converter + description: Convert an IP address into decimal, binary, hexadecimal, or even an IPv6 representation of it. text-statistics: title: Text statistics - description: Get information about a text, the amount of characters, the amount of words, it\'s size, ... + description: Get information about a text, the number of characters, the number of words, its size in bytes, ... 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: 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: title: Text to Unicode @@ -374,7 +374,7 @@ tools: ipv4-range-expander: title: IPv4 range expander - description: Given a start and an end IPv4 address this tool calculates a valid IPv4 network with its CIDR notation. + description: Given a start and an end IPv4 address, this tool calculates a valid IPv4 subnet along with its CIDR notation. text-diff: title: Text diff @@ -385,9 +385,9 @@ tools: description: Generate and validate time-based OTP (one time password) for multi-factor authentication. url-encoder: - title: Encode/decode url formatted strings - description: Encode to url-encoded format (also known as "percent-encoded") or decode from it. + title: Encode/decode URL-formatted strings + description: Encode text to URL-encoded format (also known as "percent-encoded"), or decode from it. text-to-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. From 2c2fb216e36e5c4be0a6f6e2977da7a7363535f7 Mon Sep 17 00:00:00 2001 From: steffenrapp <88974099+steffenrapp@users.noreply.github.com> Date: Fri, 10 May 2024 10:57:42 +0200 Subject: [PATCH 07/14] feat(i18n): added German translation (#1038) * feat(i18n): German translation * more * more * more * rest --- locales/de.yml | 455 ++++++++++++++++++ .../i18n/components/locale-selector.vue | 1 + 2 files changed, 456 insertions(+) create mode 100644 locales/de.yml diff --git a/locales/de.yml b/locales/de.yml new file mode 100644 index 00000000..5a47c85d --- /dev/null +++ b/locales/de.yml @@ -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. diff --git a/src/modules/i18n/components/locale-selector.vue b/src/modules/i18n/components/locale-selector.vue index 3f0c461c..45732bf9 100644 --- a/src/modules/i18n/components/locale-selector.vue +++ b/src/modules/i18n/components/locale-selector.vue @@ -3,6 +3,7 @@ const { availableLocales, locale } = useI18n(); const localesLong: Record = { en: 'English', + de: 'Deutsch', es: 'Español', fr: 'Français', pt: 'Português', From a7992340f7059bda743d3b0458038b229cb63a35 Mon Sep 17 00:00:00 2001 From: Corentin THOMASSET Date: Fri, 10 May 2024 11:28:45 +0200 Subject: [PATCH 08/14] chore(issues): improved bug issue template (#1046) --- .github/ISSUE_TEMPLATE/bug-report.md | 34 ------------------- .github/ISSUE_TEMPLATE/bug-report.yml | 48 +++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 34 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug-report.md create mode 100644 .github/ISSUE_TEMPLATE/bug-report.yml diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md deleted file mode 100644 index c4bf532b..00000000 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ /dev/null @@ -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. diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 00000000..fb9964d1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -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) + - Self hosting + - Other (installations, docker, etc.) + validations: + required: true From 124284278f0b2e66a96cd8c12b416a3f574a6c2b Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 10 May 2024 11:36:49 +0200 Subject: [PATCH 09/14] refactor(auto-imports): regen auto imports --- components.d.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/components.d.ts b/components.d.ts index e31119b3..f2c3146f 100644 --- a/components.d.ts +++ b/components.d.ts @@ -159,6 +159,7 @@ declare module '@vue/runtime-core' { RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] RsaKeyPairGenerator: typeof import('./src/tools/rsa-key-pair-generator/rsa-key-pair-generator.vue')['default'] + SafelinkDecoder: typeof import('./src/tools/safelink-decoder/safelink-decoder.vue')['default'] SlugifyString: typeof import('./src/tools/slugify-string/slugify-string.vue')['default'] SpanCopyable: typeof import('./src/components/SpanCopyable.vue')['default'] SqlPrettify: typeof import('./src/tools/sql-prettify/sql-prettify.vue')['default'] From 2852c30e1f9e5b0f1c4ce2c6f4bf039dda68f96a Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 10 May 2024 11:37:14 +0200 Subject: [PATCH 10/14] chore(issues): improved issues template --- .github/ISSUE_TEMPLATE/bug-report.yml | 4 +- .github/ISSUE_TEMPLATE/feature-request.yml | 56 ++++++++++++++++++++++ 2 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/feature-request.yml diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index fb9964d1..d338fa3f 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -1,4 +1,4 @@ -name: Bug Report +name: 🐞 Bug Report description: File a bug report. labels: ['bug', 'triage'] assignees: @@ -42,7 +42,7 @@ body: label: Where did you encounter the bug? options: - Public app (it-tools.tech) - - Self hosting + - A self hosted - Other (installations, docker, etc.) validations: required: true diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml new file mode 100644 index 00000000..ed666db9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -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 From 33e5294a948dbea05cdc3e123cc275f5e5b93b69 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 10 May 2024 12:07:50 +0200 Subject: [PATCH 11/14] refactor(lint): removed extra semi --- src/tools/token-generator/token-generator.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tools/token-generator/token-generator.service.ts b/src/tools/token-generator/token-generator.service.ts index 3733a884..f928a415 100644 --- a/src/tools/token-generator/token-generator.service.ts +++ b/src/tools/token-generator/token-generator.service.ts @@ -20,7 +20,7 @@ export function createToken({ withLowercase ? 'abcdefghijklmopqrstuvwxyz' : '', withNumbers ? '0123456789' : '', withSymbols ? '.,;:!?./-"\'#{([-|\\@)]=}*+' : '', - ].join(''); ; + ].join(''); return shuffleString(allAlphabet.repeat(length)).substring(0, length); } From 9dfd347edfc36eb181baea7768cc85d65974cc86 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 10 May 2024 12:08:15 +0200 Subject: [PATCH 12/14] docs(changelog): update changelog for 2024.05.10-33e5294 --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1c12c11c..7d908d43 100644 --- a/CHANGELOG.md +++ b/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. +## 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 ### Features From 38d568798c6de5e8968349f1e1f1ec079d3bb3b6 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 10 May 2024 12:08:16 +0200 Subject: [PATCH 13/14] chore(version): release 2024.05.10-33e5294 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fd6c02e6..b8b1eeee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "it-tools", - "version": "2023.12.21-5ed3693", + "version": "2024.5.10-33e5294", "description": "Collection of handy online tools for developers, with great UX. ", "keywords": [ "productivity", From b59942ad9ff793b16d8d497d7f35f34a00e95469 Mon Sep 17 00:00:00 2001 From: Corentin Thomasset Date: Fri, 10 May 2024 13:26:36 +0200 Subject: [PATCH 14/14] chore(node): upgraded node version in CI workflows --- .github/workflows/codeql-analysis.yml | 69 -------------------- .github/workflows/docker-nightly-release.yml | 2 +- .github/workflows/releases.yml | 2 +- 3 files changed, 2 insertions(+), 71 deletions(-) delete mode 100644 .github/workflows/codeql-analysis.yml diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 6d11e825..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -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 diff --git a/.github/workflows/docker-nightly-release.yml b/.github/workflows/docker-nightly-release.yml index 81a0898c..41dbb155 100644 --- a/.github/workflows/docker-nightly-release.yml +++ b/.github/workflows/docker-nightly-release.yml @@ -32,7 +32,7 @@ jobs: - run: corepack enable - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 cache: 'pnpm' - name: Install dependencies diff --git a/.github/workflows/releases.yml b/.github/workflows/releases.yml index 8ed4099d..d0d3febd 100644 --- a/.github/workflows/releases.yml +++ b/.github/workflows/releases.yml @@ -61,7 +61,7 @@ jobs: - uses: actions/setup-node@v3 with: - node-version: 16 + node-version: 20 cache: 'pnpm' - name: Install dependencies