Skip to content

Latest commit

 

History

History
660 lines (478 loc) · 19.6 KB

File metadata and controls

660 lines (478 loc) · 19.6 KB

Turkish Tools

Kapsamlı Türkçe veri işleme, doğrulama, formatlama ve sahte Türkçe veri üretme araçları kütüphanesi.

📁 Proje Yapısı

├── src/
│   ├── alfabet/alfabet.js
│   ├── date/date.js
│   ├── iban/iban.js
│   ├── phone/phone.js
│   ├── slang/slang.js
│   ├── number/number.js
│   ├── plaka/plaka.js
│   ├── identity/identity.js
│   ├── syllable/syllable.js
│   ├── stopwords/stopwords.js
│   ├── faker/faker.js
│   ├── currency/currency.js
│   ├── address/address.js
│   ├── text/text.js
│   ├── validation/validation.js
│   ├── encryption/encryption.js
│   ├── network/network.js
│   └── statistics/statistics.js
├── index.js
├── test.js
├── package.json
├── README.md
├── LICENSE
├── .gitignore

Her modül kendi klasöründe, ana dosyasıyla birlikte bulunur. Tüm modüller index.js üzerinden dışa aktarılır.

📦 Kurulum

npm install turkish-tools

🚀 Hızlı Başlangıç

const turkishTools = require('turkish-tools');

// Türkçe karakterleri İngilizce'ye çevir
console.log(turkishTools.turkishToEnglish('Çalışma')); // Calisma

// Sahte isim üret
console.log(turkishTools.fakeName()); // Örn: Ayşe Yılmaz

// TC kimlik numarası doğrula
console.log(turkishTools.validateTC('12345678901')); // true/false

// Tarihi Türkçe formatla
console.log(turkishTools.formatDateTR(new Date())); // 12 Mayıs 2024 Pazar

// Para miktarını formatla
console.log(turkishTools.formatTL(1234.56)); // ₺1.234,56

// Şifre hash'le
console.log(turkishTools.sha256Hash('şifrem')); // hash değeri

// İstatistik hesapla
console.log(turkishTools.calculateMean([1, 2, 3, 4, 5])); // 3

📚 Modüller ve Fonksiyonlar

🔤 Alfabe İşlemleri

// Türkçe karakterleri İngilizce'ye çevir
turkishTools.turkishToEnglish('Çalışma'); // Calisma

// İngilizce karakterleri Türkçe'ye çevir
turkishTools.englishToTurkish('Calisma'); // Çalışma

// URL dostu hale getir
turkishTools.toUrlFriendly('Merhaba Dünya!'); // merhaba-dunya

// Türkçe karakter kontrolü
turkishTools.hasTurkishChars('Merhaba'); // true
turkishTools.countTurkishChars('Çalışma'); // 2

📅 Tarih İşlemleri

// Tam tarih formatı
turkishTools.formatDateTR(new Date()); // 12 Mayıs 2024 Pazar

// Kısa tarih formatı
turkishTools.formatDateShortTR(new Date()); // 12 May 2024

// Gün ve ay
turkishTools.formatDayMonthTR(new Date()); // 12 Mayıs

// Tarih ve saat
turkishTools.formatDateTimeTR(new Date()); // 12 Mayıs 2024 Pazar 14:30

// Tarih kontrolleri
turkishTools.isToday(new Date()); // true/false
turkishTools.isYesterday(new Date()); // true/false
turkishTools.isTomorrow(new Date()); // true/false

// Gün farkı
turkishTools.daysFromNow(new Date('2024-01-01')); // 123

🏦 IBAN İşlemleri

// IBAN doğrula
turkishTools.validateIBAN('TR330006100519786457841326'); // true

// IBAN formatla
turkishTools.formatIBAN('TR330006100519786457841326'); // TR33 0006 1005 1978 6457 8413 26

// Banka kodu al
turkishTools.getBankCodeFromIBAN('TR330006100519786457841326'); // 00061

// Hesap numarası al
turkishTools.getAccountNumberFromIBAN('TR330006100519786457841326'); // 00519786457841326

// IBAN maskele
turkishTools.maskIBAN('TR330006100519786457841326'); // TR33 **** **** **** **** 8413

// Türk IBAN'ı kontrolü
turkishTools.isTurkishIBAN('TR330006100519786457841326'); // true

📞 Telefon İşlemleri

// Telefon numarasını normalize et
turkishTools.normalizePhone('0532 123 45 67'); // +905321234567

// Telefon numarası doğrula
turkishTools.validatePhone('0532 123 45 67'); // true

// Telefon formatla
turkishTools.formatPhone('+905321234567', 'local'); // 532 123 45 67
turkishTools.formatPhone('+905321234567', 'national'); // 0532 123 45 67

// Operatör bilgisi
turkishTools.getOperatorFromPhone('+905321234567'); // Turkcell

// Telefon maskele
turkishTools.maskPhone('+905321234567'); // +90 532 *** *** 567

// Telefon tipi
turkishTools.getPhoneType('+905321234567'); // mobile

🚫 Argo/Küfür Filtresi

// Uygunsuz kelimeleri sansürle
turkishTools.filterSlang('Kötü bir kelime'); // K*** bir kelime

// Uygunsuz kelime kontrolü
turkishTools.hasSlang('Bu metin temiz'); // false

// Uygunsuz kelimeleri bul
turkishTools.findSlang('Kötü bir kelime var'); // ['kötü']

// Uygunsuz kelime sayısı
turkishTools.countSlang('Kötü bir kelime var'); // 1

// Metni tamamen temizle
turkishTools.cleanSlang('Kötü bir kelime'); // bir kelime

🔢 Sayı İşlemleri

// Sayıyı yazıya çevir
turkishTools.numberToText(123); // yüz yirmi üç

// Para formatında
turkishTools.amountToText(1234.56); // bin iki yüz otuz dört TL elli altı kuruş

// Sıra sayısı
turkishTools.ordinalToText(3); // üçüncü

// Yüzde formatında
turkishTools.percentageToText(25); // yirmi beş yüzde

🚗 Plaka İşlemleri

// Plaka kodundan şehir
turkishTools.plakaToCity(34); // İstanbul

// Şehirden plaka kodu
turkishTools.cityToPlaka('İstanbul'); // 34

// Tüm plaka kodları
turkishTools.getAllPlateCodes(); // {1: 'Adana', 2: 'Adıyaman', ...}

// Plaka kodu geçerliliği
turkishTools.isValidPlateCode(34); // true

// Plaka formatla
turkishTools.formatPlateCode(5); // 05

// Tam plaka oluştur
turkishTools.createFullPlate(34, 'ABC', '123'); // 34 ABC 123

// Bölgesel gruplar
turkishTools.getPlateCodesByRegion(); // {Marmara: [10, 11, ...], ...}

🆔 Kimlik İşlemleri

// TC kimlik numarası doğrula
turkishTools.validateTC('12345678901'); // true

// TC formatla
turkishTools.formatTC('12345678901'); // 123 456 789 01

// TC maskele
turkishTools.maskTC('12345678901'); // 123 *** *** 01

// Doğum tarihi tahmin et
turkishTools.getBirthDateFromTC('12345678901'); // {year: 1923, month: 4, day: 5, ...}

// Cinsiyet tahmin et
turkishTools.getGenderFromTC('12345678901'); // Erkek/Kadın

// Doğum yılı
turkishTools.getBirthYearFromTC('12345678901'); // 1923

🔤 Heceleme İşlemleri

// Kelimeyi hecelerine ayır
turkishTools.splitSyllables('merhaba'); // ['mer', 'ha', 'ba']

// Hece sayısı
turkishTools.countSyllables('merhaba'); // 3

// Uzun heceler
turkishTools.findLongSyllables('merhaba'); // []

// Kısa heceler
turkishTools.findShortSyllables('merhaba'); // ['mer', 'ha', 'ba']

// Vurgulu hece
turkishTools.findStressedSyllable('merhaba'); // ba

// Tire ile hecele
turkishTools.hyphenateWord('merhaba'); // mer-ha-ba

// Ünlü/ünsüz kontrolü
turkishTools.isVowel('a'); // true
turkishTools.isConsonant('b'); // true

🚫 Stopwords İşlemleri

// Stopwords'leri kaldır
turkishTools.removeStopwords('Bu bir örnek cümledir'); // örnek cümledir

// Stopwords kontrolü
turkishTools.hasStopwords('Bu metin temiz'); // true

// Stopwords'leri bul
turkishTools.findStopwords('Bu bir örnek'); // ['Bu', 'bir']

// Stopwords sayısı
turkishTools.countStopwords('Bu bir örnek'); // 2

// Önemli kelimeleri filtrele
turkishTools.filterImportantWords('Bu bir örnek cümle', 3); // örnek cümle

// Kelime frekansı analizi
turkishTools.analyzeWordFrequency('Bu bir örnek cümle'); // {örnek: 1, cümle: 1}

// Tüm stopwords listesi
turkishTools.getAllStopwords(); // ['ve', 'veya', 'ile', ...]

// Yeni stopwords ekle
turkishTools.addStopword('yeni');

🎭 Sahte Veri Üretici

// Sahte isim
turkishTools.fakeName(); // Ayşe Yılmaz

// Sahte TC
turkishTools.fakeTC(); // 12345678901

// Sahte telefon
turkishTools.fakePhone(); // 0532 123 45 67

// Sahte adres
turkishTools.fakeAddress(); // Atatürk Mahallesi Cumhuriyet Caddesi No:15 İstanbul

// Sahte IBAN
turkishTools.fakeIBAN(); // TR123456789012345678901234

// Sahte e-posta
turkishTools.fakeEmail(); // ayse.yilmaz45@gmail.com

// Sahte plaka
turkishTools.fakePlate(); // 34 ABC 123

// Sahte doğum tarihi
turkishTools.fakeBirthDate(18, 65); // 1985-03-15

// Sahte kullanıcı
turkishTools.fakeUser(); // {firstName: 'Ayşe', lastName: 'Yılmaz', ...}

// Birden fazla sahte kullanıcı
turkishTools.fakeUsers(5); // [user1, user2, user3, user4, user5]

💰 Para Birimi İşlemleri

// TL formatla
turkishTools.formatTL(1234.56); // ₺1.234,56

// Kuruş dönüştürme
turkishTools.kuruşToTL(12345); // 123.45
turkishTools.tlToKuruş(123.45); // 12345

// Para miktarını yazıya çevir
turkishTools.amountToWords(1234.56); // bin iki yüz otuz dört Türk Lirası elli altı kuruş

// Para maskele
turkishTools.maskAmount(1234567); // 12****67

// Para birimi dönüştür
turkishTools.convertCurrency(100, 'TRY', 'USD'); // 3.5

// Para kısalt
turkishTools.abbreviateAmount(1234567); // 1.2 milyon ₺

// Para durumu
turkishTools.getAmountStatus(-100); // negatif

// Para yuvarla
turkishTools.roundAmount(123.456, 2); // 123.46

🏠 Adres İşlemleri

// Adresi parçala
turkishTools.parseAddress('Atatürk Mahallesi Cumhuriyet Caddesi No:15 İstanbul');
// {neighborhood: 'Atatürk Mahallesi', street: 'Cumhuriyet Caddesi', ...}

// Adres formatla
turkishTools.formatAddress(addressParts, 'short'); // Atatürk Mahallesi Cumhuriyet Caddesi İstanbul

// Adres doğrula
turkishTools.validateAddress('Atatürk Mahallesi İstanbul'); // true

// Şehir çıkar
turkishTools.extractCity('Atatürk Mahallesi İstanbul'); // İstanbul

// Mahalle çıkar
turkishTools.extractNeighborhood('Atatürk Mahallesi İstanbul'); // Atatürk Mahallesi

// Cadde çıkar
turkishTools.extractStreet('Cumhuriyet Caddesi İstanbul'); // Cumhuriyet Caddesi

// Adres maskele
turkishTools.maskAddress('Atatürk Mahallesi Cumhuriyet Caddesi No:15 İstanbul'); // Atatürk M******* İstanbul

// Bölge belirle
turkishTools.getAddressRegion('İstanbul'); // Marmara

// Adres uzunluk kategorisi
turkishTools.getAddressLengthCategory('Kısa adres'); // kısa

📝 Metin İşleme

// Metni temizle
turkishTools.cleanText('Merhaba   Dünya!', { removePunctuation: true }); // Merhaba Dünya

// Kelime sayısı
turkishTools.countWords('Merhaba dünya'); // 2

// Karakter sayısı
turkishTools.countCharacters('Merhaba', false); // 7 (boşluksuz)

// Cümle sayısı
turkishTools.countSentences('Merhaba. Nasılsın?'); // 2

// Paragraf sayısı
turkishTools.countParagraphs('Paragraf 1\n\nParagraf 2'); // 2

// Metni böl
turkishTools.splitSentences('Merhaba. Nasılsın?'); // ['Merhaba', 'Nasılsın']
turkishTools.splitWords('Merhaba dünya'); // ['Merhaba', 'dünya']

// Sık kullanılan kelimeler
turkishTools.getMostFrequentWords('Bu bir örnek metin. Bu metin örnek.'); // {bu: 2, örnek: 2, metin: 2}

// Türkçe sayıları çevir
turkishTools.convertTurkishNumbersToDigits('üç kişi'); // 3 kişi

// Metin işlemleri
turkishTools.reverseText('merhaba'); // abahrem
turkishTools.capitalize('merhaba'); // Merhaba
turkishTools.toTitleCase('merhaba dünya'); // Merhaba Dünya
turkishTools.truncateText('Çok uzun metin', 10); // Çok uzun...

// Özel işlemler
turkishTools.removeRepeatedCharacters('merhabaaaa'); // merhabaa
turkishTools.caesarCipher('merhaba', 3); // phukded
turkishTools.caesarDecipher('phukded', 3); // merhaba
turkishTools.removeEmojis('Merhaba 😊'); // Merhaba
turkishTools.removeHtmlTags('<p>Merhaba</p>'); // Merhaba

✅ Veri Doğrulama

// E-posta doğrula
turkishTools.validateEmail('test@example.com'); // true
turkishTools.validateTurkishEmail('test@gmail.com'); // true

// Şifre doğrula
turkishTools.validatePassword('GüçlüŞifre123', { requireSpecialChars: true });
// {isValid: false, errors: ['Şifre en az bir özel karakter içermelidir']}

// Kullanıcı adı doğrula
turkishTools.validateUsername('kullanici123'); // {isValid: true, errors: []}

// Türk isim doğrula
turkishTools.validateTurkishName('Ahmet'); // {isValid: true, errors: []}

// Yaş doğrula
turkishTools.validateAge(25, { minAge: 18, maxAge: 65 }); // {isValid: true, errors: []}

// URL doğrula
turkishTools.validateURL('https://example.com'); // true
turkishTools.validateTurkishURL('https://example.com.tr'); // true

// Tarih doğrula
turkishTools.validateDate('2024-01-01'); // true
turkishTools.validateFutureDate('2025-01-01'); // true
turkishTools.validatePastDate('2023-01-01'); // true

// Sayı doğrula
turkishTools.validateNumber(42, { min: 0, max: 100, integer: true }); // {isValid: true, errors: []}

// Metin uzunluğu doğrula
turkishTools.validateTextLength('Merhaba', { minLength: 5, maxLength: 20 }); // {isValid: true, errors: []}

// Form doğrula
const formData = { email: 'test@example.com', password: '123456' };
const rules = {
  email: { required: true, type: 'email' },
  password: { required: true, type: 'password', options: { minLength: 6 } }
};
turkishTools.validateForm(formData, rules);
// {isValid: false, errors: {password: ['Şifre en az 8 karakter olmalıdır']}}

🔐 Şifreleme ve Güvenlik

// Hash işlemleri
turkishTools.md5Hash('test'); // md5 hash
turkishTools.sha256Hash('test'); // sha256 hash
turkishTools.sha512Hash('test'); // sha512 hash

// Şifre hash'leme
const hashedPassword = await turkishTools.hashPassword('şifrem'); // güvenli hash
const isValid = await turkishTools.verifyPassword('şifrem', hashedPassword); // true

// AES şifreleme
const encrypted = turkishTools.aesEncrypt('gizli mesaj', '32karakterlikanahtar');
const decrypted = turkishTools.aesDecrypt(encrypted, '32karakterlikanahtar'); // gizli mesaj

// Base64 kodlama
turkishTools.base64Encode('test'); // dGVzdA==
turkishTools.base64Decode('dGVzdA=='); // test

// Güvenli string üretme
turkishTools.generateRandomString(32); // rastgele 32 karakter
turkishTools.generateSecurePassword(12); // güvenli şifre

// Dosya hash'i
turkishTools.hashFile(fileBuffer, 'sha256'); // dosya hash'i

// HMAC oluşturma
turkishTools.createHMAC('mesaj', 'anahtar'); // HMAC

// Şifre güvenlik analizi
turkishTools.analyzePasswordSecurity('GüçlüŞifre123');
// {score: 8, level: 'güçlü', suggestions: []}

// JWT token
const token = turkishTools.createJWT({userId: 123}, 'gizli-anahtar', 3600);
const result = turkishTools.verifyJWT(token, 'gizli-anahtar');
// {valid: true, payload: {userId: 123, iat: ..., exp: ...}}

🌐 Ağ ve İnternet İşlemleri

// IP adresi doğrulama
turkishTools.validateIP('192.168.1.1'); // true
turkishTools.validateIPv4('192.168.1.1'); // true
turkishTools.validateIPv6('2001:db8::1'); // true

// IP adresi kontrolü
turkishTools.isPrivateIP('192.168.1.1'); // true
turkishTools.isLoopbackIP('127.0.0.1'); // true

// Domain doğrulama
turkishTools.validateDomain('example.com'); // true
turkishTools.validateTurkishDomain('example.com.tr'); // true

// DNS kayıtları kontrolü
const dnsRecords = await turkishTools.checkDNSRecords('example.com');
// {a: [...], mx: [...], txt: [...]}

// URL işlemleri
turkishTools.parseURL('https://example.com/path?param=value');
// {protocol: 'https:', hostname: 'example.com', ...}

turkishTools.normalizeURL('example.com'); // https://www.example.com
turkishTools.shortenURL('https://example.com/very/long/path', 30); // example.com.../path

// E-posta domain kontrolü
const isValidDomain = await turkishTools.validateEmailDomain('test@example.com'); // true

// Port işlemleri
turkishTools.validatePort(80); // true
turkishTools.getCommonPort(80); // HTTP

// MAC adresi
turkishTools.validateMAC('00:11:22:33:44:55'); // true
turkishTools.formatMAC('00:11:22:33:44:55', 'dash'); // 00-11-22-33-44-55

// Ağ maskesi ve CIDR
turkishTools.validateSubnetMask('255.255.255.0'); // true
turkishTools.validateCIDR('192.168.1.0/24'); // true
turkishTools.isIPInNetwork('192.168.1.100', '192.168.1.0/24'); // true

// Bağlantı testi
const isConnected = await turkishTools.testConnection('google.com', 80); // true

📊 İstatistik ve Analiz

// Temel istatistikler
const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
turkishTools.calculateMean(numbers); // 5.5
turkishTools.calculateMedian(numbers); // 5.5
turkishTools.calculateMode([1, 2, 2, 3, 4]); // [2]

// Dağılım istatistikleri
turkishTools.calculateStandardDeviation(numbers); // 3.0276503540974917
turkishTools.calculateVariance(numbers); // 9.166666666666666
turkishTools.calculateRange(numbers); // 9

// Çeyrekler
turkishTools.calculateQuartiles(numbers); // {q1: 3.25, q2: 5.5, q3: 7.75}
turkishTools.calculateIQR(numbers); // 4.5

// Toplam ve çarpım
turkishTools.calculateSum(numbers); // 55
turkishTools.calculateProduct([1, 2, 3, 4]); // 24

// Farklı ortalamalar
turkishTools.calculateGeometricMean([1, 2, 4, 8]); // 2.8284271247461903
turkishTools.calculateHarmonicMean([1, 2, 4]); // 1.7142857142857142
turkishTools.calculateWeightedMean([1, 2, 3], [1, 2, 3]); // 2.3333333333333335

// Korelasyon
turkishTools.calculateCorrelation([1, 2, 3], [2, 4, 6]); // 1

// Frekans dağılımı
turkishTools.calculateFrequencyDistribution([1, 2, 2, 3]); // {1: 1, 2: 2, 3: 1}

// Yüzdelik dilimler
turkishTools.calculatePercentile(numbers, 50); // 5.5
turkishTools.calculateZScore(numbers, 5); // -0.165

// Aykırı değerler
turkishTools.findOutliers([1, 2, 3, 100, 4, 5]); // [100]

// İstatistiksel özet
const summary = turkishTools.generateStatisticsSummary(numbers);
// {count: 10, mean: 5.5, median: 5.5, mode: [], stdDev: 3.0276503540974917, ...}

// Metin istatistikleri
const textStats = turkishTools.calculateTextStatistics('Bu bir örnek metin. Bu metin örnek.');
// {characterCount: 35, wordCount: 7, sentenceCount: 2, paragraphCount: 1, ...}

📋 Modül Bilgileri

// Modül bilgilerini al
const info = turkishTools.getInfo();
console.log(info);
// {
//   version: '1.0.0',
//   description: 'Kapsamlı Türkçe veri işleme, doğrulama, formatlama ve sahte Türkçe veri üretme araçları',
//   modules: ['alfabet', 'date', 'iban', 'phone', 'slang', 'number', 'plaka', 'identity', 'syllable', 'stopwords', 'faker', 'currency', 'address', 'text', 'validation', 'encryption', 'network', 'statistics'],
//   totalFunctions: 180+
// }

🧪 Test

npm test

📄 Lisans

MIT

🤝 Katkıda Bulunma

  1. Fork yapın
  2. Feature branch oluşturun (git checkout -b feature/amazing-feature)
  3. Commit yapın (git commit -m 'Add amazing feature')
  4. Push yapın (git push origin feature/amazing-feature)
  5. Pull Request oluşturun

⭐️ Öne Çıkan Özellikler

  • Türk alfabesi ve karakter işlemleri
  • Türkçe tarih ve saat formatlama
  • IBAN, telefon, TC kimlik, plaka doğrulama
  • Argo/küfür filtresi ve sansür
  • Sayıdan yazıya ve para birimi işlemleri
  • Plaka-şehir eşleştirme
  • Türkçe kelime heceleme ve stopwords temizleme
  • Sahte veri üretici (isim, adres, telefon, e-posta, vs.)
  • Adres ve metin işleme, analiz ve özetleme
  • Gelişmiş veri doğrulama ve şifreleme araçları
  • Ağ/internet yardımcıları (IP, domain, port, DNS, vs.)
  • Temel ve ileri istatistik fonksiyonları
  • Modüler, genişletilebilir ve test edilebilir yapı

Daha fazla bilgi ve örnek için yukarıdaki modül ve fonksiyon açıklamalarına göz atabilirsiniz.