UNPKG

@ultipa-graph/ultipa-driver

Version:

NodeJS SDK for Ultipa GQL

72 lines 8.8 kB
"use strict"; /** * Session service handles authentication and session lifecycle. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SessionService = void 0; const errors_1 = require("../errors"); const services_1 = require("../services"); /** * Session service for authentication and session management. */ class SessionService { ctx; constructor(ctx) { this.ctx = ctx; } /** * Authenticate the user and create a session. */ async login(username, password, defaultGraph) { const request = { username, password, default_graph: defaultGraph || '', }; try { const response = await (0, services_1.promisifyCall)(this.ctx.clients.sessionService, 'Login', request); // Prefer the server's authoritative LoginResponse.current_graph // (new servers always populate it — equals the validated // defaultGraph or empty). Falls back to the request value for // older servers that don't populate the field. const serverCurrent = response.current_graph || ''; const effectiveGraph = serverCurrent || defaultGraph || ''; const session = this.ctx.sessions.login(parseInt(response.session_id || '0', 10), response.server_version || '', response.roles || [], effectiveGraph, { isCluster: response.is_cluster || false, clusterId: response.cluster_id || '', partitionCount: response.partition_count || 0, }); return session; } catch (error) { throw new errors_1.LoginFailedError(error.message || 'Login failed'); } } /** * Terminate the current session. */ async logout() { if (!this.ctx.sessions.isLoggedIn()) return; try { const metadata = this.ctx.getSessionMetadata(); await (0, services_1.promisifyCall)(this.ctx.clients.sessionService, 'Logout', {}, metadata); } catch (e) { // Ignore logout errors } this.ctx.txManager.clearAll(); this.ctx.sessions.logout(); } /** * Check the connection and return the latency in nanoseconds. */ async ping() { const metadata = this.ctx.getSessionMetadata(); const response = await (0, services_1.promisifyCall)(this.ctx.clients.sessionService, 'Ping', {}, metadata); this.ctx.updateActivity(); return parseInt(response.latency_ns || '0', 10); } } exports.SessionService = SessionService; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3Nlc3Npb24tc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQUlILHNDQUE2QztBQUM3QywwQ0FBNEM7QUFFNUM7O0dBRUc7QUFDSCxNQUFhLGNBQWM7SUFDTDtJQUFwQixZQUFvQixHQUFtQjtRQUFuQixRQUFHLEdBQUgsR0FBRyxDQUFnQjtJQUFHLENBQUM7SUFFM0M7O09BRUc7SUFDSCxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsRUFBRSxZQUFvQjtRQUNsRSxNQUFNLE9BQU8sR0FBRztZQUNkLFFBQVE7WUFDUixRQUFRO1lBQ1IsYUFBYSxFQUFFLFlBQVksSUFBSSxFQUFFO1NBQ2xDLENBQUM7UUFFRixJQUFJLENBQUM7WUFDSCxNQUFNLFFBQVEsR0FBUSxNQUFNLElBQUEsd0JBQWEsRUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUMvQixPQUFPLEVBQ1AsT0FBTyxDQUNSLENBQUM7WUFFRixnRUFBZ0U7WUFDaEUseURBQXlEO1lBQ3pELDhEQUE4RDtZQUM5RCwrQ0FBK0M7WUFDL0MsTUFBTSxhQUFhLEdBQVcsUUFBUSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7WUFDM0QsTUFBTSxjQUFjLEdBQUcsYUFBYSxJQUFJLFlBQVksSUFBSSxFQUFFLENBQUM7WUFFM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUNyQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQ3hDLFFBQVEsQ0FBQyxjQUFjLElBQUksRUFBRSxFQUM3QixRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFDcEIsY0FBYyxFQUNkO2dCQUNFLFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVSxJQUFJLEtBQUs7Z0JBQ3ZDLFNBQVMsRUFBRSxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUU7Z0JBQ3BDLGNBQWMsRUFBRSxRQUFRLENBQUMsZUFBZSxJQUFJLENBQUM7YUFDOUMsQ0FDRixDQUFDO1lBRUYsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLHlCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksY0FBYyxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxNQUFNO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtZQUFFLE9BQU87UUFFNUMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBQSx3QkFBYSxFQUNqQixJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQy9CLFFBQVEsRUFDUixFQUFFLEVBQ0YsUUFBUSxDQUNULENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLHVCQUF1QjtRQUN6QixDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0MsTUFBTSxRQUFRLEdBQVEsTUFBTSxJQUFBLHdCQUFhLEVBQ3ZDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFDL0IsTUFBTSxFQUNOLEVBQUUsRUFDRixRQUFRLENBQ1QsQ0FBQztRQUVGLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsSUFBSSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBbkZELHdDQW1GQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2Vzc2lvbiBzZXJ2aWNlIGhhbmRsZXMgYXV0aGVudGljYXRpb24gYW5kIHNlc3Npb24gbGlmZWN5Y2xlLlxuICovXG5cbmltcG9ydCB7IFNlcnZpY2VDb250ZXh0IH0gZnJvbSAnLi9zZXJ2aWNlLWNvbnRleHQnO1xuaW1wb3J0IHsgU2Vzc2lvbiB9IGZyb20gJy4uL3Nlc3Npb24nO1xuaW1wb3J0IHsgTG9naW5GYWlsZWRFcnJvciB9IGZyb20gJy4uL2Vycm9ycyc7XG5pbXBvcnQgeyBwcm9taXNpZnlDYWxsIH0gZnJvbSAnLi4vc2VydmljZXMnO1xuXG4vKipcbiAqIFNlc3Npb24gc2VydmljZSBmb3IgYXV0aGVudGljYXRpb24gYW5kIHNlc3Npb24gbWFuYWdlbWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlc3Npb25TZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjdHg6IFNlcnZpY2VDb250ZXh0KSB7fVxuXG4gIC8qKlxuICAgKiBBdXRoZW50aWNhdGUgdGhlIHVzZXIgYW5kIGNyZWF0ZSBhIHNlc3Npb24uXG4gICAqL1xuICBhc3luYyBsb2dpbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nLCBkZWZhdWx0R3JhcGg6IHN0cmluZyk6IFByb21pc2U8U2Vzc2lvbj4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICB1c2VybmFtZSxcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgZGVmYXVsdF9ncmFwaDogZGVmYXVsdEdyYXBoIHx8ICcnLFxuICAgIH07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICAgIHRoaXMuY3R4LmNsaWVudHMuc2Vzc2lvblNlcnZpY2UsXG4gICAgICAgICdMb2dpbicsXG4gICAgICAgIHJlcXVlc3RcbiAgICAgICk7XG5cbiAgICAgIC8vIFByZWZlciB0aGUgc2VydmVyJ3MgYXV0aG9yaXRhdGl2ZSBMb2dpblJlc3BvbnNlLmN1cnJlbnRfZ3JhcGhcbiAgICAgIC8vIChuZXcgc2VydmVycyBhbHdheXMgcG9wdWxhdGUgaXQg4oCUIGVxdWFscyB0aGUgdmFsaWRhdGVkXG4gICAgICAvLyBkZWZhdWx0R3JhcGggb3IgZW1wdHkpLiBGYWxscyBiYWNrIHRvIHRoZSByZXF1ZXN0IHZhbHVlIGZvclxuICAgICAgLy8gb2xkZXIgc2VydmVycyB0aGF0IGRvbid0IHBvcHVsYXRlIHRoZSBmaWVsZC5cbiAgICAgIGNvbnN0IHNlcnZlckN1cnJlbnQ6IHN0cmluZyA9IHJlc3BvbnNlLmN1cnJlbnRfZ3JhcGggfHwgJyc7XG4gICAgICBjb25zdCBlZmZlY3RpdmVHcmFwaCA9IHNlcnZlckN1cnJlbnQgfHwgZGVmYXVsdEdyYXBoIHx8ICcnO1xuXG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5jdHguc2Vzc2lvbnMubG9naW4oXG4gICAgICAgIHBhcnNlSW50KHJlc3BvbnNlLnNlc3Npb25faWQgfHwgJzAnLCAxMCksXG4gICAgICAgIHJlc3BvbnNlLnNlcnZlcl92ZXJzaW9uIHx8ICcnLFxuICAgICAgICByZXNwb25zZS5yb2xlcyB8fCBbXSxcbiAgICAgICAgZWZmZWN0aXZlR3JhcGgsXG4gICAgICAgIHtcbiAgICAgICAgICBpc0NsdXN0ZXI6IHJlc3BvbnNlLmlzX2NsdXN0ZXIgfHwgZmFsc2UsXG4gICAgICAgICAgY2x1c3RlcklkOiByZXNwb25zZS5jbHVzdGVyX2lkIHx8ICcnLFxuICAgICAgICAgIHBhcnRpdGlvbkNvdW50OiByZXNwb25zZS5wYXJ0aXRpb25fY291bnQgfHwgMCxcbiAgICAgICAgfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHNlc3Npb247XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IExvZ2luRmFpbGVkRXJyb3IoZXJyb3IubWVzc2FnZSB8fCAnTG9naW4gZmFpbGVkJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlcm1pbmF0ZSB0aGUgY3VycmVudCBzZXNzaW9uLlxuICAgKi9cbiAgYXN5bmMgbG9nb3V0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5jdHguc2Vzc2lvbnMuaXNMb2dnZWRJbigpKSByZXR1cm47XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSB0aGlzLmN0eC5nZXRTZXNzaW9uTWV0YWRhdGEoKTtcbiAgICAgIGF3YWl0IHByb21pc2lmeUNhbGwoXG4gICAgICAgIHRoaXMuY3R4LmNsaWVudHMuc2Vzc2lvblNlcnZpY2UsXG4gICAgICAgICdMb2dvdXQnLFxuICAgICAgICB7fSxcbiAgICAgICAgbWV0YWRhdGFcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSWdub3JlIGxvZ291dCBlcnJvcnNcbiAgICB9XG5cbiAgICB0aGlzLmN0eC50eE1hbmFnZXIuY2xlYXJBbGwoKTtcbiAgICB0aGlzLmN0eC5zZXNzaW9ucy5sb2dvdXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGUgY29ubmVjdGlvbiBhbmQgcmV0dXJuIHRoZSBsYXRlbmN5IGluIG5hbm9zZWNvbmRzLlxuICAgKi9cbiAgYXN5bmMgcGluZygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIGNvbnN0IG1ldGFkYXRhID0gdGhpcy5jdHguZ2V0U2Vzc2lvbk1ldGFkYXRhKCk7XG5cbiAgICBjb25zdCByZXNwb25zZTogYW55ID0gYXdhaXQgcHJvbWlzaWZ5Q2FsbChcbiAgICAgIHRoaXMuY3R4LmNsaWVudHMuc2Vzc2lvblNlcnZpY2UsXG4gICAgICAnUGluZycsXG4gICAgICB7fSxcbiAgICAgIG1ldGFkYXRhXG4gICAgKTtcblxuICAgIHRoaXMuY3R4LnVwZGF0ZUFjdGl2aXR5KCk7XG4gICAgcmV0dXJuIHBhcnNlSW50KHJlc3BvbnNlLmxhdGVuY3lfbnMgfHwgJzAnLCAxMCk7XG4gIH1cbn1cbiJdfQ==