{"_id":"@apideposu/tr-validation","_rev":"5-78d076c28d7f5137d212311bd1b32dc2","name":"@apideposu/tr-validation","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@apideposu/tr-validation","version":"0.1.0","keywords":["turkiye","turkish","validation","normalization","iban","tckn","vkn","privacy","local-only"],"license":"MIT","_id":"@apideposu/tr-validation@0.1.0","maintainers":[{"name":"apideposu","email":"iletisim@apideposu.com"}],"homepage":"https://github.com/apideposu/tr-validation#readme","bugs":{"url":"https://github.com/apideposu/tr-validation/issues"},"dist":{"shasum":"e16de4216be431106840dedd7ee32d359c41d66c","tarball":"https://registry.npmjs.org/@apideposu/tr-validation/-/tr-validation-0.1.0.tgz","fileCount":9,"integrity":"sha512-9OHz5dP05494sC81BtrfMmTQVBnfE1gzoF8cbEMW0r/cSFGGwjAY8mLxXFI/6+Z/X/dA8i2f1sz/IpC7anC4Jw==","signatures":[{"sig":"MEUCICsAtv3OBXakjEiBbbN5UV4h91tGzQTZmAff7cWAEqp6AiEAlK+h8dJCxeYFrnKq3q7sCEJaHqS+SjtLd+DKlgKBcpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60366},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f60d64c670ff209705d5a565c707c37c2864ae32","scripts":{"test":"vitest run","build":"tsup","clean":"node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true })\"","test:watch":"vitest"},"_npmUser":{"name":"apideposu","email":"iletisim@apideposu.com"},"repository":{"url":"git+https://github.com/apideposu/tr-validation.git","type":"git"},"_npmVersion":"11.6.0","description":"Local-only validation and normalization toolkit for Türkiye-specific form data.","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.17"},"_npmOperationalInternal":{"tmp":"tmp/tr-validation_0.1.0_1777730756736_0.7379282227083446","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@apideposu/tr-validation","version":"0.2.0","keywords":["turkiye","turkish","validation","normalization","iban","phone","province","district","tckn","vkn","privacy","local-only"],"license":"MIT","_id":"@apideposu/tr-validation@0.2.0","maintainers":[{"name":"apideposu","email":"iletisim@apideposu.com"}],"homepage":"https://github.com/apideposu/tr-validation#readme","bugs":{"url":"https://github.com/apideposu/tr-validation/issues"},"dist":{"shasum":"8682510fed8648d4355acdb9040f4d5fb92d3007","tarball":"https://registry.npmjs.org/@apideposu/tr-validation/-/tr-validation-0.2.0.tgz","fileCount":9,"integrity":"sha512-9mS5Q9YGUpfydK4LqrUn099Z8KjT6qFnYYkWAgK1pWRh7e3k07DMwxw1Y1fo74QgXzTfhgkKBtKOs/qVaSeyLA==","signatures":[{"sig":"MEQCIBLbObof2mC8rT4/br9Lxov2Q69frvaqw1ZKX2KxE4IYAiBH7ZpOgHJgJPtOYGcSnLL4RkQ0RtkZ6h/ZD4icZE75Hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1052273},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c38c607d5c561f6d3ae45df3c9d3eff696b89742","scripts":{"test":"vitest run","build":"tsup","clean":"node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true })\"","test:watch":"vitest"},"_npmUser":{"name":"apideposu","email":"iletisim@apideposu.com"},"repository":{"url":"git+https://github.com/apideposu/tr-validation.git","type":"git"},"_npmVersion":"11.6.0","description":"Local-only validation and normalization toolkit for Turkiye-specific form data.","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"libphonenumber-js":"^1.12.42"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.17"},"_npmOperationalInternal":{"tmp":"tmp/tr-validation_0.2.0_1777733982127_0.8897278652381262","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@apideposu/tr-validation","version":"0.2.1","keywords":["turkiye","turkish","validation","normalization","iban","phone","province","district","tckn","vkn","privacy","local-only"],"license":"MIT","_id":"@apideposu/tr-validation@0.2.1","maintainers":[{"name":"apideposu","email":"iletisim@apideposu.com"}],"homepage":"https://github.com/apideposu/tr-validation#readme","bugs":{"url":"https://github.com/apideposu/tr-validation/issues"},"dist":{"shasum":"81b10a286f98c316b02f5fd7e50e90f45abe1371","tarball":"https://registry.npmjs.org/@apideposu/tr-validation/-/tr-validation-0.2.1.tgz","fileCount":10,"integrity":"sha512-WYfL5EVW8SXZIrsewnA3TOlCYqU8H77V+iWjwbypJXnl20JH4qInRsdQAOC3oonerTaWff/ho20lknjPcRBXFA==","signatures":[{"sig":"MEYCIQDUYr2u1ojhxABtBB99V8z1OH6dWtWPGMCpvcA2pUd10wIhAMuWtxk3Riq7UvnDejJi1F4b+sK0mIrDoHhxur4AxET0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1063377},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"61208a80bcd983f1a94e311cd93adb50500d4157","scripts":{"test":"vitest run","build":"tsup","clean":"node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true })\"","test:watch":"vitest","datasets:check":"node scripts/check-datasets.mjs"},"_npmUser":{"name":"apideposu","email":"iletisim@apideposu.com"},"repository":{"url":"git+https://github.com/apideposu/tr-validation.git","type":"git"},"_npmVersion":"11.6.0","description":"Local-only validation and normalization toolkit for Turkiye-specific form data.","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"libphonenumber-js":"^1.12.42"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.17"},"_npmOperationalInternal":{"tmp":"tmp/tr-validation_0.2.1_1777737327195_0.12550286228223184","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@apideposu/tr-validation","version":"0.3.0","keywords":["turkiye","turkish","validation","normalization","iban","phone","province","district","tckn","vkn","privacy","local-only"],"license":"MIT","_id":"@apideposu/tr-validation@0.3.0","maintainers":[{"name":"apideposu","email":"iletisim@apideposu.com"}],"homepage":"https://github.com/apideposu/tr-validation#readme","bugs":{"url":"https://github.com/apideposu/tr-validation/issues"},"dist":{"shasum":"e9c9114104270829203b11526245389ac642e1f8","tarball":"https://registry.npmjs.org/@apideposu/tr-validation/-/tr-validation-0.3.0.tgz","fileCount":10,"integrity":"sha512-e8BJhwrhqv6ecaiHHCnDv70P5dEzohP5vHu7oLNJXBFZACa66Q7+7fdpt8PD9/5VmFaDP4FnAwZ0Onoh8V5ZaA==","signatures":[{"sig":"MEUCIGqHoHHuFMWD2nKy9W1dlBFwZ29J7fkMlHWG/Ct87RyyAiEAw565ayVL5v7KDFLzWWQvVIMha81qfgOveyJgRA4gmgk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1243655},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"8eb5727cfa672c56acf31a719f19670086368038","scripts":{"test":"vitest run","build":"tsup","clean":"node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true })\"","test:watch":"vitest","datasets:check":"node scripts/check-datasets.mjs"},"_npmUser":{"name":"apideposu","email":"iletisim@apideposu.com"},"repository":{"url":"git+https://github.com/apideposu/tr-validation.git","type":"git"},"_npmVersion":"11.6.0","description":"Local-only validation and normalization toolkit for Turkiye-specific form data.","directories":{},"sideEffects":false,"_nodeVersion":"22.11.0","dependencies":{"libphonenumber-js":"^1.12.42"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.0","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.17"},"_npmOperationalInternal":{"tmp":"tmp/tr-validation_0.3.0_1777744888913_0.04944379435875357","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@apideposu/tr-validation","version":"0.4.0","description":"Local-only validation and normalization toolkit for Turkiye-specific form data.","license":"MIT","type":"module","sideEffects":false,"main":"./dist/index.cjs","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs","default":"./dist/index.js"}},"engines":{"node":">=18"},"publishConfig":{"access":"public"},"repository":{"type":"git","url":"git+https://github.com/apideposu/tr-validation.git"},"bugs":{"url":"https://github.com/apideposu/tr-validation/issues"},"homepage":"https://github.com/apideposu/tr-validation#readme","keywords":["turkiye","turkish","validation","normalization","iban","phone","province","district","tckn","vkn","privacy","local-only"],"scripts":{"datasets:check":"node scripts/check-datasets.mjs","size:check":"node scripts/check-bundle-size.mjs","smoke:runtime":"node scripts/smoke-runtime.mjs","benchmark":"node scripts/benchmark.mjs","clean":"node -e \"require('node:fs').rmSync('dist',{ recursive: true, force: true })\"","build":"tsup","test":"vitest run","test:watch":"vitest"},"dependencies":{"libphonenumber-js":"^1.12.42"},"devDependencies":{"@types/node":"^22.15.17","tsup":"^8.5.0","typescript":"^5.8.3","vitest":"^3.1.3"},"_id":"@apideposu/tr-validation@0.4.0","gitHead":"b037042c14268aed46d03118ea662a07300bf0f8","_nodeVersion":"22.11.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-xfsQXLzWtVN6//6ey0Ti3+prTxc6qISUTw2U9y8+kdfjxNdgSrdH+xT4VzSCj4rw6JimyzbT+Kb+ZOe1fhgBQQ==","shasum":"fa5d6a5092f9ac0368dc12c92e68046d23b494e5","tarball":"https://registry.npmjs.org/@apideposu/tr-validation/-/tr-validation-0.4.0.tgz","fileCount":10,"unpackedSize":1290783,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCBWkKm642lzyf6RAT0ymdNqgJhwNasj4xAK2JNjtx5AQIgamb3uOlxXHssbDOfjjzDJlPYmkpMFwFQyBR4RQXTKVQ="}]},"_npmUser":{"name":"apideposu","email":"iletisim@apideposu.com"},"directories":{},"maintainers":[{"name":"apideposu","email":"iletisim@apideposu.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tr-validation_0.4.0_1777764364631_0.9822541211964211"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-02T14:05:56.581Z","modified":"2026-05-02T23:26:04.928Z","0.1.0":"2026-05-02T14:05:56.919Z","0.2.0":"2026-05-02T14:59:42.275Z","0.2.1":"2026-05-02T15:55:27.344Z","0.3.0":"2026-05-02T18:01:29.056Z","0.4.0":"2026-05-02T23:26:04.817Z"},"bugs":{"url":"https://github.com/apideposu/tr-validation/issues"},"license":"MIT","homepage":"https://github.com/apideposu/tr-validation#readme","keywords":["turkiye","turkish","validation","normalization","iban","phone","province","district","tckn","vkn","privacy","local-only"],"repository":{"type":"git","url":"git+https://github.com/apideposu/tr-validation.git"},"description":"Local-only validation and normalization toolkit for Turkiye-specific form data.","maintainers":[{"name":"apideposu","email":"iletisim@apideposu.com"}],"readme":"# @apideposu/tr-validation\n\n`@apideposu/tr-validation`, Turkiye'ye ozgu form verileri icin local-only calisan bir dogrulama ve normalizasyon paketidir.\n\nEnglish documentation: [README.md](./README.md)\n\n## Local-Only ve Gizlilik\n\n- Paket tamamen kullanicinin kendi projesi icinde calisir.\n- API Deposu backend'ine istek atmaz.\n- Veriyi disari gondermez.\n- Registry lookup yapmaz.\n- Telemetry, analytics veya network call icermez.\n- Resmi kisi, sirket, vergi veya banka hesabi dogrulamasi yapmaz.\n- Sadece yapisal kontrol, bilinen kontrol algoritmalari ve normalizasyon saglar.\n\n## Sinirlar\n\n- `validateIban` yalnizca `TR` IBAN icin calisir.\n- `normalizePhone` guncel operatoru dogrulamaz ve numara tasima kayitlarini sorgulamaz.\n- `possibleOriginalOperator` alani sadece prefix tabanli bir ipucudur.\n- `normalizeProvince` ve `normalizeDistrict`, canli resmi kayitlar yerine paketle gelen statik veri setini kullanir.\n- `Merkez` gibi belirsiz ilce adlarinda province context gerekebilir.\n- Basarili sonuc, resmi dogrulama yapildigi anlamina gelmez.\n\n## Kurulum\n\n```bash\nnpm install @apideposu/tr-validation\n```\n\n## Hizli Baslangic\n\n```ts\nimport {\n  normalizePhone,\n  validateIban,\n  validateTckn,\n} from \"@apideposu/tr-validation\";\n\nconst tckn = validateTckn(\"100 000 001-46\");\nconst iban = validateIban(\"tr62 0001 0012 3456 7890 1234 56\");\nconst phone = normalizePhone(\"0532 123 45 67\");\n```\n\n## Mevcut Kapsam\n\nExport edilen fonksiyonlar:\n\n- `validateTckn`\n- `validateVkn`\n- `validateIban`\n- `formatIban`\n- `normalizeTurkishText`\n- `slugifyTurkish`\n- `normalizePhone`\n- `getProvinces`\n- `getDistrictsByProvince`\n- `normalizeProvince`\n- `normalizeDistrict`\n- `validateBatch`\n- `getReasonMessage`\n\n## API Ozeti\n\nTemel validation result yapisi:\n\n```ts\n{\n  ok: boolean;\n  input: string;\n  normalized: string;\n  reasons: string[];\n  mode: \"structural_validation\" | \"number_plan_parse\" | \"static_dataset\";\n  localOnly: true;\n  officialVerification: false;\n  registryLookup: false;\n}\n```\n\nFonksiyon ozeti:\n\n| Fonksiyon | Amac | Not |\n| --- | --- | --- |\n| `validateTckn(input)` | TCKN icin yapisal kontrol | Sadece format + bilinen kontrol algoritmasi |\n| `validateVkn(input)` | VKN icin yapisal kontrol | Sadece format + bilinen kontrol algoritmasi |\n| `validateIban(input)` | TR IBAN icin yapisal kontrol | TR-only, MOD-97 checksum |\n| `formatIban(input)` | IBAN'i 4'lu gruplar halinde formatlar | Separator ve casing normalize edilir |\n| `normalizeTurkishText(input)` | Turkce odakli text normalization | `trimmed`, `normalized`, `ascii`, `slug`, `searchKey` doner |\n| `slugifyTurkish(input)` | Turkce slug helper | `normalizeTurkishText(input).slug` ile tutarlidir |\n| `normalizePhone(input, options?)` | Turk telefon numarasini local normalize eder | `e164`, `national`, `country`, `type` ve prefix tabanli operator hint ekler |\n| `getProvinces()` | Paket icindeki il listesini doner | Sadece statik dataset |\n| `getDistrictsByProvince(provinceCodeOrSlug)` | Bir ile ait ilceleri doner | Sadece statik dataset |\n| `normalizeProvince(input)` | Il kodu, adi veya slug ile eslesme yapar | Basariliysa `province` doner |\n| `normalizeDistrict(input, options?)` | Ilce eslesmesi yapar, gerekirse province context kullanir | Basariliysa `district` ve `province` doner |\n| `validateBatch(items)` | Karisik validator/parser islemlerini sirayla calistirir | Input sirasini korur ve mevcut core fonksiyonlara delege eder |\n| `getReasonMessage(code, locale?)` | Reason code'lari UI dostu metne cevirir | Form ve import akislari icin `tr` / `en` mesajlar saglar |\n\n## Genis Kullanim\n\n```ts\nimport {\n  formatIban,\n  getDistrictsByProvince,\n  getProvinces,\n  normalizeDistrict,\n  normalizePhone,\n  normalizeProvince,\n  normalizeTurkishText,\n  slugifyTurkish,\n  getReasonMessage,\n  validateBatch,\n  validateIban,\n  validateTckn,\n  validateVkn,\n} from \"@apideposu/tr-validation\";\n\nconst tckn = validateTckn(\"100 000 001-46\");\nconst vkn = validateVkn(\"734.033.4753\");\nconst iban = validateIban(\"tr62 0001 0012 3456 7890 1234 56\");\nconst formattedIban = formatIban(\"tr620001001234567890123456\");\nconst text = normalizeTurkishText(\"  ISTANBUL / Kadikoy  \");\nconst slug = slugifyTurkish(\"Cekmekoy Belediyesi\");\n\nconst phone = normalizePhone(\"0532 123 45 67\");\nconst provinces = getProvinces();\nconst districts = getDistrictsByProvince(\"34\");\nconst province = normalizeProvince(\"Istanbul\");\nconst district = normalizeDistrict(\"Kadikoy\", { province: \"34\" });\nconst batch = validateBatch([\n  { type: \"tckn\", value: \"10000000146\" },\n  { type: \"iban\", value: \"TR62 0001 0012 3456 7890 1234 56\" },\n  { type: \"phone\", value: \"0532 123 45 67\" },\n]);\nconst message = getReasonMessage(\"INVALID_CHECKSUM\", \"tr\");\n```\n\nCommonJS:\n\n```js\nconst {\n  normalizePhone,\n  validateIban,\n  validateTckn,\n} = require(\"@apideposu/tr-validation\");\n\nconst result = normalizePhone(\"0532 123 45 67\");\n```\n\n## Ornek Sonuclar\n\n```ts\nnormalizePhone(\"0532 123 45 67\");\n// {\n//   ok: true,\n//   input: \"0532 123 45 67\",\n//   normalized: \"+905321234567\",\n//   reasons: [],\n//   mode: \"number_plan_parse\",\n//   localOnly: true,\n//   officialVerification: false,\n//   registryLookup: false,\n//   e164: \"+905321234567\",\n//   national: \"0532 123 45 67\",\n//   extension: null,\n//   country: \"TR\",\n//   type: \"mobile\",\n//   possibleOriginalOperator: \"Turkcell\",\n//   operatorConfidence: \"prefix_based\"\n// }\n\nnormalizeProvince(\"34\");\n// {\n//   ok: true,\n//   input: \"34\",\n//   normalized: \"istanbul\",\n//   reasons: [],\n//   mode: \"static_dataset\",\n//   localOnly: true,\n//   officialVerification: false,\n//   registryLookup: false,\n//   province: {\n//     code: \"34\",\n//     name: \"Istanbul\",\n//     normalized: \"istanbul\",\n//     phoneAreaCodes: [\"212\", \"216\"],\n//     districtCount: 39\n//   }\n// }\n\nnormalizeDistrict(\"Merkez\");\n// {\n//   ok: false,\n//   input: \"Merkez\",\n//   normalized: \"merkez\",\n//   reasons: [\"AMBIGUOUS_DISTRICT\"],\n//   mode: \"static_dataset\",\n//   localOnly: true,\n//   officialVerification: false,\n//   registryLookup: false,\n//   district: null,\n//   province: null\n// }\n```\n\n## Reason Codes\n\nOrtak reason code'lar:\n\n| Kod | Anlami |\n| --- | --- |\n| `EMPTY_INPUT` | Normalizasyondan sonra input bos kaldi |\n| `UNSUPPORTED_CHARACTERS` | Input desteklenmeyen karakterler iceriyor |\n| `INVALID_LENGTH` | Uzunluk beklenen yapisal uzunluga uymuyor |\n| `INVALID_CHECKSUM` | Bilinen kontrol algoritmasini gecemedi |\n\nTCKN'ye ozel:\n\n| Kod | Anlami |\n| --- | --- |\n| `LEADING_ZERO` | Ilk hane `0` |\n| `REPEATED_DIGITS` | Tum haneler ayni |\n\nVKN'ye ozel:\n\n| Kod | Anlami |\n| --- | --- |\n| `REPEATED_DIGITS` | Tum haneler ayni |\n\nIBAN'a ozel:\n\n| Kod | Anlami |\n| --- | --- |\n| `NON_TR_IBAN` | IBAN `TR` ile baslamiyor |\n\nPhone'a ozel:\n\n| Kod | Anlami |\n| --- | --- |\n| `INVALID_PHONE` | Input gecerli bir telefon numarasi olarak parse edilemedi |\n| `NON_TR_PHONE` | Numara gecerli ama Turk numarasi degil |\n\nLocation'a ozel:\n\n| Kod | Anlami |\n| --- | --- |\n| `PROVINCE_NOT_FOUND` | Il eslesmesi cozulemedi |\n| `DISTRICT_NOT_FOUND` | Ilce eslesmesi cozulemedi |\n| `AMBIGUOUS_DISTRICT` | Ilce adi birden fazla ilde bulunuyor |\n\n## Notlar\n\n- `normalizePhone`, `libphonenumber-js` paketini local olarak kullanir.\n- `possibleOriginalOperator`, sadece numara prefix'inden turetilir ve numara tasima nedeniyle guncel olmayabilir.\n- `getProvinces` ve `getDistrictsByProvince`, paketle gelen statik JSON verisini kullanir.\n- `normalizeProvince` ve `normalizeDistrict`, statik dataset ile Turkce text normalization yaklasimini birlikte kullanir.\n- `validateIban`, sadece TR IBAN icin yapisal kontrol ve MOD-97 checksum uygular.\n\n## Opsiyonel Adapter Paketleri\n\nYayindaki ekosistem paketleri:\n\n- `@apideposu/tr-validation-zod`\n  - npm: https://www.npmjs.com/package/@apideposu/tr-validation-zod\n  - GitHub: https://github.com/apideposu/tr-validation-zod\n  - amac: stabil core validator'lar icin opsiyonel Zod schema ve helper wrapper'lari\n\n## Dokumanlar\n\n- Katki rehberi: [CONTRIBUTING.md](./CONTRIBUTING.md)\n- Dataset maintenance: [DATASETS.md](./DATASETS.md)\n- Ekosistem yol haritasi: [ECOSYSTEM_ROADMAP.md](./ECOSYSTEM_ROADMAP.md)\n- Ornekler: [examples/README.md](./examples/README.md)\n- Release notes: [RELEASE_NOTES.md](./RELEASE_NOTES.md)\n- Roadmap: [ROADMAP.md](./ROADMAP.md)\n\n## Gelistirme\n\n```bash\nnpm run datasets:check\nnpm test\nnpm run build\nnpm run smoke:runtime\nnpm run size:check\nnpm run benchmark\n```\n","readmeFilename":"README.tr.md"}