@jjlmoya/utils-tools 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/tests/slug_language_code_format.test.ts +23 -0
- package/src/tool/drive-direct-link/i18n/pt.ts +1 -1
- package/src/tool/email-list-cleaner/i18n/es.ts +1 -1
- package/src/tool/email-list-cleaner/i18n/pt.ts +1 -1
- package/src/tool/env-badge-spain/i18n/es.ts +1 -1
- package/src/tool/morse-beacon/i18n/es.ts +1 -1
- package/src/tool/morse-beacon/i18n/it.ts +1 -1
- package/src/tool/rule-of-three/i18n/en.ts +1 -1
- package/src/tool/rule-of-three/i18n/ja.ts +1 -1
- package/src/tool/rule-of-three/i18n/ko.ts +1 -1
- package/src/tool/rule-of-three/i18n/pt.ts +1 -1
- package/src/tool/rule-of-three/i18n/zh.ts +1 -1
- package/src/tool/seo-content-optimizer/i18n/nl.ts +1 -1
- package/src/tool/speed-reader/i18n/es.ts +1 -1
- package/src/tool/text-pixel-calculator/i18n/sv.ts +1 -1
- package/src/tool/whatsapp-link/i18n/de.ts +1 -1
- package/src/tool/whatsapp-link/i18n/es.ts +1 -1
- package/src/tool/whatsapp-link/i18n/nl.ts +1 -1
package/package.json
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { ALL_TOOLS } from '../tools';
|
|
3
|
+
import type { ToolLocaleContent } from '../types';
|
|
4
|
+
|
|
5
|
+
describe('Slug Language Code Format Validation', () => {
|
|
6
|
+
ALL_TOOLS.forEach((tool) => {
|
|
7
|
+
describe(`Tool: ${tool.entry.id}`, () => {
|
|
8
|
+
it('slug should not end with 2-letter language codes like -ja, -ru, -ko', async () => {
|
|
9
|
+
const locales = Object.keys(tool.entry.i18n);
|
|
10
|
+
|
|
11
|
+
for (const locale of locales) {
|
|
12
|
+
const loader = tool.entry.i18n[locale as keyof typeof tool.entry.i18n];
|
|
13
|
+
const content = (await loader?.()) as ToolLocaleContent;
|
|
14
|
+
|
|
15
|
+
expect(
|
|
16
|
+
content.slug,
|
|
17
|
+
`Tool "${tool.entry.id}" locale "${locale}" slug ("${content.slug}") cannot end with a 2-letter language code (e.g., -ja, -ru, -ko).`,
|
|
18
|
+
).not.toMatch(/-[a-z]{2}$/);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
});
|
|
@@ -66,7 +66,7 @@ const ui: DriveDirectLinkUI = {
|
|
|
66
66
|
};
|
|
67
67
|
|
|
68
68
|
export const content: ToolLocaleContent<DriveDirectLinkUI> = {
|
|
69
|
-
slug: 'link-download-direto-google-drive
|
|
69
|
+
slug: 'link-download-direto-google-drive',
|
|
70
70
|
title: 'Gerador de Links de Transferência Direta do Google Drive',
|
|
71
71
|
description: 'Converta facilmente qualquer link de partilha do Google Drive num link de transferência direta com um clique, ignorando a pré-visualização do ficheiro. Ferramenta gratuita.',
|
|
72
72
|
ui,
|
|
@@ -72,7 +72,7 @@ const ui: EmailListCleanerUI = {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
export const content: ToolLocaleContent<EmailListCleanerUI> = {
|
|
75
|
-
slug: 'limpiador-listas-
|
|
75
|
+
slug: 'limpiador-listas-emails',
|
|
76
76
|
title: 'Limpiador de Listas de Emails',
|
|
77
77
|
description: 'Limpia listas de correos electrónicos gratis. Elimina duplicados, corrige espacios y valida formatos en segundos. Ahorra costes y mejora tu entregabilidad.',
|
|
78
78
|
ui,
|
|
@@ -72,7 +72,7 @@ const ui: EmailListCleanerUI = {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
export const content: ToolLocaleContent<EmailListCleanerUI> = {
|
|
75
|
-
slug: 'limpador-listas-email
|
|
75
|
+
slug: 'limpador-listas-email',
|
|
76
76
|
title: 'Limpador de Listas de E mail',
|
|
77
77
|
description: 'Limpe listas de e-mail gratuitamente. Remova duplicados, corrija espaços em branco e valide formatos em segundos. Poupe custos e melhore a sua entregabilidade.',
|
|
78
78
|
ui,
|
|
@@ -109,7 +109,7 @@ const ui: EnvBadgeSpainUI = {
|
|
|
109
109
|
};
|
|
110
110
|
|
|
111
111
|
export const content: ToolLocaleContent<EnvBadgeSpainUI> = {
|
|
112
|
-
slug: 'simulador-
|
|
112
|
+
slug: 'simulador-etiqueta-ambienta',
|
|
113
113
|
title: 'Simulador de Etiqueta Ambiental DGT',
|
|
114
114
|
description: 'Descubre gratis qué etiqueta medioambiental de la DGT le corresponde a tu coche, moto o furgoneta para las Zonas de Bajas Emisiones (ZBE) en España.',
|
|
115
115
|
ui,
|
|
@@ -87,7 +87,7 @@ const ui: MorseBeaconUI = {
|
|
|
87
87
|
};
|
|
88
88
|
|
|
89
89
|
export const content: ToolLocaleContent<MorseBeaconUI> = {
|
|
90
|
-
slug: '
|
|
90
|
+
slug: 'baliza-morse',
|
|
91
91
|
title: 'Baliza Morse: Transmisor Táctico SOS',
|
|
92
92
|
description: 'Convierte tu dispositivo en una estación de transmisión Morse. Utiliza flash y pantalla como señales de luz de emergencia y comunicación táctica.',
|
|
93
93
|
ui,
|
|
@@ -87,7 +87,7 @@ const ui: MorseBeaconUI = {
|
|
|
87
87
|
};
|
|
88
88
|
|
|
89
89
|
export const content: ToolLocaleContent<MorseBeaconUI> = {
|
|
90
|
-
slug: 'faro-morse-
|
|
90
|
+
slug: 'faro-morse-trasmettitore',
|
|
91
91
|
title: 'Faro Morse: Trasmettitore Tattico SOS',
|
|
92
92
|
description: 'Trasforma il tuo dispositivo in una stazione di trasmissione Morse. Usa il flash e lo schermo come segnali luminosi di emergenza e comunicazione tattica.',
|
|
93
93
|
ui,
|
|
@@ -82,7 +82,7 @@ const ui: RuleOfThreeUI = {
|
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
export const content: ToolLocaleContent<RuleOfThreeUI> = {
|
|
85
|
-
slug: 'rule-of-three
|
|
85
|
+
slug: 'rule-of-three',
|
|
86
86
|
title: 'Simple Rule of Three Calculator',
|
|
87
87
|
description: 'Solve mathematical proportions instantly. The definitive tool for calculating quantities, recipes, discounts and conversions.',
|
|
88
88
|
ui,
|
|
@@ -82,7 +82,7 @@ const ui: RuleOfThreeUI = {
|
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
export const content: ToolLocaleContent<RuleOfThreeUI> = {
|
|
85
|
-
slug: 'rule-of-three
|
|
85
|
+
slug: 'rule-of-three',
|
|
86
86
|
title: '단순 비례 계산기(삼수법)',
|
|
87
87
|
description: '수학적 비례를 즉시 해결하세요. 수량, 레시피, 할인 및 변환을 계산하기 위한 결정적인 도구입니다.',
|
|
88
88
|
ui,
|
|
@@ -82,7 +82,7 @@ const ui: RuleOfThreeUI = {
|
|
|
82
82
|
};
|
|
83
83
|
|
|
84
84
|
export const content: ToolLocaleContent<RuleOfThreeUI> = {
|
|
85
|
-
slug: 'regra-de-tres
|
|
85
|
+
slug: 'calculadora-regra-de-tres',
|
|
86
86
|
title: 'Calculadora de Regra de Três Simples',
|
|
87
87
|
description: 'Resolva proporções matemáticas instantaneamente. A ferramenta definitiva para calcular quantidades, receitas, descontos e conversões.',
|
|
88
88
|
ui,
|
|
@@ -85,7 +85,7 @@ const ui: SeoContentOptimizerUI = {
|
|
|
85
85
|
};
|
|
86
86
|
|
|
87
87
|
export const content: ToolLocaleContent<SeoContentOptimizerUI> = {
|
|
88
|
-
slug: 'seo-
|
|
88
|
+
slug: 'seo-inhoud-optimizer',
|
|
89
89
|
title: 'SEO Content Optimizer',
|
|
90
90
|
description: 'Analyseer de zoekwoorddichtheid, leesbaarheid en technische HTML-structuur van uw teksten in realtime. Gratis en privé SEO-tool.',
|
|
91
91
|
ui,
|
|
@@ -71,7 +71,7 @@ const ui: SpeedReaderUI = {
|
|
|
71
71
|
};
|
|
72
72
|
|
|
73
73
|
export const content: ToolLocaleContent<SpeedReaderUI> = {
|
|
74
|
-
slug: '
|
|
74
|
+
slug: 'lectura-rapida',
|
|
75
75
|
title: 'RSVP Lector Rápido',
|
|
76
76
|
description: 'Entrena tu velocidad de lectura hasta 1000 palabras por minuto. Tecnología RSVP con alineación de punto focal óptimo. Dobla tu productividad intelectual.',
|
|
77
77
|
ui,
|
|
@@ -76,7 +76,7 @@ const ui: TextPixelCalculatorUI = {
|
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
export const content: ToolLocaleContent<TextPixelCalculatorUI> = {
|
|
79
|
-
slug: 'text-pixel-
|
|
79
|
+
slug: 'text-pixel-beraknare',
|
|
80
80
|
title: 'Text Pixel Beräknare',
|
|
81
81
|
description: 'Beräkna exakt hur bred en text är i pixlar baserat på typsnitt, storlek och stil. Gratis verktyg för designers och utvecklare.',
|
|
82
82
|
ui,
|
|
@@ -72,7 +72,7 @@ const ui: WhatsappLinkUI = {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
export const content: ToolLocaleContent<WhatsappLinkUI> = {
|
|
75
|
-
slug: 'whatsapp-
|
|
75
|
+
slug: 'whatsapp-nachrichtenlink-generaator',
|
|
76
76
|
title: 'WhatsApp Link Generator mit QR',
|
|
77
77
|
description: 'Erstellen Sie direkte WhatsApp-Chat-Links mit vorformulierter Nachricht und QR-Code. Kostenloses Tool, keine Registrierung, 100 % privat.',
|
|
78
78
|
ui,
|
|
@@ -72,7 +72,7 @@ const ui: WhatsappLinkUI = {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
export const content: ToolLocaleContent<WhatsappLinkUI> = {
|
|
75
|
-
slug: 'generador-
|
|
75
|
+
slug: 'generador-enlaces-whatsapp',
|
|
76
76
|
title: 'Generador de Enlace WhatsApp con QR',
|
|
77
77
|
description: 'Crea enlaces directos a tu chat de WhatsApp con mensaje predefinido y código QR. Herramienta gratuita, sin registro y 100% privada.',
|
|
78
78
|
ui,
|
|
@@ -72,7 +72,7 @@ const ui: WhatsappLinkUI = {
|
|
|
72
72
|
};
|
|
73
73
|
|
|
74
74
|
export const content: ToolLocaleContent<WhatsappLinkUI> = {
|
|
75
|
-
slug: 'whatsapp-
|
|
75
|
+
slug: 'whatsapp-berichtlink-generator',
|
|
76
76
|
title: 'WhatsApp Link Generator met QR',
|
|
77
77
|
description: 'Maak directe WhatsApp-chatlinks met vooraf ingevuld bericht en QR-code. Gratis tool, geen registratie, 100% privé.',
|
|
78
78
|
ui,
|