add types

This commit is contained in:
obvtiger 2025-05-10 14:51:07 +02:00
commit 4a771ae1d4
7 changed files with 1019 additions and 0 deletions

138
examples/demo.js Normal file
View file

@ -0,0 +1,138 @@
const WireKVS = require("../src/index");
const AUTH_TOKEN = "your-token-from-cookies-here";
async function demoDirectConnect() {
try {
console.log("🚀 Starting WireKVS Direct Connect Demo");
// Connect directly to a database if you already have the ID and access key
const db = WireKVS.connect("your-database-id", "your-access-key");
console.log("✅ Connected directly to database");
// Set up real-time listeners
db.on("connected", () => console.log("🟢 WebSocket connected"))
.on("disconnected", () => console.log("🔴 WebSocket disconnected"))
.on("post", (event) => console.log("📝 New value set:", event))
.on("patch", (event) => console.log("✏️ Value updated:", event))
.on("delete", (event) => console.log("🗑️ Value deleted:", event))
.on("truncate", () => console.log("🧹 Database truncated"))
.on("error", (error) => console.error("❌ WebSocket error:", error));
// Wait for WebSocket connection
await new Promise((resolve) => setTimeout(resolve, 1000));
// Perform operations...
await db.set("greeting", "Hello from direct connect!");
const value = await db.get("greeting");
console.log("Value:", value);
// Disconnect when done
db.disconnect();
console.log("✅ Direct connect demo completed successfully!");
} catch (error) {
console.error(
"❌ Error during direct connect demo:",
error.response?.data || error.message
);
}
}
async function demoWithClient() {
try {
console.log("🚀 Starting WireKVS Client Demo");
// Initialize the client
const client = new WireKVS(AUTH_TOKEN);
console.log("✅ Client initialized");
// Create a new database
console.log("\n🆕 Creating new database...");
const newDb = await client.createDatabase({
name: "Demo Database",
allowPublicReads: true,
allowPublicWrites: false,
allowPublicModifications: false,
allowSpecificPublicReads: true,
});
console.log("Created database:", newDb);
// Get database instance using the access key from the created database
const db = client.database(newDb.kvsId, newDb.accessKey);
console.log("\n🔌 Connected to database:", newDb.kvsId);
// Set up real-time listeners with chaining
db.on("connected", () => console.log("🟢 WebSocket connected"))
.on("disconnected", () => console.log("🔴 WebSocket disconnected"))
.on("post", (event) => console.log("📝 New value set:", event))
.on("patch", (event) => console.log("✏️ Value updated:", event))
.on("delete", (event) => console.log("🗑️ Value deleted:", event))
.on("truncate", () => console.log("🧹 Database truncated"))
.on("error", (error) => console.error("❌ WebSocket error:", error));
// Wait for WebSocket connection
await new Promise((resolve) => setTimeout(resolve, 1000));
// Set some values
console.log("\n💾 Setting values...");
await db.set("greeting", "Hello, World!");
await db.set("number", "42");
await db.set("json", JSON.stringify({ foo: "bar" }));
// Get all entries
console.log("\n📖 Reading all entries...");
const entries = await db.getAllEntries();
console.log("All entries:", entries);
// Get specific value
console.log("\n🔍 Reading specific value...");
const greeting = await db.get("greeting");
console.log("Greeting:", greeting);
// Update a value
console.log("\n✏ Updating value...");
await db.update("greeting", "Hello, Updated World!");
const updatedGreeting = await db.get("greeting");
console.log("Updated greeting:", updatedGreeting);
// Search for entries
console.log("\n🔎 Searching entries...");
const searchResults = await db.search("Hello");
console.log("Search results:", searchResults);
// Delete a value
console.log("\n🗑 Deleting value...");
await db.delete("number");
// Truncate database
console.log("\n🧹 Truncating database...");
await client.truncateDatabase(newDb.kvsId);
// Update database settings
console.log("\n⚙ Updating database settings...");
await client.updateDatabase(newDb.kvsId, {
name: "Updated Demo Database",
allowPublicReads: false,
});
// Clean up
console.log("\n🧹 Cleaning up...");
await client.deleteDatabase(newDb.kvsId);
db.disconnect();
console.log("\n✅ Client demo completed successfully!");
} catch (error) {
console.error(
"\n❌ Error during client demo:",
error.response?.data || error.message
);
}
}
// Run the demos
console.log("Starting demos in 1 second...");
setTimeout(async () => {
await demoDirectConnect();
console.log("\n-------------------\n");
await demoWithClient();
}, 1000);