tdk-api-wrapper 1.0.1 → 1.1.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/README.md CHANGED
@@ -7,11 +7,11 @@ Bu proje, Türk Dil Kurumu (TDK) sözlük verilerine Node.js ortamından doğrud
7
7
  Projeyi Node.js projenize dahil etmek için aşağıdaki paket yöneticilerinden uygun olanı kullanabilirsiniz:
8
8
 
9
9
  ```bash
10
- npm install tdk-api
10
+ npm install tdk-api-wrapper
11
11
  ```
12
12
  veya global yükleyerek komut satırı aracını (CLI) kullanmak için:
13
13
  ```bash
14
- npm install -g tdk-api
14
+ npm install -g tdk-api-wrapper
15
15
  ```
16
16
 
17
17
  ## Komut Satırı Arayüzü (CLI) Kullanımı
@@ -25,6 +25,22 @@ tdk koken lisan
25
25
  tdk hece muvaffakiyet
26
26
  tdk uyum elma
27
27
  tdk yazim herkes
28
+ tdk gunun
29
+ tdk rastgele
30
+ tdk esanlam güzel
31
+ tdk karsit kötü
32
+ tdk yabanci kalem
33
+ tdk kurallar
34
+ tdk kural kısaltmalar
35
+ tdk karsilastir kalem kağıt
36
+ tdk analiz "Bu güzel kalem masanın üstünde duruyor"
37
+ ```
38
+
39
+ Herhangi bir komuta `--json` bayrağı eklendiğinde çıktı, insan-okunur metin yerine tek satırlık JSON olarak basılır (script/otomasyon kullanımı için):
40
+
41
+ ```bash
42
+ tdk ara kalem --json
43
+ # ["Yazma, çizme vb. işlerde kullanılan çeşitli biçimlerde araç", ...]
28
44
  ```
29
45
 
30
46
  ## Kullanım Başlangıcı
@@ -51,18 +67,48 @@ Aşağıdaki metotlar `TDK` sınıfı üzerinden statik olarak erişilebilir dur
51
67
  - **`TDK.syllabicate(word)`**: Kelimeyi Türkçe heceleme kurallarına göre doğru hecelerine ayırır (Örn: `['mu', 'vaf', 'fa', 'ki', 'yet']`). API isteği atmaz, çok hızlıdır.
52
68
  - **`TDK.checkVowelHarmony(word)`**: Kelimenin büyük ünlü uyumuna uyup uymadığını (boolean) kontrol eder.
53
69
  - **`TDK.getPartOfSpeech(word)`**: Kelimenin sözcük türünü (isim, sıfat, zarf vb.) döndürür.
54
- - **`TDK.checkSpelling(word)`**: Sıkça yapılan yanlışlar listesini ve TDK veritabanını kullanarak kelimenin doğru yazılıp yazılmadığını kontrol eder. Yanlışsa doğrusunu önerir.
70
+ - **`TDK.checkSpelling(word)`**: Sıkça yapılan yanlışlar listesini ve TDK veritabanını kullanarak kelimenin doğru yazılıp yazılmadığını kontrol eder. Yanlışsa doğrusunu önerir; tam eşleşme yoksa, aynı listedeki kelimeler arasında edit-distance (Levenshtein) ile en yakınını önerir (not: tüm sözlükte değil, yalnızca bu küçük havuzda arama yapar).
55
71
  - **`TDK.getCompoundWords(word)`**: Aranan kelime ile oluşturulmuş birleşik kelimeleri (Örn: dolma kalem) listeler.
56
72
 
57
73
  ### 3. Edebi ve Kültürel Analiz
58
74
  - **`TDK.getExamples(word)`**: Ünlü yazarlardan edebi örnek cümleleri ve yazar isimlerini liste halinde döner.
59
- - **`TDK.getOrigin(word)`**: Kelimenin hangi dilden geldiğini (etimolojik lisan kökenini) döner.
75
+ - **`TDK.getOrigin(word)`**: Kelimenin hangi dilden geldiğini (etimolojik lisan kökenini) döner; kelime hiç bulunamazsa `null` döner, bulunup köken kaydı yoksa `"Türkçe"` döner.
60
76
  - **`TDK.getProverbs(word)`**: Yalnızca aranan kelimenin geçtiği atasözü ve deyimleri dizi olarak getirir.
77
+ - **`TDK.isForeignWord(word)`**: Kelimenin yabancı kökenli olup olmadığını `boolean` olarak döner; kelime bulunamazsa `null` döner.
78
+ - **`TDK.groupByOrigin(words)`**: Bir kelime listesini etimolojik kökenlerine göre gruplar (bulunamayanlar `"Bilinmiyor"` altında toplanır).
79
+ - **`TDK.getSynonyms(word)`** / **`TDK.getAntonyms(word)`**: Kelimenin eş/zıt anlamlılarını döner (undocumented `gts-yeni` endpoint'i üzerinden; sonuç bulunamazsa `[]`).
80
+ - **`TDK.compareWords(a, b)`**: İki kelimeyi anlam sayısı, köken, hece bölünüşü ve büyük ünlü uyumu açısından yan yana karşılaştırır.
81
+ - **`TDK.analyzeText(text)`**: Bir metindeki (Türkçe bağlaçlar/edatlar hariç) her benzersiz kelimeyi tek tek arayıp ilk anlamını ve kökenini döner.
61
82
 
62
83
  ### 4. Yardımcı Metotlar
63
84
  - **`TDK.getSuggestions(prefix)`**: Kelimenin sadece ilk birkaç harfini girdiğinizde otomatik tamamlama önerilerini çeker.
64
- - **`TDK.getAudioUrl(word)`**: Varsa TDK telaffuz ses dosyasının URL'sini oluşturur. `downloadAudio(word, destPath)` ile cihazınıza indirebilirsiniz.
85
+ - **`TDK.getAudioUrl(word)`**: TDK'nin bu kelime için gerçekten bir ses kaydı varsa doğrudan indirme URL'sini döner, yoksa `null`. `downloadAudio(word, destPath)` ile cihazınıza indirebilirsiniz.
65
86
  - **`TDK.getDailyContent()`**: TDK anasayfasında yer alan "Günün Kelimesi, Atasözü ve Kuralı" içeriklerini çeker.
87
+ - **`TDK.getWordOfTheDay()`**: `getDailyContent()`'in üzerine ince bir katman; günün kelimesini ve tüm anlamlarını `{ word, meanings }` şeklinde döner.
88
+ - **`TDK.getRandomWord()`**: Günün içeriğindeki kelime ve atasözü havuzundan rastgele bir tanesini `{ type: "kelime" | "atasoz", madde, anlam }` şeklinde seçer (not: tüm sözlük değil, sadece o günkü içerik havuzundan seçim yapar).
89
+ - **`TDK.getKurallar()`**: TDK'nin `/icerik` akışının o an döndürdüğü yazım kuralı sayfa(lar)ını `{ adi, url }` şeklinde listeler. Not: bu sabit bir katalog değildir — `/icerik` her istekte, yaklaşık yirmi kurallık bir havuzdan rastgele tek bir kural döndürür.
90
+ - **`TDK.getRule(name)`**: Adı verilen (küçük/büyük harf duyarsız, alt dize eşleşmesi) yazım kuralının tam metnini `tdk.gov.tr`'den çekip düz metne çevirir. `getKurallar()`'ın rastgeleliği yüzünden istenen kuralı bulana kadar sınırlı sayıda (en fazla 25, aralarda kısa bekleme ile) yeniden dener; bulamazsa veya sayfa ayrıştırılamazsa `null` döner.
91
+
92
+ ## Hata Yönetimi
93
+
94
+ Kütüphane, ayırt edilebilir hata sınıfları fırlatır (hepsi `Error`'dan türer):
95
+
96
+ - **`TDKValidationError`**: Boş kelime gibi geçersiz bir parametre verildiğinde.
97
+ - **`TDKNetworkError`**: Ağ isteği başarısız olduğunda, TDK sunucusu HTTP hata kodu döndüğünde veya cevap JSON olarak parse edilemediğinde (`status` ve `cause` alanlarını taşır).
98
+
99
+ ```typescript
100
+ import { TDK, TDKValidationError, TDKNetworkError } from 'tdk-api';
101
+
102
+ try {
103
+ await TDK.getWord('');
104
+ } catch (e) {
105
+ if (e instanceof TDKValidationError) {
106
+ console.log('Geçersiz girdi:', e.message);
107
+ } else if (e instanceof TDKNetworkError) {
108
+ console.log('Ağ hatası:', e.message, e.status);
109
+ }
110
+ }
111
+ ```
66
112
 
67
113
  ## Lisans
68
114