unshared-clientjs-sdk
v1.0.4
Published
A lightweight, drop-in SDK for sending secure session and event data to the **Unshared Labs** platform. This package is designed for server environments (e.g., Express, Fastify, Next.js API routes) that need to track account sharing activity, session beha
Readme
Unshared Labs SDK
A lightweight, drop-in SDK for sending secure session and event data to the Unshared Labs platform. This package is designed for server environments (e.g., Express, Fastify, Next.js API routes) that need to track account sharing activity, session behavior, or suspicious usage patterns.
Installation
npm install unshared-clientjs-sdk
# or
yarn add unshared-clientjs-sdkQuick Example
import UnsharedLabsClient from "unshared-clientjs-sdk";
const client = new UnsharedLabsClient({
apiKey: process.env.UNSHARED_LABS_API_KEY!,
});API
submitEvent(...)
submitEvent(
eventType: string,
userId: string,
ipAddress: string,
deviceId: string,
sessionHash: string,
userAgent: string,
clientTimestamp: string,
eventDetails?: map<String,any> | null
): Promise<any>Parameters
eventType— string, e.g."login","heartbeat","logout"userId— string, unique user identifier (encrypted before sending)ipAddress— string, client IP (encrypted)deviceId— string, device identifier (encrypted)sessionHash— string, session identifier or fingerprint (encrypted)userAgent— stringclientTimestamp— ISO timestamp string (e.g.new Date().toISOString()).eventDetails— optional map of objects (String,any) of additional details
Returns: A promise resolving Unshared Lab's DB insert result or rejecting with an error.
Example (Express)
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"));License
MIT © Unshared Labs
Support
For issues or onboarding help, contact Unshared Labs support.
