UNPKG

@ultipa-graph/ultipa-driver

Version:

NodeJS SDK for Ultipa GQL

80 lines 8.31 kB
"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==