UNPKG

@fails-components/jupyter-filesystem-extension

Version:

A collection of extensions, that redirect's filesystems access to fails and let fails puppeteer Jupyter lite.

64 lines (63 loc) 2.2 kB
import { IDefaultDrive, ISettingManager, IServerSettings } from '@jupyterlab/services'; import { FailsDrive } from './drive'; import { FailsSettings } from './settings'; import { IFailsDriveMessages } from './token'; export * from './token'; const failsDriveMessages = { id: '@fails-components/jupyter-applet-widget:drivemessages', requires: [], autoStart: true, provides: IFailsDriveMessages, description: 'IFailsDriveMessages interface to send/receive messages for the drive', activate: (_) => { let initialWaitRes; const initialWait = new Promise(resolve => (initialWaitRes = resolve)); let messageHandler; const driveMessages = { registerMessageHandler: (handler) => { messageHandler = handler; if (initialWaitRes) { initialWaitRes(undefined); } initialWaitRes = undefined; }, sendMessage: async (msg) => { await initialWait; return messageHandler(msg); } }; return driveMessages; } }; const failsDrivePlugin = { id: '@fails-components/jupyter-applet-widget:drive', requires: [IFailsDriveMessages], autoStart: true, provides: IDefaultDrive, description: 'Supplies a drive object for Jupyter lite to be fed from outisde the iframe', activate: (_, driveMessages) => { const drive = new FailsDrive({}); driveMessages.registerMessageHandler(msg => drive.onMessage(msg)); return drive; } }; const failsSettingsPlugin = { id: '@fails-components/jupyter-applet-widget:settings', requires: [], autoStart: true, provides: ISettingManager, optional: [IServerSettings], description: 'ISettingsManager from the IFrame embeeded Jupyter', activate: (_, serverSettings) => { const settings = new FailsSettings({ serverSettings: serverSettings !== null && serverSettings !== void 0 ? serverSettings : undefined }); return settings; } }; const plugins = [ failsDriveMessages, failsDrivePlugin, failsSettingsPlugin ]; export default plugins;