@fails-components/jupyter-filesystem-extension
Version:
A collection of extensions, that redirect's filesystems access to fails and let fails puppeteer Jupyter lite.
61 lines (60 loc) • 1.95 kB
JavaScript
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,
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,
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],
activate: (_, serverSettings) => {
const settings = new FailsSettings({
serverSettings: serverSettings !== null && serverSettings !== void 0 ? serverSettings : undefined
});
return settings;
}
};
const plugins = [
failsDriveMessages,
failsDrivePlugin,
failsSettingsPlugin
];
export default plugins;