@jupyterlab/services
Version:
Client APIs for the Jupyter services REST APIs
108 lines • 4.33 kB
JavaScript
"use strict";
// Copyright (c) Jupyter Development Team.
// Distributed under the terms of the Modified BSD License.
Object.defineProperty(exports, "__esModule", { value: true });
exports.ServiceManager = void 0;
const signaling_1 = require("@lumino/signaling");
const builder_1 = require("./builder");
const contents_1 = require("./contents");
const event_1 = require("./event");
const kernel_1 = require("./kernel");
const kernelspec_1 = require("./kernelspec");
const nbconvert_1 = require("./nbconvert");
const serverconnection_1 = require("./serverconnection");
const session_1 = require("./session");
const setting_1 = require("./setting");
const terminal_1 = require("./terminal");
const user_1 = require("./user");
const workspace_1 = require("./workspace");
/**
* A Jupyter services manager.
*/
class ServiceManager {
/**
* Construct a new services provider.
*/
constructor(options = {}) {
var _a, _b;
this._isDisposed = false;
this._connectionFailure = new signaling_1.Signal(this);
this._isReady = false;
const defaultDrive = options.defaultDrive;
const serverSettings = (_a = options.serverSettings) !== null && _a !== void 0 ? _a : serverconnection_1.ServerConnection.makeSettings();
const standby = (_b = options.standby) !== null && _b !== void 0 ? _b : 'when-hidden';
const normalized = { defaultDrive, serverSettings, standby };
this.serverSettings = serverSettings;
this.contents = options.contents || new contents_1.ContentsManager(normalized);
this.events = options.events || new event_1.EventManager(normalized);
this.kernels = options.kernels || new kernel_1.KernelManager(normalized);
this.sessions =
options.sessions ||
new session_1.SessionManager({
...normalized,
kernelManager: this.kernels
});
this.settings = options.settings || new setting_1.SettingManager(normalized);
this.terminals = options.terminals || new terminal_1.TerminalManager(normalized);
this.builder = options.builder || new builder_1.BuildManager(normalized);
this.workspaces = options.workspaces || new workspace_1.WorkspaceManager(normalized);
this.nbconvert = options.nbconvert || new nbconvert_1.NbConvertManager(normalized);
this.kernelspecs = options.kernelspecs || new kernelspec_1.KernelSpecManager(normalized);
this.user = options.user || new user_1.UserManager(normalized);
// Proxy all connection failures from the individual service managers.
this.kernelspecs.connectionFailure.connect(this._onConnectionFailure, this);
this.sessions.connectionFailure.connect(this._onConnectionFailure, this);
this.terminals.connectionFailure.connect(this._onConnectionFailure, this);
// Define promises that need to be resolved before service manager is ready.
const readyList = [this.sessions.ready, this.kernelspecs.ready];
if (this.terminals.isAvailable()) {
readyList.push(this.terminals.ready);
}
this._readyPromise = Promise.all(readyList).then(() => {
this._isReady = true;
});
}
/**
* A signal emitted when there is a connection failure with the kernel.
*/
get connectionFailure() {
return this._connectionFailure;
}
/**
* Test whether the service manager is disposed.
*/
get isDisposed() {
return this._isDisposed;
}
/**
* Dispose of the resources used by the manager.
*/
dispose() {
if (this.isDisposed) {
return;
}
this._isDisposed = true;
signaling_1.Signal.clearData(this);
this.contents.dispose();
this.events.dispose();
this.sessions.dispose();
this.terminals.dispose();
}
/**
* Test whether the manager is ready.
*/
get isReady() {
return this._isReady;
}
/**
* A promise that fulfills when the manager is ready.
*/
get ready() {
return this._readyPromise;
}
_onConnectionFailure(sender, err) {
this._connectionFailure.emit(err);
}
}
exports.ServiceManager = ServiceManager;
//# sourceMappingURL=manager.js.map