diff --git a/.github/fern-banner.svg b/.github/fern-banner.svg new file mode 100644 index 00000000..20b918f7 --- /dev/null +++ b/.github/fern-banner.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/.github/logo-dark.png b/.github/logo-dark.png new file mode 100644 index 00000000..9bee8a9c Binary files /dev/null and b/.github/logo-dark.png differ diff --git a/.github/logo-white.png b/.github/logo-white.png new file mode 100644 index 00000000..560a135b Binary files /dev/null and b/.github/logo-white.png differ diff --git a/.github/logo.png b/.github/logo.png deleted file mode 100644 index 18bac950..00000000 Binary files a/.github/logo.png and /dev/null differ diff --git a/CHANGELOG.md b/CHANGELOG.md index 984fa58e..261fb9ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,32 @@ 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.10.22-7ca5933 + +### Features +- **new tool**: Regex Tester (and Cheatsheet) (#1030) (f5c4ab1) +- **new tool**: Markdown to HTML (#916) (87984e2) +- **new-tool**: add email normalizer (#1243) (318fb6e) +- **new tools**: JSON to XML and XML to JSON (#1231) (f1a5489) +- **lorem-ipsum**: add button to refresh text lorem-ipsum (#1213) (e1b4f9a) +- **base64**: Base64 enhancements (#905) (30144aa) + +### Bug fixes +- **favorites**: store favorites regardless of languages (#1202) (7ca5933) +- **emoji-picker**: debounced search input (#1181) (76a19d2) +- **format-transformer**: set overflow for output area width (#787) (b430bae) +- **jwt-parser**: prevent UI overflow on small screen (#1095) (dd4b7e6) + +### Refactoring +- **regex-tester**: better description (7251700) + +### Chores +- **sponsors**: fern sponsor banners (#1314) (f962c41) +- **readme**: updated logos (#1294) (6709498) + +### Documentation +- **author**: updated author links (#1316) (1c35ac3) + ## Version 2024.05.13-a0bc346 ### Features diff --git a/README.md b/README.md index a51f9c53..dfe7f3d4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,15 @@ -![logo](.github/logo.png) + + + + logo + Useful tools for developer and people working in IT. [Have a look !](https://it-tools.tech). +## Sponsors + +[![Fern banner](./.github/fern-banner.svg)](https://bit.ly/3zBl7DG) + ## Functionalities and roadmap Please check the [issues](https://github.com/CorentinTh/it-tools/issues) to see if some feature listed to be implemented. @@ -113,7 +121,7 @@ Big thanks to all the people who have already contributed! ## Credits -Coded with ❤️ by [Corentin Thomasset](//corentin-thomasset.fr). +Coded with ❤️ by [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=readme). This project is continuously deployed using [vercel.com](https://vercel.com). diff --git a/components.d.ts b/components.d.ts index 8e59366a..3e65c3cc 100644 --- a/components.d.ts +++ b/components.d.ts @@ -130,23 +130,19 @@ declare module '@vue/runtime-core' { MetaTagGenerator: typeof import('./src/tools/meta-tag-generator/meta-tag-generator.vue')['default'] MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default'] NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default'] - NButton: typeof import('naive-ui')['NButton'] - NCode: typeof import('naive-ui')['NCode'] + NCheckbox: typeof import('naive-ui')['NCheckbox'] NCollapseTransition: typeof import('naive-ui')['NCollapseTransition'] NConfigProvider: typeof import('naive-ui')['NConfigProvider'] + NDivider: typeof import('naive-ui')['NDivider'] NEllipsis: typeof import('naive-ui')['NEllipsis'] - NForm: typeof import('naive-ui')['NForm'] - NFormItem: typeof import('naive-ui')['NFormItem'] NH1: typeof import('naive-ui')['NH1'] NH3: typeof import('naive-ui')['NH3'] NIcon: typeof import('naive-ui')['NIcon'] - NInputNumber: typeof import('naive-ui')['NInputNumber'] NLayout: typeof import('naive-ui')['NLayout'] NLayoutSider: typeof import('naive-ui')['NLayoutSider'] NMenu: typeof import('naive-ui')['NMenu'] - NScrollbar: typeof import('naive-ui')['NScrollbar'] - NSlider: typeof import('naive-ui')['NSlider'] - NSwitch: typeof import('naive-ui')['NSwitch'] + NSpace: typeof import('naive-ui')['NSpace'] + NTable: typeof import('naive-ui')['NTable'] 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'] @@ -156,6 +152,9 @@ declare module '@vue/runtime-core' { PhoneParserAndFormatter: typeof import('./src/tools/phone-parser-and-formatter/phone-parser-and-formatter.vue')['default'] QrCodeGenerator: typeof import('./src/tools/qr-code-generator/qr-code-generator.vue')['default'] RandomPortGenerator: typeof import('./src/tools/random-port-generator/random-port-generator.vue')['default'] + RegexMemo: typeof import('./src/tools/regex-memo/regex-memo.vue')['default'] + 'RegexMemo.content': typeof import('./src/tools/regex-memo/regex-memo.content.md')['default'] + RegexTester: typeof import('./src/tools/regex-tester/regex-tester.vue')['default'] ResultRow: typeof import('./src/tools/ipv4-range-expander/result-row.vue')['default'] RomanNumeralConverter: typeof import('./src/tools/roman-numeral-converter/roman-numeral-converter.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] diff --git a/locales/de.yml b/locales/de.yml index 5a47c85d..e59ca114 100644 --- a/locales/de.yml +++ b/locales/de.yml @@ -38,7 +38,7 @@ about: # Über IT-Tools Diese wunderbare Website, erstellt mit ❤ von [Corentin - Thomasset](https://github.com/CorentinTh), sammelt nützliche Tools für + Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about), 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 diff --git a/locales/en.yml b/locales/en.yml index d09d435a..d1cd21c4 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -30,7 +30,7 @@ about: content: > # About IT-Tools - 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! + This wonderful website, made with ❤ by [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about) , 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 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). diff --git a/locales/es.yml b/locales/es.yml index b87502fc..2d8b2515 100644 --- a/locales/es.yml +++ b/locales/es.yml @@ -30,7 +30,7 @@ about: content: > # Sobre IT-Tools - Este maravilloso sitio web, hecho con ❤ por [Corentin Thomasset](https://github.com/CorentinTh) , agrega herramientas útiles para desarrolladores y personas que trabajan en IT. Si lo encuentra útil, no dude en compartirlo con las personas que crea que también pueden encontrarlo útil y ¡no olvide marcarlo como favorito en su barra de accesos directos! + Este maravilloso sitio web, hecho con ❤ por [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about) , agrega herramientas útiles para desarrolladores y personas que trabajan en IT. Si lo encuentra útil, no dude en compartirlo con las personas que crea que también pueden encontrarlo útil y ¡no olvide marcarlo como favorito en su barra de accesos directos! IT Tools es de código abierto (under the MIT license) y gratis, y siempre lo será, pero me cuesta dinero alojar y renovar el nombre de dominio. Si desea apoyar mi trabajo y animarme a agregar más herramientas, considere apoyarme a través de[sponsoring me](https://www.buymeacoffee.com/cthmsst). @@ -39,7 +39,7 @@ about: IT Tools está creado en Vue.js (Vue 3) con la biblioteca de componentes Naive UI y Vercel lo aloja y lo implementa continuamente. En algunas herramientas se utilizan bibliotecas de código abierto de terceros; puede encontrar la lista completa en [package.json](https://github.com/CorentinTh/it-tools/blob/main/package.json) archivo del repositorio. ## ¿Encontraste un error? ¿Falta una herramienta? - + Si necesita una herramienta que actualmente no está presente aquí y cree que puede ser útil, puede enviar una solicitud de función en el [issues section](https://github.com/CorentinTh/it-tools/issues/new/choose) en el repositorio de GitHub. Y si encontró un error o algo no funciona como se esperaba, presente un reporte de error en el [issues section](https://github.com/CorentinTh/it-tools/issues/new/choose) en el repositorio de GitHub. @@ -68,4 +68,4 @@ tools: math: Math measurement: Measurement text: Text - data: Data \ No newline at end of file + data: Data diff --git a/locales/fr.yml b/locales/fr.yml index 35c7df2e..cd5cc0e8 100644 --- a/locales/fr.yml +++ b/locales/fr.yml @@ -29,7 +29,7 @@ about: content: > # À propos de IT-Tools - Ce merveilleux site, fait avec ❤ par [Corentin Thomasset](https://github.com/CorentinTh), regroupe des outils utiles pour les développeurs et les personnes travaillant dans l'informatique. Si vous le trouvez utile, n'hésitez pas à le partager et n'oubliez pas de le mettre dans vos favoris ! + Ce merveilleux site, fait avec ❤ par [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about), regroupe des outils utiles pour les développeurs et les personnes travaillant dans l'informatique. Si vous le trouvez utile, n'hésitez pas à le partager et n'oubliez pas de le mettre dans vos favoris ! IT Tools est open-source (sous licence MIT) et gratuit, et le restera toujours, mais cela me coûte de l'argent pour l'héberger et renouveler le nom de domaine. Si vous voulez soutenir mon travail, et m'encourager à ajouter plus d'outils, n'hésitez pas à me [soutenir](https://www.buymeacoffee.com/cthmsst). diff --git a/locales/no.yml b/locales/no.yml new file mode 100644 index 00000000..e8a7cf98 --- /dev/null +++ b/locales/no.yml @@ -0,0 +1,393 @@ +home: + categories: + newestTools: Nyeste verktøy + favoriteTools: 'Dine favoritt verktøy' + allTools: 'Alle verktøyene' + subtitle: 'Nyttige verktøy for utviklere' + toggleMenu: 'Vekslemenmy' + home: Hjem + uiLib: 'UI Bib' + support: 'Støtt utviklingen av IT-Tools' + buyMeACoffee: 'Kjøp en kaffe til meg' + follow: + title: 'Liker du it-tools?' + p1: 'Gi oss en stjerne på' + githubRepository: 'IT-Tools GitHub-depotet' + p2: 'eller følg oss på' + twitterAccount: 'IT-Tools sin twitter konto' + thankYou: 'Tusen takk!' + nav: + github: 'GitHub-depot' + githubRepository: 'IT-Tools GitHub-depot' + twitter: 'Twitter konto' + twitterAccount: 'IT Tools Twitter konto' + about: 'Om IT-Tools' + aboutLabel: 'Om' + darkMode: 'Mørk modus' + lightMode: 'Lys modus' + mode: 'Veksle mørk/lys modus' +about: + content: > + # Om IT-Tools + + Denne vidunderlige nettsiden, laget med ❤ av [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about) , sammenstiller nyttige verktøy for utviklere og folk som jobber innen IT. Hvis du finner dette nyttig, Del det gjerne med andre som du tror kan få nytte av dette, og ikke glem å lage et bokmerke! + + IT Tools er åpen kildekode (under MIT lisensen) og gratis, og det vil det alltid være, men det koster å drifte og å fornye domenet. Hvis du ønsker å støtte arbeidet mitt, og motivere meg til å legge til flere verktøy, gjerne støtt meg ved å [sponse meg](https://www.buymeacoffee.com/cthmsst). + + ## Teknologier + + IT Tools er laget i Vue.js (Vue 3) med Naive UI komponent bibliotektet og er hosted og kontinuerlig deployet av Vercel. Tredjeparts åpen-kildekode biblioteker er brukt i noen verktøy, du kan finne den komplette listen i [package.json](https://github.com/CorentinTh/it-tools/blob/main/package.json) filen i depoet. + + ## Funnet en feil? Et verktøy som mangler? + + Hvis du trenger et verktøy som foreløpig ikke er tilgjengelig her, og du tenker det kan være nyttig for andre, så er du velkommen til å legge til en funksjonsforespørsel i [problem seksjonen](https://github.com/CorentinTh/it-tools/issues/new/choose) i github-depotet. + + Og hvis du har funnet en feil, eller noe ikke oppfører seg som forventet, vennligst send inn en feilrapport i [problem seksjonen](https://github.com/CorentinTh/it-tools/issues/new/choose) i github-depotet. + +404: + notFound: '404 ikke funnet' + sorry: 'Beklager, denne siden ser ikke ut til å eksistere' + maybe: 'Kanskje informasjonskapslene oppfører seg rart, prøvd en tvungen oppfriskning?' + backHome: 'Tilbake til start' +favoriteButton: + remove: 'Fjern fra favoritter' + add: 'Legg til favoritter' +toolCard: + new: Ny +search: + label: Søk +tools: + categories: + favorite-tools: 'Dine favoritt verktøy' + crypto: Krypto + converter: Konvertering + web: Web + images and videos: 'Bilder & Videoer' + development: Utvikling + network: Nettverk + math: Matte + measurement: Måling + text: Tekst + data: Data + + password-strength-analyser: + title: Analyseverktøy for passordstyrke + description: Oppdag styrken av passordet ditt med dette kun-klient-maskin passordstyrke analyse verktøyet og se den estimerte knekketiden. + + chronometer: + title: Kronometer + description: Overvåk varigheten av noe. I bunn og grunn et kronometer med enkle funksjoner. + + token-generator: + title: Token generator + description: Generer en tilfeldig streng med store og/eller små bokstaver, siffer og/eller symboler. + + uppercase: Store bokstaver (ABC...) + lowercase: Små bokstaver (abc...) + numbers: Siffer (123...) + symbols: Symboler (!-;...) + length: Lengde + tokenPlaceholder: 'Tokenet...' + copied: Tokenet er kopiert til utklippstavlen. + button: + copy: Kopier + refresh: Oppfrisk + percentage-calculator: + title: Prosent kalkulator + description: Beregn enkelt prosenter fra en verdi til en annen, eller fra en prosent til en verdi. + + svg-placeholder-generator: + title: SVG plassholder generator + description: Generer svg bilder til å bruke som plassholder i applikasjonen din. + + json-to-csv: + title: JSON til CSV + description: Konverter JSON til CSV med automatisk oppdagelse av headeren. + + camera-recorder: + title: Kameraopptak + description: Ta et bilde eller spill inn en video med webkamera eller kameraet ditt. + + keycode-info: + title: Tastekode info + description: Finn javascript tastekode, kode, plassering og modifikatorer av hvilken som helst tast. + + emoji-picker: + title: Emoji velger + description: Klipp og lim emojis og få unicode og kode verdien av hver emoji. + + color-converter: + title: Farge konverter + description: Konverter farger mellom de forskjellige formatene (hex, rgb, hsl og css navn). + + bcrypt: + title: Bcrypt + description: Hash og sammenlign tekst ved hjelp av bcrypt. Bcrypt er en passord-hashings funksjon basert på Blowfish cipher. + + crontab-generator: + title: Crontab generator + description: Verifiser og generer crontab og få den mennesklig leselige beskrivelsen av cron timeplanen. + + http-status-codes: + title: HTTP status koder + description: Liste over alle HTTP status koder, navnet dems, og betydningen. + + sql-prettify: + title: SQL forskjønning and format + description: Formater og forskjønn SQL spørringene dine (den støtter forskjellige SQL dialekter). + + benchmark-builder: + title: Bygg en referansemåler + description: Sammenlign enkelt kjøretiden av oppgaver med denne enkle referansemåls byggeren. + + git-memo: + title: Git jukselapp + description: Git er en desentralisert versjons håndterings programvare. Med denne jukselappen vil du få kjapp tilgang til de vanligste kommandoene. + + slugify-string: + title: Slugify streng + description: Lag en trygg url, filbane eller id. + + encryption: + title: Krypter / decrypter tekst + description: Krypter klartekst og dekrypter ciphertekst ved bruk av krypteringsalgoritmer som AES, TripleDES, Rabbit eller RC4. + + random-port-generator: + title: Tilfeldig port generator + description: Generer tilfeldige portnumre utenfor scopet av "kjente" porter (0-1023). + + yaml-prettify: + title: YAML forskjønning og formatering + description: Forskjønn YAML strengene dine til et lettlest format. + + eta-calculator: + title: ETA kalkulator + description: En ETA (Estimert Tid for Ankomst) kalkulator for å anslå den sannsynelige slutt tiden for en oppgave, for eksempel, slutttiden og varigheten av en filnedlastning. + + roman-numeral-converter: + title: Romertall konverter + description: Konverter romertall til tall eller konverter tall til romertall. + + hmac-generator: + title: Hmac generator + description: Beregn en hash-basert meldings authentiserings kode (HMAC) ved bruk av en hemmelig nøkkel og din foretrukne hashings funksjon. + + bip39-generator: + title: BIP39 nøkkelords generator + description: Generer et BIP39 nøkkelord fra en eksisterende eller tilfeldig huskesetning, eller få ut en huskesetning fra nøkkelordet. + + base64-file-converter: + title: Base64 fil konverter + description: Konverter en base64 streng til fil eller en fil, bilde til en base64 representasjon. + + list-converter: + title: Liste konverterer + description: Dette verktøyet kan prosessere kolonnebasert data og foreta forskjellige endringer (transposering, legge til prefix og suffix, reversere lister, sortere lister, gjøre om til små bokstaver, trunkere verdier) på hver rad. + + base64-string-converter: + title: Base64 string kode/dekoder + description: Enkelt kode eller dekode en tekststreng til base64 representasjonen av strengen. + + toml-to-yaml: + title: TOML til YAML + description: Parser og konverter TOML til YAML. + + math-evaluator: + title: Matematikkevaluator + description: En Kalkulator for å evaluere matematiske uttrykk. Du kan bruke funksjoner som sqrt, cos, sin, abs, etc. + + json-to-yaml-converter: + title: JSON til YAML konverterer + description: Enkelt konverter JSON til YAML med dette verktøyet. + + url-parser: + title: URL analyse + description: Parsere en URL ned til bestanddelene (protokoll, opprinnelse, parametre, port, brukernavn-passord, ...). + + iban-validator-and-parser: + title: IBAN validering og analysering + description: Valider og parser IBAN numre. Sjekk om et IBAN er gyldig og få landet, BBAN, om det er en QR-IBAN og IBAN i et vennlig format. + + user-agent-parser: + title: User-agent analysering + description: Detekter og parser nettleser, motor, OS, CPU, og enhet type/modell fra en user-agent tekst streng. + + numeronym-generator: + title: Numeronym generator + description: Et numeronym er et ord hvor et nummer er brukt til å lage en forkortelse. For eksempel, "i18n" er et numeronym for "internasjonalisering" hvor 18 står for antall bokstaver mellom første bokstaven i og den siste bokstaven n i ordet. + + case-converter: + title: Bokstavkonvertering + description: Formater bokstavene med store eller små bokstaver, samt andre format. + + html-entities: + title: HTML streng rensing + description: Rens bort eller omsvøp HTML entiteter (erstatt tegn som <,>, &, " and \' med deres HTML versjon). + + json-prettify: + title: JSON forskjønning og formatering + description: Forskjønn JSON strenger til et lettlest format. + + docker-run-to-docker-compose-converter: + title: Docker run til Docker compose konverter + description: Konverter "docker run" kommandoer til docker-compose filer! + + mac-address-lookup: + title: MAC address oppslagsverk + description: Finn forhandler og produsent basert på MAC adressen. + + mime-types: + title: MIME typer + description: Konverter MIME typer til fil utvidelser og visa-versa. + + toml-to-json: + title: TOML til JSON + description: Parser og konverter TOML til JSON. + + lorem-ipsum-generator: + title: Lorem ipsum generator + description: Lorem ipsum er brukt som plassholder tekst, vanligvis brukt til å demonstrere den visuelle formen av et dokument eller font-type uten å måtte ha meningsfult innhold. + + qrcode-generator: + title: QR Kode generator + description: Generer og last ned en QR kode til en URL (eller ren tekst), og tilpass bakgrunns og forgrunns farger. + + wifi-qrcode-generator: + title: WiFi QR Kode generator + description: Generer og last ned QR koder for rask tilkobling til wifi nettverket. + + xml-formatter: + title: XML formaterer + description: Forskjønn en XML streng til et lettlest format. + + temperature-converter: + title: Temperatur konverter + description: Temperatur konversjoner mellom Kelvin, Celsius, Fahrenheit, Rankine, Delisle, Newton, Réaumur, og Rømer. + + chmod-calculator: + title: Chmod kalkulator + description: Beregn chmod tillatelser og kommandoer med denne chmod kalkulatoren. + + rsa-key-pair-generator: + title: RSA nøkkelpar generator + description: Generer et nytt tilfeldig RSA privat og offentlig pem sertifikat nøkkel par. + + html-wysiwyg-editor: + title: HTML WYSIWYG editor + description: Online, funksjonsrik WYSIWYG HTML editor som genererer kildekoden for innholdet øyeblikkelig. + + yaml-to-toml: + title: YAML til TOML + description: Parser og konverter YAML til TOML. + + mac-address-generator: + title: MAC adresse generator + description: Sett inn antall og prefix. MAC addressene blir generert i ønsket format + + json-diff: + title: JSON diff + description: Sammenlign to JSON objekter og finn forskjellene mellom dem. + + jwt-parser: + title: JWT parser + description: Parse og dekode et JSON Web Token (jwt) og vis innholdet. + + date-converter: + title: Dato-tid konverter + description: Konverter dato og tid til forskjellige formater. + + phone-parser-and-formatter: + title: Telefon format og parserer + description: Parser, valider og formater telefon numre. få innformasjonen om telefon nummeret, slik som landskoden, type etc. + + ipv4-subnet-calculator: + title: IPv4 subnet kalkulator + description: Parser IPv4 CIDR blokker of åf all info du trenger om subnettet. + + og-meta-generator: + title: Open graph meta generator + description: Generer open-graph og SoMe HTML meta tagger til nettsiden din. + + ipv6-ula-generator: + title: IPv6 ULA generator + description: Generer din egen lokale, ikke-rutbare IP adresse til nettverket ditt i henhold til RFC4193. + + hash-text: + title: Hash tekst + description: 'Hash en tekst streng med en av algoritmene : MD5, SHA1, SHA256, SHA224, SHA512, SHA384, SHA3 eller RIPEMD160' + + json-to-toml: + title: JSON til TOML + description: Parser og konverter JSON til TOML. + + device-information: + title: Enhets informasjon + description: Få informasjon om din nåværende enhet (skjermstørrelse, piksel-forhold, user agent, etc.) + + pdf-signature-checker: + title: PDF signatur sjekker + description: Bekreft signaturen til en PDF fil. En signert PDF fil inneholder en eller flere signaturer som kan bli brukt til å bestemme om en fil har blitt endret etter at den var signert. + + json-minify: + title: JSON minifiser + description: Minifiser og komprimer JSON ved å fjerne unødvendige mellomrom. + + ulid-generator: + title: ULID generator + description: Generer tilfeldig Universell Unik Leksikografisk Sorterbar Identifikator (ULID). + + string-obfuscator: + title: Streng obfuskator + description: Obfusker en streng (som en hemmelighet, en IBAN, eller et token) og gjør den delbar og identifiserbar uten å vise innholdet. + + base-converter: + title: Heltalls konverter + description: Konverter et heltall mellom forskjellige baser (desimal, hexadesimal, binær, oktal, base64, etc.) + + yaml-to-json-converter: + title: YAML til JSON konverter + description: Konverterl YAML til JSON. + + uuid-generator: + title: UUIDs generator + description: En universell Unik Identifikator (UUID) er et 128-bit nummer, brukt til å identifisere informasjon i datasystemer. + + ipv4-address-converter: + title: IPv4 adresse konverter + description: Konverter en IPv4 adresse til desimal, binær, hexadesimal, eller en IPv6 representasjon. + + text-statistics: + title: Tekst statistikk + description: Få informasjonen om en tekst, antall karakterer, antall ord, størrelsen i bytes, etc. + + text-to-nato-alphabet: + title: Tekst til NATO alfabetet + description: Transformer teksten til det NATO fonetiske alfabetet for muntlig gjengivelse. + + basic-auth-generator: + title: Basic auth generator + description: Generer en base64 basic auth header fra et brukernavn og passord. + + text-to-unicode: + title: Tekst til Unicode + description: Parser og konverter tekst til unicode og visa-versa + + ipv4-range-expander: + title: IPv4 range utvider + description: Gitt en start og en slutt IPv4 adresse, kalkulerer dette verktøyet et gyldig IPv4 subnet sammen med sin CIDR notasjon. + + text-diff: + title: Tekst diff + description: Sammenlign to tekster og vis forskjellen mellom dem. + + otp-generator: + title: OTP kode generator + description: Generer og valider tidsbasert OTP (one time password) for multi-faktor autentisering. + + url-encoder: + title: Kode/dekode URL-formaterte strenger + description: Kode tekst til URL-kodet format (også kjent som "prosent-kodet"), eller dekode fra det. + + text-to-binary: + title: Tekst til ASCII binært + description: Konverter tekst til sin ASCII binære representasjon og visa-versa. diff --git a/locales/pt.yml b/locales/pt.yml index 96fdaed4..822bea8a 100644 --- a/locales/pt.yml +++ b/locales/pt.yml @@ -30,7 +30,7 @@ about: content: > # Sobre o IT-Tools - Este site maravilhoso, feito com ❤ por [Corentin Thomasset](https://github.com/CorentinTh), junta ferramentas úteis para desenvolvedores e outras pessoas que trabalham com TI. Se você achar o site útil, fique à vontade para compartilhar com quem também possa gostar e não esqueça de salvar o bookmark na sua barra de atalhos! + Este site maravilhoso, feito com ❤ por [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about), junta ferramentas úteis para desenvolvedores e outras pessoas que trabalham com TI. Se você achar o site útil, fique à vontade para compartilhar com quem também possa gostar e não esqueça de salvar o bookmark na sua barra de atalhos! O IT Tools é código aberto (sob a licença MIT), é gratuito, e sempre será, mas custa dinheiro para hospedar e renovar o domínio. Se quiser apoiar meu trabalho e me encorajar a adicionar mais ferramentas, por favor considere [ser patrocinador](https://www.buymeacoffee.com/cthmsst). diff --git a/locales/uk.yml b/locales/uk.yml index 2d28f157..ad455a7d 100644 --- a/locales/uk.yml +++ b/locales/uk.yml @@ -30,7 +30,7 @@ about: content: > # Про IT-Tools - Цей чудовий вебсайт, створений з ❤ [Corentin Thomasset](https://github.com/CorentinTh), агрегує корисні інструменти для розробників і людей, які працюють в сфері IT. Якщо вам це корисно, будь ласка, поділіться цим з людьми, які, на вашу думку, також можуть знайти його корисним, і не забудьте додати його до закладок у вашій панелі швидкого доступу! + Цей чудовий вебсайт, створений з ❤ [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about), агрегує корисні інструменти для розробників і людей, які працюють в сфері IT. Якщо вам це корисно, будь ласка, поділіться цим з людьми, які, на вашу думку, також можуть знайти його корисним, і не забудьте додати його до закладок у вашій панелі швидкого доступу! IT Tools є відкритим програмним забезпеченням (під ліцензією MIT) і безкоштовним, і завжди буде таким, але мені коштує гроші для хостингу і продовження доменного імені. Якщо ви хочете підтримати мою роботу і підтримати мене у додаванні нових інструментів, розгляньте можливість підтримки, [спонсоруючи мене](https://www.buymeacoffee.com/cthmsst). diff --git a/locales/vi.yml b/locales/vi.yml index 9eb16bf0..de574a6c 100644 --- a/locales/vi.yml +++ b/locales/vi.yml @@ -30,7 +30,7 @@ about: content: > # Về IT-Tools - Website tuyệt vời này, được tạo ra bằng ❤ bởi [Corentin Thomasset](https://github.com/CorentinTh), tổng hợp các công cụ hữu ích cho nhà phát triển và những người làm việc trong lĩnh vực IT. Nếu bạn thấy nó hữu ích, xin đừng ngần ngại chia sẻ cho những người mà bạn nghĩ sẽ thấy nó hữu ích và đừng quên đánh dấu nó trong thanh lối tắt của bạn! + Website tuyệt vời này, được tạo ra bằng ❤ bởi [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about), tổng hợp các công cụ hữu ích cho nhà phát triển và những người làm việc trong lĩnh vực IT. Nếu bạn thấy nó hữu ích, xin đừng ngần ngại chia sẻ cho những người mà bạn nghĩ sẽ thấy nó hữu ích và đừng quên đánh dấu nó trong thanh lối tắt của bạn! IT Tools là mã nguồn mở (dưới giấy phép MIT) và miễn phí, và sẽ luôn như vậy, nhưng tôi phải trả tiền để lưu trữ và gia hạn tên miền. Nếu bạn muốn hỗ trợ công việc của tôi, và khích lệ tôi thêm nhiều công cụ hơn, hãy xem xét hỗ trợ bằng cách [tài trợ cho tôi](https://www.buymeacoffee.com/cthmsst). diff --git a/locales/zh.yml b/locales/zh.yml index 160fe1fa..9b065682 100644 --- a/locales/zh.yml +++ b/locales/zh.yml @@ -30,7 +30,7 @@ about: content: > # 关于 IT-Tools - IT-Tools 由 [Corentin Thomasset](https://github.com/CorentinTh) 用 ❤ 开发,汇集了对开发人员和 IT 从业者有用的工具。如果对您有帮助,请将其分享给您的朋友,并且添加到收藏夹中! + IT-Tools 由 [Corentin Thomasset](https://corentin.tech?utm_source=it-tools&utm_medium=about) 用 ❤ 开发,汇集了对开发人员和 IT 从业者有用的工具。如果对您有帮助,请将其分享给您的朋友,并且添加到收藏夹中! IT-Tools 永久免费且开源(MIT 许可证),但需要资金用于托管和续订域名。如果您想支持我的工作,并鼓励我添加更多工具,请考虑通过 [赞助我](https://www.buymeacoffee.com/cthmsst) 进行支持。 diff --git a/package.json b/package.json index 63e5856a..4cfbb473 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,14 @@ { "name": "it-tools", - "version": "2024.5.13-a0bc346", + "version": "2024.10.22-7ca5933", + "packageManager": "pnpm@8.15.3", "description": "Collection of handy online tools for developers, with great UX. ", + "author": "Corentin Th (https://corentin.tech)", + "license": "GNU GPLv3", + "repository": { + "type": "git", + "url": "https://github.com/CorentinTh/it-tools" + }, "keywords": [ "productivity", "converter", @@ -13,12 +20,6 @@ "developer-tools", "developer-productivity" ], - "author": "Corentin Th (https://github.com/CorentinTh)", - "license": "GNU GPLv3", - "repository": { - "type": "git", - "url": "https://github.com/CorentinTh/it-tools" - }, "scripts": { "dev": "vite", "build": "vue-tsc --noEmit && NODE_OPTIONS=--max_old_space_size=4096 vite build", @@ -37,12 +38,13 @@ "dependencies": { "@it-tools/bip39": "^0.0.4", "@it-tools/oggen": "^1.3.0", + "@regexper/render": "^1.0.0", "@sindresorhus/slugify": "^2.2.1", "@tiptap/pm": "2.1.6", "@tiptap/starter-kit": "2.1.6", "@tiptap/vue-3": "2.0.3", - "@types/markdown-it": "^13.0.7", "@types/figlet": "^1.5.8", + "@types/markdown-it": "^13.0.7", "@vicons/material": "^0.12.0", "@vicons/tabler": "^0.12.0", "@vueuse/core": "^10.3.0", @@ -84,6 +86,7 @@ "pinia": "^2.0.34", "plausible-tracker": "^0.3.8", "qrcode": "^1.5.1", + "randexp": "^0.5.3", "sql-formatter": "^13.0.0", "ua-parser-js": "^1.0.35", "ulid": "^2.3.0", @@ -93,6 +96,7 @@ "vue": "^3.3.4", "vue-i18n": "^9.9.1", "vue-router": "^4.1.6", + "vue-shadow-dom": "^4.2.0", "vue-tsc": "^1.8.1", "xml-formatter": "^3.3.2", "xml-js": "^1.6.11", @@ -142,6 +146,5 @@ "vitest": "^0.34.0", "workbox-window": "^7.0.0", "zx": "^7.2.1" - }, - "packageManager": "pnpm@8.15.3" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2311f3af..e43a3217 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ dependencies: '@it-tools/oggen': specifier: ^1.3.0 version: 1.3.0 + '@regexper/render': + specifier: ^1.0.0 + version: 1.0.0 '@sindresorhus/slugify': specifier: ^2.2.1 version: 2.2.1 @@ -152,6 +155,9 @@ dependencies: qrcode: specifier: ^1.5.1 version: 1.5.1 + randexp: + specifier: ^0.5.3 + version: 0.5.3 sql-formatter: specifier: ^13.0.0 version: 13.0.0 @@ -179,6 +185,9 @@ dependencies: vue-router: specifier: ^4.1.6 version: 4.1.6(vue@3.3.4) + vue-shadow-dom: + specifier: ^4.2.0 + version: 4.2.0 vue-tsc: specifier: ^1.8.1 version: 1.8.1(typescript@5.2.2) @@ -2480,6 +2489,17 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false + /@regexper/parser@1.0.0: + resolution: {integrity: sha512-S8AWIGpCNdl9PNHdbhI6TpXZsPk6FDU/RTZI+6UFF4rVFqDQKjCIbZSgFu7NihoEZKq57wKFPbbT1EzrjVvPHA==} + dev: false + + /@regexper/render@1.0.0: + resolution: {integrity: sha512-xYm9RUgnhhZotTtf8UZpK1PG2CcTRXQ3JPwfTlYUZsy2J+UcTVc7BaO/MJadpMoVuT8jrIyptH4Y0HLzqhI3hQ==} + dependencies: + '@regexper/parser': 1.0.0 + '@svgdotjs/svg.js': 3.2.4 + dev: false + /@remirror/core-constants@2.0.1: resolution: {integrity: sha512-ZR4aihtnnT9lMbhh5DEbsriJRlukRXmLZe7HmM+6ufJNNUDoazc75UX26xbgQlNUqgAqMcUdGFAnPc1JwgAdLQ==} dependencies: @@ -2629,6 +2649,10 @@ packages: string.prototype.matchall: 4.0.10 dev: true + /@svgdotjs/svg.js@3.2.4: + resolution: {integrity: sha512-BjJ/7vWNowlX3Z8O4ywT58DqbNRyYlkk6Yz/D13aB7hGmfQTvGX4Tkgtm/ApYlu9M7lCQi15xUEidqMUmdMYwg==} + dev: false + /@tiptap/core@2.1.12(@tiptap/pm@2.1.6): resolution: {integrity: sha512-ZGc3xrBJA9KY8kln5AYTj8y+GDrKxi7u95xIl2eccrqTY5CQeRu6HRNM1yT4mAjuSaG9jmazyjGRlQuhyxCKxQ==} peerDependencies: @@ -4962,6 +4986,11 @@ packages: tslib: 2.5.0 dev: false + /drange@1.1.1: + resolution: {integrity: sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==} + engines: {node: '>=4'} + dev: false + /duplexer@0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: true @@ -7758,6 +7787,14 @@ packages: ret: 0.1.15 dev: false + /randexp@0.5.3: + resolution: {integrity: sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==} + engines: {node: '>=4'} + dependencies: + drange: 1.1.1 + ret: 0.2.2 + dev: false + /randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: @@ -7928,6 +7965,11 @@ packages: engines: {node: '>=0.12'} dev: false + /ret@0.2.2: + resolution: {integrity: sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==} + engines: {node: '>=4'} + dev: false + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -9268,6 +9310,10 @@ packages: vue: 3.3.4 dev: false + /vue-shadow-dom@4.2.0: + resolution: {integrity: sha512-lguI064rT2HT/dxqSmXtz860KOvCq+W3nU1jMqroTmX3K1H46q22BMR4emh/Ld3ozy35XJKOaNGcr6mkJ/t/yg==} + dev: false + /vue-template-compiler@2.7.14: resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==} dependencies: diff --git a/src/composable/queryParams.ts b/src/composable/queryParams.ts index 9699abbc..7cc8cc0d 100644 --- a/src/composable/queryParams.ts +++ b/src/composable/queryParams.ts @@ -1,7 +1,8 @@ import { useRouteQuery } from '@vueuse/router'; import { computed } from 'vue'; +import { useStorage } from '@vueuse/core'; -export { useQueryParam }; +export { useQueryParam, useQueryParamOrStorage }; const transformers = { number: { @@ -16,6 +17,12 @@ const transformers = { fromQuery: (value: string) => value.toLowerCase() === 'true', toQuery: (value: boolean) => (value ? 'true' : 'false'), }, + object: { + fromQuery: (value: string) => { + return JSON.parse(value); + }, + toQuery: (value: object) => JSON.stringify(value), + }, }; function useQueryParam({ name, defaultValue }: { name: string; defaultValue: T }) { @@ -33,3 +40,27 @@ function useQueryParam({ name, defaultValue }: { name: string; defaultValue: }, }); } + +function useQueryParamOrStorage({ name, storageName, defaultValue }: { name: string; storageName: string; defaultValue: T }) { + const type = typeof defaultValue; + const transformer = transformers[type as keyof typeof transformers] ?? transformers.string; + + const storageRef = useStorage(storageName, defaultValue); + const proxyDefaultValue = transformer.toQuery(defaultValue as never); + const proxy = useRouteQuery(name, proxyDefaultValue); + + const r = ref(defaultValue); + + watch(r, + (value) => { + proxy.value = transformer.toQuery(value as never); + storageRef.value = value as never; + }, + { deep: true }); + + r.value = (proxy.value && proxy.value !== proxyDefaultValue + ? transformer.fromQuery(proxy.value) as unknown as T + : storageRef.value as T) as never; + + return r; +} diff --git a/src/composable/validation.ts b/src/composable/validation.ts index 472ca4b2..33a6a7b2 100644 --- a/src/composable/validation.ts +++ b/src/composable/validation.ts @@ -3,9 +3,11 @@ import _ from 'lodash'; import { type Ref, reactive, watch } from 'vue'; type ValidatorReturnType = unknown; +type GetErrorMessageReturnType = string; export interface UseValidationRule { validator: (value: T) => ValidatorReturnType + getErrorMessage?: (value: T) => GetErrorMessageReturnType message: string } @@ -24,6 +26,15 @@ export function isFalsyOrHasThrown(cb: () => ValidatorReturnType): boolean { } } +export function getErrorMessageOrThrown(cb: () => GetErrorMessageReturnType): string { + try { + return cb() || ''; + } + catch (e: any) { + return e.toString(); + } +} + export interface ValidationAttrs { feedback: string validationStatus: string | undefined @@ -61,7 +72,13 @@ export function useValidation({ for (const rule of get(rules)) { if (isFalsyOrHasThrown(() => rule.validator(source.value))) { - state.message = rule.message; + if (rule.getErrorMessage) { + const getErrorMessage = rule.getErrorMessage; + state.message = rule.message.replace('{0}', getErrorMessageOrThrown(() => getErrorMessage(source.value))); + } + else { + state.message = rule.message; + } state.status = 'error'; } } diff --git a/src/config.ts b/src/config.ts index 2558d038..fa2421ef 100644 --- a/src/config.ts +++ b/src/config.ts @@ -59,6 +59,12 @@ export const config = figue({ default: false, env: 'VITE_SHOW_BANNER', }, + showSponsorBanner: { + doc: 'Show the sponsor banner', + format: 'boolean', + default: false, + env: 'VITE_SHOW_SPONSOR_BANNER', + }, }) .loadEnv({ ...import.meta.env, diff --git a/src/layouts/base.layout.vue b/src/layouts/base.layout.vue index 62ac5113..ef534209 100644 --- a/src/layouts/base.layout.vue +++ b/src/layouts/base.layout.vue @@ -81,7 +81,7 @@ const tools = computed(() => [
© {{ new Date().getFullYear() }} - + Corentin Thomasset
diff --git a/src/main.ts b/src/main.ts index 36ba3b7f..19d28bf2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,6 +3,7 @@ import { createPinia } from 'pinia'; import { createHead } from '@vueuse/head'; import { registerSW } from 'virtual:pwa-register'; +import shadow from 'vue-shadow-dom'; import { plausible } from './plugins/plausible.plugin'; import 'virtual:uno.css'; @@ -23,5 +24,6 @@ app.use(i18nPlugin); app.use(router); app.use(naive); app.use(plausible); +app.use(shadow); app.mount('#app'); diff --git a/src/modules/i18n/components/locale-selector.vue b/src/modules/i18n/components/locale-selector.vue index 45732bf9..3fef72ab 100644 --- a/src/modules/i18n/components/locale-selector.vue +++ b/src/modules/i18n/components/locale-selector.vue @@ -6,6 +6,7 @@ const localesLong: Record = { de: 'Deutsch', es: 'Español', fr: 'Français', + no: 'Norwegian', pt: 'Português', ru: 'Русский', uk: 'Українська', diff --git a/src/pages/Home.page.vue b/src/pages/Home.page.vue index dfd12b60..190601c1 100644 --- a/src/pages/Home.page.vue +++ b/src/pages/Home.page.vue @@ -15,8 +15,8 @@ const { t } = useI18n();