@trainersky/light-db
Version:
Fully async JSON-based lightweight database
76 lines (75 loc) ⢠4.21 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const index_1 = __importDefault(require("./index"));
async function runAsyncTests() {
console.log("ā
Running Full TrainerDB Test Suite (Async Mode)...\n");
const db = (0, index_1.default)("db", "./db");
// š¢ Basic CRUD Tests
await db.set("user", { name: "Ash", age: 10 });
console.log("š¢ get user:", await db.get("user")); // { name: "Ash", age: 10 }
console.log("š¢ has user:", await db.has("user")); // true
console.log("š¢ has non-existent key:", await db.has("nonexistent")); // false
await db.delete("user");
console.log("š¢ has user after delete:", await db.has("user")); // false
// š¢ Deep Object Handling
await db.set("user.profile", { hometown: "Pallet Town", region: "Kanto" });
console.log("š¢ get user.profile:", await db.get("user.profile"));
await db.update("user.profile.region", (region) => region.toUpperCase());
console.log("š¢ updated user.profile.region:", await db.get("user.profile.region")); // "KANTO"
// š¢ Boolean Handling
await db.set("user.active", false);
await db.toggle("user.active");
console.log("š¢ toggled user.active:", await db.get("user.active")); // true
// š¢ Math Operations
await db.set("wallet.balance", 100);
await db.plus("wallet.balance", 50);
console.log("š¢ plus balance:", await db.get("wallet.balance")); // 150
await db.minus("wallet.balance", 20);
console.log("š¢ minus balance:", await db.get("wallet.balance")); // 130
await db.multiple("wallet.balance", 2);
console.log("š¢ multiple balance:", await db.get("wallet.balance")); // 260
await db.divide("wallet.balance", 2);
console.log("š¢ divide balance:", await db.get("wallet.balance")); // 130
// š Error Handling: Division by Zero
try {
await db.divide("wallet.balance", 0);
}
catch (e) {
console.error("š Division by zero error caught:", e instanceof Error ? e.message : e);
}
// š¢ Object Merging
await db.set("user.stats", { hp: 100, attack: 50 });
await db.merge("user.stats", { defense: 70 });
console.log("š¢ merged user.stats:", await db.get("user.stats")); // { hp: 100, attack: 50, defense: 70 }
// š¢ Array Handling
await db.set("user.pokemon", ["Pikachu"]);
await db.set("user.pokemon", ["Charizard"], { append: true });
console.log("š¢ append to pokemon:", await db.get("user.pokemon"));
await db.set("user.items", ["Potion", "Potion", "Pokeball"]);
const items = await db.get("user.items") || [];
await db.set("user.items", [...new Set(items)]);
console.log("š¢ unique items:", await db.get("user.items")); // ["Potion", "Pokeball"]
// š¢ Sorting & Reversing Arrays
await db.set("user.numbers", [3, 1, 4, 1, 5, 9]);
await db.set("user.numbers", (await db.get("user.numbers")).sort((a, b) => a - b));
console.log("š¢ sorted numbers:", await db.get("user.numbers")); // [1, 1, 3, 4, 5, 9]
await db.set("user.numbers", (await db.get("user.numbers")).reverse());
console.log("š¢ reversed numbers:", await db.get("user.numbers")); // [9, 5, 4, 3, 1, 1]
// š¢ Finding & Filtering
await db.set("user.numbers", [10, 20, 30, 40, 50]);
const foundNumber = (await db.get("user.numbers")).find((num) => num > 25);
console.log("š¢ find first number > 25:", foundNumber); // 30
const filteredNumbers = (await db.get("user.numbers")).filter((num) => num > 25);
console.log("š¢ filter numbers > 25:", filteredNumbers); // [30, 40, 50]
// š¢ Slicing Arrays
const slicedNumbers = (await db.get("user.numbers")).slice(1, 4);
console.log("š¢ slice numbers (1 to 4):", slicedNumbers); // [20, 30, 40]
// š¢ Keys & Values Retrieval
console.log("š¢ all keys:", await db.keys()); // Should list all keys
console.log("š¢ all values:", await db.values()); // Should list all values
console.log("\nā
All async tests passed!\n");
}
runAsyncTests();