CroxyDB
Discord: https://discord.gg/uemHZfU6ve
English
CroxyDB is a small key-value database module for Node.js. It supports JSON, YAML, LocalStorage, MongoDB, MySQL, and Firebase adapters. The default adapter is JSON.
Version 0.0.27 changes
- Added real independent instances with
db.createInstance(). - Added scoped paths with
db.path("users"). - Fixed storing
0,false, and"". - Added deep-cloned return values to avoid caller reference mutation bugs.
- Added sync and async APIs together.
- Added TTL support with
db.set(key, value, { ttl }). - Added events:
set,delete,expire, anddeleteAll. - Added crash-safe JSON writes with temp file plus rename.
- Added optional AES-256-GCM encryption for JSON storage.
- Added a small migration runner.
- Update checks are enabled by default and run during operations.
- Update check warnings include the Discord invite.
- Updated the Discord invite link.
- Added MySQL adapter.
- Added Firebase adapter.
- Added optional peer dependencies for
mysql2andfirebase-admin. - Added a dependency-free web panel.
- Added web panel options for auth, readonly mode, theme, import/export, and delete-all control.
- Updated TypeScript definitions for new adapters, web panel options, async methods, instances, TTL, and events.
- Reworked this README into a simpler English and Turkish document.
- Bumped package version to
0.0.27.
Install
npm install croxydb
Optional adapter packages:
npm install mysql2
npm install firebase-admin
npm install mongoose
npm install yaml
Basic usage
const db = require("croxydb")
db.set("user.name", "Ada")
db.get("user") // { name: "Ada" }
db.set("zero", 0)
db.set("enabled", false)
db.set("empty", "")
db.has("enabled") // true
db.delete("user.name") // true
db.all()
Arrays and numbers
db.add("coins", 10)
db.subtract("coins", 3)
db.push("items", "sword")
db.push("items", "shield")
db.unpush("items", "sword")
Instances
const usersDb = db.createInstance({
folder: "data",
file: "users"
})
usersDb.set("1.name", "Ada")
Scoped paths
const users = db.path("users")
users.set("1", { name: "Ada" })
users.get("1")
Async API
await db.setAsync("settings.theme", "dark")
await db.getAsync("settings.theme")
TTL
db.set("session.token", "abc", { ttl: 60_000 })
Events
db.on("set", (key, value) => {
console.log(key, value)
})
db.on("expire", (key) => {
console.log("expired", key)
})
Encryption
db.setEncryptionKey("your-secret")
db.set("private.value", "encrypted at rest")
Web panel
The web panel uses only Node.js built-in modules.
db.setWebPanel(true, 2229, {
title: "CroxyDB Admin",
password: "secret",
readonly: false,
theme: {
primary: "#30d158",
background: "#050506",
surface: "#151516",
muted: "#8e8e93",
text: "#f5f5f7"
},
actions: {
import: true,
export: true,
deleteAll: false
}
})
Open:
http://localhost:2229
MySQL adapter
Install mysql2 first.
db.setAdapter("mysql", {
host: "localhost",
user: "root",
password: "password",
database: "my_database",
table: "croxydb"
})
await db.setAsync("users.1", { name: "Ada" })
await db.getAsync("users.1")
Connection URL is also supported:
db.setAdapter("mysql", {
url: "mysql://root:password@localhost:3306/my_database",
table: "croxydb"
})
Firebase adapter
Install firebase-admin first.
db.setAdapter("firebase", {
databaseURL: "https://your-project-default-rtdb.firebaseio.com",
serviceAccount: require("./service-account.json"),
path: "croxydb"
})
await db.setAsync("users.1", { name: "Ada" })
await db.getAsync("users.1")
MongoDB adapter
Install mongoose first.
db.setAdapter("mongo", {
url: "mongodb://localhost/database",
schema: "CroxyDB"
})
await db.set("users.1", { name: "Ada" })
await db.get("users.1")
Options
db.setReadable(true)
db.setNoBlankData(true)
db.setFolder("database")
db.setFile("main")
db.setSeperator(".")
db.setCheckUpdates(false) // disable update checks
Migration
db.registerMigration("rename-key", async (database) => {
const oldValue = await database.getAsync("old.key")
if (oldValue !== undefined) {
await database.setAsync("new.key", oldValue)
await database.deleteAsync("old.key")
}
})
await db.migrate()
Turkish
CroxyDB, Node.js icin kucuk bir key-value database moduludur. JSON, YAML, LocalStorage, MongoDB, MySQL ve Firebase adapterlerini destekler. Varsayilan adapter JSON adapteridir.
0.0.27 degisiklikleri
db.createInstance()ile gercek bagimsiz instance destegi eklendi.db.path("users")ile scoped path sistemi eklendi.0,falseve""kaydetme sorunu duzeltildi.- Disaridan referans mutasyonu olmasin diye donen objeler deep clone yapiliyor.
- Sync ve async API birlikte eklendi.
db.set(key, value, { ttl })ile TTL destegi eklendi.set,delete,expire,deleteAlleventleri eklendi.- JSON adapter icin temp dosya ve rename ile crash-safe yazma eklendi.
- JSON storage icin opsiyonel AES-256-GCM sifreleme eklendi.
- Basit migration runner eklendi.
- Update check varsayilan olarak acik gelir ve islemler sirasinda calisir.
- Update check uyarilarinda Discord davet linki bulunur.
- Discord davet linki guncellendi.
- MySQL adapter eklendi.
- Firebase adapter eklendi.
mysql2vefirebase-adminoptional peer dependency olarak eklendi.- Dependency kullanmayan web panel eklendi.
- Web panel icin auth, readonly mode, tema, import/export ve delete-all kontrolu eklendi.
- TypeScript tanimlari yeni adapterler, web panel, async metotlar, instance, TTL ve eventler icin guncellendi.
- README daha sade Ingilizce ve Turkce dokuman olarak yenilendi.
- Paket surumu
0.0.27yapildi.
Kurulum
npm install croxydb
Opsiyonel adapter paketleri:
npm install mysql2
npm install firebase-admin
npm install mongoose
npm install yaml
Temel kullanim
const db = require("croxydb")
db.set("user.name", "Ada")
db.get("user") // { name: "Ada" }
db.set("zero", 0)
db.set("enabled", false)
db.set("empty", "")
db.has("enabled") // true
db.delete("user.name") // true
db.all()
Web panel
db.setWebPanel(true, 2229, {
title: "CroxyDB Admin",
password: "secret",
readonly: false,
actions: {
import: true,
export: true,
deleteAll: false
}
})
Adres:
http://localhost:2229
MySQL
db.setAdapter("mysql", {
host: "localhost",
user: "root",
password: "password",
database: "my_database",
table: "croxydb"
})
await db.setAsync("users.1", { name: "Ada" })
Firebase
db.setAdapter("firebase", {
databaseURL: "https://your-project-default-rtdb.firebaseio.com",
serviceAccount: require("./service-account.json"),
path: "croxydb"
})
await db.setAsync("users.1", { name: "Ada" })
Destek
Discord: https://discord.gg/uemHZfU6ve