npm.io
0.0.27 • Published 3 weeks ago

croxydb

Licence
MIT
Version
0.0.27
Deps
0
Size
120 kB
Vulns
0
Weekly
0
Stars
8

CroxyDB

Downloads Monthly Downloads Weekly Downloads License

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, and deleteAll.
  • 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 mysql2 and firebase-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, false ve "" 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, deleteAll eventleri 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.
  • mysql2 ve firebase-admin optional 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.27 yapildi.
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

Keywords