UNPKG

thebe-core

Version:

Typescript based core functionality for Thebe

109 lines 4.33 kB
"use strict"; 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