@ultipa-graph/ultipa-driver
Version:
NodeJS SDK for Ultipa GQL
80 lines • 8.31 kB
JavaScript
"use strict";
/**
* Session management for GQLDB Node.js driver.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.SessionManager = void 0;
/** Manages sessions for the client */
class SessionManager {
session = null;
_defaultGraph = '';
/** Create a new session */
login(sessionId, serverVersion, roles, defaultGraph, clusterInfo) {
this.session = {
id: sessionId,
serverVersion,
roles,
defaultGraph,
createdAt: Date.now(),
lastActivity: Date.now(),
isCluster: clusterInfo?.isCluster || false,
clusterId: clusterInfo?.clusterId || '',
partitionCount: clusterInfo?.partitionCount || 0,
};
return this.session;
}
/** Clear the current session */
logout() {
this.session = null;
}
/** Get the current session */
getSession() {
return this.session;
}
/** Get the current session ID */
getSessionId() {
return this.session?.id ?? 0;
}
/** Check if there is an active session */
isLoggedIn() {
return this.session !== null;
}
/** Update the last activity time */
updateActivity() {
if (this.session) {
this.session.lastActivity = Date.now();
}
}
/** Set the default graph for the session */
setDefaultGraph(graph) {
this._defaultGraph = graph;
if (this.session) {
this.session.defaultGraph = graph;
}
}
/** Get the default graph for the session */
getDefaultGraph() {
if (this.session?.defaultGraph) {
return this.session.defaultGraph;
}
return this._defaultGraph;
}
/** Check if the session has a specific role */
hasRole(role) {
return this.session?.roles.includes(role) ?? false;
}
/** Get how long the session has been idle in milliseconds */
idleDuration() {
if (!this.session)
return 0;
return Date.now() - this.session.lastActivity;
}
/** Get how long the session has been active in milliseconds */
age() {
if (!this.session)
return 0;
return Date.now() - this.session.createdAt;
}
}
exports.SessionManager = SessionManager;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZXNzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBZ0JILHNDQUFzQztBQUN0QyxNQUFhLGNBQWM7SUFDakIsT0FBTyxHQUFtQixJQUFJLENBQUM7SUFDL0IsYUFBYSxHQUFXLEVBQUUsQ0FBQztJQUVuQywyQkFBMkI7SUFDM0IsS0FBSyxDQUNILFNBQWlCLEVBQ2pCLGFBQXFCLEVBQ3JCLEtBQWUsRUFDZixZQUFvQixFQUNwQixXQUFrRjtRQUVsRixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsRUFBRSxFQUFFLFNBQVM7WUFDYixhQUFhO1lBQ2IsS0FBSztZQUNMLFlBQVk7WUFDWixTQUFTLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNyQixZQUFZLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUN4QixTQUFTLEVBQUUsV0FBVyxFQUFFLFNBQVMsSUFBSSxLQUFLO1lBQzFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxJQUFJLEVBQUU7WUFDdkMsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLElBQUksQ0FBQztTQUNqRCxDQUFDO1FBQ0YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxnQ0FBZ0M7SUFDaEMsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCw4QkFBOEI7SUFDOUIsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsaUNBQWlDO0lBQ2pDLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsMENBQTBDO0lBQzFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxvQ0FBb0M7SUFDcEMsY0FBYztRQUNaLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQztJQUVELDRDQUE0QztJQUM1QyxlQUFlLENBQUMsS0FBYTtRQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCw0Q0FBNEM7SUFDNUMsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ25DLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVELCtDQUErQztJQUMvQyxPQUFPLENBQUMsSUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUM7SUFDckQsQ0FBQztJQUVELDZEQUE2RDtJQUM3RCxZQUFZO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7SUFDaEQsQ0FBQztJQUVELCtEQUErRDtJQUMvRCxHQUFHO1FBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxDQUFDLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBckZELHdDQXFGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2Vzc2lvbiBtYW5hZ2VtZW50IGZvciBHUUxEQiBOb2RlLmpzIGRyaXZlci5cbiAqL1xuXG4vKiogUmVwcmVzZW50cyBhbiBhdXRoZW50aWNhdGVkIHNlc3Npb24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbiB7XG4gIGlkOiBudW1iZXI7XG4gIHNlcnZlclZlcnNpb246IHN0cmluZztcbiAgcm9sZXM6IHN0cmluZ1tdO1xuICBkZWZhdWx0R3JhcGg6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBudW1iZXI7XG4gIGxhc3RBY3Rpdml0eTogbnVtYmVyO1xuICAvLyBDbHVzdGVyIGV4dGVuc2lvbnNcbiAgaXNDbHVzdGVyPzogYm9vbGVhbjtcbiAgY2x1c3RlcklkPzogc3RyaW5nO1xuICBwYXJ0aXRpb25Db3VudD86IG51bWJlcjtcbn1cblxuLyoqIE1hbmFnZXMgc2Vzc2lvbnMgZm9yIHRoZSBjbGllbnQgKi9cbmV4cG9ydCBjbGFzcyBTZXNzaW9uTWFuYWdlciB7XG4gIHByaXZhdGUgc2Vzc2lvbjogU2Vzc2lvbiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF9kZWZhdWx0R3JhcGg6IHN0cmluZyA9ICcnO1xuXG4gIC8qKiBDcmVhdGUgYSBuZXcgc2Vzc2lvbiAqL1xuICBsb2dpbihcbiAgICBzZXNzaW9uSWQ6IG51bWJlcixcbiAgICBzZXJ2ZXJWZXJzaW9uOiBzdHJpbmcsXG4gICAgcm9sZXM6IHN0cmluZ1tdLFxuICAgIGRlZmF1bHRHcmFwaDogc3RyaW5nLFxuICAgIGNsdXN0ZXJJbmZvPzogeyBpc0NsdXN0ZXI/OiBib29sZWFuOyBjbHVzdGVySWQ/OiBzdHJpbmc7IHBhcnRpdGlvbkNvdW50PzogbnVtYmVyIH1cbiAgKTogU2Vzc2lvbiB7XG4gICAgdGhpcy5zZXNzaW9uID0ge1xuICAgICAgaWQ6IHNlc3Npb25JZCxcbiAgICAgIHNlcnZlclZlcnNpb24sXG4gICAgICByb2xlcyxcbiAgICAgIGRlZmF1bHRHcmFwaCxcbiAgICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcbiAgICAgIGxhc3RBY3Rpdml0eTogRGF0ZS5ub3coKSxcbiAgICAgIGlzQ2x1c3RlcjogY2x1c3RlckluZm8/LmlzQ2x1c3RlciB8fCBmYWxzZSxcbiAgICAgIGNsdXN0ZXJJZDogY2x1c3RlckluZm8/LmNsdXN0ZXJJZCB8fCAnJyxcbiAgICAgIHBhcnRpdGlvbkNvdW50OiBjbHVzdGVySW5mbz8ucGFydGl0aW9uQ291bnQgfHwgMCxcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLnNlc3Npb247XG4gIH1cblxuICAvKiogQ2xlYXIgdGhlIGN1cnJlbnQgc2Vzc2lvbiAqL1xuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9uID0gbnVsbDtcbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGN1cnJlbnQgc2Vzc2lvbiAqL1xuICBnZXRTZXNzaW9uKCk6IFNlc3Npb24gfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uO1xuICB9XG5cbiAgLyoqIEdldCB0aGUgY3VycmVudCBzZXNzaW9uIElEICovXG4gIGdldFNlc3Npb25JZCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24/LmlkID8/IDA7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlcmUgaXMgYW4gYWN0aXZlIHNlc3Npb24gKi9cbiAgaXNMb2dnZWRJbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uICE9PSBudWxsO1xuICB9XG5cbiAgLyoqIFVwZGF0ZSB0aGUgbGFzdCBhY3Rpdml0eSB0aW1lICovXG4gIHVwZGF0ZUFjdGl2aXR5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlc3Npb24pIHtcbiAgICAgIHRoaXMuc2Vzc2lvbi5sYXN0QWN0aXZpdHkgPSBEYXRlLm5vdygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTZXQgdGhlIGRlZmF1bHQgZ3JhcGggZm9yIHRoZSBzZXNzaW9uICovXG4gIHNldERlZmF1bHRHcmFwaChncmFwaDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5fZGVmYXVsdEdyYXBoID0gZ3JhcGg7XG4gICAgaWYgKHRoaXMuc2Vzc2lvbikge1xuICAgICAgdGhpcy5zZXNzaW9uLmRlZmF1bHRHcmFwaCA9IGdyYXBoO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXQgdGhlIGRlZmF1bHQgZ3JhcGggZm9yIHRoZSBzZXNzaW9uICovXG4gIGdldERlZmF1bHRHcmFwaCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnNlc3Npb24/LmRlZmF1bHRHcmFwaCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi5kZWZhdWx0R3JhcGg7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9kZWZhdWx0R3JhcGg7XG4gIH1cblxuICAvKiogQ2hlY2sgaWYgdGhlIHNlc3Npb24gaGFzIGEgc3BlY2lmaWMgcm9sZSAqL1xuICBoYXNSb2xlKHJvbGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlc3Npb24/LnJvbGVzLmluY2x1ZGVzKHJvbGUpID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqIEdldCBob3cgbG9uZyB0aGUgc2Vzc2lvbiBoYXMgYmVlbiBpZGxlIGluIG1pbGxpc2Vjb25kcyAqL1xuICBpZGxlRHVyYXRpb24oKTogbnVtYmVyIHtcbiAgICBpZiAoIXRoaXMuc2Vzc2lvbikgcmV0dXJuIDA7XG4gICAgcmV0dXJuIERhdGUubm93KCkgLSB0aGlzLnNlc3Npb24ubGFzdEFjdGl2aXR5O1xuICB9XG5cbiAgLyoqIEdldCBob3cgbG9uZyB0aGUgc2Vzc2lvbiBoYXMgYmVlbiBhY3RpdmUgaW4gbWlsbGlzZWNvbmRzICovXG4gIGFnZSgpOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5zZXNzaW9uKSByZXR1cm4gMDtcbiAgICByZXR1cm4gRGF0ZS5ub3coKSAtIHRoaXMuc2Vzc2lvbi5jcmVhdGVkQXQ7XG4gIH1cbn1cbiJdfQ==