npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

univi.db

v1.0.1

Published

Hafif, dosya tabanlı JSON veritabanı. Dot notation, TTL, event emitter, otomatik yedekleme ve daha fazlasını destekler. Tüm metodlar hem **Türkçe** hem **İngilizce** kullanılabilir.

Readme

🗄 univi.db — JSON Veritabanı Modülü

Hafif, dosya tabanlı JSON veritabanı. Dot notation, TTL, event emitter, otomatik yedekleme ve daha fazlasını destekler. Tüm metodlar hem Türkçe hem İngilizce kullanılabilir.


📦 Kurulum

Herhangi bir bağımlılık gerektirmez. Dosyayı projenize kopyalayın ve import edin.

const DB = require("univi.db");
const db = new DB();

⚙️ Ayarlar

const db = new DB("database.json", {
  debug: false,              // Konsola işlem logları yazar
  autoBackupInterval: 0,     // Her N yazma işleminde otomatik yedek (0 = kapalı)
  backupDir: "./backups"     // Otomatik yedeklerin kaydedileceği dizin
});

| Parametre | Tip | Varsayılan | Açıklama | |---|---|---|---| | file | string | database.json | Veritabanı dosya yolu | | debug | boolean | false | Debug modu | | autoBackupInterval | number | 0 | Her N yazmada otomatik yedek | | backupDir | string | ./backups | Yedek dizini |


📖 Metodlar

set / yaz

Veri yazar. Dot notation ve TTL destekler.

db.set("prefix", "!");
db.yaz("prefix", "!");

// Dot notation
db.set("user.name", "Ali");
db.set("user.age", 25);

// TTL — 1 saat sonra otomatik silinir
db.set("token", "abc123", { ttl: 3600 });

get / fetch / bul

Veri okur. TTL süresi dolmuşsa null döner.

db.get("prefix");       // "!"
db.fetch("user.name");  // "Ali"
db.bul("user.age");     // 25

has / kontrol

Anahtarın var olup olmadığını kontrol eder.

db.has("prefix");      // true / false
db.kontrol("prefix");  // true / false

delete / remove / sil

Veriyi siler.

db.delete("prefix");
db.remove("prefix");
db.sil("prefix");

// Dot notation
db.delete("user.age");

update / güncelle

Mevcut objeyi merge eder, üzerine yazmaz.

db.set("user", { name: "Ali", age: 25 });
db.update("user", { age: 26, city: "İstanbul" });
// Sonuç: { name: "Ali", age: 26, city: "İstanbul" }

db.güncelle("user", { age: 27 });

push / depola

Array'e değer ekler. Array yoksa oluşturur.

db.push("renkler", "kırmızı");
db.push("renkler", "mavi");
db.depola("renkler", "yeşil");
// Sonuç: ["kırmızı", "mavi", "yeşil"]

pull / pushsil

Array'den indeks veya değer ile siler.

// Değer ile sil
db.pull("renkler", "mavi");

// İndeks ile sil (0'dan başlar)
db.pull("renkler", 0);

db.pushsil("renkler", "yeşil");

add / topla / ekle / increment

Sayısal değere ekler.

db.add("puan", 10);
db.topla("puan", 5);
db.ekle("puan", 1);
db.increment("puan");      // +1
db.increment("puan", 3);   // +3

subtract / çıkar / decrement

Sayısal değerden çıkarır.

db.subtract("puan", 5);
db.çıkar("puan", 3);
db.decrement("puan");      // -1
db.decrement("puan", 2);   // -2

find / bul_arr

Array içinde callback ile ilk eşleşeni döner.

db.set("users", [
  { name: "Ali", age: 20 },
  { name: "Veli", age: 30 }
]);

db.find("users", u => u.age > 25);
// { name: "Veli", age: 30 }

db.bul_arr("users", u => u.name === "Ali");
// { name: "Ali", age: 20 }

filter / filtrele

Array içinde callback ile eşleşenlerin tümünü döner.

db.filter("users", u => u.age >= 20);
// [{ name: "Ali", age: 20 }, { name: "Veli", age: 30 }]

db.filtrele("users", u => u.age > 25);
// [{ name: "Veli", age: 30 }]

all / fetchAll / hepsi

Tüm veriyi döner. Süresi dolmuş TTL kayıtları dahil edilmez.

db.all();
db.fetchAll();
db.hepsi();
// { prefix: "!", user: { name: "Ali", age: 26 }, ... }

keys / anahtarlar

Tüm anahtarları döner.

db.keys();        // ["prefix", "user", "puan"]
db.anahtarlar();

values / değerler

Tüm değerleri döner.

db.values();    // ["!", { name: "Ali" }, 42]
db.değerler();

count / adet

Toplam anahtar sayısını döner.

db.count();  // 3
db.adet();

clear / sıfırla

Veritabanını tamamen temizler.

db.clear();
db.sıfırla();

backup / yedekle

Manuel yedek alır. Dosya adı verilmezse timestamp kullanılır.

db.backup();              // backup_1716000000000.json
db.backup("yedek_v1");   // yedek_v1.json
db.yedekle("yedek_v1");

restore / geriYükle

Bir yedek dosyasından veriyi geri yükler.

db.restore("yedek_v1");
db.geriYükle("yedek_v1");

stats / istatistik

Veritabanı hakkında bilgi döner.

db.stats();
db.istatistik();

/*
{
  file: "./database.json",
  keyCount: 5,
  fileSizeBytes: 1024,
  fileSizeKB: 1.00,
  lastModified: 2026-05-17T...,
  writeCount: 42,
  isLocked: false,
  queueLength: 0
}
*/

lock / kilitleunlock / kilidiAç

Yazma işlemlerini kilitler. Kilit açılınca kuyruktaki yazmalar uygulanır.

db.lock();
db.kilitle();

// ... bu sürede yapılan set/delete işlemleri kuyruğa alınır

db.unlock();
db.kilidiAç();

destroy / yokEt

TTL zamanlayıcısını durdurur. Process çıkışından önce çağrılması önerilir.

db.destroy();
db.yokEt();

// Örnek kullanım:
process.on("exit", () => db.destroy());

⚡ Events

DB sınıfı EventEmitter'dan türer. Tüm işlemleri dinleyebilirsiniz.

db.on("set",      ({ key, value })       => console.log("Yazıldı:", key, value));
db.on("delete",   ({ key })              => console.log("Silindi:", key));
db.on("push",     ({ key, value })       => console.log("Push:", key, value));
db.on("pull",     ({ key, indexOrValue })=> console.log("Pull:", key, indexOrValue));
db.on("add",      ({ key, amount, result }) => console.log("Eklendi:", key, result));
db.on("subtract", ({ key, amount, result }) => console.log("Çıkarıldı:", key, result));
db.on("clear",    ()                     => console.log("DB temizlendi"));
db.on("backup",   ({ file })             => console.log("Yedek:", file));
db.on("restore",  ({ file })             => console.log("Geri yüklendi:", file));
db.on("autoBackup",({ file })            => console.log("Otomatik yedek:", file));
db.on("expired",  ({ key })              => console.log("TTL sona erdi:", key));
db.on("write",    ({ count })            => console.log("Yazma #", count));
db.on("lock",     ()                     => console.log("DB kilitlendi"));
db.on("unlock",   ()                     => console.log("DB kilidi açıldı"));
db.on("destroy",  ()                     => console.log("DB durduruldu"));

📋 Tüm Metodlar — Hızlı Referans

| İngilizce | Türkçe | Açıklama | |---|---|---| | set(key, val, opts?) | yaz | Veri yazar | | get(key) | bul, fetch | Veri okur | | has(key) | kontrol | Varlık kontrolü | | delete(key) | sil, remove | Veri siler | | update(key, obj) | güncelle | Obje merge eder | | push(key, val) | depola | Array'e ekler | | pull(key, val) | pushsil | Array'den çıkarır | | add(key, n) | topla, ekle, increment | Sayıya ekler | | subtract(key, n) | çıkar, decrement | Sayıdan çıkarır | | find(key, fn) | bul_arr | Array'de arar | | filter(key, fn) | filtrele | Array'i filtreler | | all() | hepsi, fetchAll | Tüm veri | | keys() | anahtarlar | Tüm anahtarlar | | values() | değerler | Tüm değerler | | count() | adet | Anahtar sayısı | | clear() | sıfırla | DB'yi temizler | | backup(name?) | yedekle | Yedek alır | | restore(name) | geriYükle | Yedekten geri yükler | | stats() | istatistik | DB bilgisi | | lock() | kilitle | Yazmayı kilitler | | unlock() | kilidiAç | Kilidi açar | | destroy() | yokEt | Zamanlayıcıyı durdurur |


🔖 Lisans

MIT