thebe-core
Version:
Typescript based core functionality for Thebe
104 lines • 3.69 kB
JavaScript
// value of some of these enums are not arbitrary
// but relate to events sent from the server via the
// event stream
export var ServerStatusEvent;
(function (ServerStatusEvent) {
ServerStatusEvent["launching"] = "launching";
ServerStatusEvent["ready"] = "server-ready";
ServerStatusEvent["closed"] = "closed";
ServerStatusEvent["unknown"] = "unknown";
})(ServerStatusEvent || (ServerStatusEvent = {}));
export var SessionStatusEvent;
(function (SessionStatusEvent) {
SessionStatusEvent["starting"] = "starting";
SessionStatusEvent["ready"] = "ready";
SessionStatusEvent["shutdown"] = "shutdown";
})(SessionStatusEvent || (SessionStatusEvent = {}));
export var KernelStatusEvent;
(function (KernelStatusEvent) {
KernelStatusEvent["starting"] = "starting";
KernelStatusEvent["ready"] = "ready";
KernelStatusEvent["shutdown"] = "shutdown";
})(KernelStatusEvent || (KernelStatusEvent = {}));
export var NotebookStatusEvent;
(function (NotebookStatusEvent) {
NotebookStatusEvent["attached"] = "attached";
NotebookStatusEvent["detached"] = "detached";
NotebookStatusEvent["executing"] = "executing";
NotebookStatusEvent["idle"] = "idle";
})(NotebookStatusEvent || (NotebookStatusEvent = {}));
export var CellStatusEvent;
(function (CellStatusEvent) {
CellStatusEvent["attached"] = "attached";
CellStatusEvent["detached"] = "detached";
CellStatusEvent["executing"] = "executing";
CellStatusEvent["idle"] = "idle";
})(CellStatusEvent || (CellStatusEvent = {}));
export var EventSubject;
(function (EventSubject) {
EventSubject["server"] = "server";
EventSubject["session"] = "session";
EventSubject["kernel"] = "kernel";
EventSubject["notebook"] = "notebook";
EventSubject["cell"] = "cell";
})(EventSubject || (EventSubject = {}));
// TODO improve typing around status's
export var ErrorStatusEvent;
(function (ErrorStatusEvent) {
ErrorStatusEvent["warning"] = "warning";
ErrorStatusEvent["executeError"] = "execute-error";
ErrorStatusEvent["error"] = "error";
ErrorStatusEvent["server"] = "server-error";
ErrorStatusEvent["session"] = "session-error";
})(ErrorStatusEvent || (ErrorStatusEvent = {}));
export 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)}`;
}
}
export var ThebeEventType;
(function (ThebeEventType) {
ThebeEventType["status"] = "status";
ThebeEventType["error"] = "error";
})(ThebeEventType || (ThebeEventType = {}));
export 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);
}
}
//# sourceMappingURL=events.js.map