{"_id":"@allturko/nabiz-node","_rev":"7-eae9f1ad993c1306db6f060482b619c0","name":"@allturko/nabiz-node","dist-tags":{"latest":"0.4.2"},"versions":{"0.1.0":{"name":"@allturko/nabiz-node","version":"0.1.0","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"author":{"name":"AllTurko"},"license":"MIT","_id":"@allturko/nabiz-node@0.1.0","maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"homepage":"https://github.com/AllturkoGit/nabiz-node#readme","bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"bin":{"nabiz-durum":"bin/nabiz-durum.js"},"dist":{"shasum":"9efd4d2b3287cbe92422b6ab03a4c51191319799","tarball":"https://registry.npmjs.org/@allturko/nabiz-node/-/nabiz-node-0.1.0.tgz","fileCount":11,"integrity":"sha512-oVhitS0KvuIqL9KwyKij/vVzbqyeiQa3YToBysueOakwuqlX/N6vvbF6iN/fUE7YmWnntqjngm7O1RmMo1TVTQ==","signatures":[{"sig":"MEQCICRbJJO26i+8YpbMx6nWXWYUrsYYQVfdvKdmCMfJaNYFAiBdJzds08EK2OEYQJXl9Eax4rGeNF0vEFaJjfNqJkd3xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32530},"main":"src/index.js","types":"types/index.d.ts","engines":{"node":">=18.17"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./next":"./src/next.js","./express":"./src/express.js"},"gitHead":"5651e9a7a7a6009ad1f35ece127df114f0f35c04","scripts":{"test":"node --test test/"},"_npmUser":{"name":"cestnytr","email":"fahriaydin47@gmail.com"},"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"_npmVersion":"11.19.0","description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nabiz-node_0.1.0_1785918707932_0.3644257126239616","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@allturko/nabiz-node","version":"0.2.0","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"author":{"name":"AllTurko"},"license":"MIT","_id":"@allturko/nabiz-node@0.2.0","maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"homepage":"https://github.com/AllturkoGit/nabiz-node#readme","bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"bin":{"nabiz-durum":"bin/nabiz-durum.js"},"dist":{"shasum":"e89ac28fc309322bff1d64837bd63e3b486f9203","tarball":"https://registry.npmjs.org/@allturko/nabiz-node/-/nabiz-node-0.2.0.tgz","fileCount":12,"integrity":"sha512-RpYIbv3QjHSidun8YSmURkh8RYrMSfwQv378duj234DxZojhvEoBuFwXgiLv1E7zIvGWLYEZDrV+2bkDSk5TAA==","signatures":[{"sig":"MEYCIQDRQ1azGWL2oachRpDJg2dQdJ8Ql9qWFz+tm47NFNv2LgIhAO10HwzaQme9hfVIxsZSm8ahrQG/zI2Fzfppg4wSU9FV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":38323},"main":"src/index.js","types":"types/index.d.ts","engines":{"node":">=18.17"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./auto":"./src/auto.js","./next":"./src/next.js","./express":"./src/express.js"},"gitHead":"5651e9a7a7a6009ad1f35ece127df114f0f35c04","scripts":{"test":"node --test test/"},"_npmUser":{"name":"cestnytr","email":"fahriaydin47@gmail.com"},"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"_npmVersion":"11.19.0","description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nabiz-node_0.2.0_1785923803372_0.608389367346384","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@allturko/nabiz-node","version":"0.2.1","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"author":{"name":"AllTurko"},"license":"MIT","_id":"@allturko/nabiz-node@0.2.1","maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"homepage":"https://github.com/AllturkoGit/nabiz-node#readme","bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"bin":{"nabiz-durum":"bin/nabiz-durum.js"},"dist":{"shasum":"78eb8d49ef11e452de956875de4006e9c02f5d65","tarball":"https://registry.npmjs.org/@allturko/nabiz-node/-/nabiz-node-0.2.1.tgz","fileCount":13,"integrity":"sha512-bvK7dV6QnZBpJiIwdxvVq7ko3MhKcKbSVpCCwJsxUqBuwat52eJHLFY7tVB8UPfG6iCGaPNXqbUw47Y7lwpXPQ==","signatures":[{"sig":"MEQCIDYXGGi8JlteGGXHOG3sumM6JpS7z3URQ216GA5J5TOWAiA/5K0k1ywgKVTHKiNYBj3Mg7h/faN4cfVzbztGKc3ggQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46146},"main":"src/index.js","types":"types/index.d.ts","engines":{"node":">=18.17"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./auto":"./src/auto.js","./next":"./src/next.js","./express":"./src/express.js"},"gitHead":"80c3bfbe7fc8abc0ed358c12161600b51c17a539","scripts":{"test":"node --test test/"},"_npmUser":{"name":"cestnytr","email":"fahriaydin47@gmail.com"},"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"_npmVersion":"11.19.0","description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nabiz-node_0.2.1_1785926201042_0.0801890791133022","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@allturko/nabiz-node","version":"0.3.0","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"author":{"name":"AllTurko"},"license":"MIT","_id":"@allturko/nabiz-node@0.3.0","maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"homepage":"https://github.com/AllturkoGit/nabiz-node#readme","bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"bin":{"nabiz-durum":"bin/nabiz-durum.js"},"dist":{"shasum":"ca791c3075f652f03be69168a24441c89e2d4006","tarball":"https://registry.npmjs.org/@allturko/nabiz-node/-/nabiz-node-0.3.0.tgz","fileCount":13,"integrity":"sha512-go0W53OxEYAc1jca/jo5xepS6L+CWLLu+WZCEIJ8fX1TJo+irPbqZD4Ne0eKzO1lD+mSLq5YgtwtQ//yWQDRKw==","signatures":[{"sig":"MEUCIAHBhLYGF5uW0hTeRfNJ5/1D6mmraPG0auFOi6okqabkAiEAv2lR0M+arUZSrojCmPRJcGOU8YqsUv5uKZGt9gDmYUc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49232},"main":"src/index.js","types":"types/index.d.ts","engines":{"node":">=18.17"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./auto":"./src/auto.js","./next":"./src/next.js","./express":"./src/express.js"},"gitHead":"51f21755db661982adade56397c16cba4f22c10a","scripts":{"test":"node --test test/"},"_npmUser":{"name":"cestnytr","email":"fahriaydin47@gmail.com"},"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"_npmVersion":"11.19.0","description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nabiz-node_0.3.0_1785937926452_0.3742055443414025","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@allturko/nabiz-node","version":"0.4.0","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"author":{"name":"AllTurko"},"license":"MIT","_id":"@allturko/nabiz-node@0.4.0","maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"homepage":"https://github.com/AllturkoGit/nabiz-node#readme","bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"bin":{"nabiz-durum":"bin/nabiz-durum.js"},"dist":{"shasum":"ff1a448f0543947fc93d5a9911a2985ef0c34289","tarball":"https://registry.npmjs.org/@allturko/nabiz-node/-/nabiz-node-0.4.0.tgz","fileCount":14,"integrity":"sha512-EQD1JAwTKOx23E2V4DioO8HLO1vfxFPTDDnQ9aImODLYkQz+6vfsBH9FVK0IrYmgwfv9Fg+QNMPVMEN7NXc6fA==","signatures":[{"sig":"MEYCIQD6R9V8jIo0cYPsA03ijWvzo56079KXf7vr2DEsHSd/QAIhANhOCWBsYniFTLXnBYh7ppoKm5Er7cbbnyHCUpF5N+jT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":60357},"main":"src/index.js","types":"types/index.d.ts","engines":{"node":">=18.17"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./auto":"./src/auto.js","./next":"./src/next.js","./express":"./src/express.js"},"gitHead":"66b1e373e7abbb153095b014438fb717aea1f9d0","scripts":{"test":"node --test test/*.test.js"},"_npmUser":{"name":"cestnytr","email":"fahriaydin47@gmail.com"},"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"_npmVersion":"11.19.0","description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nabiz-node_0.4.0_1787040210398_0.07164498483457327","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@allturko/nabiz-node","version":"0.4.1","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"author":{"name":"AllTurko"},"license":"MIT","_id":"@allturko/nabiz-node@0.4.1","maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"homepage":"https://github.com/AllturkoGit/nabiz-node#readme","bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"bin":{"nabiz-durum":"bin/nabiz-durum.js"},"dist":{"shasum":"488135cbf8b2a8199a581a519ceeed6a4fadf7e7","tarball":"https://registry.npmjs.org/@allturko/nabiz-node/-/nabiz-node-0.4.1.tgz","fileCount":14,"integrity":"sha512-VBheqE7kMSHn1pnxtKMfS9jIJPQBfJt2RlrB5tlzRiMRjfaPw+4v8O0BtPhzHLxjIDLd/ggqnRwlBlCo247RpA==","signatures":[{"sig":"MEYCIQD59NHS/PgQs15w2nO5IeajjMe2wB9LiTIIuPjwQ3b1UAIhAJMd9n3EZJ8BRx003u5YpzBXGx4esqFIAx1ibJQNjXyL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":61713},"main":"src/index.js","types":"types/index.d.ts","engines":{"node":">=18.17"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./auto":"./src/auto.js","./next":"./src/next.js","./express":"./src/express.js"},"gitHead":"203aa329fe8fe6e94c3ee04ff59d2cda19233b90","scripts":{"test":"node --test test/*.test.js"},"_npmUser":{"name":"cestnytr","email":"fahriaydin47@gmail.com"},"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"_npmVersion":"11.19.0","description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/nabiz-node_0.4.1_1787041021778_0.5861268860070106","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"_id":"@allturko/nabiz-node@0.4.2","bin":{"nabiz-durum":"bin/nabiz-durum.js"},"bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"dist":{"shasum":"d5f74f4bf443d014b6363133beb1be4992252833","tarball":"https://registry.npmjs.org/@allturko/nabiz-node/-/nabiz-node-0.4.2.tgz","fileCount":14,"integrity":"sha512-kJUuItpiEo9Y+2fR59wAbJmdjUfZQO7gsSpO+8aFaAfCtwvQQDsd/dVL89CnfLIjbZ5WfGCZ5F1jQWPpVH4hcw==","signatures":[{"sig":"MEYCIQCVl5EjRQJKcXWK7lwBxzWODBhxxIhTwxgTTSzijVye0AIhAJkOGVUA/tx4++//lGMlknT+4LzXCgssknZTS75/sTLj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD48oP7Fw3JWI9OT1EXYERgrqmpf9trZd6Iiea2RkvVjAIhANWbxYXDOZjOJxZBg1cUvDxtXyBEX9lMOws4hc+daMo0"}],"unpackedSize":62593},"main":"src/index.js","name":"@allturko/nabiz-node","types":"types/index.d.ts","author":{"name":"AllTurko"},"engines":{"node":">=18.17"},"exports":{".":{"types":"./types/index.d.ts","default":"./src/index.js"},"./auto":"./src/auto.js","./next":"./src/next.js","./express":"./src/express.js"},"gitHead":"292cdd9da445d5399ee9565c92e0e4c3ce836c45","license":"MIT","scripts":{"test":"node --test test/*.test.js"},"version":"0.4.2","_npmUser":{"name":"cestnytr","email":"fahriaydin47@gmail.com"},"homepage":"https://github.com/AllturkoGit/nabiz-node#readme","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"_npmVersion":"11.19.0","description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","directories":{},"maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/nabiz-node_0.4.2_1789457101067_0.3041805031264624"}}},"time":{"created":"2026-08-05T08:31:47.826Z","modified":"2026-09-15T07:25:01.336Z","0.1.0":"2026-08-05T08:31:48.105Z","0.2.0":"2026-08-05T09:56:43.517Z","0.2.1":"2026-08-05T10:36:41.231Z","0.3.0":"2026-08-05T13:52:06.601Z","0.4.0":"2026-08-18T08:03:30.547Z","0.4.1":"2026-08-18T08:17:01.966Z","0.4.2":"2026-09-15T07:25:01.149Z"},"bugs":{"url":"https://github.com/AllturkoGit/nabiz-node/issues"},"author":{"name":"AllTurko"},"license":"MIT","homepage":"https://github.com/AllturkoGit/nabiz-node#readme","keywords":["monitoring","error-tracking","nextjs","express","nabiz"],"repository":{"url":"git+https://github.com/AllturkoGit/nabiz-node.git","type":"git"},"description":"Nabız Hub için Node.js raporlayıcı — sunucu hataları, SSR hataları, yavaş istekler","maintainers":[{"name":"cestnytr","email":"fahriaydin47@gmail.com"}],"readme":"# @allturko/nabiz-node\n\n[Nabız Hub](https://github.com/AllturkoGit/nabiz-hub) için Node.js raporlayıcı: sunucu\nhataları, SSR hataları, yavaş istekler.\n\nBağımlılık yok. Build adımı yok. Node 18.17+.\n\n---\n\n## Kapsam — ve neden bu kadar dar\n\nBu paket **yalnızca sunucu tarafını** kapsar. Tarayıcı hataları hub'dan servis edilen\n`t.js` ile toplanır ve o dosya bilinçli olarak npm'e taşınmadı:\n\n| | Tarayıcı (`t.js`) | Node (bu paket) |\n|---|---|---|\n| Dağıtım | Hub'dan servis edilir | npm |\n| Güncelleme | **5 dakikada tüm sitelere yayılır**, kimse deploy etmez | Her projede `npm update` |\n| Neden | Merkezî güncelleme, paket ergonomisinden değerli | Sunucuda script etiketi çalışmaz — hosted seçenek yok |\n\nNode tarafında paket **zorunlu**, ama kopyalanan bir dosya yerine paket olması da bilinçli:\nkopya dosyalar güncellenmez ve bu **sessizce** olur. Bu projede tam olarak öyle bir hata\nyaşandı — süre ölçümündeki bir kusur ve mesajdan oturum kimliği sızması, ancak paket\ngüncellenebildiği için tüm projelere ulaştı.\n\n---\n\n## Kurulum\n\n```bash\nnpm install @allturko/nabiz-node\n```\n\n`.env` dosyasına — Laravel paketiyle aynı değişken isimleri:\n\n```env\nNABIZ_ENABLED=true\nNABIZ_URL=https://monitor.ornek.com\nNABIZ_KEY=proje-anahtari\nNABIZ_SECRET=<panelden alınan 64 karakterlik secret>\nNABIZ_ENV=production\n```\n\n### Kurulumu doğrulayın\n\n```bash\nnpx nabiz-durum\n```\n\nBu adım atlanmamalı. Paketin en pahalı arıza biçimi sessiz çalışmamadır: secret eksik\nkopyalanmışsa hiçbir şey patlamaz, hiçbir log düşmez — hub geçersiz imzaya da `204` döner.\nKurulum aylarca çalışmıyor olabilir ve o sessizlik \"sorun yok\" sanılır.\n\n```bash\nnpx nabiz-durum --test    # gerçek bir sınama olayı — panelde hata olarak görünür\nnpx nabiz-durum --nabiz   # yalnızca canlılık isteği — panele hata düşürmez\n```\n\n`--test` tek bir kurulumu doğrularken doğru seçim: taşıma ile temizlik birlikte sınanmış\nolur ve olay panelde gözle görülür. **Onlarca kurulumu gezen bir güncelleme döngüsünde ise\n`--nabiz` kullanılır** — `--test` orada panele onlarca sahte hata bırakır, yani izleme\naracı kendi gürültüsünü üretir.\n\nVerinin gerçekten ulaştığı yalnızca **hub panelinden** doğrulanır: proje satırındaki\nbağlantı durumu `Bağlı` görünmelidir. Komut bunu kendi başına söyleyemez, çünkü hub\ngeçerli ile geçersiz imzayı dışarıya aynı yanıtla karşılar.\n\n---\n\n## Hızlı kurulum reçetesi\n\nBu bölüm bilerek adım adım ve eksiksiz yazıldı: bir yapay zekâ asistanına ya da ekipten\nbirine olduğu gibi verilebilir. Sıra önemlidir.\n\n**Ön koşul:** Nabız panelinde proje açılmış olmalı; anahtar ve secret oradan gelir.\nTarayıcı tarafı da kurulacaksa projeye **origin** eklenmesi zorunludur — tanımsız\norigin'den gelen olaylar sessizce reddedilir.\n\n```bash\n# 1. Paketi kur\nnpm install @allturko/nabiz-node\n```\n\n```env\n# 2. .env — proje kökünde. Paket bu dosyayı kendisi okur; framework'ün\n#    yüklemesini beklemez (ön yükleme sırasında henüz yüklenmemiş olur).\n#    Değişken adlarına NEXT_PUBLIC_ / NUXT_PUBLIC_ ÖNEKİ KOYMAYIN —\n#    o önek değeri tarayıcı paketine gömer ve secret internete çıkar.\nNABIZ_ENABLED=true\nNABIZ_URL=https://monitor.ornek.com\nNABIZ_KEY=proje-anahtari\nNABIZ_SECRET=64-karakterlik-secret\nNABIZ_ENV=production\n```\n\n```js\n// 3. Süreci başlatan yere tek satır. PM2 kullanılıyorsa ecosystem dosyasına:\nmodule.exports = {\n    apps: [{\n        name: 'uygulamam',\n        script: 'server.js',\n        env: {\n            NODE_OPTIONS: '--require @allturko/nabiz-node/auto',\n        },\n    }],\n};\n```\n\n```bash\n# 4. Yeniden başlat — --update-env ŞART.\n#    Onsuz PM2 eski ortamı korur, NODE_OPTIONS süreçte görünmez ve kurulum\n#    sessizce çalışmaz.\npm2 restart uygulamam --update-env\n\n# 5. Doğrula\nnpx nabiz-durum\nnpx nabiz-durum --test\n```\n\nSon adım hub'a bir sınama olayı gönderir. **Panelden doğrulayın:** proje satırındaki\nbağlantı durumu `Bağlı` görünmelidir. Komut bunu kendi başına söyleyemez — hub geçerli ile\ngeçersiz imzayı dışarıya aynı yanıtla karşılar.\n\n### Neye dokunulur, neye dokunulmaz\n\n| | Nereye |\n|---|---|\n| Paket | `package.json` (npm install) |\n| Ayarlar | `.env` |\n| Yükleme | Süreci başlatan yer — PM2 config, systemd unit ya da start komutu |\n| **Uygulama kaynağı** | **Dokunulmaz** |\n\n`NODE_OPTIONS` uygulamanın kendi `.env` dosyasına yazılamaz: Node onu süreç başlarken\nokur, `.env` ise uygulama çalışmaya başladıktan sonra okunur. Node'un kısıtı, tasarım\ntercihi değil. **Yalnızca bu satır** için geçerli — `NABIZ_*` değişkenleri `.env`'de\ndurabilir, paket o dosyayı kendisi okur.\n\nOkuma önceliği: `process.env` > `.env.<NODE_ENV>` > `.env.local` > `.env`. Süreç ortamı\nher zaman kazanır; dosya yalnızca boşluğu doldurur. Yalnızca `NABIZ_` ile başlayan\nanahtarlar okunur.\n\n### Bu reçetenin kapsamadıkları\n\n- **Next'in kendi içinde yakaladığı SSR render hataları.** `instrumentation.js` gerekir\n  (aşağıda).\n- **Tarayıcı hataları.** Onlar hub'dan servis edilen `t.js` ile toplanır; HTML'e bir\n  `<script>` etiketi eklenmesi gerekir. Paket bunu otomatik enjekte etmez ve etmemeli:\n  yanıt gövdesini değiştirmek `Content-Length`'i bozar, streaming SSR'ı kırar ve\n  sıkıştırmayla çakışır.\n- **Kesin rota deseni.** Ham yol normalize edilir (`/urunler/1042` → `/urunler/{id}`);\n  framework'ün eşleştirdiği desen gerekiyorsa Express middleware'i kullanılır.\n\n---\n\n## Kullanım\n\n### Kodsuz kurulum (önerilen)\n\nUygulama kaynağına **tek satır eklemeden**: Node'a paketi uygulamadan önce yüklemesini\nsöylersiniz, kancalar orada kurulur.\n\n```\nNODE_OPTIONS=--require @allturko/nabiz-node/auto\n```\n\nPM2 ile:\n\n```js\n// ecosystem.config.cjs\nmodule.exports = {\n    apps: [{\n        name: 'uygulamam',\n        script: 'server.js',\n        env: {\n            NODE_OPTIONS: '--require @allturko/nabiz-node/auto',\n        },\n    }],\n};\n```\n\nBu satır **uygulamanın kendi `.env` dosyasına yazılamaz**: `NODE_OPTIONS` Node başlarken\nokunur, uygulama `.env`'i ise çalışmaya başladıktan sonra. Node'un kısıtı, tasarım tercihi\ndeğil. Geri kalan her ayar (anahtar, secret, eşikler, açma/kapama) `.env`'den okunur.\n\nKapsadıkları: yakalanmamış hatalar, işlenmemiş promise reddi, 5xx yanıtlar, yavaş istekler.\n`node:http` üzerinden geçen her şey — Next, Express, Nuxt/Nitro, Fastify, düz Node.\n\nİki taviz var:\n\n- **Rota deseni yaklaşıktır.** Framework'ün eşleştirdiği desene erişilemediği için ham yol\n  normalize edilir: `/urunler/1042` → `/urunler/{id}`. Kesin desen isteyen Express\n  middleware'ini kullanır.\n- **Next'in `onRequestError` kancası kurulmaz.** SSR render hatalarının bir kısmı Next\n  tarafından yakalanıp `node:http` katmanına ulaşmaz; onlar için aşağıdaki\n  `instrumentation.js` gerekir.\n\n### Next.js (SSR)\n\nSSR hataları tarayıcıya hiç ulaşmaz — `t.js` de error boundary de göremez. Bu kanca\nolmadan SSR katmanı tamamen kör kalır.\n\n```js\n// instrumentation.js  (proje kökü)\nexport async function register() {\n    const { hookProcess } = await import('@allturko/nabiz-node');\n    hookProcess();\n}\n\n// Next 15+\nexport { nextOnRequestError as onRequestError } from '@allturko/nabiz-node';\n```\n\nNext 14'te `onRequestError` yoktur; orada yalnızca `register()` çalışır ve yakalanmamış\nhatalar toplanır.\n\n### Express\n\n```js\nconst { express: nabiz } = require('@allturko/nabiz-node');\n\napp.use(nabiz());          // rotalardan ÖNCE — süre ölçümü için\n// ... rotalar ...\napp.use(nabiz.errors());   // hata middleware'i EN SONA\n```\n\n`nabiz.errors()` hatayı **yutmaz**, `next(hata)` ile zincire devreder; uygulamanın kendi\nhata sayfası çalışmaya devam eder.\n\n### Elle bildirim\n\n```js\nconst { report } = require('@allturko/nabiz-node');\n\ntry {\n    await riskliIs();\n} catch (hata) {\n    report(hata);          // await gerekmez, arka planda tamamlanır\n    throw hata;            // hata YUTULMAZ\n}\n```\n\n---\n\n## Ne toplar\n\n- Yakalanmamış hatalar ve işlenmemiş promise reddi\n- SSR render hataları (Next 15+)\n- 5xx dönen istekler\n- Eşiği aşan yavaş istekler (varsayılan 1000 ms)\n\n## Worker ve alt süreç çökmeleri\n\n`hookProcess()` yalnızca ana thread'i kancalar. Bir **worker thread** içinde patlayan hata\nana thread'e istisna olarak ulaşmaz — worker nesnesinin `error` olayına düşer ve kimse\ndinlemiyorsa hiçbir iz bırakmaz. Aynısı `fork()` ile açılan alt süreçler için de geçerli.\n\nKanca ebeveyn tarafına kuruluyor, worker'ın kendi dosyasına değil: o dosyayı uygulama\nyazıyor ve her worker'da paketi çağırmayı hatırlamak gerekirdi.\n\nYakalananlar:\n\n- Worker/alt süreçte yakalanmamış hata (`error` olayı)\n- Sıfır olmayan çıkış kodu — hata olayı gelmeden ölmek\n\nAynı çöküş tek kayıt üretir: yakalanmamış hata önce `error` sonra `exit` tetikler, ikincisi\nelenir. Hata **yutulmaz** — dinleyicisi olmayan bir `error` olayı Node tarafından ana\nthread'e fırlatılmaya devam eder ve oradan `uncaughtException` olarak da raporlanır.\n\n**`spawn` ve `exec` kapsam dışı.** Dış komutlarda sıfır olmayan çıkış kodu rutindir —\n`grep` eşleşme bulamazsa 1 döner — ve hata saymak paneli anlamsız kayıtlarla doldururdu.\nAyrım IPC kanalından yapılır: `fork()` her zaman kanal açar, `spawn` açmaz.\n\n### Neden prototip yamalanıyor\n\nİlk uygulama `Worker` sınıfını bir alt sınıfla değiştiriyordu ve **çalışmadı**: uygulama\nmodülleri `const { Worker } = require('node:worker_threads')` ile referansı kendi yüklenme\nanında kopyalıyor, bizden önce yüklenen her modül yamasız sürümü elinde tutuyordu. Kanca\nsessizce devre dışı kalıyordu — izleme paketinde en pahalı arıza biçimi.\n\n`prototype.emit` bu sorunu bilmiyor: bütün örnekler aynı prototipi paylaşır, hangi\nreferansla üretildikleri fark etmez. Kancanın kurulum sırasından bağımsız çalıştığı ayrıca\ndoğrulandı.\n\n---\n\n## Canlılık nabzı\n\nPaket sekiz saatte bir hub'a **olay taşımayan** küçük bir istek gönderir.\n\nSebebi şu: hub bir kurulumun çalışıp çalışmadığını yalnızca gelen hatalardan\nanlıyordu. Sonuç ters dönüyordu — hatasız çalışan bir uygulama hiç olay\ngöndermediği için \"kurulum çalışmıyor olabilir\" diye raporlanıyordu. Sağlıklı\nolmak cezalandırılıyordu.\n\nArtık kanıt isteğin kendisi. Nabız geldiği sürece hub kurulumun ayakta\nolduğunu bilir; gelmediğinde söylediği şey gerçekten doğrudur.\n\n| | |\n|---|---|\n| Aralık | 8 saat |\n| Gövde | `{\"events\": []}` — hiçbir ölçüm taşımaz |\n| Uç | Olayların gittiği uçla aynı, ek bir adres yok |\n| İlk istek | Süreç başlar başlamaz — deploy sonrası kurulum kendini hemen kanıtlar |\n\nAralık, hub'ın 24 saatlik sessizlik eşiğinin üçte biri. Eşitlenseydi tek bir\nkaçırılan istek — deploy, yeniden başlatma, kısa bir ağ kesintisi — kurulumu\nbozuk gösterirdi. Üç turluk pay, iki kaçırmayı sorun etmez.\n\nZamanlayıcı `unref` edilmiştir: kısa ömürlü bir betiği ayakta tutmaz, işini\nbitiren süreç normal şekilde kapanır.\n\n`hookProcess()` çağrıldığında kendiliğinden başlar — kodsuz kurulum, Next\n`instrumentation.ts` ve Express reçetelerinin hepsi bunu zaten çağırıyor.\nElle yönetmek isterseniz:\n\n```js\nconst { startHeartbeat, stopHeartbeat } = require('@allturko/nabiz-node');\n\nstartHeartbeat();          // varsayılan 8 saat\nstartHeartbeat(3600_000);  // ya da kendi aralığınız (ms)\nstopHeartbeat();\n```\n\n`NABIZ_ENABLED=false` iken ya da yapılandırma eksikken hiç gönderilmez.\n\n## Ne toplamaz\n\nBunlar yapılandırmayla dahi açılamaz — kodda karşılığı yoktur:\n\n- IP adresi\n- User-Agent\n- İstek gövdesi / form verisi\n- Query string **değerleri** (yalnızca yol saklanır)\n- Oturum verisi, çerez\n- Ham SQL literal değerleri\n\nMesaj ve stack trace gönderilmeden önce e-posta, TC kimlik no, telefon, IBAN, kart numarası\nve uzun rastgele diziler (oturum kimliği, API anahtarı) maskelenir. SQL literal değerleri\n`?` ile değiştirilir — hem KVKK gereği hem gruplama için: aynı sorgu farklı parametrelerle\nçalıştığında tek parmak izinde toplanır.\n\n---\n\n## Davranış garantileri — ihlal edilemez\n\nPaket, kurulduğu uygulamayı **hiçbir şekilde etkilememelidir**:\n\n1. **Hata yutulmaz.** Handler zinciri korunur, `throw` engellenmez, süreç sonlandırılmaz.\n2. **Kendi hatasını raporlamaz.** Sonsuz döngü riski; tüm SDK kodu `try/catch` ile sarılır.\n3. **Kullanıcı isteğini bekletmez.** Gönderim kısa zaman aşımıyla (varsayılan 2 sn) ve\n   yanıt döndükten sonra yapılır.\n4. **Hub erişilemezse sessizce vazgeçilir.** İzlenen uygulamada hata, log kirliliği veya\n   yavaşlama oluşmaz.\n5. **`NABIZ_ENABLED=false` iken hiçbir veri gönderilmez.**\n6. **Canlılık nabzı süreci ayakta tutmaz.** Zamanlayıcı `unref` edilmiştir; işini\n   bitiren betik kapanır.\n\n> Bir izleme paketinin izlediği uygulamayı bozması, çözdüğü sorundan büyük bir sorundur.\n\n---\n\n## Yapılandırma\n\n| Değişken | Varsayılan | Açıklama |\n|---|---|---|\n| `NABIZ_ENABLED` | `true` | `false` ise hiçbir veri gönderilmez |\n| `NABIZ_URL` | — | Hub adresi |\n| `NABIZ_KEY` | — | Panelden alınan proje anahtarı |\n| `NABIZ_SECRET` | — | 64 karakter. **Yalnızca sunucuda bulunur** |\n| `NABIZ_ENV` | `NODE_ENV` | `production` · `staging` · `local` |\n| `NABIZ_RELEASE` | — | Sürüm etiketi (commit sha, tag) |\n| `NABIZ_TIMEOUT` | `2000` | Gönderim zaman aşımı (ms) |\n| `NABIZ_SLOW_REQUEST_MS` | `1000` | Bu süreyi aşan istek yavaş sayılır |\n\nKod içinden de verilebilir:\n\n```js\nconst { init } = require('@allturko/nabiz-node');\n\ninit({ url: '...', key: '...', secret: '...', ignore: ['NotFoundError'] });\n```\n\n---\n\n## Toplu güncelleme\n\nAynı sunucudaki tüm Node projelerini tek seferde güncellemek için:\n\n```bash\nfor d in /home/allturko/wwwroot/*/; do\n  [ -d \"$d/node_modules/@allturko/nabiz-node\" ] || continue\n  echo \"→ $d\"\n  (cd \"$d\" && npm install @allturko/nabiz-node@latest && npx nabiz-durum)\ndone\n```\n\n`npm update` **değil** `npm install @latest`: 1.0 altındaki sürümlerde `^0.2.1` kısıtı\n`>=0.2.1 <0.3.0` anlamına geliyor ve `npm update` minor artışı bilerek atlıyor. Gerçek bir\nkurulumda tam olarak bu yaşandı — komut \"up to date\" dedi, paket eski sürümde kaldı ve\nkimse fark etmedi.\n\nSon adım bilinçli: güncelleme sonrası yapılandırmanın hâlâ geçerli olduğunu doğrular.\nSessizce bozulan bir kurulum, hiç kurulmamış olandan daha tehlikelidir.\n\nHangi projenin hangi sürümde olduğu **panelden de görülür** — paket her olayla birlikte\n`sdk_version` gönderiyor. Güncelleme körlemesine değil, hedefli yapılır.\n\n---\n\n## Geliştirme\n\n```bash\nnpm test        # node:test, bağımlılık yok\n```\n\nBağımlılık politikası: **mümkün olan en az bağımlılık.** Bu paket 8 projeye kurulacak; her\nbağımlılık sürüm çakışması riski demektir. Tipler bu yüzden elle yazıldı, üretilmedi —\nderleme zinciri eklenmedi.\n\n## Lisans\n\nMIT\n","readmeFilename":"README.md"}