thebe-core
Version:
Typescript based core functionality for Thebe
109 lines • 4.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ThebeEvents = exports.ThebeEventType = exports.errorToMessage = exports.ErrorStatusEvent = exports.EventSubject = exports.CellStatusEvent = exports.NotebookStatusEvent = exports.KernelStatusEvent = exports.SessionStatusEvent = exports.ServerStatusEvent = void 0;
// value of some of these enums are not arbitrary
// but relate to events sent from the server via the
// event stream
var ServerStatusEvent;
(function (ServerStatusEvent) {
ServerStatusEvent["launching"] = "launching";
ServerStatusEvent["ready"] = "server-ready";
ServerStatusEvent["closed"] = "closed";
ServerStatusEvent["unknown"] = "unknown";
})(ServerStatusEvent = exports.ServerStatusEvent || (exports.ServerStatusEvent = {}));
var SessionStatusEvent;
(function (SessionStatusEvent) {
SessionStatusEvent["starting"] = "starting";
SessionStatusEvent["ready"] = "ready";
SessionStatusEvent["shutdown"] = "shutdown";
})(SessionStatusEvent = exports.SessionStatusEvent || (exports.SessionStatusEvent = {}));
var KernelStatusEvent;
(function (KernelStatusEvent) {
KernelStatusEvent["starting"] = "starting";
KernelStatusEvent["ready"] = "ready";
KernelStatusEvent["shutdown"] = "shutdown";
})(KernelStatusEvent = exports.KernelStatusEvent || (exports.KernelStatusEvent = {}));
var NotebookStatusEvent;
(function (NotebookStatusEvent) {
NotebookStatusEvent["attached"] = "attached";
NotebookStatusEvent["detached"] = "detached";
NotebookStatusEvent["executing"] = "executing";
NotebookStatusEvent["idle"] = "idle";
})(NotebookStatusEvent = exports.NotebookStatusEvent || (exports.NotebookStatusEvent = {}));
var CellStatusEvent;
(function (CellStatusEvent) {
CellStatusEvent["attached"] = "attached";
CellStatusEvent["detached"] = "detached";
CellStatusEvent["executing"] = "executing";
CellStatusEvent["idle"] = "idle";
})(CellStatusEvent = exports.CellStatusEvent || (exports.CellStatusEvent = {}));
var EventSubject;
(function (EventSubject) {
EventSubject["server"] = "server";
EventSubject["session"] = "session";
EventSubject["kernel"] = "kernel";
EventSubject["notebook"] = "notebook";
EventSubject["cell"] = "cell";
})(EventSubject = exports.EventSubject || (exports.EventSubject = {}));
// TODO improve typing around status's
var ErrorStatusEvent;
(function (ErrorStatusEvent) {
ErrorStatusEvent["warning"] = "warning";
ErrorStatusEvent["executeError"] = "execute-error";
ErrorStatusEvent["error"] = "error";
ErrorStatusEvent["server"] = "server-error";
ErrorStatusEvent["session"] = "session-error";
})(ErrorStatusEvent = exports.ErrorStatusEvent || (exports.ErrorStatusEvent = {}));
function errorToMessage(json) {
var _a;
if (!json.traceback) {
return json.evalue;
}
else if (Array.isArray(json.traceback)) {
return `${json.evalue}\n${((_a = json.traceback) !== null && _a !== void 0 ? _a : []).join('')}`;
}
else {
return `${json.evalue}\n${JSON.stringify(json.traceback)}`;
}
}
exports.errorToMessage = errorToMessage;
var ThebeEventType;
(function (ThebeEventType) {
ThebeEventType["status"] = "status";
ThebeEventType["error"] = "error";
})(ThebeEventType = exports.ThebeEventType || (exports.ThebeEventType = {}));
class ThebeEvents {
constructor() {
this.listeners = {};
}
_ensureMap(event) {
if (!(event in this.listeners))
this.listeners[event] = new Map();
}
trigger(event, evt) {
if (!(event in this.listeners))
return;
this.listeners[event].forEach(({ unbind }, cb) => {
cb(event, evt);
if (unbind)
this.listeners[event].delete(cb);
});
}
on(event, cb) {
this._ensureMap(event);
this.listeners[event].set(cb, { unbind: false });
return () => this.off(event, cb);
}
one(event, cb) {
this._ensureMap(event);
this.listeners[event].set(cb, { unbind: true });
return () => this.off(event, cb);
}
off(event, cb) {
if (!(event in this.listeners))
return;
this.listeners[event].delete(cb);
}
}
exports.ThebeEvents = ThebeEvents;
//# sourceMappingURL=events.js.map