Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,13 @@

set -e

project_dir="$(realpath "${BASH_SOURCE%/*}")"
project_dir=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)

# Create empty build directory to prevent npm EEXIST error with build.sh
mkdir -p "${project_dir}/build"

# Use SQLite for tests to avoid MySQL dependency
export DATABASE_CLIENT=sqlite

rm -fr "${project_dir}/node_modules"
npm --prefix "${project_dir}" install
Expand Down
20 changes: 14 additions & 6 deletions packages/keybr-color/lib/convert-xyz.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,12 +102,20 @@ test("rgb / oklch", () => {
h: 0.08120522299896633,
alpha: 0.5,
});
like(oklchToRgb(new OklchColor(0.6279553639214313, 0.25768330380536064, 0.08120522299896633, 0.5)), {
r: 0.9999999999999997,
g: 4.304625232653958e-15,
b: 0,
alpha: 0.5,
});
const result = oklchToRgb(new OklchColor(0.6279553639214313, 0.25768330380536064, 0.08120522299896633, 0.5));
// Use approximate comparison for floating-point values
if (Math.abs(result.r - 0.9999999999999997) > 1e-14) {
throw new Error(`r value ${result.r} is not close enough to expected`);
}
if (Math.abs(result.g) > 1e-14) {
throw new Error(`g value ${result.g} is not close enough to zero`);
}
if (Math.abs(result.b) > 1e-14) {
throw new Error(`b value ${result.b} is not close enough to zero`);
}
if (Math.abs(result.alpha - 0.5) > 1e-14) {
throw new Error(`alpha value ${result.alpha} is not close enough to 0.5`);
}

like(rgbToOklch(new RgbColor(1, 1, 1, 0.5)), {
l: 1,
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/af.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "Genereer tiklesse uit die teks van ’n boek. Alle sleutels is by verstek ingesluit. Hierdie modus is vir die voordele.",
"lessonType.code.description": "Oefen leestekens wat spesifiek is vir ’n programmeertaalsintaksis.",
"lessonType.customText.description": "Genereer tiklesse uit die woorde van jou eie persoonlike teks. Alle sleutels is normaalweg ingesluit. Hierdie modus is vir die kenners.",
"lessonType.customText.fromUrl": "Pasgemaakte teks is vanaf die URL gelaai.",
"lessonType.customText.fromUrl.description": "Hierdie teks sal slegs vir die huidige sessie gebruik word en sal nie in jou instellings gestoor word nie.",
"lessonType.guided.description": "Genereer tiklesse met ewekansige woorde deur die fonetiese reëls van jou taal te gebruik. Die sleutelstel word dinamies uitgebrei op grond van jou prestasie. Hierdie modus is vir beginners.",
"lessonType.numbers.description": "Oefen slegs getalle.",
"lessonType.syntax.description": "Genereer lesse wat ooreenstem met die gespesifiseerde programmeertaalsintaksis.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/ar.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "إنشاء دروس الطباعة من نص كتاب. يتم تضمين جميع المفاتيح بشكل افتراضي. هذا الوضع مخصص للمحترفين.",
"lessonType.code.description": "التدرب على رموز علامات الترقيم الخاصة ببناء جمل لغة برمجة.",
"lessonType.customText.description": "أنشئ دروسًا في الكتابة من كلمات نصك المخصص. يتم تضمين جميع المفاتيح بشكل افتراضي. هذا الوضع مخصص للمحترفين.",
"lessonType.customText.fromUrl": "تم تحميل نص مخصص من URL.",
"lessonType.customText.fromUrl.description": "سيتم استخدام هذا النص فقط للجلسة الحالية ولن يتم حفظه في إعداداتك.",
"lessonType.guided.description": "إنشاء دروس كتابة باستخدام كلمات عشوائية باستخدام قواعد صوتيات لغتك. يتم توسيع مجموعة المفاتيح ديناميكيًا بناءً على أدائك. هذا الوضع للمبتدئين.",
"lessonType.numbers.description": "التدرب على الأرقام فقط.",
"lessonType.syntax.description": "إنشاء دروس تشبه بناء جمل لغة البرمجة المحددة.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/bg.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "Генерирайте уроци по машинопис от текста на книга. Всички клавиши са включени по подразбиране. Този режим е за професионалисти.",
"lessonType.code.description": "Практикувайте пунктуационни знаци, които са специфични за синтаксис на език за програмиране.",
"lessonType.customText.description": "Генерирайте уроци по писане от думите на вашия персонализиран текст. Всички клавиши са включени по подразбиране. Този режим е за професионалистите.",
"lessonType.customText.fromUrl": "Персонализираният текст беше зареден от URL.",
"lessonType.customText.fromUrl.description": "Текстът ще бъде използван само за текущата сесия и няма да бъде запазен в настройките ви.",
"lessonType.guided.description": "Генерирайте уроци по писане с произволни думи, като използвате фонетичните правила на вашия език. Наборът клавиши се разширява динамично въз основа на вашето представяне. Този режим е за начинаещи.",
"lessonType.numbers.description": "Упражнявайте само числа.",
"lessonType.syntax.description": "Генерирайте уроци, които наподобяват посочения синтаксис на езика за програмиране.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/bn.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "একটি বইয়ের পাঠ্য থেকে টাইপিং পাঠ তৈরি করুন। ডিফল্টরূপে সমস্ত কী অন্তর্ভুক্ত করা হয়। এই মোড পেশাদারদের জন্য।",
"lessonType.code.description": "প্রোগ্রামিং ভাষার সিনট্যাক্সের জন্য নির্দিষ্ট বিরামচিহ্ন অক্ষরগুলি অনুশীলন করুন।",
"lessonType.customText.description": "আপনার নিজস্ব কাস্টম টেক্সটের শব্দ থেকে টাইপিং পাঠ তৈরি করুন। সমস্ত কী ডিফল্টরূপে অন্তর্ভুক্ত করা হয়। এই মোডটি পেশাদারদের জন্য।",
"lessonType.customText.fromUrl": "কাস্টম টেক্সট URL থেকে লোড করা হয়েছে।",
"lessonType.customText.fromUrl.description": "এই টেক্সটটি শুধুমাত্র বর্তমান সেশনের জন্য ব্যবহৃত হবে এবং আপনার সেটিংসে সংরক্ষিত হবে না।",
"lessonType.guided.description": "আপনার ভাষার ধ্বনিতাত্ত্বিক নিয়ম ব্যবহার করে এলোমেলো শব্দ দিয়ে টাইপিং পাঠ তৈরি করুন। আপনার পারফরম্যান্সের উপর ভিত্তি করে কী সেট গতিশীলভাবে প্রসারিত হয়। এই মোডটি নতুনদের জন্য।",
"lessonType.numbers.description": "শুধুমাত্র সংখ্যা অনুশীলন করুন।",
"lessonType.syntax.description": "নির্দিষ্ট প্রোগ্রামিং ভাষার সিনট্যাক্সের অনুরূপ পাঠ তৈরি করুন।",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@
"lesson.indicator.notCalibrated": "Tecla amb un nivell de confiança desconegut. Encara no l’has premut.",
"lesson.indicator.notIncluded": "Una tecla que encara no ha estat inclosa en les lliçons.",
"lessonType.customText.description": "Genera lliçons de mecanografia a partir de les paraules del teu text personalitzat. Totes les tecles estan incloses per defecte. Aquest mode és per als professionals.",
"lessonType.customText.fromUrl": "El text personalitzat es va carregar des de la URL.",
"lessonType.customText.fromUrl.description": "Aquest text només s’utilitzarà per a la sessió actual i no es desarà a la vostra configuració.",
"lessonType.guided.description": "Genera lliçons de mecanografia amb paraules aleatòries usant les normes fonètiques del teu idioma. El conjunt de tecles s’expandirà dinàmicament basant-se en el teu rendiment. Aquest mode és per als novells.",
"lessonType.numbers.description": "Practica només nombres.",
"lessonType.wordList.description": "Genera lliçons de mecanografia a partir de la llista de les paraules més comunes del teu idioma. Totes les tecles estan incloses per defecte. Aquest mode és per als professionals.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "Generuje lekce psaní z textů knížek. V základu jsou zahrnuty všechny znaky. Tento mód je pro profesionály.",
"lessonType.code.description": "Procvičovat interpunkci specifickou pro syntax programovacích jazyků.",
"lessonType.customText.description": "Lekce psaní na klávesnici se generují ze slov vlastního textu. Ve výchozím nastavení jsou zahrnuty všechny klávesy. Tento režim je určen pro zkušené uživatele.",
"lessonType.customText.fromUrl": "Vlastní text byl načten z URL.",
"lessonType.customText.fromUrl.description": "Tento text bude použit pouze pro aktuální relaci a nebude uložen do vašich nastavení.",
"lessonType.guided.description": "Lekce psaní s náhodnými slovy s použitím fonetických pravidel vašeho jazyka. Sada kláves se dynamicky rozšiřuje na základě vašeho pokroku. Tento režim je určen pro začátečníky.",
"lessonType.numbers.description": "Trénovat pouze číslice.",
"lessonType.syntax.description": "Generovat cvičení připomínající syntax specifikovaného programovacího jazyka.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/da.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "Generer skrive lektioner fra tekster fra bøger. All knapper er inkluderet som standard. Denne tilstand er for de dygtige.",
"lessonType.code.description": "Øv tegnsætningstegn, der er specifikke for et programmeringssprogssyntaks.",
"lessonType.customText.description": "Generer skrivelektioner ud fra ordene i din egen tilpassede tekst. Alle taster er inkluderet som standard. Denne tilstand er for de professionelle.",
"lessonType.customText.fromUrl": "Brugerdefineret tekst blev indlæst fra URL.",
"lessonType.customText.fromUrl.description": "Denne tekst vil kun blive brugt til den nuværende session og vil ikke blive gemt i dine indstillinger.",
"lessonType.guided.description": "Generer skrivelektioner med tilfældige ord ved at bruge de fonetiske regler for dit sprog. tastesættet udvides dynamisk baseret på din præstation. Denne tilstand er for begyndere.",
"lessonType.numbers.description": "Øv kun tal.",
"lessonType.syntax.description": "Generer lektioner, der genskaber det angivne programmeringssprogssyntaks.",
Expand Down
4 changes: 3 additions & 1 deletion packages/keybr-intl/translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -337,5 +337,7 @@
"t_ws_Bar_whitespace": "Blankes Leerzeichen",
"t_ws_Bullet_whitespace": "Aufzählungsleerzeichen",
"t_ws_No_whitespace": "Kein Leerzeichen",
"weekDayNames": "Mo|Di|Mi|Do|Fr|Sa|So"
"weekDayNames": "Mo|Di|Mi|Do|Fr|Sa|So",
"lessonType.customText.fromUrl": "Benutzerdefinierter Text wurde aus URL geladen.",
"lessonType.customText.fromUrl.description": "Dieser Text wird nur für die aktuelle Sitzung verwendet und nicht in Ihren Einstellungen gespeichert."
}
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/el.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "Δημιουργήστε μαθήματα πληκτρολόγησης από το κείμενο ενός βιβλίου. Όλα τα κλειδιά περιλαμβάνονται από προεπιλογή. Αυτή η λειτουργία είναι για τους έμπειρους χρήστες.",
"lessonType.code.description": "Εξασκηθείτε στους χαρακτήρες στίξης που είναι συγκεκριμένοι για μια γλώσσα προγραμματισμού.",
"lessonType.customText.description": "Δημιουργήστε μαθήματα πληκτρολόγησης από τις λέξεις του δικού σας προσαρμοσμένου κειμένου. Όλα τα πλήκτρα περιλαμβάνονται από προεπιλογή. Αυτή η λειτουργία είναι για τους επαγγελματίες.",
"lessonType.customText.fromUrl": "Το προσαρμοσμένο κείμενο φορτώθηκε από το URL.",
"lessonType.customText.fromUrl.description": "Αυτό το κείμενο θα χρησιμοποιηθεί μόνο για την τρέχουσα συνεδρία και δεν θα αποθηκευτεί στις ρυθμίσεις σας.",
"lessonType.guided.description": "Δημιουργούνται μαθήματα πληκτρολόγησης με τυχαίες λέξεις χρησιμοποιώντας τους φωνητικούς κανόνες της γλώσσας σας. Το σετ των πλήκτρων επεκτείνεται δυναμικά με βάση την απόδοσή σας. Αυτή η λειτουργία είναι για αρχάριους.",
"lessonType.numbers.description": "Μόνο αριθμοί για εξάσκηση.",
"lessonType.syntax.description": "Δημιουργήστε μαθήματα που μοιάζουν με τη σύνταξη της καθορισμένης γλώσσας προγραμματισμού.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "Generate typing lessons from the text of a book. All keys are included by default. This mode is for the pros.",
"lessonType.code.description": "Practice punctuation characters that are specific to a programming language syntax.",
"lessonType.customText.description": "Generate typing lessons from the words of your own custom text. All keys are included by default. This mode is for the pros.",
"lessonType.customText.fromUrl": "Custom text was loaded from URL.",
"lessonType.customText.fromUrl.description": "This text will only be used for the current session and will not be saved to your settings.",
"lessonType.guided.description": "Generate typing lessons with random words using the phonetic rules of your language. The key set is expanded dynamically based on your performance. This mode is for the beginners.",
"lessonType.numbers.description": "Practice numbers only.",
"lessonType.syntax.description": "Generate lessons that resemble the specified programming language syntax.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/eo.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
"learningRate.remainingLessons": "Proksimume {remainingLessons} restantaj lesonoj por malŝlosi ĉi tiun literon ({certainty} certeco).",
"learningRate.unknown": "Bezonas pli datumaro por komputi la restantaj lesonoj por malŝlosi ĉi tiun literon.",
"lesson.indicator.focused": "Klavo kun pliiĝita ofteco. Vi bezonas la plej grandan tempon por trovi ĉi tiun klavon, do la algoritmo inkluzivatigis en ĉiu produktitajn vortojn.",
"lessonType.customText.fromUrl": "Personaligita teksto estis ŝargita de URL.",
"lessonType.customText.fromUrl.description": "Ĉi tiu teksto nur estos uzata por la nuna sesio kaj ne estos konservita en viaj agordoj.",
"t_Account": "Konta",
"t_Account_details": "Konta Detaloj",
"t_Account_name": "Konta | {name}",
Expand Down
4 changes: 3 additions & 1 deletion packages/keybr-intl/translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -339,5 +339,7 @@
"t_ws_Bar_whitespace": "Guión bajo",
"t_ws_Bullet_whitespace": "Bullet",
"t_ws_No_whitespace": "Sin espacios en blanco",
"weekDayNames": "Lu|Ma|Mi|Ju|Vi|Sa|Do"
"weekDayNames": "Lu|Ma|Mi|Ju|Vi|Sa|Do",
"lessonType.customText.fromUrl": "Texto personalizado cargado desde la URL.",
"lessonType.customText.fromUrl.description": "Este texto solo se utilizará para la sesión actual y no se guardará en su configuración."
}
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/et.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@
"lessonType.books.description": "Genereeri trükkimisõppetunde raamatu tekstist. Kõik klahvid on vaikimisi sissearvestatud. See režiim on mõeldud professionaalidele.",
"lessonType.code.description": "Harjuta kirjavahemärke, mis on programmeerimiskeele süntaksile spetsiifilised",
"lessonType.customText.description": "Loo tippimise harjutusi enda kohandatud teksti sõnadest. Kõik klahvid on vaikimisi lisatud. See režiim on mõeldud professionaalidele.",
"lessonType.customText.fromUrl": "Kohandatud tekst laaditi URL-ilt.",
"lessonType.customText.fromUrl.description": "See tekst kasutatakse ainult praeguses seansis ja ei salvestata teie seadistustesse.",
"lessonType.guided.description": "Loo juhuslike sõnadega tippimisharjutusi, kasutades oma emakeele foneetilisi reegleid. Klahvikomplekt laieneb dünaamiliselt su soorituse põhjal. See režiim on mõeldud algajatele.",
"lessonType.numbers.description": "Ainult harjutuse numbrid.",
"lessonType.syntax.description": "Genereeri õppetunde, mis meenutavad märgitud programmeerimiskeele süntaksit.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/fa.json
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@
"lesson.indicator.notCalibrated": "یک کلید تنظیم نشده با سطح اطمینان نامعلوم. شما هنوز این کلید را فشار نداده‌اید.",
"lesson.indicator.notIncluded": "یک کلبد که هنور در درس‌هایتان افزوده نشده است.",
"lessonType.customText.description": "درس‌های تایپ را از کلمات متن سفارشی خود ایجاد کنید. به طور پیش‌فرض همه کلیدها گنجانده شده‌اند. این حالت برای حرفه‌ای‌ها است.",
"lessonType.customText.fromUrl": "متن سفارشی از URL بارگذاری شد.",
"lessonType.customText.fromUrl.description": "این متن فقط برای جلسه جاری استفاده خواهد شد و در تنظیمات شما ذخیره نخواهد شد.",
"lessonType.guided.description": "تولید درس‌های تایپ با کلمات تصادفی با استفاده از قوانین آوایی زبان شما. مجموعه کلید‌ها بر اساس عملکرد شما به شکل پویا گسترش می‌یابد. این حالت برای افراد مبتدی است.",
"lessonType.numbers.description": "فقط شماره‌ها را تمرین کنید.",
"lessonType.syntax.description": "درس‌هایی تولید کن که نمونه‌ی سینتکس زبان برنامه‌نویسی موردنظر باشند.",
Expand Down
2 changes: 2 additions & 0 deletions packages/keybr-intl/translations/fo.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
"help.rule1.title": "Algoritman byrjar við teir byrjanar bókstavirnir",
"help.rule2.title": "Tú lærir byrjanar bókstavirnir",
"help.rule3.title": "Algoritman leggur fleiri bókstavir afturat",
"lessonType.customText.fromUrl": "Egin tekstur varð lastaður frá URL.",
"lessonType.customText.fromUrl.description": "Hesin teksturin verður bert brúktur til hesa núverandi sessión og verður ikki varðveitt í tínum innstillingum.",
"t_Account_details": "Brúkaraupplýsingar",
"t_Account_name": "Brúkari {navn}",
"t_Anonymize_me": "Ger meg dulnevndan",
Expand Down
4 changes: 3 additions & 1 deletion packages/keybr-intl/translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -331,5 +331,7 @@
"t_ws_Bar_whitespace": "Tiret bas",
"t_ws_Bullet_whitespace": "Point médian",
"t_ws_No_whitespace": "Espace blanc",
"weekDayNames": "Lu|Ma|Me|Je|Ve|Sa|Di"
"weekDayNames": "Lu|Ma|Me|Je|Ve|Sa|Di",
"lessonType.customText.fromUrl": "Texte personnalisé chargé depuis la URL.",
"lessonType.customText.fromUrl.description": "Ce texte ne sera utilisé que pour la session actuelle et ne sera pas enregistré dans vos paramètres."
}
Loading