A lightweight, drop-in SDK for sending secure session and event data to the Unshared Labs platform. Designed for server environments like Express, Fastify, or Next.js API routes.
npm install unshared-clientjs-sdk
# or
yarn add unshared-clientjs-sdk
import UnsharedLabsClient from "unshared-clientjs-sdk";
const client = new UnsharedLabsClient({
apiKey: process.env.UNSHARED_LABS_API_KEY!,
});
Sends events to the Unshared Labs platform.
submitEvent(
eventType: string,
userId: string,
ipAddress: string,
deviceId: string,
sessionHash: string,
userAgent: string,
clientTimestamp: string,
eventDetails?: map<String,any> | null
): Promise<any>
import express from "express";
import UnsharedLabsClient from "unshared-clientjs-sdk";
const app = express();
app.use(express.json());
const client = new UnsharedLabsClient({
apiKey: process.env.UNSHARED_LABS_API_KEY!,
});
app.post("/login", async (req, res) => {
const { userId } = req.body;
try {
await client.submitEvent(
"login",
userId,
req.ip,
req.headers["x-device-id"]?.toString() || "unknown-device",
req.headers["x-session-hash"]?.toString() || "unknown-session",
req.headers["user-agent"] || "",
new Date().toISOString(),
new Map(Object.entries({"example": true, "source": 'test-server' }))
);
res.status(200).json({ message: "Login tracked" });
} catch (err) {
res.status(500).json({ error: err instanceof Error ? err.message : err });
}
});
app.listen(3000, () => console.log("Server running on port 3000"));