@ultipa-graph/ultipa-driver
Version:
NodeJS SDK for Ultipa GQL
90 lines • 7.09 kB
JavaScript
;
/**
* Shared context for all service classes.
* Contains gRPC clients, managers, and configuration.
*/
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.ServiceContext = void 0;
const grpc = __importStar(require("@grpc/grpc-js"));
/**
* Service context holds shared dependencies for all service classes.
*/
class ServiceContext {
config;
sessions;
txManager;
clients;
clientSessionId;
constructor(config, sessions, txManager,
/**
* Not readonly: the client rebuilds the underlying gRPC channels
* on transport-level errors (UNAVAILABLE / connection reset) by
* mutating this in place. See GqldbClient.forceReconnectAll.
*/
clients,
/**
* Stable per-client logical session id sent as the
* `x-ultipa-session-id` gRPC metadata header. Empty string omits the
* header (legacy behavior). See TRANSACTIONS_DRIVER_GUIDE.md §2.1.
*/
clientSessionId = '') {
this.config = config;
this.sessions = sessions;
this.txManager = txManager;
this.clients = clients;
this.clientSessionId = clientSessionId;
}
/**
* Get session metadata for authenticated requests.
*/
getSessionMetadata() {
const metadata = new grpc.Metadata();
const session = this.sessions.getSession();
metadata.add('session-id', session?.id?.toString() || '0');
if (this.clientSessionId) {
metadata.add('x-ultipa-session-id', this.clientSessionId);
}
return metadata;
}
/**
* Update session activity timestamp.
*/
updateActivity() {
this.sessions.updateActivity();
}
}
exports.ServiceContext = ServiceContext;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb250ZXh0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZpY2VzL3NlcnZpY2UtY29udGV4dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFSCxvREFBc0M7QUFtQnRDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBRVA7SUFDQTtJQUNBO0lBTVQ7SUFNUztJQWZsQixZQUNrQixNQUFtQixFQUNuQixRQUF3QixFQUN4QixTQUE2QjtJQUM3Qzs7OztPQUlHO0lBQ0ksT0FBdUI7SUFDOUI7Ozs7T0FJRztJQUNhLGtCQUEwQixFQUFFO1FBZDVCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsY0FBUyxHQUFULFNBQVMsQ0FBb0I7UUFNdEMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFNZCxvQkFBZSxHQUFmLGVBQWUsQ0FBYTtJQUMzQyxDQUFDO0lBRUo7O09BRUc7SUFDSCxrQkFBa0I7UUFDaEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMzQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQzNELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUF0Q0Qsd0NBc0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTaGFyZWQgY29udGV4dCBmb3IgYWxsIHNlcnZpY2UgY2xhc3Nlcy5cbiAqIENvbnRhaW5zIGdSUEMgY2xpZW50cywgbWFuYWdlcnMsIGFuZCBjb25maWd1cmF0aW9uLlxuICovXG5cbmltcG9ydCAqIGFzIGdycGMgZnJvbSAnQGdycGMvZ3JwYy1qcyc7XG5pbXBvcnQgeyBHcWxkYkNvbmZpZyB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBTZXNzaW9uTWFuYWdlciB9IGZyb20gJy4uL3Nlc3Npb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25NYW5hZ2VyIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24nO1xuXG4vKipcbiAqIFNlcnZpY2UgY2xpZW50IHR5cGVzIGZvciBnUlBDIGNvbW11bmljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZUNsaWVudHMge1xuICBzZXNzaW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIHF1ZXJ5U2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGdyYXBoU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIHRyYW5zYWN0aW9uU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGRhdGFTZXJ2aWNlOiBncnBjLkNsaWVudDtcbiAgaGVhbHRoU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGFkbWluU2VydmljZTogZ3JwYy5DbGllbnQ7XG4gIGJ1bGtJbXBvcnRTZXJ2aWNlOiBncnBjLkNsaWVudDtcbn1cblxuLyoqXG4gKiBTZXJ2aWNlIGNvbnRleHQgaG9sZHMgc2hhcmVkIGRlcGVuZGVuY2llcyBmb3IgYWxsIHNlcnZpY2UgY2xhc3Nlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlcnZpY2VDb250ZXh0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IGNvbmZpZzogR3FsZGJDb25maWcsXG4gICAgcHVibGljIHJlYWRvbmx5IHNlc3Npb25zOiBTZXNzaW9uTWFuYWdlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgdHhNYW5hZ2VyOiBUcmFuc2FjdGlvbk1hbmFnZXIsXG4gICAgLyoqXG4gICAgICogTm90IHJlYWRvbmx5OiB0aGUgY2xpZW50IHJlYnVpbGRzIHRoZSB1bmRlcmx5aW5nIGdSUEMgY2hhbm5lbHNcbiAgICAgKiBvbiB0cmFuc3BvcnQtbGV2ZWwgZXJyb3JzIChVTkFWQUlMQUJMRSAvIGNvbm5lY3Rpb24gcmVzZXQpIGJ5XG4gICAgICogbXV0YXRpbmcgdGhpcyBpbiBwbGFjZS4gU2VlIEdxbGRiQ2xpZW50LmZvcmNlUmVjb25uZWN0QWxsLlxuICAgICAqL1xuICAgIHB1YmxpYyBjbGllbnRzOiBTZXJ2aWNlQ2xpZW50cyxcbiAgICAvKipcbiAgICAgKiBTdGFibGUgcGVyLWNsaWVudCBsb2dpY2FsIHNlc3Npb24gaWQgc2VudCBhcyB0aGVcbiAgICAgKiBgeC11bHRpcGEtc2Vzc2lvbi1pZGAgZ1JQQyBtZXRhZGF0YSBoZWFkZXIuIEVtcHR5IHN0cmluZyBvbWl0cyB0aGVcbiAgICAgKiBoZWFkZXIgKGxlZ2FjeSBiZWhhdmlvcikuIFNlZSBUUkFOU0FDVElPTlNfRFJJVkVSX0dVSURFLm1kIMKnMi4xLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBjbGllbnRTZXNzaW9uSWQ6IHN0cmluZyA9ICcnXG4gICkge31cblxuICAvKipcbiAgICogR2V0IHNlc3Npb24gbWV0YWRhdGEgZm9yIGF1dGhlbnRpY2F0ZWQgcmVxdWVzdHMuXG4gICAqL1xuICBnZXRTZXNzaW9uTWV0YWRhdGEoKTogZ3JwYy5NZXRhZGF0YSB7XG4gICAgY29uc3QgbWV0YWRhdGEgPSBuZXcgZ3JwYy5NZXRhZGF0YSgpO1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLnNlc3Npb25zLmdldFNlc3Npb24oKTtcbiAgICBtZXRhZGF0YS5hZGQoJ3Nlc3Npb24taWQnLCBzZXNzaW9uPy5pZD8udG9TdHJpbmcoKSB8fCAnMCcpO1xuICAgIGlmICh0aGlzLmNsaWVudFNlc3Npb25JZCkge1xuICAgICAgbWV0YWRhdGEuYWRkKCd4LXVsdGlwYS1zZXNzaW9uLWlkJywgdGhpcy5jbGllbnRTZXNzaW9uSWQpO1xuICAgIH1cbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHNlc3Npb24gYWN0aXZpdHkgdGltZXN0YW1wLlxuICAgKi9cbiAgdXBkYXRlQWN0aXZpdHkoKTogdm9pZCB7XG4gICAgdGhpcy5zZXNzaW9ucy51cGRhdGVBY3Rpdml0eSgpO1xuICB9XG59XG4iXX0=