@jupyter/docprovider-extension 4.3.0 → 4.4.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,6 +5,7 @@
5
5
  import { Dialog, showDialog } from '@jupyterlab/apputils';
6
6
  import { Widget } from '@lumino/widgets';
7
7
  import { IStatusBar } from '@jupyterlab/statusbar';
8
+ import { IDocumentManager } from '@jupyterlab/docmanager';
8
9
  import { IEditorTracker, IEditorWidgetFactory } from '@jupyterlab/fileeditor';
9
10
  import { ILoggerRegistry } from '@jupyterlab/logconsole';
10
11
  import { INotebookTracker, INotebookWidgetFactory } from '@jupyterlab/notebook';
@@ -12,7 +13,7 @@ import { ISettingRegistry } from '@jupyterlab/settingregistry';
12
13
  import { ITranslator, nullTranslator } from '@jupyterlab/translation';
13
14
  import { YFile, YNotebook } from '@jupyter/ydoc';
14
15
  import { ICollaborativeContentProvider, IGlobalAwareness } from '@jupyter/collaborative-drive';
15
- import { TimelineWidget, RtcContentProvider } from '@jupyter/docprovider';
16
+ import { TimelineWidget, RtcContentProvider, IDocumentProviderFactory } from '@jupyter/docprovider';
16
17
  import { URLExt } from '@jupyterlab/coreutils';
17
18
  const DOCUMENT_TIMELINE_URL = 'api/collaboration/timeline';
18
19
  const TWO_SESSIONS_WARNING = 'The file %1 has been opened with two different views. ' +
@@ -22,9 +23,9 @@ export const rtcContentProvider = {
22
23
  id: '@jupyter/docprovider-extension:content-provider',
23
24
  description: 'The RTC content provider',
24
25
  provides: ICollaborativeContentProvider,
25
- requires: [ITranslator],
26
- optional: [IGlobalAwareness, ISettingRegistry],
27
- activate: async (app, translator, globalAwareness, settingRegistry) => {
26
+ requires: [ITranslator, IDocumentProviderFactory],
27
+ optional: [IGlobalAwareness, IDocumentManager],
28
+ activate: (app, translator, providerFactory, globalAwareness, documentManager) => {
28
29
  const trans = translator.load('jupyter_collaboration');
29
30
  const defaultDrive = app.serviceManager.contents
30
31
  .defaultDrive;
@@ -35,17 +36,15 @@ export const rtcContentProvider = {
35
36
  if (!registry) {
36
37
  throw Error('Cannot initialize content provider: no content provider registry.');
37
38
  }
38
- const docmanagerSettings = settingRegistry
39
- ? await settingRegistry.load('@jupyterlab/docmanager-extension:plugin')
40
- : null;
41
39
  const rtcContentProvider = new RtcContentProvider({
42
40
  currentDrive: defaultDrive,
43
41
  serverSettings: defaultDrive.serverSettings,
44
42
  user: app.serviceManager.user,
45
43
  trans,
46
44
  globalAwareness,
47
- docmanagerSettings,
48
- fileChanged: defaultDrive.fileChanged
45
+ documentManager,
46
+ fileChanged: defaultDrive.fileChanged,
47
+ providerFactory: providerFactory
49
48
  });
50
49
  registry.register('rtc', rtcContentProvider);
51
50
  return rtcContentProvider;
@@ -84,9 +83,8 @@ export const ynotebook = {
84
83
  .load('@jupyterlab/notebook-extension:tracker')
85
84
  .then(settings => {
86
85
  const updateSettings = (settings) => {
87
- var _a;
88
86
  const enableDocWideUndo = settings === null || settings === void 0 ? void 0 : settings.get('experimentalEnableDocumentWideUndoRedo').composite;
89
- disableDocumentWideUndoRedo = (_a = !enableDocWideUndo) !== null && _a !== void 0 ? _a : true;
87
+ disableDocumentWideUndoRedo = !enableDocWideUndo;
90
88
  };
91
89
  updateSettings(settings);
92
90
  settings.changed.connect((settings) => updateSettings(settings));
package/lib/index.js CHANGED
@@ -7,6 +7,7 @@
7
7
  import { rtcContentProvider, yfile, ynotebook, logger, statusBarTimeline } from './filebrowser';
8
8
  import { notebookCellExecutor } from './executor';
9
9
  import { forkManagerPlugin } from './forkManager';
10
+ import { documentProviderFactoryPlugin, awarenessProviderFactoryPlugin } from './yprovider';
10
11
  /**
11
12
  * Export the plugins as default.
12
13
  */
@@ -17,6 +18,8 @@ const plugins = [
17
18
  logger,
18
19
  notebookCellExecutor,
19
20
  statusBarTimeline,
20
- forkManagerPlugin
21
+ forkManagerPlugin,
22
+ documentProviderFactoryPlugin,
23
+ awarenessProviderFactoryPlugin
21
24
  ];
22
25
  export default plugins;
@@ -0,0 +1,10 @@
1
+ import { JupyterFrontEndPlugin } from '@jupyterlab/application';
2
+ import { IAwarenessProviderFactory, IDocumentProviderFactory } from '@jupyter/docprovider';
3
+ /**
4
+ * Plugin that provides the WebSocket document provider factory.
5
+ */
6
+ export declare const documentProviderFactoryPlugin: JupyterFrontEndPlugin<IDocumentProviderFactory>;
7
+ /**
8
+ * Plugin that provides the WebSocket awareness provider factory.
9
+ */
10
+ export declare const awarenessProviderFactoryPlugin: JupyterFrontEndPlugin<IAwarenessProviderFactory>;
@@ -0,0 +1,71 @@
1
+ /* -----------------------------------------------------------------------------
2
+ | Copyright (c) Jupyter Development Team.
3
+ | Distributed under the terms of the Modified BSD License.
4
+ |----------------------------------------------------------------------------*/
5
+ import { ITranslator } from '@jupyterlab/translation';
6
+ import { WebSocketProvider, WebSocketAwarenessProvider, IAwarenessProviderFactory, IDocumentProviderFactory } from '@jupyter/docprovider';
7
+ import { URLExt } from '@jupyterlab/coreutils';
8
+ /**
9
+ * The plugin ID for settings.
10
+ */
11
+ const PLUGIN_ID = '@jupyter/docprovider-extension:websocket-provider';
12
+ /**
13
+ * Document provider factory that creates WebSocket providers.
14
+ */
15
+ class WebSocketDocumentProviderFactory {
16
+ constructor(_trans) {
17
+ this._trans = _trans;
18
+ }
19
+ create(options) {
20
+ return new WebSocketProvider({
21
+ path: options.path,
22
+ contentType: options.contentType,
23
+ format: options.format,
24
+ model: options.model,
25
+ user: options.user,
26
+ translator: this._trans,
27
+ serverSettings: options.serverSettings
28
+ });
29
+ }
30
+ }
31
+ /**
32
+ * Awareness provider factory that creates WebSocket awareness providers.
33
+ */
34
+ class WebSocketAwarenessProviderFactory {
35
+ create(options) {
36
+ const url = URLExt.join(options.serverSettings.wsUrl, 'api/collaboration/room');
37
+ return new WebSocketAwarenessProvider({
38
+ url,
39
+ roomID: options.roomID,
40
+ awareness: options.awareness,
41
+ user: options.user
42
+ });
43
+ }
44
+ }
45
+ /**
46
+ * Plugin that provides the WebSocket document provider factory.
47
+ */
48
+ export const documentProviderFactoryPlugin = {
49
+ id: PLUGIN_ID + '-document-factory',
50
+ description: 'Provides a WebSocket document provider factory.',
51
+ requires: [ITranslator],
52
+ optional: [],
53
+ provides: IDocumentProviderFactory,
54
+ activate: async (app, translator) => {
55
+ const trans = translator.load('jupyter_collaboration');
56
+ return new WebSocketDocumentProviderFactory(trans);
57
+ }
58
+ };
59
+ /**
60
+ * Plugin that provides the WebSocket awareness provider factory.
61
+ */
62
+ export const awarenessProviderFactoryPlugin = {
63
+ id: PLUGIN_ID + '-awareness-factory',
64
+ description: 'Provides awareness provider factory.',
65
+ requires: [],
66
+ optional: [],
67
+ provides: IAwarenessProviderFactory,
68
+ activate: async (app) => {
69
+ return new WebSocketAwarenessProviderFactory();
70
+ }
71
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyter/docprovider-extension",
3
- "version": "4.3.0",
3
+ "version": "4.4.0-alpha.0",
4
4
  "description": "JupyterLab - Collaborative Shared Models",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -53,11 +53,12 @@
53
53
  "watch:labextension": "jupyter labextension watch ."
54
54
  },
55
55
  "dependencies": {
56
- "@jupyter/collaborative-drive": "^4.3.0",
57
- "@jupyter/docprovider": "^4.3.0",
56
+ "@jupyter/collaborative-drive": "^4.4.0-alpha.0",
57
+ "@jupyter/docprovider": "^4.4.0-alpha.0",
58
58
  "@jupyter/ydoc": "^2.1.3 || ^3.0.0",
59
59
  "@jupyterlab/application": "^4.5.0",
60
60
  "@jupyterlab/apputils": "^4.5.0",
61
+ "@jupyterlab/docmanager": "^4.5.0",
61
62
  "@jupyterlab/docregistry": "^4.5.0",
62
63
  "@jupyterlab/filebrowser": "^4.5.0",
63
64
  "@jupyterlab/fileeditor": "^4.5.0",
@@ -75,7 +76,7 @@
75
76
  "@types/react": "~18.3.1",
76
77
  "npm-run-all": "^4.1.5",
77
78
  "rimraf": "^4.1.2",
78
- "typescript": "~5.1.6"
79
+ "typescript": "~5.9.3"
79
80
  },
80
81
  "publishConfig": {
81
82
  "access": "public"