From d59519ed687c51c7c3e3bd049ac6e691cf96b35e Mon Sep 17 00:00:00 2001 From: Duc Trung Le Date: Fri, 13 Dec 2024 19:08:06 +0100 Subject: [PATCH] Add jupyter_suggestions_rtc package (#12) --- .github/workflows/build.yml | 10 +- .gitignore | 3 + lerna.json | 8 +- package.json | 5 +- packages/base/package.json | 2 +- packages/base/src/baseSuggestionsManager.ts | 101 + packages/base/src/index.ts | 1 + .../localSuggestionsManager.ts | 165 +- .../base/src/suggestionsPanel/cmExtension.ts | 42 +- packages/base/src/suggestionsPanel/model.ts | 81 +- packages/base/src/suggestionsPanel/panel.ts | 3 +- .../suggestionWidget/cellWidget.ts | 152 +- packages/base/src/suggestionsPanel/widget.ts | 47 +- packages/base/src/tokens.ts | 10 +- packages/base/src/types.ts | 60 +- pyproject.toml | 1 + .../scripts/bump-version.py | 4 +- .../jupyter_suggestions_core/__init__.py | 2 +- python/jupyter_suggestions_core/package.json | 6 +- .../jupyter_suggestions_core/pyproject.toml | 4 +- .../schema/commands.json | 4 +- .../jupyter_suggestions_core/src/plugins.ts | 12 +- python/jupyter_suggestions_rtc/LICENSE | 29 + python/jupyter_suggestions_rtc/README.md | 1 + python/jupyter_suggestions_rtc/install.json | 5 + .../jupyter_suggestions_rtc/__init__.py | 16 + python/jupyter_suggestions_rtc/package.json | 96 + python/jupyter_suggestions_rtc/pyproject.toml | 80 + .../scripts/bump-version.py | 13 + python/jupyter_suggestions_rtc/setup.py | 1 + python/jupyter_suggestions_rtc/src/index.ts | 3 + python/jupyter_suggestions_rtc/src/manager.ts | 333 ++++ python/jupyter_suggestions_rtc/src/plugins.ts | 50 + python/jupyter_suggestions_rtc/style/base.css | 5 + .../jupyter_suggestions_rtc/style/index.css | 1 + python/jupyter_suggestions_rtc/style/index.js | 1 + python/jupyter_suggestions_rtc/tsconfig.json | 8 + scripts/build_packages.py | 2 +- scripts/dev-install.py | 5 +- tsconfigbase.json | 2 +- yarn.lock | 1752 +++++++++++------ 41 files changed, 2364 insertions(+), 762 deletions(-) create mode 100644 packages/base/src/baseSuggestionsManager.ts create mode 100644 python/jupyter_suggestions_rtc/LICENSE create mode 100644 python/jupyter_suggestions_rtc/README.md create mode 100644 python/jupyter_suggestions_rtc/install.json create mode 100644 python/jupyter_suggestions_rtc/jupyter_suggestions_rtc/__init__.py create mode 100644 python/jupyter_suggestions_rtc/package.json create mode 100644 python/jupyter_suggestions_rtc/pyproject.toml create mode 100644 python/jupyter_suggestions_rtc/scripts/bump-version.py create mode 100644 python/jupyter_suggestions_rtc/setup.py create mode 100644 python/jupyter_suggestions_rtc/src/index.ts create mode 100644 python/jupyter_suggestions_rtc/src/manager.ts create mode 100644 python/jupyter_suggestions_rtc/src/plugins.ts create mode 100644 python/jupyter_suggestions_rtc/style/base.css create mode 100644 python/jupyter_suggestions_rtc/style/index.css create mode 100644 python/jupyter_suggestions_rtc/style/index.js create mode 100644 python/jupyter_suggestions_rtc/tsconfig.json diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4739a51..1ba7f1b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,10 +33,14 @@ jobs: - name: Build the extension run: | set -eux + export LANG=en_US.UTF-8 + export LANGUAGE=en_US:en + export LC_ALL=en_US.UTF-8 + jlpm dev jupyter labextension list - jupyter labextension list 2>&1 | grep -ie "jupyter-suggestions.*OK" + jupyter labextension list 2>&1 | grep -ie "suggestions.*OK" python -m jupyterlab.browser_check - name: Package the extension @@ -44,7 +48,7 @@ jobs: set -eux pip install hatch - yarn build:packages + jlpm build:packages - name: Upload extension packages uses: actions/upload-artifact@v4 @@ -79,7 +83,7 @@ jobs: jupyter labextension list - jupyter labextension list 2>&1 | grep -ie "jupyter-suggestions.*OK" + jupyter labextension list 2>&1 | grep -ie "suggestions.*OK" python -m jupyterlab.browser_check --no-browser-test check_links: diff --git a/.gitignore b/.gitignore index 342bdf9..bd62189 100644 --- a/.gitignore +++ b/.gitignore @@ -119,3 +119,6 @@ dmypy.json # Yarn cache .yarn/ + +python/jupyter_suggestions_rtc/jupyter_suggestions_rtc/labextension +python/jupyter_suggestions_rtc/jupyter_suggestions_rtc/_version.py diff --git a/lerna.json b/lerna.json index 4a456ac..05f187a 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,10 @@ { - "npmClient": "yarn", + "npmClient": "jlpm", "version": "independent", "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "packages": ["packages/*", "python/jupyter_suggestions_core"] + "packages": [ + "packages/*", + "python/jupyter_suggestions_core", + "python/jupyter_suggestions_rtc" + ] } diff --git a/package.json b/package.json index 48262f6..91911cc 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@jupyter/jupyter-suggestions-root", + "name": "@jupyter/suggestions-root", "version": "0.1.0", "private": true, "description": "A JupyterLab extension for suggesting changes.", @@ -25,7 +25,8 @@ }, "workspaces": [ "packages/*", - "python/jupyter_suggestions_core" + "python/jupyter_suggestions_core", + "python/jupyter_suggestions_rtc" ], "scripts": { "build": "lerna run build", diff --git a/packages/base/package.json b/packages/base/package.json index ecb3388..24062fc 100644 --- a/packages/base/package.json +++ b/packages/base/package.json @@ -1,5 +1,5 @@ { - "name": "@jupyter/jupyter-suggestions-base", + "name": "@jupyter/suggestions-base", "version": "0.1.0", "description": "Base components of jupyter-suggestions extension", "keywords": [ diff --git a/packages/base/src/baseSuggestionsManager.ts b/packages/base/src/baseSuggestionsManager.ts new file mode 100644 index 0000000..9720e45 --- /dev/null +++ b/packages/base/src/baseSuggestionsManager.ts @@ -0,0 +1,101 @@ +import { Cell, ICellModel } from '@jupyterlab/cells'; +import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; +import { ISignal, Signal } from '@lumino/signaling'; + +import { + IAllSuggestionData, + ISuggestionChange, + ISuggestionData, + ISuggestionsManager +} from './types'; + +export abstract class BaseSuggestionsManager implements ISuggestionsManager { + constructor(options: BaseSuggestionsManager.IOptions) { + this._tracker = options.tracker; + this._tracker.widgetAdded.connect(this._notebookAdded, this); + } + + name = 'Base Suggestion Manager'; + get isDisposed(): boolean { + return this._isDisposed; + } + + get suggestionChanged(): ISignal { + return this._suggestionChanged; + } + dispose(): void { + if (this._isDisposed) { + return; + } + this._tracker.widgetAdded.disconnect(this._notebookAdded); + Signal.clearData(this); + this._isDisposed = true; + } + + abstract sourceLiveUpdate: boolean; + + abstract getAllSuggestions( + notebook: NotebookPanel + ): Promise; + + async getSuggestion(options: { + notebookPath: string; + cellId: string; + suggestionId: string; + }): Promise { + const { notebookPath, cellId, suggestionId } = options; + if (this._suggestionsMap.has(notebookPath)) { + const nbSuggestions = this._suggestionsMap.get(notebookPath); + if (nbSuggestions && nbSuggestions.has(cellId)) { + return nbSuggestions.get(cellId)![suggestionId]; + } + } + } + abstract addSuggestion(options: { + notebook: NotebookPanel; + cell: Cell; + }): Promise; + + abstract acceptSuggestion(options: { + notebook: NotebookPanel; + cellId: string; + suggestionId: string; + }): Promise; + + abstract deleteSuggestion(options: { + notebook: NotebookPanel; + cellId: string; + suggestionId: string; + }): Promise; + + abstract updateSuggestion(options: { + notebook: NotebookPanel; + cellId: string; + suggestionId: string; + newSource: string; + }): Promise; + + protected _suggestionsMap = new Map(); + + protected _notebookAdded(tracker: INotebookTracker, panel: NotebookPanel) { + panel.disposed.connect(p => { + const localPath = p.context.localPath; + if (this._suggestionsMap.has(localPath)) { + this._suggestionsMap.delete(localPath); + } + }); + } + + protected _suggestionChanged = new Signal< + ISuggestionsManager, + ISuggestionChange + >(this); + protected _isDisposed = false; + protected _tracker: INotebookTracker; +} + +export namespace BaseSuggestionsManager { + export interface IOptions { + tracker: INotebookTracker; + } +} diff --git a/packages/base/src/index.ts b/packages/base/src/index.ts index a744d6e..06030c5 100644 --- a/packages/base/src/index.ts +++ b/packages/base/src/index.ts @@ -3,4 +3,5 @@ export * from './suggestionsPanel'; export * from './icons'; export * from './tokens'; export * from './localSuggestionsManager'; +export * from './baseSuggestionsManager'; export * from './registry'; diff --git a/packages/base/src/localSuggestionsManager/localSuggestionsManager.ts b/packages/base/src/localSuggestionsManager/localSuggestionsManager.ts index 75fb7f5..dffaf23 100644 --- a/packages/base/src/localSuggestionsManager/localSuggestionsManager.ts +++ b/packages/base/src/localSuggestionsManager/localSuggestionsManager.ts @@ -1,49 +1,72 @@ -import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; import { - IAllSuggestions, + Cell, + CellModel, + CodeCellModel, + ICellModel, + MarkdownCellModel, + RawCellModel +} from '@jupyterlab/cells'; +import { ICell } from '@jupyterlab/nbformat'; +import { NotebookPanel } from '@jupyterlab/notebook'; +import { UUID } from '@lumino/coreutils'; + +import { BaseSuggestionsManager } from '../baseSuggestionsManager'; +import { + IAllSuggestionData, IDict, - ISuggestionChange, ISuggestionData, ISuggestionsManager } from '../types'; -import { ISignal, Signal } from '@lumino/signaling'; -import { Cell, ICellModel } from '@jupyterlab/cells'; -import { UUID } from '@lumino/coreutils'; + +export interface ISerializedSuggessionData { + originalCellId: string; + newSource: string; +} const METADATA_KEY = 'jupyter_suggestion'; -export class LocalSuggestionsManager implements ISuggestionsManager { - constructor(options: LocalSuggestionsManager.IOptions) { +export class LocalSuggestionsManager + extends BaseSuggestionsManager + implements ISuggestionsManager +{ + constructor(options: BaseSuggestionsManager.IOptions) { + super(options); this._tracker = options.tracker; this._tracker.widgetAdded.connect(this._notebookAdded, this); } - get isDisposed(): boolean { - return this._isDisposed; - } + sourceLiveUpdate = false; - get suggestionChanged(): ISignal { - return this._suggestionChanged; - } - dispose(): void { - if (this._isDisposed) { - return; - } - this._tracker.widgetAdded.disconnect(this._notebookAdded); - Signal.clearData(this); - this._isDisposed = true; - } + name = 'Local Suggestion Manager'; async getAllSuggestions( notebook: NotebookPanel - ): Promise { + ): Promise { const path = notebook.context.localPath; if (this._suggestionsMap.has(path)) { return this._suggestionsMap.get(path); } else { - const savedSuggestions = notebook.context.model.getMetadata(METADATA_KEY); + const savedSuggestions: IDict> = + notebook.context.model.getMetadata(METADATA_KEY); if (savedSuggestions) { - const currentSuggestion = new Map>( - Object.entries(savedSuggestions) + const currentSuggestion = new Map>(); + const cellList = notebook.content.model?.cells ?? []; + const cellMap: IDict = {}; + for (const element of cellList) { + cellMap[element.id] = element; + } + Object.entries(savedSuggestions).forEach( + ([cellID, serializedCellSuggestions]) => { + const data: IDict = {}; + Object.entries(serializedCellSuggestions).forEach( + ([id, serializedData]) => { + data[id] = this._deserializedSuggestion( + serializedData, + cellMap + ); + } + ); + currentSuggestion.set(cellID, data); + } ); this._suggestionsMap.set(path, currentSuggestion); return currentSuggestion; @@ -80,17 +103,16 @@ export class LocalSuggestionsManager implements ISuggestionsManager { } const cellSuggesions = currentSuggestions.get(cellId)!; const suggestionId = UUID.uuid4(); - const cellModel = cell.model.toJSON(); const suggestionContent: ISuggestionData = { - content: cellModel, - newSource: cellModel.source as string + originalCellId: cellId, + cellModel: this._cloneCellModel(cell.model) }; cellSuggesions[suggestionId] = suggestionContent; await this._saveSuggestionToMetadata({ notebook, cellId, suggestionId, - content: suggestionContent + suggestionContent }); this._suggestionChanged.emit({ notebookPath: path, @@ -115,7 +137,7 @@ export class LocalSuggestionsManager implements ISuggestionsManager { suggestionId }); if (currentSuggestion && notebook.content.model?.cells) { - const { newSource } = currentSuggestion; + const newSource = currentSuggestion.cellModel.sharedModel.getSource(); for (const element of notebook.content.model.cells) { if (element.id === cellId) { element.sharedModel.setSource(newSource); @@ -168,8 +190,6 @@ export class LocalSuggestionsManager implements ISuggestionsManager { nbSuggestions.has(cellId) && nbSuggestions.get(cellId)![suggestionId] ) { - const currentSuggestion = nbSuggestions.get(cellId)![suggestionId]; - currentSuggestion.newSource = newSource; await this._updateSuggestionInMetadata({ notebook, cellId, @@ -189,17 +209,20 @@ export class LocalSuggestionsManager implements ISuggestionsManager { notebook: NotebookPanel; cellId: string; suggestionId: string; - content: IDict; + suggestionContent: ISuggestionData; }) { - const { notebook, cellId, suggestionId, content } = options; - const currentSuggestions: IDict = + const { notebook, cellId, suggestionId, suggestionContent } = options; + const currentSuggestions: IDict> = notebook.context.model.getMetadata(METADATA_KEY) ?? {}; - + const serializedData: ISerializedSuggessionData = { + originalCellId: suggestionContent.originalCellId, + newSource: suggestionContent.cellModel.sharedModel.getSource() + }; const newData = { ...currentSuggestions, [cellId]: { ...(currentSuggestions[cellId] ?? {}), - [suggestionId]: content + [suggestionId]: serializedData } }; notebook.context.model.setMetadata(METADATA_KEY, newData); @@ -220,6 +243,9 @@ export class LocalSuggestionsManager implements ISuggestionsManager { if (currentSuggestions[cellId][suggestionId]) { delete currentSuggestions[cellId][suggestionId]; } + if (Object.keys(currentSuggestions[cellId]).length === 0) { + delete currentSuggestions[cellId]; + } notebook.context.model.setMetadata(METADATA_KEY, currentSuggestions); await notebook.context.save(); } @@ -231,8 +257,9 @@ export class LocalSuggestionsManager implements ISuggestionsManager { newSource: string; }) { const { notebook, cellId, suggestionId, newSource } = options; - const currentSuggestions: IDict> | undefined = - notebook.context.model.getMetadata(METADATA_KEY); + const currentSuggestions: + | IDict> + | undefined = notebook.context.model.getMetadata(METADATA_KEY); if ( !currentSuggestions || !currentSuggestions[cellId] || @@ -247,25 +274,49 @@ export class LocalSuggestionsManager implements ISuggestionsManager { await notebook.context.save(); } - private _notebookAdded(tracker: INotebookTracker, panel: NotebookPanel) { - panel.disposed.connect(p => { - const localPath = p.context.localPath; - if (this._suggestionsMap.has(localPath)) { - this._suggestionsMap.delete(localPath); + private _cloneCellModel( + cellModel: ICellModel, + newSource?: string + ): ICellModel { + let copiedCellModel: CellModel | undefined; + const mimeType = cellModel.mimeType; + switch (cellModel.type) { + case 'code': { + copiedCellModel = new CodeCellModel(); + break; } - }); + case 'markdown': { + copiedCellModel = new MarkdownCellModel(); + break; + } + case 'raw': { + copiedCellModel = new RawCellModel(); + break; + } + default: + break; + } + + if (!copiedCellModel) { + throw new Error('Invalid cell type'); + } + copiedCellModel.mimeType = mimeType; + copiedCellModel.sharedModel.setSource( + newSource ?? cellModel.sharedModel.getSource() + ); + return copiedCellModel; } - private _suggestionChanged = new Signal< - ISuggestionsManager, - ISuggestionChange - >(this); - private _isDisposed = false; - private _tracker: INotebookTracker; - private _suggestionsMap = new Map(); -} -export namespace LocalSuggestionsManager { - export interface IOptions { - tracker: INotebookTracker; + private _deserializedSuggestion( + serializedData: ISerializedSuggessionData, + cellMap: IDict + ): ISuggestionData { + const { originalCellId, newSource } = serializedData; + const originalCellModel = cellMap[serializedData.originalCellId]; + const newCellModel = this._cloneCellModel(originalCellModel, newSource); + return { + originalCellId, + cellModel: newCellModel + }; } } diff --git a/packages/base/src/suggestionsPanel/cmExtension.ts b/packages/base/src/suggestionsPanel/cmExtension.ts index 0b22b5d..c230a38 100644 --- a/packages/base/src/suggestionsPanel/cmExtension.ts +++ b/packages/base/src/suggestionsPanel/cmExtension.ts @@ -6,12 +6,28 @@ import { WidgetType, EditorView } from '@codemirror/view'; +import { StateEffect } from '@codemirror/state'; +import { ICellModel } from '@jupyterlab/cells'; import * as Diff from 'diff'; +import { Debouncer } from '@lumino/polling'; class HighlightDiff { - constructor(view: EditorView, options: { originalSource: string }) { + constructor( + view: EditorView, + options: { originalCell: ICellModel; liveUpdate: boolean } + ) { this._view = view; this.decorations = Decoration.none; - this._originalText = options.originalSource; + this._originalCell = options.originalCell; + this._debouncedUpdate = new Debouncer( + this.originalCellUpdated.bind(this), + 500 + ); + if (options.liveUpdate) { + this._originalCell.sharedModel.changed.connect( + this._debouncedUpdate.invoke, + this._debouncedUpdate + ); + } this.updateDecorations(); } @@ -20,11 +36,17 @@ class HighlightDiff { this.updateDecorations(); } } - + originalCellUpdated() { + this.updateDecorations(); + this._view.dispatch({ + effects: StateEffect.appendConfig.of([]) + }); + } updateDecorations() { const currentText = this._view.state.doc.toString(); // Compare words with spaces - const diffs = Diff.diffWordsWithSpace(this._originalText, currentText); + const originalText = this._originalCell.sharedModel.getSource(); + const diffs = Diff.diffWordsWithSpace(originalText, currentText); const decorations = []; let pos = 0; @@ -57,12 +79,15 @@ class HighlightDiff { } destroy() { - // TODO + this._originalCell.sharedModel.changed.disconnect( + this._debouncedUpdate.invoke + ); } decorations: DecorationSet; - _originalText: string; + _originalCell: ICellModel; _view: EditorView; + _debouncedUpdate: Debouncer; } /** * Widget to show removed text @@ -98,7 +123,10 @@ class RemovedTextWidget extends WidgetType { private _text: string; } -export function diffTextExtensionFactory(options: { originalSource: string }) { +export function diffTextExtensionFactory(options: { + originalCell: ICellModel; + liveUpdate: boolean; +}) { return ViewPlugin.fromClass( class extends HighlightDiff { constructor(view: any) { diff --git a/packages/base/src/suggestionsPanel/model.ts b/packages/base/src/suggestionsPanel/model.ts index 0c3cfec..b93594b 100644 --- a/packages/base/src/suggestionsPanel/model.ts +++ b/packages/base/src/suggestionsPanel/model.ts @@ -1,7 +1,11 @@ import { Notebook, NotebookPanel } from '@jupyterlab/notebook'; import { - IAllSuggestions, + IAllSuggestionViewData, + IAllSuggestionData, + IDict, ISuggestionChange, + ISuggestionViewData, + ISuggestionData, ISuggestionsManager, ISuggestionsModel } from '../types'; @@ -12,8 +16,12 @@ export class SuggestionsModel implements ISuggestionsModel { this.switchNotebook(options.panel); this.switchManager(options.suggestionsManager); } + + get sourceLiveUpdate(): boolean { + return Boolean(this._suggestionsManager?.sourceLiveUpdate); + } get filePath(): string { - return this._filePath ?? '-'; + return this._filePath ?? ''; } get notebookSwitched(): ISignal { return this._notebookSwitched; @@ -33,7 +41,7 @@ export class SuggestionsModel implements ISuggestionsModel { get isDisposed(): boolean { return this._isDisposed; } - get allSuggestions(): IAllSuggestions | undefined { + get allSuggestions(): IAllSuggestionViewData | undefined { return this._allSuggestions; } dispose(): void { @@ -47,6 +55,9 @@ export class SuggestionsModel implements ISuggestionsModel { Signal.clearData(this); } + getSuggestionManagerName(): string { + return this._suggestionsManager?.name ?? ''; + } async addSuggestion(): Promise { const activeCell = this._notebookPanel?.content.activeCell; if (activeCell && this._notebookPanel && this._suggestionsManager) { @@ -103,10 +114,11 @@ export class SuggestionsModel implements ISuggestionsModel { if (!this._filePath || !this._suggestionsManager) { return; } - return await this._suggestionsManager.getSuggestion({ + const suggestionFromManager = await this._suggestionsManager.getSuggestion({ notebookPath: this._filePath, ...options }); + return this._convertSuggestionFromManager(suggestionFromManager); } getCellIndex(cellId?: string): number { if (!cellId) { @@ -128,15 +140,20 @@ export class SuggestionsModel implements ISuggestionsModel { async switchNotebook(panel: NotebookPanel | null): Promise { if (panel) { await panel.context.ready; - this._allSuggestions = + this._disconnectPanelSignal(); + this._notebookPanel = panel; + this._connectPanelSignal(); + this._filePath = this._notebookPanel?.context.localPath; + + const allSuggestionsFromManager = await this._suggestionsManager?.getAllSuggestions(panel); + this._allSuggestions = this._convertAllSuggestionsFromManager( + allSuggestionsFromManager + ); } else { this._allSuggestions = undefined; } - this._disconnectPanelSignal(); - this._notebookPanel = panel; - this._connectPanelSignal(); - this._filePath = this._notebookPanel?.context.localPath; + this._notebookSwitched.emit(); } async switchManager(manager: ISuggestionsManager | undefined): Promise { @@ -153,11 +170,51 @@ export class SuggestionsModel implements ISuggestionsModel { this ); if (this._notebookPanel) { - this._allSuggestions = await this._suggestionsManager?.getAllSuggestions( - this._notebookPanel + const allSuggestionsFromManager = + await this._suggestionsManager?.getAllSuggestions(this._notebookPanel); + this._allSuggestions = this._convertAllSuggestionsFromManager( + allSuggestionsFromManager ); + this._notebookSwitched.emit(); + } + } + + private _convertSuggestionFromManager( + source?: ISuggestionData + ): ISuggestionViewData | undefined { + if (!source || !this._notebookPanel) { + return; + } + const { originalCellId } = source; + const cells = this._notebookPanel.context.model.cells; + for (const it of cells) { + if (it.id === originalCellId) { + return { cellModel: source.cellModel, originalCellModel: it }; + } } } + + private _convertAllSuggestionsFromManager( + all?: IAllSuggestionData | undefined + ): IAllSuggestionViewData | undefined { + if (!all || !this._notebookPanel) { + return; + } + const newMap: IAllSuggestionViewData = new Map(); + all.forEach((suggestionDict, key) => { + const newDict: IDict = {}; + for (const suggestionKey in suggestionDict) { + const convertedData = this._convertSuggestionFromManager( + suggestionDict[suggestionKey] + ); + if (convertedData) { + newDict[suggestionKey] = convertedData; + } + } + newMap.set(key, newDict); + }); + return newMap; + } private _connectPanelSignal() { if (!this._notebookPanel) { return; @@ -196,7 +253,7 @@ export class SuggestionsModel implements ISuggestionsModel { private _filePath?: string; private _notebookPanel: NotebookPanel | null = null; private _notebookSwitched: Signal = new Signal(this); - private _allSuggestions?: IAllSuggestions; + private _allSuggestions?: IAllSuggestionViewData; private _suggestionsManager?: ISuggestionsManager; private _suggestionChanged = new Signal< ISuggestionsModel, diff --git a/packages/base/src/suggestionsPanel/panel.ts b/packages/base/src/suggestionsPanel/panel.ts index db9eaaa..4d9c08c 100644 --- a/packages/base/src/suggestionsPanel/panel.ts +++ b/packages/base/src/suggestionsPanel/panel.ts @@ -39,7 +39,8 @@ export class SuggestionsPanelWidget extends SidePanel { private _handleNotebookSwitched() { const filePath = this._model.filePath; - this._headerWidget.title.label = filePath; + const managerName = this._model.getSuggestionManagerName(); + this._headerWidget.title.label = `${managerName} - ${filePath}`; } private _model: ISuggestionsModel; diff --git a/packages/base/src/suggestionsPanel/suggestionWidget/cellWidget.ts b/packages/base/src/suggestionsPanel/suggestionWidget/cellWidget.ts index 2251f77..d3f701d 100644 --- a/packages/base/src/suggestionsPanel/suggestionWidget/cellWidget.ts +++ b/packages/base/src/suggestionsPanel/suggestionWidget/cellWidget.ts @@ -1,6 +1,14 @@ -import { Debouncer } from '@lumino/polling'; -import { ISharedCodeCell, IYText } from '@jupyter/ydoc'; -import { Cell, CodeCell, CodeCellModel } from '@jupyterlab/cells'; +import { IYText } from '@jupyter/ydoc'; +import { + Cell, + CodeCell, + CodeCellModel, + ICellModel, + MarkdownCell, + MarkdownCellModel, + RawCell, + RawCellModel +} from '@jupyterlab/cells'; import { CodeMirrorEditorFactory, EditorExtensionRegistry, @@ -8,40 +16,44 @@ import { EditorThemeRegistry, ybinding } from '@jupyterlab/codemirror'; -import { ICell } from '@jupyterlab/nbformat'; + +import { ObservableMap } from '@jupyterlab/observables'; import { RenderMimeRegistry, standardRendererFactories as initialFactories } from '@jupyterlab/rendermime'; +import { JSONValue } from '@lumino/coreutils'; +import { Signal } from '@lumino/signaling'; import { Panel } from '@lumino/widgets'; -import { ObservableMap } from '@jupyterlab/observables'; + +import { ISuggestionViewData } from '../../types'; import { diffTextExtensionFactory } from '../cmExtension'; import { suggestionCellStyle } from './style'; import { SuggestionToolbar } from './suggestionToolbar'; -import { JSONValue } from '@lumino/coreutils'; -import { Signal } from '@lumino/signaling'; -import { ISuggestionData } from '../../types'; export class CellWidget extends Panel { constructor(options: CellWidget.IOptions) { super(options); - const { suggestionData } = options; - const { content: cellModel, newSource } = suggestionData; + const { suggestionData, liveUpdate } = options; + const { originalCellModel, cellModel } = suggestionData; this.addClass(suggestionCellStyle); this._cellId = cellModel.id as string | undefined; - this._cellWidget = this._createCell( + const cellWidget = this._createCell( + originalCellModel, cellModel, - newSource, - options.updateCallback + liveUpdate ); - const toolbar = new SuggestionToolbar({ - toggleMinimized: this.toggleMinimized.bind(this), - deleteCallback: options.deleteCallback, - acceptCallback: options.acceptCallback, - state: this._state - }); - this.addWidget(toolbar); - this.addWidget(this._cellWidget); + if (cellWidget) { + this._cellWidget = cellWidget; + const toolbar = new SuggestionToolbar({ + toggleMinimized: this.toggleMinimized.bind(this), + deleteCallback: options.deleteCallback, + acceptCallback: options.acceptCallback, + state: this._state + }); + this.addWidget(toolbar); + this.addWidget(this._cellWidget); + } } get cellId(): string | undefined { @@ -63,7 +75,10 @@ export class CellWidget extends Panel { } } - private _cmExtensioRegistry(originalSource: string): EditorExtensionRegistry { + private _cmExtensioRegistry( + originalCell: ICellModel, + liveUpdate: boolean + ): EditorExtensionRegistry { const themes = new EditorThemeRegistry(); EditorThemeRegistry.getDefaultThemes().forEach(theme => { themes.addTheme(theme); @@ -90,7 +105,7 @@ export class CellWidget extends Panel { name: 'suggestion-view', factory: options => { return EditorExtensionRegistry.createImmutableExtension([ - diffTextExtensionFactory({ originalSource }) + diffTextExtensionFactory({ originalCell, liveUpdate }) ]); } }); @@ -120,62 +135,75 @@ export class CellWidget extends Panel { return languages; } private _createCell( - cellModel: ICell, - newSource: string, - updateCallback: (content: string) => Promise - ) { + originalCell: ICellModel, + cellModel: ICellModel, + liveUpdate: boolean + ): CodeCell | MarkdownCell | RawCell | undefined { const rendermime = new RenderMimeRegistry({ initialFactories }); - const factoryService = new CodeMirrorEditorFactory({ - extensions: this._cmExtensioRegistry(cellModel.source as string), + extensions: this._cmExtensioRegistry(originalCell, liveUpdate), languages: this._cmLanguageRegistry() }); - const model = new CodeCellModel(); - let mimeType = 'text/plain'; - if (cellModel.cell_type === 'code') { - //TODO Detect correct kernel language - mimeType = 'text/x-ipython'; - } else if (cellModel.cell_type === 'markdown') { - mimeType = 'text/x-ipythongfm'; - } - model.mimeType = mimeType; - model.sharedModel.setSource(newSource); - const cellWidget = new CodeCell({ - contentFactory: new Cell.ContentFactory({ - editorFactory: factoryService.newInlineEditor.bind(factoryService) - }), - rendermime, - model, - editorConfig: { - lineNumbers: false, - lineWrap: false, - matchBrackets: true, - tabFocusable: false - } - }).initializeState(); + const cellType = originalCell.type; - const debouncer = new Debouncer(async (cellModel: ISharedCodeCell) => { - const newContent = cellModel.toJSON(); - await updateCallback(newContent.source as string); - }, 500); - model.sharedModel.changed.connect(async (cellModel, changed) => { - debouncer.invoke(cellModel); + const contentFactory = new Cell.ContentFactory({ + editorFactory: factoryService.newInlineEditor.bind(factoryService) }); - model.sharedModel.disposed.connect(() => void debouncer.dispose()); + + const editorConfig = { + lineNumbers: false, + lineWrap: false, + matchBrackets: true, + tabFocusable: false + }; + let cellWidget: CodeCell | MarkdownCell | RawCell | undefined; + switch (cellType) { + case 'code': { + cellWidget = new CodeCell({ + contentFactory, + rendermime, + model: cellModel as CodeCellModel, + editorConfig + }).initializeState(); + cellWidget.outputArea.setHidden(true); + break; + } + case 'markdown': { + cellWidget = new MarkdownCell({ + contentFactory, + rendermime, + model: cellModel as MarkdownCellModel, + editorConfig + }).initializeState(); + cellWidget.rendered = false; + break; + } + case 'raw': { + cellWidget = new RawCell({ + contentFactory, + model: cellModel as RawCellModel, + editorConfig + }).initializeState(); + break; + } + default: + break; + } + return cellWidget; } private _state: ObservableMap = new ObservableMap({ values: { minimized: false } }); private _cellId: string | undefined; - private _cellWidget: CodeCell | undefined; + private _cellWidget: CodeCell | MarkdownCell | RawCell | undefined; } export namespace CellWidget { export interface IOptions extends Panel.IOptions { - suggestionData: ISuggestionData; + suggestionData: ISuggestionViewData; deleteCallback: () => Promise; acceptCallback: () => Promise; - updateCallback: (content: string) => Promise; + liveUpdate: boolean; } } diff --git a/packages/base/src/suggestionsPanel/widget.ts b/packages/base/src/suggestionsPanel/widget.ts index 524efd0..203ca39 100644 --- a/packages/base/src/suggestionsPanel/widget.ts +++ b/packages/base/src/suggestionsPanel/widget.ts @@ -3,12 +3,14 @@ import { Panel } from '@lumino/widgets'; import { ISuggestionChange, - ISuggestionData, + ISuggestionViewData, ISuggestionsModel } from '../types'; import { CellWidget, suggestionCellSelectedStyle } from './suggestionWidget'; import { suggestionsWidgetAreaStyle } from './style'; import { Dialog, showDialog } from '@jupyterlab/apputils'; +import { ISharedCell } from '@jupyter/ydoc'; +import { Debouncer } from '@lumino/polling'; export class SuggestionsWidget extends PanelWithToolbar { constructor(options: SuggestionsWidget.IOptions) { @@ -75,6 +77,13 @@ export class SuggestionsWidget extends PanelWithToolbar { default: break; } + + const count = this._suggestionsArea.widgets.length; + if (count && count !== 0) { + this.title.label = `All Suggestions (${count})`; + } else { + this.title.label = 'All Suggestions'; + } } private _handleActiveCellChanged( @@ -109,8 +118,15 @@ export class SuggestionsWidget extends PanelWithToolbar { } private _renderSuggestions() { const allSuggestions = this._model.allSuggestions; - const allWidgets = this._suggestionsArea.widgets; + const count = allSuggestions?.size ?? 0; + if (count && count !== 0) { + this.title.label = `All Suggestions (${count})`; + } else { + this.title.label = 'All Suggestions'; + } + const allWidgets = [...this._suggestionsArea.widgets]; for (const element of allWidgets) { + this._suggestionsArea.layout?.removeWidget(element); element.dispose(); element.parent = null; } @@ -129,10 +145,10 @@ export class SuggestionsWidget extends PanelWithToolbar { private _widgetFactory(options: { suggestionId: string; - suggestionData: ISuggestionData; + suggestionData: ISuggestionViewData; }): { widget: CellWidget; index: number } { const { suggestionId, suggestionData } = options; - const cellId = suggestionData.content.id as string | undefined; + const cellId = suggestionData.originalCellModel.id as string | undefined; const cellIdx = this._model.getCellIndex(cellId); @@ -158,9 +174,22 @@ export class SuggestionsWidget extends PanelWithToolbar { } }; - const updateCallback = async (newSource: string) => { - await this._model.updateSuggestion({ cellId, suggestionId, newSource }); - }; + const debouncer = new Debouncer(async (cellModel: ISharedCell) => { + const newContent = cellModel.toJSON(); + await this._model.updateSuggestion({ + cellId, + suggestionId, + newSource: newContent.source as string + }); + }, 500); + suggestionData.cellModel.sharedModel.changed.connect( + async (cellModel, changed) => { + debouncer.invoke(cellModel); + } + ); + suggestionData.cellModel.sharedModel.disposed.connect( + () => void debouncer.dispose() + ); const acceptCallback = async () => { const accepted = await this._model.acceptSuggestion({ @@ -182,8 +211,8 @@ export class SuggestionsWidget extends PanelWithToolbar { const w = new CellWidget({ suggestionData, deleteCallback, - updateCallback, - acceptCallback + acceptCallback, + liveUpdate: this._model.sourceLiveUpdate }); w.id = suggestionId; diff --git a/packages/base/src/tokens.ts b/packages/base/src/tokens.ts index c166281..324895e 100644 --- a/packages/base/src/tokens.ts +++ b/packages/base/src/tokens.ts @@ -1,18 +1,10 @@ import { Token } from '@lumino/coreutils'; -import { - ISuggestionsManager, - ISuggestionsModel, - ISuggestionsManagerRegistry -} from './types'; +import { ISuggestionsModel, ISuggestionsManagerRegistry } from './types'; export const ISuggestionsModelToken = new Token( 'jupyter-suggestions:suggestionsModel' ); -export const ISuggestionsManagerToken = new Token( - 'jupyter-suggestions:suggestionsManager' -); - export const ISuggestionsManagerRegistryToken = new Token( 'jupyter-suggestions:suggestionsManagerRegistry' diff --git a/packages/base/src/types.ts b/packages/base/src/types.ts index 5c34689..78ca014 100644 --- a/packages/base/src/types.ts +++ b/packages/base/src/types.ts @@ -2,13 +2,38 @@ import { NotebookPanel } from '@jupyterlab/notebook'; import { ISignal } from '@lumino/signaling'; import { IDisposable } from '@lumino/disposable'; import { Cell, ICellModel } from '@jupyterlab/cells'; -import { ICell } from '@jupyterlab/nbformat'; export interface IDict { [key: string]: T; } + +/** + * Interface defining the structure of a suggestion returned from a manager. + **/ export interface ISuggestionData { - content: ICell; - newSource: string; + /** + * The current id of the cell being suggested. + */ + originalCellId: string; + + /** + * The model of the suggestion cell. + */ + cellModel: ICellModel; +} + +/** + * Interface defining the structure of a suggestion used by the view widget. + **/ +export interface ISuggestionViewData { + /** + * The current model of the cell being suggested. + */ + originalCellModel: ICellModel; + + /** + * The model of the suggestion cell. + */ + cellModel: ICellModel; } /** @@ -20,6 +45,11 @@ export interface ISuggestionData { * suggestion-related changes, and interact with the notebook cells. */ export interface ISuggestionsModel extends IDisposable { + /** + * Does current manager support live update of the source cell. + */ + sourceLiveUpdate: boolean; + /** * The file path of the currently active notebook. */ @@ -33,7 +63,7 @@ export interface ISuggestionsModel extends IDisposable { /** * All suggestions associated with the current notebook. */ - allSuggestions: IAllSuggestions | undefined; + allSuggestions: IAllSuggestionViewData | undefined; /** * Signal emitted when the notebook is switched. @@ -59,6 +89,11 @@ export interface ISuggestionsModel extends IDisposable { Omit >; + /** + * Name of the current suggestion manager. + */ + getSuggestionManagerName(): string; + /** * Switches the active notebook to the specified panel or null. * @@ -131,7 +166,7 @@ export interface ISuggestionsModel extends IDisposable { getSuggestion(options: { cellId: string; suggestionId: string; - }): Promise; + }): Promise; /** * Retrieves the index of a cell by its ID. @@ -148,7 +183,8 @@ export interface ISuggestionChange { operator: 'added' | 'deleted' | 'modified'; suggestionId: string; } -export type IAllSuggestions = Map>; +export type IAllSuggestionViewData = Map>; +export type IAllSuggestionData = Map>; /** * Interface defining a suggestions manager. @@ -159,6 +195,16 @@ export type IAllSuggestions = Map>; * is changed. */ export interface ISuggestionsManager extends IDisposable { + /** + * Suggestion manager name + */ + name: string; + + /** + * Does this manager support live update of the source cell? + */ + sourceLiveUpdate: boolean; + /** * Signal emitted when a suggestion is changed. */ @@ -172,7 +218,7 @@ export interface ISuggestionsManager extends IDisposable { */ getAllSuggestions( notebook: NotebookPanel - ): Promise; + ): Promise; /** * Adds a new suggestion to a specified cell in the notebook. diff --git a/pyproject.toml b/pyproject.toml index e639210..3fd0708 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,6 +37,7 @@ skip = ["check-python"] python_packages = [ "python/jupyter_suggestions:jupyter_suggestions", "python/jupyter_suggestions_core:jupyter_suggestions_core", + "python/jupyter_suggestions_rtc:jupyter_suggestions_rtc", ] version_cmd = "python scripts/bump-version.py" diff --git a/python/jupyter_suggestions/scripts/bump-version.py b/python/jupyter_suggestions/scripts/bump-version.py index 6c98f2a..d0af022 100644 --- a/python/jupyter_suggestions/scripts/bump-version.py +++ b/python/jupyter_suggestions/scripts/bump-version.py @@ -49,7 +49,7 @@ def bump(): root_json = json.loads(package_json.read_text(encoding="utf-8")) root_json["version"] = js_version package_json.write_text(json.dumps(root_json), encoding="utf-8") - run(["yarn", "install"], check=True) + run(["jlpm", "install"], check=True) run( [ "node", @@ -64,7 +64,7 @@ def bump(): # pin jupyter_suggestions_* package to the same version bump_jupyter_suggestions_deps(py_version) # bump the JS version with lerna - run(f"yarn run bump:js:version {js_version}", shell=True, check=True) + run(f"jlpm run bump:js:version {js_version}", shell=True, check=True) if __name__ == "__main__": diff --git a/python/jupyter_suggestions_core/jupyter_suggestions_core/__init__.py b/python/jupyter_suggestions_core/jupyter_suggestions_core/__init__.py index 9a2ead1..ccf679a 100644 --- a/python/jupyter_suggestions_core/jupyter_suggestions_core/__init__.py +++ b/python/jupyter_suggestions_core/jupyter_suggestions_core/__init__.py @@ -12,5 +12,5 @@ def _jupyter_labextension_paths(): return [{ "src": "labextension", - "dest": "@jupyter/jupyter-suggestions-core" + "dest": "@jupyter/suggestions-core" }] diff --git a/python/jupyter_suggestions_core/package.json b/python/jupyter_suggestions_core/package.json index f688b3f..543ee03 100644 --- a/python/jupyter_suggestions_core/package.json +++ b/python/jupyter_suggestions_core/package.json @@ -1,5 +1,5 @@ { - "name": "@jupyter/jupyter-suggestions-core", + "name": "@jupyter/suggestions-core", "version": "0.1.0", "description": "Jupyter Suggestions core extension", "keywords": [ @@ -44,7 +44,7 @@ "watch:labextension": "jupyter labextension watch ." }, "dependencies": { - "@jupyter/jupyter-suggestions-base": "^0.1.0", + "@jupyter/suggestions-base": "^0.1.0", "@jupyterlab/application": "^4.0.0", "@jupyterlab/notebook": "^4.0.0", "@jupyterlab/settingregistry": "^4.0.0", @@ -80,7 +80,7 @@ "extension": true, "outputDir": "jupyter_suggestions_core/labextension", "sharedPackages": { - "@jupyter/jupyter-suggestions-base": { + "@jupyter/suggestions-base": { "singleton": true, "bundled": true } diff --git a/python/jupyter_suggestions_core/pyproject.toml b/python/jupyter_suggestions_core/pyproject.toml index 008471f..851eb94 100644 --- a/python/jupyter_suggestions_core/pyproject.toml +++ b/python/jupyter_suggestions_core/pyproject.toml @@ -36,8 +36,8 @@ artifacts = ["jupyter_suggestions_core/labextension"] exclude = [".github", "binder", "node_modules"] [tool.hatch.build.targets.wheel.shared-data] -"install.json" = "share/jupyter/labextensions/@jupyter/jupyter-suggestions-core/install.json" -"jupyter_suggestions_core/labextension" = "share/jupyter/labextensions/@jupyter/jupyter-suggestions-core" +"install.json" = "share/jupyter/labextensions/@jupyter/suggestions-core/install.json" +"jupyter_suggestions_core/labextension" = "share/jupyter/labextensions/@jupyter/suggestions-core" [tool.hatch.build.hooks.version] path = "jupyter_suggestions_core/_version.py" diff --git a/python/jupyter_suggestions_core/schema/commands.json b/python/jupyter_suggestions_core/schema/commands.json index 966eca5..6d01605 100644 --- a/python/jupyter_suggestions_core/schema/commands.json +++ b/python/jupyter_suggestions_core/schema/commands.json @@ -1,6 +1,6 @@ { - "title": "@jupyter/jupyter-suggestions-core", - "description": "@jupyter/jupyter-suggestions-core settings.", + "title": "@jupyter/suggestions-core", + "description": "@jupyter/suggestions-core settings.", "type": "object", "additionalProperties": false, "jupyter.lab.toolbars": { diff --git a/python/jupyter_suggestions_core/src/plugins.ts b/python/jupyter_suggestions_core/src/plugins.ts index 4710b75..cad6360 100644 --- a/python/jupyter_suggestions_core/src/plugins.ts +++ b/python/jupyter_suggestions_core/src/plugins.ts @@ -8,7 +8,7 @@ import { SuggestionsManagerRegistry, SuggestionsModel, SuggestionsPanelWidget -} from '@jupyter/jupyter-suggestions-base'; +} from '@jupyter/suggestions-base'; import { ILayoutRestorer, JupyterFrontEnd, @@ -24,7 +24,7 @@ import { import { SuggestionsSettingComponent } from './settingrenderer'; import type { FieldProps } from '@rjsf/utils'; -const NAME_SPACE = '@jupyter/jupyter-suggestions-core'; +const NAME_SPACE = '@jupyter/suggestions-core'; export const suggestionsModelPlugin: JupyterFrontEndPlugin = { @@ -46,9 +46,9 @@ export const suggestionsModelPlugin: JupyterFrontEndPlugin = suggestionsManager }); tracker.currentChanged.connect(async (_, changed) => { - if (changed) { - await changed.context.ready; - model.switchNotebook(changed); + if (tracker.currentWidget) { + await tracker.currentWidget.context.ready; + model.switchNotebook(tracker.currentWidget); } else { model.switchNotebook(null); } @@ -140,6 +140,7 @@ export const suggestionsManagerPlugin: JupyterFrontEndPlugin = { tracker: INotebookTracker, managerRegistry?: ISuggestionsManagerRegistry ) => { + console.log(`${NAME_SPACE}:manager is activated`); if (managerRegistry) { const manager = new LocalSuggestionsManager({ tracker }); const success = managerRegistry.register({ @@ -167,6 +168,7 @@ export const registryPlugin: JupyterFrontEndPlugin settingRendererRegistry: IFormRendererRegistry | null, translator_: ITranslator | null ) => { + console.log(`${NAME_SPACE}:registry is activated`); const SETTING_KEY = 'suggestionsManager'; const pluginId = `${NAME_SPACE}:registry`; const registryManager = new SuggestionsManagerRegistry(); diff --git a/python/jupyter_suggestions_rtc/LICENSE b/python/jupyter_suggestions_rtc/LICENSE new file mode 100644 index 0000000..5609eca --- /dev/null +++ b/python/jupyter_suggestions_rtc/LICENSE @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2024, QuantStack +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/python/jupyter_suggestions_rtc/README.md b/python/jupyter_suggestions_rtc/README.md new file mode 100644 index 0000000..ed7fe7b --- /dev/null +++ b/python/jupyter_suggestions_rtc/README.md @@ -0,0 +1 @@ +# Jupyter Suggestions with jupyter-collaboration backend diff --git a/python/jupyter_suggestions_rtc/install.json b/python/jupyter_suggestions_rtc/install.json new file mode 100644 index 0000000..3654ae6 --- /dev/null +++ b/python/jupyter_suggestions_rtc/install.json @@ -0,0 +1,5 @@ +{ + "packageManager": "python", + "packageName": "jupyter_suggestions_rtc", + "uninstallInstructions": "Use your Python package manager (pip, conda, etc.) to uninstall the package jupyter_suggestions_rtc" +} diff --git a/python/jupyter_suggestions_rtc/jupyter_suggestions_rtc/__init__.py b/python/jupyter_suggestions_rtc/jupyter_suggestions_rtc/__init__.py new file mode 100644 index 0000000..562fe81 --- /dev/null +++ b/python/jupyter_suggestions_rtc/jupyter_suggestions_rtc/__init__.py @@ -0,0 +1,16 @@ +try: + from ._version import __version__ +except ImportError: + # Fallback when using the package in dev mode without installing + # in editable mode with pip. It is highly recommended to install + # the package from a stable release or in editable mode: https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs + import warnings + warnings.warn("Importing 'jupyter_suggestions_rtc' outside a proper installation.") + __version__ = "dev" + + +def _jupyter_labextension_paths(): + return [{ + "src": "labextension", + "dest": "@jupyter/suggestions-rtc" + }] diff --git a/python/jupyter_suggestions_rtc/package.json b/python/jupyter_suggestions_rtc/package.json new file mode 100644 index 0000000..1687560 --- /dev/null +++ b/python/jupyter_suggestions_rtc/package.json @@ -0,0 +1,96 @@ +{ + "name": "@jupyter/suggestions-rtc", + "version": "0.1.0", + "description": "jupyter-suggestions with jupyter-collaboration backend", + "keywords": [ + "jupyter", + "jupyterlab", + "jupyterlab-extension" + ], + "homepage": "https://github.com/QuantStack/jupyter-suggestions", + "bugs": { + "url": "https://github.com/QuantStack/jupyter-suggestions/issues" + }, + "license": "BSD-3-Clause", + "author": "QuantStack", + "files": [ + "lib/**/*.{d.ts,eot,gif,html,jpg,js,js.map,json,png,svg,woff2,ttf}", + "style/**/*.{css,js,eot,gif,html,jpg,json,png,svg,woff2,ttf}", + "src/**/*.{ts,tsx}", + "schema/*.json" + ], + "main": "lib/index.js", + "types": "lib/index.d.ts", + "style": "style/index.css", + "repository": { + "type": "git", + "url": "https://github.com/QuantStack/jupyter-suggestions.git" + }, + "scripts": { + "build": "jlpm build:lib && jlpm build:labextension:dev", + "build:prod": "jlpm clean && jlpm build:lib:prod && jlpm build:labextension", + "build:labextension": "jupyter labextension build .", + "build:labextension:dev": "jupyter labextension build --development True .", + "build:lib": "tsc --sourceMap", + "build:lib:prod": "tsc", + "clean": "jlpm clean:lib", + "clean:lib": "rimraf lib tsconfig.tsbuildinfo", + "clean:lintcache": "rimraf .eslintcache .stylelintcache", + "clean:labextension": "rimraf jupyter_suggestions_rtc/labextension jupyter_suggestions_rtc/_version.py", + "clean:all": "jlpm clean:lib && jlpm clean:labextension && jlpm clean:lintcache", + "install:extension": "jlpm build", + "watch": "run-p watch:src watch:labextension", + "watch:src": "tsc -w --sourceMap", + "watch:labextension": "jupyter labextension watch ." + }, + "dependencies": { + "@jupyter/collaborative-drive": "^3.1.0", + "@jupyter/docprovider": "^3.1.0", + "@jupyter/suggestions-base": "^0.1.0", + "@jupyterlab/application": "^4.0.0", + "@jupyterlab/notebook": "^4.0.0" + }, + "devDependencies": { + "@jupyterlab/builder": "^4.0.0", + "rimraf": "^3.0.2", + "typescript": "^5", + "yjs": "^13.5.0" + }, + "sideEffects": [ + "style/*.css", + "style/index.js" + ], + "styleModule": "style/index.js", + "publishConfig": { + "access": "public" + }, + "jupyterlab": { + "discovery": { + "server": { + "managers": [ + "pip" + ], + "base": { + "name": "jupyter_suggestions_rtc" + } + } + }, + "extension": true, + "outputDir": "jupyter_suggestions_rtc/labextension", + "sharedPackages": { + "@jupyter/suggestions-base": { + "singleton": true, + "bundled": false + }, + "@jupyter/docprovider": { + "singleton": true, + "bundled": false + }, + "@jupyter/collaborative-drive": { + "singleton": true, + "bundled": false + } + }, + "schemaDir": "schema" + } +} diff --git a/python/jupyter_suggestions_rtc/pyproject.toml b/python/jupyter_suggestions_rtc/pyproject.toml new file mode 100644 index 0000000..b4b1969 --- /dev/null +++ b/python/jupyter_suggestions_rtc/pyproject.toml @@ -0,0 +1,80 @@ +[build-system] +build-backend = "hatchling.build" +requires = [ + "hatchling>=1.5.0", + "jupyterlab>=4.0.0,<5", + "hatch-nodejs-version>=0.3.2", +] + +[project] +classifiers = [ + "Framework :: Jupyter", + "Framework :: Jupyter :: JupyterLab", + "Framework :: Jupyter :: JupyterLab :: 4", + "Framework :: Jupyter :: JupyterLab :: Extensions", + "Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt", + "License :: OSI Approved :: BSD License", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] +dependencies = ["jupyter-collaboration>=3.1.0"] +dynamic = ["version", "description", "authors", "urls", "keywords"] +license = { file = "LICENSE" } +name = "jupyter_suggestions_rtc" +readme = "README.md" +requires-python = ">=3.9" + +[tool.hatch.version] +source = "nodejs" + +[tool.hatch.metadata.hooks.nodejs] +fields = ["description", "authors", "urls"] + +[tool.hatch.build.targets.sdist] +artifacts = ["jupyter_suggestions_rtc/labextension"] +exclude = [".github", "binder", "node_modules"] + +[tool.hatch.build.targets.wheel.shared-data] +"install.json" = "share/jupyter/labextensions/@jupyter/suggestions-rtc/install.json" +"jupyter_suggestions_rtc/labextension" = "share/jupyter/labextensions/@jupyter/suggestions-rtc" + +[tool.hatch.build.hooks.version] +path = "jupyter_suggestions_rtc/_version.py" + +[tool.hatch.build.hooks.jupyter-builder] +build-function = "hatch_jupyter_builder.npm_builder" +dependencies = ["hatch-jupyter-builder>=0.5"] +ensured-targets = [ + "jupyter_suggestions_rtc/labextension/static/style.js", + "jupyter_suggestions_rtc/labextension/package.json", +] +skip-if-exists = ["jupyter_suggestions_rtc/labextension/static/style.js"] + +[tool.hatch.build.hooks.jupyter-builder.build-kwargs] +build_cmd = "build:prod" +npm = ["jlpm"] + +[tool.hatch.build.hooks.jupyter-builder.editable-build-kwargs] +build_cmd = "install:extension" +build_dir = "jupyter_suggestions_rtc/labextension" +npm = ["jlpm"] +source_dir = "src" + +[tool.jupyter-releaser.options] +version_cmd = "hatch version" + +[tool.jupyter-releaser.hooks] +before-build-npm = [ + "python -m pip install 'jupyterlab>=4.0.0,<5'", + "jlpm", + "jlpm build:prod", +] +before-build-python = ["jlpm clean:all"] + +[tool.check-wheel-contents] +ignore = ["W002"] diff --git a/python/jupyter_suggestions_rtc/scripts/bump-version.py b/python/jupyter_suggestions_rtc/scripts/bump-version.py new file mode 100644 index 0000000..6335de0 --- /dev/null +++ b/python/jupyter_suggestions_rtc/scripts/bump-version.py @@ -0,0 +1,13 @@ +from pathlib import Path +from subprocess import run + +HATCH_VERSION = "hatch version" +ROOT = Path(__file__).parent.parent + + +def bump(): + # bump the Python version with hatch + run(f"{HATCH_VERSION}", shell=True, check=True, cwd=ROOT) + +if __name__ == "__main__": + bump() diff --git a/python/jupyter_suggestions_rtc/setup.py b/python/jupyter_suggestions_rtc/setup.py new file mode 100644 index 0000000..aefdf20 --- /dev/null +++ b/python/jupyter_suggestions_rtc/setup.py @@ -0,0 +1 @@ +__import__("setuptools").setup() diff --git a/python/jupyter_suggestions_rtc/src/index.ts b/python/jupyter_suggestions_rtc/src/index.ts new file mode 100644 index 0000000..ff2206b --- /dev/null +++ b/python/jupyter_suggestions_rtc/src/index.ts @@ -0,0 +1,3 @@ +import { suggestionsManagerPlugin } from './plugins'; + +export default [suggestionsManagerPlugin]; diff --git a/python/jupyter_suggestions_rtc/src/manager.ts b/python/jupyter_suggestions_rtc/src/manager.ts new file mode 100644 index 0000000..7b34651 --- /dev/null +++ b/python/jupyter_suggestions_rtc/src/manager.ts @@ -0,0 +1,333 @@ +import { ICollaborativeDrive } from '@jupyter/collaborative-drive'; +import { + IForkChangedEvent, + IForkManager, + requestDocSession +} from '@jupyter/docprovider'; +import { + BaseSuggestionsManager, + IAllSuggestionData, + IDict, + ISuggestionData, + ISuggestionsManager +} from '@jupyter/suggestions-base'; +import { YNotebook } from '@jupyter/ydoc'; +import { + Cell, + CellModel, + CodeCellModel, + ICellModel, + MarkdownCellModel, + RawCellModel +} from '@jupyterlab/cells'; +import { URLExt } from '@jupyterlab/coreutils'; +import { INotebookTracker, NotebookPanel } from '@jupyterlab/notebook'; +import { PromiseDelegate } from '@lumino/coreutils'; +import { WebsocketProvider as YWebsocketProvider } from 'y-websocket'; + +const DOCUMENT_PROVIDER_URL = 'api/collaboration/room'; + +export class RtcSuggestionsManager + extends BaseSuggestionsManager + implements ISuggestionsManager +{ + constructor(options: RtcSuggestionsManager.IOptions) { + super(options); + this._tracker = options.tracker; + this._tracker; + this._forkManager = options.forkManager; + this._drive = options.drive; + this._serverUrl = URLExt.join( + this._drive.serverSettings.wsUrl, + DOCUMENT_PROVIDER_URL + ); + this._forkManager.forkAdded.connect(this._handleForkAdded, this); + this._forkManager.forkDeleted.connect(this._handleForkDeleted, this); + } + + sourceLiveUpdate = true; + + name = 'RTC Suggestion Manager'; + + dispose(): void { + if (this._isDisposed) { + return; + } + this._forkManager.forkAdded.disconnect(this._handleForkAdded); + this._forkManager.forkDeleted.disconnect(this._handleForkDeleted); + super.dispose(); + } + async getAllSuggestions( + notebook: NotebookPanel + ): Promise { + const rootDocId = notebook.context.model.sharedModel.getState( + 'document_id' + ) as string; + + const [format, type] = rootDocId.split(':'); + const path = notebook.context.localPath; + if (!this._serverSession) { + const docSession = await requestDocSession(format, type, path); + this._serverSession = docSession.sessionId; + } + if (this._suggestionsMap.has(path)) { + return this._suggestionsMap.get(path); + } else { + const allForks = await this._forkManager.getAllForks(rootDocId); + const currentSuggestion = new Map>(); + const cellList = notebook.content.model?.cells ?? []; + const cellMap: IDict = {}; + for (const element of cellList) { + cellMap[element.id] = element; + } + for (const [forkRoomId, forkData] of Object.entries(allForks)) { + const forkMeta = JSON.parse(forkData.description ?? '{}'); + const cellId = forkMeta.cellId; + const cellModel = await this._cellModelFactory({ + rootDocId, + forkRoomId, + cellId, + mimeType: cellMap[cellId].mimeType + }); + const data: ISuggestionData = { + cellModel, + originalCellId: cellId + }; + if (currentSuggestion.has(cellId)) { + const currentData = currentSuggestion.get(cellId)!; + currentData[forkRoomId] = data; + } else { + currentSuggestion.set(cellId, { + [forkRoomId]: data + }); + } + } + + this._suggestionsMap.set(path, currentSuggestion); + return currentSuggestion; + } + } + + async getSuggestion(options: { + notebookPath: string; + cellId: string; + suggestionId: string; + }): Promise { + const { notebookPath, cellId, suggestionId } = options; + if (this._suggestionsMap.has(notebookPath)) { + const nbSuggestions = this._suggestionsMap.get(notebookPath); + if (nbSuggestions && nbSuggestions.has(cellId)) { + return nbSuggestions.get(cellId)![suggestionId]; + } + } + } + async addSuggestion(options: { + notebook: NotebookPanel; + cell: Cell; + }): Promise { + const { notebook, cell } = options; + const path = notebook.context.localPath; + + const cellId = cell.model.id; + const rootId = notebook.context.model.sharedModel.getState( + 'document_id' + ) as string; + const response = await this._forkManager.createFork({ + rootId, + synchronize: true, + //TODO: Update when the fork manager supports metadata + description: JSON.stringify({ + cellId, + path, + mimeType: cell.model.mimeType + }) + }); + return response?.fork_roomid ?? ''; + } + + async acceptSuggestion(options: { + notebook: NotebookPanel; + cellId: string; + suggestionId: string; + }): Promise { + const { suggestionId } = options; + try { + await this._forkManager.deleteFork({ forkId: suggestionId, merge: true }); + return true; + } catch (e) { + console.error(e); + return false; + } + } + + async deleteSuggestion(options: { + notebook: NotebookPanel; + cellId: string; + suggestionId: string; + }): Promise { + const { suggestionId } = options; + await this._forkManager.deleteFork({ forkId: suggestionId, merge: false }); + } + + async updateSuggestion(options: { + notebook: NotebookPanel; + cellId: string; + suggestionId: string; + newSource: string; + }): Promise { + // no-op + return; + } + + private _handleForkDeleted( + manager: IForkManager, + changed: IForkChangedEvent + ) { + const forkInfo = changed.fork_info; + const forkMeta = JSON.parse(forkInfo.description ?? '{}'); + const { cellId, path } = forkMeta; + const suggestionId = changed.fork_roomid; + if (this._suggestionsMap.has(path)) { + const nbSuggestions = this._suggestionsMap.get(path); + if (nbSuggestions && nbSuggestions.has(cellId)) { + delete nbSuggestions.get(cellId)![suggestionId]; + this._suggestionChanged.emit({ + notebookPath: path, + cellId, + suggestionId, + operator: 'deleted' + }); + } + } + } + + private async _handleForkAdded( + manager: IForkManager, + changed: IForkChangedEvent + ) { + const forkInfo = changed.fork_info; + const forkMeta = JSON.parse(forkInfo.description ?? '{}'); + const { cellId, path, mimeType } = forkMeta; + const rootId = forkInfo.root_roomid; + const suggestionId = changed.fork_roomid; + if (!path || !cellId) { + return; + } + if (!this._suggestionsMap.has(path)) { + this._suggestionsMap.set(path, new Map()); + } + const currentSuggestions = this._suggestionsMap.get(path)!; + + if (!currentSuggestions.has(cellId)) { + currentSuggestions.set(cellId, {}); + } + const cellSuggesions = currentSuggestions.get(cellId)!; + if (cellSuggesions[suggestionId]) { + return; + } + + const cellModel = await this._cellModelFactory({ + rootDocId: rootId, + forkRoomId: suggestionId, + cellId, + mimeType + }); + const suggestionContent: ISuggestionData = { + originalCellId: cellId, + cellModel + }; + cellSuggesions[suggestionId] = suggestionContent; + this._suggestionChanged.emit({ + notebookPath: path, + cellId, + suggestionId, + operator: 'added' + }); + } + private async _cellModelFactory(options: { + rootDocId: string; + forkRoomId: string; + cellId: string; + mimeType: string; + }): Promise { + const { rootDocId, forkRoomId, cellId, mimeType } = options; + const [format, type] = rootDocId.split(':'); + const sharedModelFactory = + this._drive.sharedModelFactory.documentFactories.get(type); + const pd = new PromiseDelegate(); + if (sharedModelFactory) { + const shared = sharedModelFactory({ + path: forkRoomId, + format: format as any, + contentType: type, + collaborative: true + }) as any as YNotebook; + + const _yWebsocketProvider = new YWebsocketProvider( + this._serverUrl, + forkRoomId, + shared.ydoc, + { + disableBc: true, + params: { sessionId: this._serverSession! }, + awareness: shared.awareness + } + ); + _yWebsocketProvider.on('sync', (isSynced: boolean) => { + if (isSynced) { + const selectedCell = shared.cells.filter(it => { + return it.getId() === cellId; + }); + if (selectedCell[0]) { + const currentCell = selectedCell[0]; + let copiedCellModel: CellModel | undefined; + switch (currentCell.cell_type) { + case 'code': { + copiedCellModel = new CodeCellModel({ + sharedModel: currentCell + }); + copiedCellModel.mimeType = mimeType; + break; + } + case 'markdown': { + copiedCellModel = new MarkdownCellModel({ + sharedModel: currentCell + }); + break; + } + case 'raw': { + copiedCellModel = new RawCellModel({ + sharedModel: currentCell + }); + break; + } + default: + break; + } + if (copiedCellModel) { + pd.resolve(copiedCellModel); + } else { + pd.reject('Invalid cell type'); + } + } + } + }); + } else { + pd.reject('Missing factory'); + } + return pd.promise; + } + + private _forkManager: IForkManager; + private _drive: ICollaborativeDrive; + private _serverSession?: string; + private _serverUrl: string; +} + +export namespace RtcSuggestionsManager { + export interface IOptions { + tracker: INotebookTracker; + forkManager: IForkManager; + drive: ICollaborativeDrive; + } +} diff --git a/python/jupyter_suggestions_rtc/src/plugins.ts b/python/jupyter_suggestions_rtc/src/plugins.ts new file mode 100644 index 0000000..8728d5d --- /dev/null +++ b/python/jupyter_suggestions_rtc/src/plugins.ts @@ -0,0 +1,50 @@ +import { + ISuggestionsManagerRegistry, + ISuggestionsManagerRegistryToken +} from '@jupyter/suggestions-base'; +import { + JupyterFrontEnd, + JupyterFrontEndPlugin +} from '@jupyterlab/application'; +import { INotebookTracker } from '@jupyterlab/notebook'; +import { RtcSuggestionsManager } from './manager'; + +import { IForkManager, IForkManagerToken } from '@jupyter/docprovider'; +import { ICollaborativeDrive } from '@jupyter/collaborative-drive'; + +const NAME_SPACE = '@jupyter/suggestions-rtc'; + +export const suggestionsManagerPlugin: JupyterFrontEndPlugin = { + id: `${NAME_SPACE}:manager`, + description: 'jupyter_suggestions with jupyter_collaboration backend', + autoStart: true, + requires: [INotebookTracker], + optional: [ + ICollaborativeDrive, + ISuggestionsManagerRegistryToken, + IForkManagerToken + ], + activate: ( + app: JupyterFrontEnd, + tracker: INotebookTracker, + drive?: ICollaborativeDrive, + managerRegistry?: ISuggestionsManagerRegistry, + forkManager?: IForkManager + ) => { + console.log(`${NAME_SPACE}:manager is activated`); + if (managerRegistry && forkManager && drive) { + const manager = new RtcSuggestionsManager({ + tracker, + forkManager, + drive + }); + const success = managerRegistry.register({ + id: 'RTC Suggestion Manager', + manager + }); + if (!success) { + console.log('Failed to register the RTC suggestion manager'); + } + } + } +}; diff --git a/python/jupyter_suggestions_rtc/style/base.css b/python/jupyter_suggestions_rtc/style/base.css new file mode 100644 index 0000000..e11f457 --- /dev/null +++ b/python/jupyter_suggestions_rtc/style/base.css @@ -0,0 +1,5 @@ +/* + See the JupyterLab Developer Guide for useful CSS Patterns: + + https://jupyterlab.readthedocs.io/en/stable/developer/css.html +*/ diff --git a/python/jupyter_suggestions_rtc/style/index.css b/python/jupyter_suggestions_rtc/style/index.css new file mode 100644 index 0000000..8a7ea29 --- /dev/null +++ b/python/jupyter_suggestions_rtc/style/index.css @@ -0,0 +1 @@ +@import url('base.css'); diff --git a/python/jupyter_suggestions_rtc/style/index.js b/python/jupyter_suggestions_rtc/style/index.js new file mode 100644 index 0000000..a028a76 --- /dev/null +++ b/python/jupyter_suggestions_rtc/style/index.js @@ -0,0 +1 @@ +import './base.css'; diff --git a/python/jupyter_suggestions_rtc/tsconfig.json b/python/jupyter_suggestions_rtc/tsconfig.json new file mode 100644 index 0000000..2a93924 --- /dev/null +++ b/python/jupyter_suggestions_rtc/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../../tsconfigbase.json", + "compilerOptions": { + "outDir": "lib", + "rootDir": "src" + }, + "include": ["src/**/*"] +} diff --git a/scripts/build_packages.py b/scripts/build_packages.py index 54f25ca..9a92eca 100644 --- a/scripts/build_packages.py +++ b/scripts/build_packages.py @@ -12,7 +12,7 @@ def build_packages(): install_build_deps = f"python -m pip install -r {requirements_build_path}" python_package_prefix = "python" - python_packages = ["jupyter_suggestions_core"] + python_packages = ["jupyter_suggestions_core", "jupyter_suggestions_rtc"] execute(install_build_deps) diff --git a/scripts/dev-install.py b/scripts/dev-install.py index 9b2b2ba..7704141 100644 --- a/scripts/dev-install.py +++ b/scripts/dev-install.py @@ -17,7 +17,7 @@ def install_dev(): build_js = "jlpm build" python_package_prefix = "python" - python_packages = ["jupyter_suggestions_core"] + python_packages = ["jupyter_suggestions_core", "jupyter_suggestions_rtc"] execute(install_build_deps) execute(install_js_deps) @@ -28,12 +28,11 @@ def install_dev(): execute("jlpm clean:all", cwd=root_path / "python" / py_package) execute(f"pip install -e {python_package_prefix}/{py_package}") - if py_package in ["jupyter_suggestions_core"]: + if py_package in ["jupyter_suggestions_core", "jupyter_suggestions_rtc"]: execute( f"jupyter labextension develop {python_package_prefix}/{py_package} --overwrite" ) if __name__ == "__main__": - install_dev() diff --git a/tsconfigbase.json b/tsconfigbase.json index 94144ff..c8f62e6 100644 --- a/tsconfigbase.json +++ b/tsconfigbase.json @@ -17,6 +17,6 @@ "strict": true, "strictNullChecks": true, "target": "ES2018", - "lib": ["es2022.intl", "dom"] + "lib": ["es2022.intl", "ES2018", "dom"] } } diff --git a/yarn.lock b/yarn.lock index 1bbfd13..6868e15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -63,15 +63,15 @@ __metadata: linkType: hard "@codemirror/lang-css@npm:^6.0.0, @codemirror/lang-css@npm:^6.2.1": - version: 6.3.0 - resolution: "@codemirror/lang-css@npm:6.3.0" + version: 6.3.1 + resolution: "@codemirror/lang-css@npm:6.3.1" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 "@lezer/common": ^1.0.2 "@lezer/css": ^1.1.7 - checksum: e98e89fa436f0a27c95323efbb6a1c43a52ca0b9253ab3c12af16f38cb93670d42f8a63cc566e2f6b0348af2cdfa1a6c03cf045af2d6cb253b27b2efdce9b2b2 + checksum: ed175d75d75bc0a059d1e60b3dcd8464d570da14fc97388439943c9c43e1e9146e37b83fe2ccaad9cd387420b7b411ea1d24ede78ecd1f2045a38acbb4dd36bc languageName: node linkType: hard @@ -219,8 +219,8 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0, @codemirror/language@npm:^6.10.1, @codemirror/language@npm:^6.3.0, @codemirror/language@npm:^6.4.0, @codemirror/language@npm:^6.6.0, @codemirror/language@npm:^6.8.0": - version: 6.10.3 - resolution: "@codemirror/language@npm:6.10.3" + version: 6.10.6 + resolution: "@codemirror/language@npm:6.10.6" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.23.0 @@ -228,7 +228,7 @@ __metadata: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: 53fb72299500f63706f78c888d6b5fd81043ea11ea2fa4c72c13c6d4794bb6f4ec29450208c56b4f40e839984b3dc73505262803fa61416baf588da389a7c577 + checksum: 0bd5e4da0c714b4d2aad2e2ad19bb803d9992e5f0d56da3fb2534e63b03b8a562bd8b9ac4439509c687b589e3eaa5a33339eda13d91e54a5d5a99e032d1be981 languageName: node linkType: hard @@ -242,42 +242,44 @@ __metadata: linkType: hard "@codemirror/lint@npm:^6.0.0": - version: 6.8.3 - resolution: "@codemirror/lint@npm:6.8.3" + version: 6.8.4 + resolution: "@codemirror/lint@npm:6.8.4" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.35.0 crelt: ^1.0.5 - checksum: fa27018d61fe41c282fb4226d577f8633f6a58aa3c4f7cce5d7a954c2410cdf30425067be6c14df7941551b05b224471636ba3399763d2864cd330523583a94c + checksum: 640e3dd44eb167d952eb5c5b8518919ba46e164aa3471776342f7f9361e676b4627a76a9f01d51b22127b97413f2bc9b8c60299d8dfdd5fc8ad0225d42de7669 languageName: node linkType: hard "@codemirror/search@npm:^6.5.6": - version: 6.5.7 - resolution: "@codemirror/search@npm:6.5.7" + version: 6.5.8 + resolution: "@codemirror/search@npm:6.5.8" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 32d98eab5b096c20e923cc2b88f1510369ec9f6c89fa3ecd79e1a965b35dfdc323624da82739ce80e675333d8e9a1564756a1ae87464e6a918a98bd12f93cbfd + checksum: 0f9633037492a7b647b606c30255ea42c4327319e643be7ea3aa2913ed8e4aa662589f457e376636521c7d4d1215fae0e8939f127db9c0790b19ae3b654c3bc4 languageName: node linkType: hard -"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.4.1": - version: 6.4.1 - resolution: "@codemirror/state@npm:6.4.1" - checksum: b81b55574091349eed4d32fc0eadb0c9688f1f7c98b681318f59138ee0f527cb4c4a97831b70547c0640f02f3127647838ae6730782de4a3dd2cc58836125d01 +"@codemirror/state@npm:^6.0.0, @codemirror/state@npm:^6.4.0, @codemirror/state@npm:^6.4.1, @codemirror/state@npm:^6.5.0": + version: 6.5.0 + resolution: "@codemirror/state@npm:6.5.0" + dependencies: + "@marijn/find-cluster-break": ^1.0.0 + checksum: f7fbed072cc67bf250f7d231668a00b988748cacaaa2ce3ea74ff13c7c392db76000e7d517933521cc6ad9dc3651c7b6d33accab3e3d4b9816cd3c5714661a84 languageName: node linkType: hard "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.26.3, @codemirror/view@npm:^6.27.0, @codemirror/view@npm:^6.35.0": - version: 6.35.0 - resolution: "@codemirror/view@npm:6.35.0" + version: 6.35.3 + resolution: "@codemirror/view@npm:6.35.3" dependencies: - "@codemirror/state": ^6.4.0 + "@codemirror/state": ^6.5.0 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 8584d354df2147f07bb184a2443d6451db25f7a63c09644fc705c695e100042141f5162058718c495eb1c51fbab5eb37814bb72fc1ddf968e855def669a43193 + checksum: 09c2685c9345b23ea69d28f323f29d6e73a269e9ffa29ffbf6443c139b2c97fd1a87eced1c59553a3416a08aed3246e30dd5eb70d516159ac352ae422ff4394d languageName: node linkType: hard @@ -425,6 +427,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: ^7.0.4 + checksum: 5d36d289960e886484362d9eb6a51d1ea28baed5f5d0140bbe62b99bac52eaf06cc01c2bc0d3575977962f84f6b2c4387b043ee632216643d4787b0999465bf2 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -486,9 +497,54 @@ __metadata: languageName: node linkType: hard -"@jupyter/jupyter-suggestions-base@^0.1.0, @jupyter/jupyter-suggestions-base@workspace:packages/base": +"@jupyter/collaborative-drive@npm:^3.1.0": + version: 3.1.0 + resolution: "@jupyter/collaborative-drive@npm:3.1.0" + dependencies: + "@jupyter/ydoc": ^2.0.0 || ^3.0.0 + "@jupyterlab/services": ^7.2.0 + "@lumino/coreutils": ^2.1.0 + "@lumino/disposable": ^2.1.0 + checksum: ef4288ccc6dc4b353d53c014b2caa87d29e5af64c1649175b6ff75127297953139f79f8774c22ab0e249cc5fcef36dc6503a6c3862e160205bf6a55b368e6ac8 + languageName: node + linkType: hard + +"@jupyter/docprovider@npm:^3.1.0": + version: 3.1.0 + resolution: "@jupyter/docprovider@npm:3.1.0" + dependencies: + "@jupyter/collaborative-drive": ^3.1.0 + "@jupyter/ydoc": ^2.0.0 || ^3.0.0 + "@jupyterlab/apputils": ^4.2.0 + "@jupyterlab/cells": ^4.2.0 + "@jupyterlab/coreutils": ^6.2.0 + "@jupyterlab/notebook": ^4.2.0 + "@jupyterlab/services": ^7.2.0 + "@jupyterlab/translation": ^4.2.0 + "@lumino/coreutils": ^2.1.0 + "@lumino/disposable": ^2.1.0 + "@lumino/signaling": ^2.1.0 + "@lumino/widgets": ^2.2.0 + y-protocols: ^1.0.5 + y-websocket: ^1.3.15 + yjs: ^13.5.40 + checksum: e2e93cc2c524061913fb3264a4d9c8543f6f28da1dc4ba0f325c9311527ea12e39823e75dec4dd5b080965c037dc870e775eb78011ae1253d25d9130bcd6fa3a + languageName: node + linkType: hard + +"@jupyter/react-components@npm:^0.16.6": + version: 0.16.7 + resolution: "@jupyter/react-components@npm:0.16.7" + dependencies: + "@jupyter/web-components": ^0.16.7 + react: ">=17.0.0 <19.0.0" + checksum: 37894347e63ebb528725e8b8b4038d138019823f5c9e28e3f6abb93b46d771b2ee3cc004d5ff7d9a06a93f2d90e41000bd2abae14364be34ba99c5e05864810e + languageName: node + linkType: hard + +"@jupyter/suggestions-base@^0.1.0, @jupyter/suggestions-base@workspace:packages/base": version: 0.0.0-use.local - resolution: "@jupyter/jupyter-suggestions-base@workspace:packages/base" + resolution: "@jupyter/suggestions-base@workspace:packages/base" dependencies: "@jupyter/ydoc": ^3.0.0 "@jupyterlab/apputils": ^4.0.0 @@ -512,11 +568,11 @@ __metadata: languageName: unknown linkType: soft -"@jupyter/jupyter-suggestions-core@workspace:python/jupyter_suggestions_core": +"@jupyter/suggestions-core@workspace:python/jupyter_suggestions_core": version: 0.0.0-use.local - resolution: "@jupyter/jupyter-suggestions-core@workspace:python/jupyter_suggestions_core" + resolution: "@jupyter/suggestions-core@workspace:python/jupyter_suggestions_core" dependencies: - "@jupyter/jupyter-suggestions-base": ^0.1.0 + "@jupyter/suggestions-base": ^0.1.0 "@jupyterlab/application": ^4.0.0 "@jupyterlab/builder": ^4.0.0 "@jupyterlab/notebook": ^4.0.0 @@ -530,9 +586,9 @@ __metadata: languageName: unknown linkType: soft -"@jupyter/jupyter-suggestions-root@workspace:.": +"@jupyter/suggestions-root@workspace:.": version: 0.0.0-use.local - resolution: "@jupyter/jupyter-suggestions-root@workspace:." + resolution: "@jupyter/suggestions-root@workspace:." dependencies: "@jupyterlab/builder": ^4.0.0 "@types/json-schema": ^7.0.11 @@ -561,15 +617,21 @@ __metadata: languageName: unknown linkType: soft -"@jupyter/react-components@npm:^0.16.6": - version: 0.16.7 - resolution: "@jupyter/react-components@npm:0.16.7" +"@jupyter/suggestions-rtc@workspace:python/jupyter_suggestions_rtc": + version: 0.0.0-use.local + resolution: "@jupyter/suggestions-rtc@workspace:python/jupyter_suggestions_rtc" dependencies: - "@jupyter/web-components": ^0.16.7 - react: ">=17.0.0 <19.0.0" - checksum: 37894347e63ebb528725e8b8b4038d138019823f5c9e28e3f6abb93b46d771b2ee3cc004d5ff7d9a06a93f2d90e41000bd2abae14364be34ba99c5e05864810e - languageName: node - linkType: hard + "@jupyter/collaborative-drive": ^3.1.0 + "@jupyter/docprovider": ^3.1.0 + "@jupyter/suggestions-base": ^0.1.0 + "@jupyterlab/application": ^4.0.0 + "@jupyterlab/builder": ^4.0.0 + "@jupyterlab/notebook": ^4.0.0 + rimraf: ^3.0.2 + typescript: ^5 + yjs: ^13.5.0 + languageName: unknown + linkType: soft "@jupyter/web-components@npm:^0.16.6, @jupyter/web-components@npm:^0.16.7": version: 0.16.7 @@ -583,9 +645,9 @@ __metadata: languageName: node linkType: hard -"@jupyter/ydoc@npm:^3.0.0": - version: 3.0.1 - resolution: "@jupyter/ydoc@npm:3.0.1" +"@jupyter/ydoc@npm:^2.0.0 || ^3.0.0, @jupyter/ydoc@npm:^3.0.0": + version: 3.0.2 + resolution: "@jupyter/ydoc@npm:3.0.2" dependencies: "@jupyterlab/nbformat": ^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0 "@lumino/coreutils": ^1.11.0 || ^2.0.0 @@ -593,24 +655,24 @@ __metadata: "@lumino/signaling": ^1.10.0 || ^2.0.0 y-protocols: ^1.0.5 yjs: ^13.5.40 - checksum: 4e14c40d81ee3c57cc0d84eb90d06f1bd98a18718f07510e918d12ae645a700b4f04c8862c1addf113eeab85102643324870598eea718f52d627f58b22e81977 + checksum: 770f73459635c74bd0e5cacdca1ea1f77ee8efd6e7cd58f0ccbb167ae8374e73118620f4f3628646281160a7bc7389f374bd2106f1e799bdc8f78cad0ce05b28 languageName: node linkType: hard "@jupyterlab/application@npm:^4.0.0": - version: 4.3.1 - resolution: "@jupyterlab/application@npm:4.3.1" + version: 4.3.3 + resolution: "@jupyterlab/application@npm:4.3.3" dependencies: "@fortawesome/fontawesome-free": ^5.12.0 - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/docregistry": ^4.3.1 - "@jupyterlab/rendermime": ^4.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/statedb": ^4.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/docregistry": ^4.3.3 + "@jupyterlab/rendermime": ^4.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/statedb": ^4.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/application": ^2.4.1 "@lumino/commands": ^2.3.1 @@ -621,23 +683,23 @@ __metadata: "@lumino/properties": ^2.0.2 "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 - checksum: f5893a67c6f15ca23b7a4c6e027fab324a9405cf83741f6324a3d5c8c15c2c0c869c8a1f752026eb9c58b4256ffe5081bad177d64161d2e84c9e86e0eb14476a + checksum: 9d0814ec523177fc34ca8feeb78012a62389226fc8fd522cee0e2cbdaa3be83c70ab5a73ba57d309a140b82a1bde8971c35c873902875816fb61f005901840f5 languageName: node linkType: hard -"@jupyterlab/apputils@npm:^4.0.0, @jupyterlab/apputils@npm:^4.4.1": - version: 4.4.1 - resolution: "@jupyterlab/apputils@npm:4.4.1" - dependencies: - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/settingregistry": ^4.3.1 - "@jupyterlab/statedb": ^4.3.1 - "@jupyterlab/statusbar": ^4.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 +"@jupyterlab/apputils@npm:^4.0.0, @jupyterlab/apputils@npm:^4.2.0, @jupyterlab/apputils@npm:^4.4.3": + version: 4.4.3 + resolution: "@jupyterlab/apputils@npm:4.4.3" + dependencies: + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/settingregistry": ^4.3.3 + "@jupyterlab/statedb": ^4.3.3 + "@jupyterlab/statusbar": ^4.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/commands": ^2.3.1 "@lumino/coreutils": ^2.2.0 @@ -650,27 +712,27 @@ __metadata: "@types/react": ^18.0.26 react: ^18.2.0 sanitize-html: ~2.12.1 - checksum: bcb91a90540003e1a89bae2c3187e15b655c0ecf8ef11bf82146cdbdad2f25589c76660520b2bb6625eec00502dbe271be263994b8ee3b0259c3f96690f14325 + checksum: a45d7ccaa6311fd940218f3a8e7e795589718aca98f2b11401b4b282103bc126d12161e77dc078954d5dc5def381487558b356039b6b1bc99fbd195ea2740968 languageName: node linkType: hard -"@jupyterlab/attachments@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/attachments@npm:4.3.1" +"@jupyterlab/attachments@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/attachments@npm:4.3.3" dependencies: - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime": ^4.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime": ^4.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 "@lumino/disposable": ^2.1.3 "@lumino/signaling": ^2.1.3 - checksum: c373823651cb0b5dec3e267c604df834a4744c868ffc96f1de060a49e80787816923e5b09dddc9fe752f2d6386129a583eb83877443e336e84824a887e1ae03e + checksum: dc7a56d634d6f45f91243d2b9198c47d762f2e209a1de8a212eb0057eb04ad199e09950187428ead6ff7cb88ae3e25309c23429d965dd2883eecc8c8876de305 languageName: node linkType: hard "@jupyterlab/builder@npm:^4.0.0": - version: 4.3.1 - resolution: "@jupyterlab/builder@npm:4.3.1" + version: 4.3.3 + resolution: "@jupyterlab/builder@npm:4.3.3" dependencies: "@lumino/algorithm": ^2.0.2 "@lumino/application": ^2.4.1 @@ -705,32 +767,32 @@ __metadata: worker-loader: ^3.0.2 bin: build-labextension: lib/build-labextension.js - checksum: 8d2726e3e808732964facf9dcc6d0fcc01854c336d0b4f5ef5357ee78ef6941947b98bed78f94cdc9c8c14da4cda9f1057dddce46fd9db3ea0bbc0e6eb4f119c + checksum: d294979ef2b9a5ce6fe91fd64aef7023e05311a64a5b8e03955bd28bcf11999f1ecb796f35ed45467ad63d334c16d844049f49f2ed17c6f318cc1d4511fb0145 languageName: node linkType: hard -"@jupyterlab/cells@npm:^4.0.0, @jupyterlab/cells@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/cells@npm:4.3.1" +"@jupyterlab/cells@npm:^4.0.0, @jupyterlab/cells@npm:^4.2.0, @jupyterlab/cells@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/cells@npm:4.3.3" dependencies: "@codemirror/state": ^6.4.1 "@codemirror/view": ^6.26.3 "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/attachments": ^4.3.1 - "@jupyterlab/codeeditor": ^4.3.1 - "@jupyterlab/codemirror": ^4.3.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/documentsearch": ^4.3.1 - "@jupyterlab/filebrowser": ^4.3.1 - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/outputarea": ^4.3.1 - "@jupyterlab/rendermime": ^4.3.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/toc": ^6.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/attachments": ^4.3.3 + "@jupyterlab/codeeditor": ^4.3.3 + "@jupyterlab/codemirror": ^4.3.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/documentsearch": ^4.3.3 + "@jupyterlab/filebrowser": ^4.3.3 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/outputarea": ^4.3.3 + "@jupyterlab/rendermime": ^4.3.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/toc": ^6.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/domutils": ^2.0.2 @@ -741,23 +803,23 @@ __metadata: "@lumino/virtualdom": ^2.0.2 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: bcb3da3315d1b91dadd8697f49f50ce7a05a6e6290e5caa3029db3d9fb90e60bf51b5b94907ead92d52b96b8bf44778ed9f5b7fef44280a9d16ea56144119885 + checksum: c64356798cd144bd0088fe757e548be17b5aedf6d67880495434f1ef802c078bb8d071bad3a7412c9225c4e4406314de06d3dfd3aa038b85b625a223bee2ec52 languageName: node linkType: hard -"@jupyterlab/codeeditor@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/codeeditor@npm:4.3.1" +"@jupyterlab/codeeditor@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/codeeditor@npm:4.3.3" dependencies: "@codemirror/state": ^6.4.1 "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/statusbar": ^4.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/statusbar": ^4.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 "@lumino/dragdrop": ^2.1.5 @@ -765,13 +827,13 @@ __metadata: "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: d71158530cd53da4b853460236206d574c97020ec92e3dbec76469a2d81ce68eea3620c0bbba77226fe145356e48f54fdf78bcf768c2c6220d718b99d15484ae + checksum: 7611f5973900a85b6488f96ae9b50da76418f0f3b64890c63c499a1276ef577d0d34c2cf3b507577ddb626ae5acee6a136650453be6345a8613ddedfe40843bd languageName: node linkType: hard -"@jupyterlab/codemirror@npm:^4.0.0, @jupyterlab/codemirror@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/codemirror@npm:4.3.1" +"@jupyterlab/codemirror@npm:^4.0.0, @jupyterlab/codemirror@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/codemirror@npm:4.3.3" dependencies: "@codemirror/autocomplete": ^6.16.0 "@codemirror/commands": ^6.5.0 @@ -794,11 +856,11 @@ __metadata: "@codemirror/state": ^6.4.1 "@codemirror/view": ^6.26.3 "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/codeeditor": ^4.3.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/documentsearch": ^4.3.1 - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/translation": ^4.3.1 + "@jupyterlab/codeeditor": ^4.3.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/documentsearch": ^4.3.3 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/translation": ^4.3.3 "@lezer/common": ^1.2.1 "@lezer/generator": ^1.7.0 "@lezer/highlight": ^1.2.0 @@ -807,13 +869,13 @@ __metadata: "@lumino/disposable": ^2.1.3 "@lumino/signaling": ^2.1.3 yjs: ^13.5.40 - checksum: db35ec00b518b54f5600ad2182fb9c3a76a49ec9029242116b93c87a8431333ab04a7e827269e606d68c127435fc2bd7415d7885db344006628b5c60c0ab162a + checksum: 18cb1485e08699ad444145dc96147c9385fcb2aa5bfc0438ff62b96bb99c6ddf47ed241948e1bd6e24d7a23ebe8093100c38e2260e71261d527ed7646ff18295 languageName: node linkType: hard -"@jupyterlab/coreutils@npm:^6.3.1": - version: 6.3.1 - resolution: "@jupyterlab/coreutils@npm:6.3.1" +"@jupyterlab/coreutils@npm:^6.2.0, @jupyterlab/coreutils@npm:^6.3.3": + version: 6.3.3 + resolution: "@jupyterlab/coreutils@npm:6.3.3" dependencies: "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -821,22 +883,22 @@ __metadata: minimist: ~1.2.0 path-browserify: ^1.0.0 url-parse: ~1.5.4 - checksum: 9de967c43379d5c888981f60e1fda42b243f327ba86653bdbba2f4c1add733676a1963bda8f4a21a010ad095bf5ddd188a1000b3e81e140a4d75ee26c1048de7 + checksum: c41f06000c17d5ab1c2805b9f3e8a733e7f6a7d127fbc8ddd7c6d7eca1cff069cc487aa1b46296a697ab2be0362afed914df8a78b5e4bce4890e2a1f7f932f81 languageName: node linkType: hard -"@jupyterlab/docmanager@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/docmanager@npm:4.3.1" - dependencies: - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/docregistry": ^4.3.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/statedb": ^4.3.1 - "@jupyterlab/statusbar": ^4.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 +"@jupyterlab/docmanager@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/docmanager@npm:4.3.3" + dependencies: + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/docregistry": ^4.3.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/statedb": ^4.3.3 + "@jupyterlab/statusbar": ^4.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -846,24 +908,24 @@ __metadata: "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: eb0fb801872a1253fd4173b94b46e3e517703e5a8dcb874a477353050556d4aca48c88664a8de9e068a68c49139abe8236691e6eda3835a96599bda707a0f8a1 + checksum: e3c4756587e816dcf54081f00c3367f37bb9c52e68af146002dea561a211ab5ebd2abefa3a32f52d5d50076bb6bec16c8f1e0bd565fd3672df8b11133108d087 languageName: node linkType: hard -"@jupyterlab/docregistry@npm:^4.0.0, @jupyterlab/docregistry@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/docregistry@npm:4.3.1" +"@jupyterlab/docregistry@npm:^4.0.0, @jupyterlab/docregistry@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/docregistry@npm:4.3.3" dependencies: "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/codeeditor": ^4.3.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime": ^4.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/codeeditor": ^4.3.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime": ^4.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -872,17 +934,17 @@ __metadata: "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: b5462d864015f40b3a7c712c95969b345cde588b118cdc62fbd6dbf753d7decaf99888969490a0df06e96fb27286f0fa2ca06ea4065f2e9e94093d07c0586d71 + checksum: 14b44c8ae0c1a5059da6786396f47dfc79160e2489db509c3d37a58e1aaf8b2648dfac44eafac3dfaaabcb114f6985f52c0085b663718d5cac4901492e138d14 languageName: node linkType: hard -"@jupyterlab/documentsearch@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/documentsearch@npm:4.3.1" +"@jupyterlab/documentsearch@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/documentsearch@npm:4.3.3" dependencies: - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/commands": ^2.3.1 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -891,23 +953,23 @@ __metadata: "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: 95f0e3b028c4f4a34a0f01080e76f1eb1cc7fecff52881f5120c494e8d1395ef3025be796973c34cf919dc6ddebd7908babc78e2ac2ac01aa085b095b760cc2d + checksum: 69eb59154c7cbf8d4c4ab5abe16d0c91d3cde60eb642c84494079a3ce5f2559d62275fffacd144fe39e4fd740345619b4c84ded926cc1544e03c7901b05f490e languageName: node linkType: hard -"@jupyterlab/filebrowser@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/filebrowser@npm:4.3.1" - dependencies: - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/docmanager": ^4.3.1 - "@jupyterlab/docregistry": ^4.3.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/statedb": ^4.3.1 - "@jupyterlab/statusbar": ^4.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 +"@jupyterlab/filebrowser@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/filebrowser@npm:4.3.3" + dependencies: + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/docmanager": ^4.3.3 + "@jupyterlab/docregistry": ^4.3.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/statedb": ^4.3.3 + "@jupyterlab/statusbar": ^4.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -919,21 +981,21 @@ __metadata: "@lumino/virtualdom": ^2.0.2 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: c9cfc581b5ec72288a52933027a3b86faed0871b6961a55fc7c60726d92f4ac3a74e874005d212ccbde863e8ef96423a2491d66371a75e49cb5ed9b45e911f1f + checksum: 94b93fc9a790a4c07e7eed8045e542bbe328b5351ec10866147c74d4365fe88503ad1d6ba151026103b7bee4ec69a699ad15660e29beaf2235ec38c0fe68d7ca languageName: node linkType: hard -"@jupyterlab/lsp@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/lsp@npm:4.3.1" - dependencies: - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/codeeditor": ^4.3.1 - "@jupyterlab/codemirror": ^4.3.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/docregistry": ^4.3.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/translation": ^4.3.1 +"@jupyterlab/lsp@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/lsp@npm:4.3.3" + dependencies: + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/codeeditor": ^4.3.3 + "@jupyterlab/codemirror": ^4.3.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/docregistry": ^4.3.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/translation": ^4.3.3 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 "@lumino/signaling": ^2.1.3 @@ -942,41 +1004,41 @@ __metadata: vscode-jsonrpc: ^6.0.0 vscode-languageserver-protocol: ^3.17.0 vscode-ws-jsonrpc: ~1.0.2 - checksum: 9602bb05b18fbea44796917b63e7392ecaab2c1cef4f28ef7dc8a9dcc91bd686cfd1abb1b250cda8fdc864c577aa0157ec9aefb0d977a085c663a41937507636 + checksum: 4928b2f0990682842d6c60c5ae876d1aa06ab954615db79b1186f26e978a25d816872f6f5b599ee5335bc65ca6af19b4d46fcf3ebc58b16007b83fc951184950 languageName: node linkType: hard -"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.0, @jupyterlab/nbformat@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/nbformat@npm:4.3.1" +"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.0.0, @jupyterlab/nbformat@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/nbformat@npm:4.3.3" dependencies: "@lumino/coreutils": ^2.2.0 - checksum: 009ce5f41785e2367a86e1445e30d092c178070ea32e9344c71422dce14fef29810cfcbf4c90476f5634b19f6a117d85d1a7dd53debd61af0469b3c47dd92c8a + checksum: 2e96f688e356209284961a6421391312f58ddb6443ba42ed19838384d33fab0e5b877a956cc5620da9d7417c2cd852e9e225353b6ac45e246e2d546dfd6302c8 languageName: node linkType: hard -"@jupyterlab/notebook@npm:^4.0.0": - version: 4.3.1 - resolution: "@jupyterlab/notebook@npm:4.3.1" +"@jupyterlab/notebook@npm:^4.0.0, @jupyterlab/notebook@npm:^4.2.0": + version: 4.3.3 + resolution: "@jupyterlab/notebook@npm:4.3.3" dependencies: "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/cells": ^4.3.1 - "@jupyterlab/codeeditor": ^4.3.1 - "@jupyterlab/codemirror": ^4.3.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/docregistry": ^4.3.1 - "@jupyterlab/documentsearch": ^4.3.1 - "@jupyterlab/lsp": ^4.3.1 - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime": ^4.3.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/settingregistry": ^4.3.1 - "@jupyterlab/statusbar": ^4.3.1 - "@jupyterlab/toc": ^6.3.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/cells": ^4.3.3 + "@jupyterlab/codeeditor": ^4.3.3 + "@jupyterlab/codemirror": ^4.3.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/docregistry": ^4.3.3 + "@jupyterlab/documentsearch": ^4.3.3 + "@jupyterlab/lsp": ^4.3.3 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime": ^4.3.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/settingregistry": ^4.3.3 + "@jupyterlab/statusbar": ^4.3.3 + "@jupyterlab/toc": ^6.3.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -989,7 +1051,7 @@ __metadata: "@lumino/virtualdom": ^2.0.2 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: 4f208119e412492e2b732be316f1a60222d662401c099ecb6f5ec54e5926b66568936b1c91341bb5fcd699570db84ccc4e3fb0117f506f78234b563c54a5514e + checksum: 89e9bab09c102a0b12cf29b432873561a35c607998365de5bc027a20345c30e5928229d2c8a3fc69e7c6fc0440339b0ac33a783ab5711dce93fba69f2cb20146 languageName: node linkType: hard @@ -1006,30 +1068,30 @@ __metadata: languageName: node linkType: hard -"@jupyterlab/observables@npm:^5.3.1": - version: 5.3.1 - resolution: "@jupyterlab/observables@npm:5.3.1" +"@jupyterlab/observables@npm:^5.3.3": + version: 5.3.3 + resolution: "@jupyterlab/observables@npm:5.3.3" dependencies: "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 "@lumino/messaging": ^2.0.2 "@lumino/signaling": ^2.1.3 - checksum: 2c15097088e06a4f12a9e94f8fb26baec7f9fe86188f9e7b6fb421c655b2acbb5cb95f3abb53b86bb417649523561268789393fa9da7b92fa70d2f123320241e + checksum: 951234b84556523d83c67ba7f5d5109a5ff4da9adc2329137e218974e2e7b0e4392b69a642005e5805108d9080d0c4c0233b1d35429d2acd7dc3d7191dddb8bc languageName: node linkType: hard -"@jupyterlab/outputarea@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/outputarea@npm:4.3.1" - dependencies: - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime": ^4.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/translation": ^4.3.1 +"@jupyterlab/outputarea@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/outputarea@npm:4.3.3" + dependencies: + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime": ^4.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/translation": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -1037,65 +1099,65 @@ __metadata: "@lumino/properties": ^2.0.2 "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 - checksum: 9bbbcd82148c68b63531f1b671229d0f4394afe3455afbc8808214d5d87b262a45a1f689dbcce0eaec1d6d2f012554e382adbc99824f9e36cce211b867454e4e + checksum: 45c7a4c8509ab718c2055e128b4030a9e89b42af775e50a82340f5f255c0369ac3a0d79e8185640bc2add55b738cda893532806bfac163b50ff683662cf06526 languageName: node linkType: hard -"@jupyterlab/rendermime-interfaces@npm:^3.11.1": - version: 3.11.1 - resolution: "@jupyterlab/rendermime-interfaces@npm:3.11.1" +"@jupyterlab/rendermime-interfaces@npm:^3.11.3": + version: 3.11.3 + resolution: "@jupyterlab/rendermime-interfaces@npm:3.11.3" dependencies: "@lumino/coreutils": ^1.11.0 || ^2.2.0 "@lumino/widgets": ^1.37.2 || ^2.5.0 - checksum: 296e3f4ebcdd760ebf503b6c9467a2f56ed6e19108c7f319a90cff32e0585b0a5147c982bc79a573fe1920e3bc4c6183d8d4e939659ed857baa2b12587061c57 + checksum: a4a4d73d08a4c9fcef39c345dc463f07a9736d241fc6bb4d1eecfc7780f784a39dce77f9e8c9552f51dde9602d4ce20430558aad5f53eb83245197fed2307f10 languageName: node linkType: hard -"@jupyterlab/rendermime@npm:^4.0.0, @jupyterlab/rendermime@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/rendermime@npm:4.3.1" - dependencies: - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/translation": ^4.3.1 +"@jupyterlab/rendermime@npm:^4.0.0, @jupyterlab/rendermime@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/rendermime@npm:4.3.3" + dependencies: + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/translation": ^4.3.3 "@lumino/coreutils": ^2.2.0 "@lumino/messaging": ^2.0.2 "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 lodash.escape: ^4.0.1 - checksum: 8ded08cbed91d983289f20e21d05d555888f3e19a83e6cbc8f4d72748345dfec1017de63da1644f82368f2a591eac6dae15aa6197b295e4242f5d84965566791 + checksum: 8e40cc9e4ca6cecc3451cdbb460bfa075be5b43993b5511e9ebde101f246522fe6823272cdff4a2d5ef2b23d7b18a0e3a00471c4aa9c7b2487de45b4621e4497 languageName: node linkType: hard -"@jupyterlab/services@npm:^7.3.1": - version: 7.3.1 - resolution: "@jupyterlab/services@npm:7.3.1" +"@jupyterlab/services@npm:^7.2.0, @jupyterlab/services@npm:^7.3.3": + version: 7.3.3 + resolution: "@jupyterlab/services@npm:7.3.3" dependencies: "@jupyter/ydoc": ^3.0.0 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/settingregistry": ^4.3.1 - "@jupyterlab/statedb": ^4.3.1 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/settingregistry": ^4.3.3 + "@jupyterlab/statedb": ^4.3.3 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 "@lumino/polling": ^2.1.3 "@lumino/properties": ^2.0.2 "@lumino/signaling": ^2.1.3 ws: ^8.11.0 - checksum: d1d80fa50254fa0f5a8a7565355b57f24d1db19d414727688a6dc2c879a24812d7d660e585ab0188c0923689283195eb3070a850bb2c26c449da624db006c839 + checksum: db7177c6db930a674543a2a2b1095c5f76edac0120dfa24243e231d89a07b2243a62d4691b9ecde834958dca9c3b671a6548b121af50d702e21722df3c5b547f languageName: node linkType: hard -"@jupyterlab/settingregistry@npm:^4.0.0, @jupyterlab/settingregistry@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/settingregistry@npm:4.3.1" +"@jupyterlab/settingregistry@npm:^4.0.0, @jupyterlab/settingregistry@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/settingregistry@npm:4.3.3" dependencies: - "@jupyterlab/nbformat": ^4.3.1 - "@jupyterlab/statedb": ^4.3.1 + "@jupyterlab/nbformat": ^4.3.3 + "@jupyterlab/statedb": ^4.3.3 "@lumino/commands": ^2.3.1 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -1105,28 +1167,28 @@ __metadata: json5: ^2.2.3 peerDependencies: react: ">=16" - checksum: c4f8fcedba9c524004fe919129242cdcbe1661ce7e71c2eb8bfe131ebe6e625367e1c05866b7326046599e4a7668bc07e303e526d87b960846d72457ea4defbd + checksum: 98d6f6ac6d41114e687c1a887c28171651e7c5ecceb5a989e5e8c55afb20685beaee6ad652c0104092f4516f3fe9e5711208fb6e11a66fbf389fb08ac811f877 languageName: node linkType: hard -"@jupyterlab/statedb@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/statedb@npm:4.3.1" +"@jupyterlab/statedb@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/statedb@npm:4.3.3" dependencies: "@lumino/commands": ^2.3.1 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 "@lumino/properties": ^2.0.2 "@lumino/signaling": ^2.1.3 - checksum: 781798f6107bcf1caae1f6f7714583145deba95d8c4a10a5a3adeabd6351f1505af60ae2a5b18d7698ba9584c68241c700209e6be48c4b625fd2c5d12254f726 + checksum: 611ae29772fc704877737ad1031ebcf5fd1d1af976e07103de26fed90fcb120329b1a28d02c8c79fa35be161db415daf62116c3b358174fdc2e24f23bb553870 languageName: node linkType: hard -"@jupyterlab/statusbar@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/statusbar@npm:4.3.1" +"@jupyterlab/statusbar@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/statusbar@npm:4.3.3" dependencies: - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 @@ -1134,56 +1196,56 @@ __metadata: "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: 75edb4de39051c29bc37ec36379f42ae1ce711648a775202582860f70146872efdec8ea6cb08fea556adc7a10ee1533b29bdebf4acde5696aa5bacefae71eaa2 + checksum: a0bf2697dc1764c556864c9688324fbb2ca19bb4bd8f7579f3aa35ed87cf19ac0966b969d6922ced266b3253fa6d2545a1421f187e0c48fafa48991f984258cf languageName: node linkType: hard -"@jupyterlab/toc@npm:^6.3.1": - version: 6.3.1 - resolution: "@jupyterlab/toc@npm:6.3.1" +"@jupyterlab/toc@npm:^6.3.3": + version: 6.3.3 + resolution: "@jupyterlab/toc@npm:6.3.3" dependencies: "@jupyter/react-components": ^0.16.6 - "@jupyterlab/apputils": ^4.4.1 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/docregistry": ^4.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime": ^4.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/translation": ^4.3.1 - "@jupyterlab/ui-components": ^4.3.1 + "@jupyterlab/apputils": ^4.4.3 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/docregistry": ^4.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime": ^4.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/translation": ^4.3.3 + "@jupyterlab/ui-components": ^4.3.3 "@lumino/coreutils": ^2.2.0 "@lumino/disposable": ^2.1.3 "@lumino/messaging": ^2.0.2 "@lumino/signaling": ^2.1.3 "@lumino/widgets": ^2.5.0 react: ^18.2.0 - checksum: dfa1edf4b5afbc2fefde9cf2914e335fa70443729183e2e1af69a0983e1411f8f152b81677c74f67866d38ee20b6e1af2eab281f32b4f8cdee4fa550e5c98e98 + checksum: a99ebcc69a0477a0313af942b0cfba6d96b612a48efc682fee66297a609ff6ea068612a356e8e1bef49a1b73237ff6d6c30023a35dc3bb78f5ba2b694f047d74 languageName: node linkType: hard -"@jupyterlab/translation@npm:^4.0.0, @jupyterlab/translation@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/translation@npm:4.3.1" +"@jupyterlab/translation@npm:^4.0.0, @jupyterlab/translation@npm:^4.2.0, @jupyterlab/translation@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/translation@npm:4.3.3" dependencies: - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/services": ^7.3.1 - "@jupyterlab/statedb": ^4.3.1 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/services": ^7.3.3 + "@jupyterlab/statedb": ^4.3.3 "@lumino/coreutils": ^2.2.0 - checksum: ecd63f816784ef6feffecdaa85903dba9f49cf65b5e5b9c664bb115a4dcb163d3701a56b4199dafb5c5eed986074ccd1da87a92450e11af5dbea99c66e662874 + checksum: 26b82d7b40715e93b718b671d91dbf0820db84f3743048ff37745fc7036495ed3697593f851b20650ed0ae0a099eea14196231a9c3775062def723a1a8b2c772 languageName: node linkType: hard -"@jupyterlab/ui-components@npm:^4.0.0, @jupyterlab/ui-components@npm:^4.3.1": - version: 4.3.1 - resolution: "@jupyterlab/ui-components@npm:4.3.1" +"@jupyterlab/ui-components@npm:^4.0.0, @jupyterlab/ui-components@npm:^4.3.3": + version: 4.3.3 + resolution: "@jupyterlab/ui-components@npm:4.3.3" dependencies: "@jupyter/react-components": ^0.16.6 "@jupyter/web-components": ^0.16.6 - "@jupyterlab/coreutils": ^6.3.1 - "@jupyterlab/observables": ^5.3.1 - "@jupyterlab/rendermime-interfaces": ^3.11.1 - "@jupyterlab/translation": ^4.3.1 + "@jupyterlab/coreutils": ^6.3.3 + "@jupyterlab/observables": ^5.3.3 + "@jupyterlab/rendermime-interfaces": ^3.11.3 + "@jupyterlab/translation": ^4.3.3 "@lumino/algorithm": ^2.0.2 "@lumino/commands": ^2.3.1 "@lumino/coreutils": ^2.2.0 @@ -1201,7 +1263,7 @@ __metadata: typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 - checksum: 8a9cb38b5e62cc3ca6feab3db3444b99ee9a436859358f0c67bb61518a9827c5e4daff008536e99cbd4d34c0086633d07e3212a79a83ab794c98f0243a9bdabf + checksum: 5c967c09b3c6b7ab1c996b0e91c199f59819610b386e0170afdde95f518991049b8c6a073e0966babb6074d44d298dda1a79ef7dfd0226ea0bf4a70efa5d17b9 languageName: node linkType: hard @@ -1319,14 +1381,14 @@ __metadata: linkType: hard "@lezer/generator@npm:^1.7.0": - version: 1.7.1 - resolution: "@lezer/generator@npm:1.7.1" + version: 1.7.2 + resolution: "@lezer/generator@npm:1.7.2" dependencies: "@lezer/common": ^1.1.0 "@lezer/lr": ^1.3.0 bin: lezer-generator: src/lezer-generator.cjs - checksum: e46df5a31252fb036ea17fce820acdf47672bb5405b2a38e26a430182b9a50b8513fde37d9a43d8334cde3bb2f2106ce7a5ab1a01e244876ce3217c4db59e627 + checksum: b5d282c7c749d816f373478ebebbcad839125918ac2038d870d880fc0fb1c932b278b3652beb5854d9a0b5aa8e1a9ba24f8359c5ce4c2b9a5393f85c395a2a91 languageName: node linkType: hard @@ -1362,13 +1424,13 @@ __metadata: linkType: hard "@lezer/javascript@npm:^1.0.0": - version: 1.4.19 - resolution: "@lezer/javascript@npm:1.4.19" + version: 1.4.21 + resolution: "@lezer/javascript@npm:1.4.21" dependencies: "@lezer/common": ^1.2.0 "@lezer/highlight": ^1.1.3 "@lezer/lr": ^1.3.0 - checksum: e305680dea6659570b88eded0d03eba3d33bb8860f8646b457798da955742916dd9cbe17fe6dd867bdb7767ef6c00717aadd45e520ee0b416bdc5e39046e6459 + checksum: 5ff9edaf53fe399d5e1c0c2196837325ca5cf81b59fda546e8ae81a4748f7cbcc4d258202fe77bbb3d5d9561ce8fb2b79cb87f0922c5f5d1117eb6f545fc1055 languageName: node linkType: hard @@ -1414,13 +1476,13 @@ __metadata: linkType: hard "@lezer/python@npm:^1.1.4": - version: 1.1.14 - resolution: "@lezer/python@npm:1.1.14" + version: 1.1.15 + resolution: "@lezer/python@npm:1.1.15" dependencies: "@lezer/common": ^1.2.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: 1608187f698e972d11b340dfdfd79e15b1359641e386e386befd37d5e5839620b45a5a39c5616792a24da29ef1d99d11ea0dad52b9617f1767e7ea6a11c2fed3 + checksum: 106ef0a56d0ccac6bcba02ee91770f6cd96fe599edc061300e2d0556ae53a68d32fb8f94e8baeaa34f06127dcb39513425e180966b1fd5cba78da2b78e9ee3c3 languageName: node linkType: hard @@ -1513,7 +1575,7 @@ __metadata: languageName: node linkType: hard -"@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.2.0, @lumino/coreutils@npm:^2.0.0, @lumino/coreutils@npm:^2.2.0": +"@lumino/coreutils@npm:^1.11.0 || ^2.0.0, @lumino/coreutils@npm:^1.11.0 || ^2.2.0, @lumino/coreutils@npm:^2.0.0, @lumino/coreutils@npm:^2.1.0, @lumino/coreutils@npm:^2.2.0": version: 2.2.0 resolution: "@lumino/coreutils@npm:2.2.0" dependencies: @@ -1532,7 +1594,7 @@ __metadata: languageName: node linkType: hard -"@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.0.0, @lumino/disposable@npm:^2.1.3": +"@lumino/disposable@npm:^1.10.0 || ^2.0.0, @lumino/disposable@npm:^2.0.0, @lumino/disposable@npm:^2.1.0, @lumino/disposable@npm:^2.1.3": version: 2.1.3 resolution: "@lumino/disposable@npm:2.1.3" dependencies: @@ -1610,7 +1672,7 @@ __metadata: languageName: node linkType: hard -"@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.0.0, @lumino/signaling@npm:^2.1.3": +"@lumino/signaling@npm:^1.10.0 || ^2.0.0, @lumino/signaling@npm:^2.0.0, @lumino/signaling@npm:^2.1.0, @lumino/signaling@npm:^2.1.3": version: 2.1.3 resolution: "@lumino/signaling@npm:2.1.3" dependencies: @@ -1639,7 +1701,7 @@ __metadata: languageName: node linkType: hard -"@lumino/widgets@npm:^1.37.2 || ^2.5.0, @lumino/widgets@npm:^2.0.0, @lumino/widgets@npm:^2.5.0": +"@lumino/widgets@npm:^1.37.2 || ^2.5.0, @lumino/widgets@npm:^2.0.0, @lumino/widgets@npm:^2.2.0, @lumino/widgets@npm:^2.5.0": version: 2.5.0 resolution: "@lumino/widgets@npm:2.5.0" dependencies: @@ -1658,6 +1720,13 @@ __metadata: languageName: node linkType: hard +"@marijn/find-cluster-break@npm:^1.0.0": + version: 1.0.2 + resolution: "@marijn/find-cluster-break@npm:1.0.2" + checksum: 0d836de25e04d58325813401ef3c2d34caf040da985a5935fcbc9d84e7b47a21bdb15f57d70c2bf0960bd29ed3dbbb1afd00cdd0fc4fafbee7fd0ffe7d508ae1 + languageName: node + linkType: hard + "@microsoft/fast-colors@npm:^5.3.1": version: 5.3.1 resolution: "@microsoft/fast-colors@npm:5.3.1" @@ -1720,16 +1789,16 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.2 - resolution: "@npmcli/agent@npm:2.2.2" +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" dependencies: agent-base: ^7.1.0 http-proxy-agent: ^7.0.0 https-proxy-agent: ^7.0.1 lru-cache: ^10.0.1 socks-proxy-agent: ^8.0.3 - checksum: 67de7b88cc627a79743c88bab35e023e23daf13831a8aa4e15f998b92f5507b644d8ffc3788afc8e64423c612e0785a6a92b74782ce368f49a6746084b50d874 + checksum: e8fc25d536250ed3e669813b36e8c6d805628b472353c57afd8c4fde0fcfcf3dda4ffe22f7af8c9070812ec2e7a03fb41d7151547cef3508efe661a5a3add20f languageName: node linkType: hard @@ -1752,6 +1821,15 @@ __metadata: languageName: node linkType: hard +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: ^7.3.5 + checksum: 68951c589e9a4328698a35fd82fe71909a257d6f2ede0434d236fa55634f0fbcad9bb8755553ce5849bd25ee6f019f4d435921ac715c853582c4a7f5983c8d4a + languageName: node + linkType: hard + "@npmcli/git@npm:^4.0.0": version: 4.1.0 resolution: "@npmcli/git@npm:4.1.0" @@ -2105,8 +2183,8 @@ __metadata: linkType: hard "@rjsf/core@npm:^5.13.4": - version: 5.22.4 - resolution: "@rjsf/core@npm:5.22.4" + version: 5.23.1 + resolution: "@rjsf/core@npm:5.23.1" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 @@ -2114,28 +2192,13 @@ __metadata: nanoid: ^3.3.7 prop-types: ^15.8.1 peerDependencies: - "@rjsf/utils": ^5.22.x - react: ^16.14.0 || >=17 - checksum: cc2d6b51959be277f727a0c8398c699bc4068cb63f3f096ddd051c35e5ba685beb5745c281d81e3906f1c92329e9468bc35f81244e48026794318c98b884dac7 - languageName: node - linkType: hard - -"@rjsf/utils@npm:^5.13.4": - version: 5.22.4 - resolution: "@rjsf/utils@npm:5.22.4" - dependencies: - json-schema-merge-allof: ^0.8.1 - jsonpointer: ^5.0.1 - lodash: ^4.17.21 - lodash-es: ^4.17.21 - react-is: ^18.2.0 - peerDependencies: + "@rjsf/utils": ^5.23.x react: ^16.14.0 || >=17 - checksum: 7dddc74b910fb7b87ebddc564879126b100f14eee853c0fbc390faa6c5f944a70023f34925a360aa92915f4e9c56bccf57141db9fe7b3c6a97348d886794bab8 + checksum: acb5b1541b7e6f9911dce33455c297402fc1b2278b0c688073decdea977efae7d4227962eaadeb48fd14c2a8e4bba73a80df975b1c49aa2e2b933c2646ab4904 languageName: node linkType: hard -"@rjsf/utils@npm:^5.22.0": +"@rjsf/utils@npm:^5.13.4, @rjsf/utils@npm:^5.22.0": version: 5.23.1 resolution: "@rjsf/utils@npm:5.23.1" dependencies: @@ -2219,12 +2282,11 @@ __metadata: linkType: hard "@types/create-react-class@npm:*": - version: 15.6.8 - resolution: "@types/create-react-class@npm:15.6.8" + version: 15.6.9 + resolution: "@types/create-react-class@npm:15.6.9" dependencies: - "@types/prop-types": "*" "@types/react": "*" - checksum: a4237559499c77205c7e73269e53db6ada257e21a638f7222f20ffcd66d1a9c2ed1819ceca067a3edbdb47960d8a60ecd2c6de5a0cb9ed8e9de03e4ced144397 + checksum: 4c87f2eb72f900e61491573fa52f6c0bff56ea420f2659fbd2ff2d8794be6f936e31d51bbc2e91048d9ce78c19eae71845787b8cbcce8d3458f66a9b5af1f91b languageName: node linkType: hard @@ -2284,11 +2346,11 @@ __metadata: linkType: hard "@types/node@npm:*": - version: 22.9.1 - resolution: "@types/node@npm:22.9.1" + version: 22.10.2 + resolution: "@types/node@npm:22.10.2" dependencies: - undici-types: ~6.19.8 - checksum: dee25051e8d89f38b2b26c0714ce60acd1e3f9b1b946131ce3c6e64d626a134f1bec2d948f7ead3da0136aeb7672234f066f97f8290e6aead236e43f4ecb5a68 + undici-types: ~6.20.0 + checksum: b22401e6e7d1484e437d802c72f5560e18100b1257b9ad0574d6fe05bebe4dbcb620ea68627d1f1406775070d29ace8b6b51f57e7b1c7b8bafafe6da7f29c843 languageName: node linkType: hard @@ -2300,9 +2362,9 @@ __metadata: linkType: hard "@types/prop-types@npm:*": - version: 15.7.13 - resolution: "@types/prop-types@npm:15.7.13" - checksum: 8935cad87c683c665d09a055919d617fe951cb3b2d5c00544e3a913f861a2bd8d2145b51c9aa6d2457d19f3107ab40784c40205e757232f6a80cc8b1c815513c + version: 15.7.14 + resolution: "@types/prop-types@npm:15.7.14" + checksum: d0c5407b9ccc3dd5fae0ccf9b1007e7622ba5e6f1c18399b4f24dff33619d469da4b9fa918a374f19dc0d9fe6a013362aab0b844b606cfc10676efba3f5f736d languageName: node linkType: hard @@ -2316,13 +2378,22 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:*, @types/react@npm:^18.0.26": - version: 18.3.12 - resolution: "@types/react@npm:18.3.12" +"@types/react@npm:*": + version: 19.0.1 + resolution: "@types/react@npm:19.0.1" + dependencies: + csstype: ^3.0.2 + checksum: e5e05cdf5fc53804e94548ca4e139102fffaab95d4c19be821d30d81dbab75ca3e30b72f2e2e750b90fcb535058cb694c4403402f14eb8a19a1282629c8222d8 + languageName: node + linkType: hard + +"@types/react@npm:^18.0.26": + version: 18.3.16 + resolution: "@types/react@npm:18.3.16" dependencies: "@types/prop-types": "*" csstype: ^3.0.2 - checksum: 4ab1577a8c2105a5e316536f724117c90eee5f4bd5c137fc82a2253d8c1fd299dedaa07e8dfc95d6e2f04a4be3cb8b0e1b06098c6233ebd55c508d88099395b7 + checksum: 467c2a325870580b88b4e3bf439749b51b27cb13f52408653cb8c3e7e1b7eff86ada87e384b1aa4d34aa6027c187ca27df00bea77140fda524d726992f5b93ef languageName: node linkType: hard @@ -2475,13 +2546,13 @@ __metadata: linkType: hard "@ungap/structured-clone@npm:^1.2.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + version: 1.2.1 + resolution: "@ungap/structured-clone@npm:1.2.1" + checksum: 1e3b9fef293118861f0b2159b3695fc7f3793c0707095888ebb3ac7183f78c390e68f04cd4b4cf9ac979ae0da454505e08b3aae887cdd639609a3fe529e19e59 languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.12.1": +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.14.1": version: 1.14.1 resolution: "@webassemblyjs/ast@npm:1.14.1" dependencies: @@ -2567,7 +2638,7 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-edit@npm:^1.12.1": +"@webassemblyjs/wasm-edit@npm:^1.14.1": version: 1.14.1 resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" dependencies: @@ -2608,7 +2679,7 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.12.1": +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.14.1": version: 1.14.1 resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" dependencies: @@ -2740,6 +2811,32 @@ __metadata: languageName: node linkType: hard +"abstract-leveldown@npm:^6.2.1": + version: 6.3.0 + resolution: "abstract-leveldown@npm:6.3.0" + dependencies: + buffer: ^5.5.0 + immediate: ^3.2.3 + level-concat-iterator: ~2.0.0 + level-supports: ~1.0.0 + xtend: ~4.0.0 + checksum: 121a8509d8c6a540e656c2a69e5b8d853d4df71072011afefc868b98076991bb00120550e90643de9dc18889c675f62413409eeb4c8c204663124c7d215e4ec3 + languageName: node + linkType: hard + +"abstract-leveldown@npm:~6.2.1, abstract-leveldown@npm:~6.2.3": + version: 6.2.3 + resolution: "abstract-leveldown@npm:6.2.3" + dependencies: + buffer: ^5.5.0 + immediate: ^3.2.3 + level-concat-iterator: ~2.0.0 + level-supports: ~1.0.0 + xtend: ~4.0.0 + checksum: 00202b2eb7955dd7bc04f3e44d225e60160cedb8f96fe6ae0e6dca9c356d57071f001ece8ae1d53f48095c4c036d92b3440f2bc7666730610ddea030f9fbde4a + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.2": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -2774,12 +2871,10 @@ __metadata: languageName: node linkType: hard -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0, agent-base@npm:^7.1.1": - version: 7.1.1 - resolution: "agent-base@npm:7.1.1" - dependencies: - debug: ^4.3.4 - checksum: 51c158769c5c051482f9ca2e6e1ec085ac72b5a418a9b31b4e82fe6c0a6699adb94c1c42d246699a587b3335215037091c79e0de512c516f73b6ea844202f037 +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 87bb7ee54f5ecf0ccbfcba0b07473885c43ecd76cb29a8db17d6137a19d9f9cd443a2a7c5fd8a3f24d58ad8145f9eb49116344a66b107e1aeab82cf2383f4753 languageName: node linkType: hard @@ -3023,6 +3118,13 @@ __metadata: languageName: node linkType: hard +"async-limiter@npm:~1.0.0": + version: 1.0.1 + resolution: "async-limiter@npm:1.0.1" + checksum: 2b849695b465d93ad44c116220dee29a5aeb63adac16c1088983c339b0de57d76e82533e8e364a93a9f997f28bbfc6a92948cefc120652bd07f3b59f8d75cf2b + languageName: node + linkType: hard + "async@npm:^3.2.3": version: 3.2.6 resolution: "async@npm:3.2.6" @@ -3047,13 +3149,13 @@ __metadata: linkType: hard "axios@npm:^1.0.0": - version: 1.7.7 - resolution: "axios@npm:1.7.7" + version: 1.7.9 + resolution: "axios@npm:1.7.9" dependencies: follow-redirects: ^1.15.6 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 882d4fe0ec694a07c7f5c1f68205eb6dc5a62aecdb632cc7a4a3d0985188ce3030e0b277e1a8260ac3f194d314ae342117660a151fabffdc5081ca0b5a8b47fe + checksum: cb8ce291818effda09240cb60f114d5625909b345e10f389a945320e06acf0bc949d0f8422d25720f5dd421362abee302c99f5e97edec4c156c8939814b23d19 languageName: node linkType: hard @@ -3152,7 +3254,7 @@ __metadata: languageName: node linkType: hard -"buffer@npm:^5.5.0": +"buffer@npm:^5.5.0, buffer@npm:^5.6.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" dependencies: @@ -3231,11 +3333,11 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.4 - resolution: "cacache@npm:18.0.4" +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" dependencies: - "@npmcli/fs": ^3.1.0 + "@npmcli/fs": ^4.0.0 fs-minipass: ^3.0.0 glob: ^10.2.2 lru-cache: ^10.0.1 @@ -3243,24 +3345,43 @@ __metadata: minipass-collect: ^2.0.1 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 - p-map: ^4.0.0 - ssri: ^10.0.0 - tar: ^6.1.11 - unique-filename: ^3.0.0 - checksum: b7422c113b4ec750f33beeca0f426a0024c28e3172f332218f48f963e5b970647fa1ac05679fe5bb448832c51efea9fda4456b9a95c3a1af1105fe6c1833cde2 + p-map: ^7.0.2 + ssri: ^12.0.0 + tar: ^7.4.3 + unique-filename: ^4.0.0 + checksum: e95684717de6881b4cdaa949fa7574e3171946421cd8291769dd3d2417dbf7abf4aa557d1f968cca83dcbc95bed2a281072b09abfc977c942413146ef7ed4525 languageName: node linkType: hard -"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"call-bind-apply-helpers@npm:^1.0.0": + version: 1.0.1 + resolution: "call-bind-apply-helpers@npm:1.0.1" dependencies: - es-define-property: ^1.0.0 es-errors: ^1.3.0 function-bind: ^1.1.2 + checksum: 3c55343261bb387c58a4762d15ad9d42053659a62681ec5eb50690c6b52a4a666302a01d557133ce6533e8bd04530ee3b209f23dd06c9577a1925556f8fcccdf + languageName: node + linkType: hard + +"call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: ^1.0.0 + es-define-property: ^1.0.0 get-intrinsic: ^1.2.4 - set-function-length: ^1.2.1 - checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 + set-function-length: ^1.2.2 + checksum: aa2899bce917a5392fd73bd32e71799c37c0b7ab454e0ed13af7f6727549091182aade8bbb7b55f304a5bc436d543241c14090fb8a3137e9875e23f444f4f5a9 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bound@npm:1.0.2" + dependencies: + call-bind: ^1.0.8 + get-intrinsic: ^1.2.5 + checksum: 6f0020b8848307446ed410d0dcf40470b3c16d96a26d8d8bba2ea5bc1582f9bdfc49945cf270698495d4c0f422ad56d243a336855cfb0260feabf72952238cf8 languageName: node linkType: hard @@ -3309,9 +3430,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001683 - resolution: "caniuse-lite@npm:1.0.30001683" - checksum: 66c5d4882f1e1a251b1fe63f8dc530165e980f11681cd96851c3da68d3464e66dc28479c4c0aaa6a1a781f96db451207688f4b57904b3d07cfd28ae306d34122 + version: 1.0.30001687 + resolution: "caniuse-lite@npm:1.0.30001687" + checksum: 20fea782da99d7ff964a9f0573c9eb02762eee2783522f5db5c0a20ba9d9d1cf294aae4162b5ef2f47f729916e6bd0ba457118c6d086c1132d19a46d2d1c61e7 languageName: node linkType: hard @@ -3360,6 +3481,13 @@ __metadata: languageName: node linkType: hard +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: fd73a4bab48b79e66903fe1cafbdc208956f41ea4f856df883d0c7277b7ab29fd33ee65f93b2ec9192fc0169238f2f8307b7735d27c155821d886b84aa97aa8d + languageName: node + linkType: hard + "chrome-trace-event@npm:^1.0.2": version: 1.0.4 resolution: "chrome-trace-event@npm:1.0.4" @@ -3883,14 +4011,14 @@ __metadata: linkType: hard "debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": - version: 4.3.7 - resolution: "debug@npm:4.3.7" + version: 4.4.0 + resolution: "debug@npm:4.4.0" dependencies: ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: 822d74e209cd910ef0802d261b150314bbcf36c582ccdbb3e70f0894823c17e49a50d3e66d96b633524263975ca16b6a833f3e3b7e030c157169a5fabac63160 + checksum: fb42df878dd0e22816fc56e1fdca9da73caa85212fbe40c868b1295a6878f9101ae684f4eeef516c13acfc700f5ea07f1136954f43d4cd2d477a811144136479 languageName: node linkType: hard @@ -3948,6 +4076,16 @@ __metadata: languageName: node linkType: hard +"deferred-leveldown@npm:~5.3.0": + version: 5.3.0 + resolution: "deferred-leveldown@npm:5.3.0" + dependencies: + abstract-leveldown: ~6.2.1 + inherits: ^2.0.3 + checksum: 5631e153528bb9de1aa60d59a5065d1a519374c5e4c1d486f2190dba4008dcf5c2ee8dd7f2f81396fc4d5a6bb6e7d0055e3dfe68afe00da02adaa3bf329addf7 + languageName: node + linkType: hard + "define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" @@ -4098,6 +4236,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "dunder-proto@npm:1.0.0" + dependencies: + call-bind-apply-helpers: ^1.0.0 + es-errors: ^1.3.0 + gopd: ^1.2.0 + checksum: 6f0697b17c47377efc00651f43f34e71c09ebba85fafb4d91fe67f5810931f3fa3f45a1ef5d207debbd5682ad9abc3b71b49cb3e67222dcad71fafc92cf6199b + languageName: node + linkType: hard + "duplexer@npm:^0.1.1": version: 0.1.2 resolution: "duplexer@npm:0.1.2" @@ -4136,9 +4285,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.64 - resolution: "electron-to-chromium@npm:1.5.64" - checksum: 9a866dcd2b480fee0d3a265318b1227cbaf1ee236cbb7aa09306b7cb8a6c21c069a8001dff1183e5a85214636a04a856a7d90e0ff3860bf86c9cbc44a69f59bb + version: 1.5.72 + resolution: "electron-to-chromium@npm:1.5.72" + checksum: 4fc182082285fc99942d4881fb99c507dd97b01c930a3fe7a60bb7d03dd981db4755deb69e7787f7e7d2420b7109ec4724625ba1ce2795460892a184acbe2571 languageName: node linkType: hard @@ -4163,6 +4312,18 @@ __metadata: languageName: node linkType: hard +"encoding-down@npm:^6.3.0": + version: 6.3.0 + resolution: "encoding-down@npm:6.3.0" + dependencies: + abstract-leveldown: ^6.2.1 + inherits: ^2.0.3 + level-codec: ^9.0.0 + level-errors: ^2.0.0 + checksum: 74043e6d9061a470614ff61d708c849259ab32932a428fd5ddfb0878719804f56a52f59b31cccd95fddc2e636c0fd22dc3e02481fb98d5bf1bdbbbc44ca09bdc + languageName: node + linkType: hard + "encoding@npm:^0.1.13": version: 0.1.13 resolution: "encoding@npm:0.1.13" @@ -4239,6 +4400,17 @@ __metadata: languageName: node linkType: hard +"errno@npm:~0.1.1": + version: 0.1.8 + resolution: "errno@npm:0.1.8" + dependencies: + prr: ~1.0.1 + bin: + errno: cli.js + checksum: 1271f7b9fbb3bcbec76ffde932485d1e3561856d21d847ec613a9722ee924cdd4e523a62dc71a44174d91e898fe21fdc8d5b50823f4b5e0ce8c35c8271e6ef4a + languageName: node + linkType: hard + "error-ex@npm:^1.3.1": version: 1.3.2 resolution: "error-ex@npm:1.3.2" @@ -4248,7 +4420,7 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2": +"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5": version: 1.23.5 resolution: "es-abstract@npm:1.23.5" dependencies: @@ -4302,12 +4474,10 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: ^1.2.4 - checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a languageName: node linkType: hard @@ -4346,13 +4516,13 @@ __metadata: linkType: hard "es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + is-callable: ^1.2.7 + is-date-object: ^1.0.5 + is-symbol: ^1.0.4 + checksum: 966965880356486cd4d1fe9a523deda2084c81b3702d951212c098f5f2ee93605d1b7c1840062efb48a07d892641c7ed1bc194db563645c0dd2b919cb6d65b93 languageName: node linkType: hard @@ -4947,16 +5117,19 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" +"get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5": + version: 1.2.5 + resolution: "get-intrinsic@npm:1.2.5" dependencies: + call-bind-apply-helpers: ^1.0.0 + dunder-proto: ^1.0.0 + es-define-property: ^1.0.1 es-errors: ^1.3.0 function-bind: ^1.1.2 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - hasown: ^2.0.0 - checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + checksum: 4578a7ca15d9e1fc6706f32597c4c75eaeb8bb92b251253ebf42c70acc95be03d5ab5d680e28a9986c71207713670da4ac5096103f351cc77cb8413d9f847ae2 languageName: node linkType: hard @@ -5237,12 +5410,10 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 +"gopd@npm:^1.0.1, gopd@npm:^1.1.0, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3 languageName: node linkType: hard @@ -5285,7 +5456,7 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b @@ -5315,17 +5486,19 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 +"has-proto@npm:^1.0.3": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: ^1.0.0 + checksum: f55010cb94caa56308041d77967c72a02ffd71386b23f9afa8447e58bc92d49d15c19bf75173713468e92fe3fb1680b03b115da39c21c32c74886d1d50d3e7ff languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b languageName: node linkType: hard @@ -5446,12 +5619,12 @@ __metadata: linkType: hard "https-proxy-agent@npm:^7.0.1": - version: 7.0.5 - resolution: "https-proxy-agent@npm:7.0.5" + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" dependencies: - agent-base: ^7.0.2 + agent-base: ^7.1.2 debug: 4 - checksum: 2e1a28960f13b041a50702ee74f240add8e75146a5c37fc98f1960f0496710f6918b3a9fe1e5aba41e50f58e6df48d107edd9c405c5f0d73ac260dabf2210857 + checksum: b882377a120aa0544846172e5db021fa8afbf83fea2a897d397bd2ddd8095ab268c24bc462f40a15f2a8c600bf4aa05ce52927f70038d4014e68aefecfa94e8d languageName: node linkType: hard @@ -5530,6 +5703,13 @@ __metadata: languageName: node linkType: hard +"immediate@npm:^3.2.3": + version: 3.3.0 + resolution: "immediate@npm:3.3.0" + checksum: 634b4305101e2452eba6c07d485bf3e415995e533c94b9c3ffbc37026fa1be34def6e4f2276b0dc2162a3f91628564a4bfb26280278b89d3ee54624e854d2f5f + languageName: node + linkType: hard + "import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0": version: 3.3.0 resolution: "import-fresh@npm:3.3.0" @@ -5706,26 +5886,35 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" +"is-async-function@npm:^2.0.0": + version: 2.0.0 + resolution: "is-async-function@npm:2.0.0" dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + has-tostringtag: ^1.0.0 + checksum: e3471d95e6c014bf37cad8a93f2f4b6aac962178e0a5041e8903147166964fdc1c5c1d2ef87e86d77322c370ca18f2ea004fa7420581fa747bcaf7c223069dbd languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + has-bigints: ^1.0.2 + checksum: ee1544f0e664f253306786ed1dce494b8cf242ef415d6375d8545b4d8816b0f054bd9f948a8988ae2c6325d1c28260dd02978236b2f7b8fb70dfc4838a6c9fa7 languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-boolean-object@npm:^1.2.0": + version: 1.2.0 + resolution: "is-boolean-object@npm:1.2.0" + dependencies: + call-bind: ^1.0.7 + has-tostringtag: ^1.0.2 + checksum: cebc780cc3881dfb0c6c933e308f6a8eccf07ef92a7ea533fb2ee4fb7d704473b476f0b345fea4f2f45fe70937ef568a2f450eb6000d08b99350d87280927ff8 + languageName: node + linkType: hard + +"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac @@ -5761,7 +5950,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": +"is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -5786,6 +5975,15 @@ __metadata: languageName: node linkType: hard +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.0 + resolution: "is-finalizationregistry@npm:1.1.0" + dependencies: + call-bind: ^1.0.7 + checksum: 480818ab86e112a00444410a2fd551a5363bca0c39c7bc66e29df665b1e47c803ba107227c1db86d67264a3f020779fab257061463ce02b01b6abbe5966e33b8 + languageName: node + linkType: hard + "is-fullwidth-code-point@npm:^3.0.0": version: 3.0.0 resolution: "is-fullwidth-code-point@npm:3.0.0" @@ -5793,6 +5991,15 @@ __metadata: languageName: node linkType: hard +"is-generator-function@npm:^1.0.10": + version: 1.0.10 + resolution: "is-generator-function@npm:1.0.10" + dependencies: + has-tostringtag: ^1.0.0 + checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b + languageName: node + linkType: hard + "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -5816,6 +6023,13 @@ __metadata: languageName: node linkType: hard +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.3": version: 2.0.3 resolution: "is-negative-zero@npm:2.0.3" @@ -5823,12 +6037,13 @@ __metadata: languageName: node linkType: hard -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" +"is-number-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-number-object@npm:1.1.0" dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + call-bind: ^1.0.7 + has-tostringtag: ^1.0.2 + checksum: 965f91493e5c02a44bb9c5d8dd4ae40da20bd9bd1cff9cd92e2f2e66a486935a0a01f8a4744eab033c450888f01a4ec3226e1c75bbcff973ce12d06ed79eb17b languageName: node linkType: hard @@ -5877,12 +6092,21 @@ __metadata: linkType: hard "is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" + version: 1.2.0 + resolution: "is-regex@npm:1.2.0" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + call-bind: ^1.0.7 + gopd: ^1.1.0 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: dd2693d71866850d1276815204a2629d28dc1d24bd56b734e57a39f56b777cd87030d57552e7093d91a2ac331d99af9dba49a0a641fa4e4435d40e944d4dde12 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe languageName: node linkType: hard @@ -5918,21 +6142,24 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-string@npm:^1.0.7, is-string@npm:^1.1.0": + version: 1.1.0 + resolution: "is-string@npm:1.1.0" dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + call-bind: ^1.0.7 + has-tostringtag: ^1.0.2 + checksum: 1e330e9fe0984cdf37371f704f9babf9b56d50b1e9d2e6c19b8b78443be3e9771c33309b4aadde9ba2a8870769374538681e01f54113a335dd393c80a72e7d11 languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.0": + version: 1.1.0 + resolution: "is-symbol@npm:1.1.0" dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + call-bind: ^1.0.7 + has-symbols: ^1.0.3 + safe-regex-test: ^1.0.3 + checksum: 3623c934c8e61ddd6ef0927a17eb3da3cb9a9894f2fb8a96d447887d085d43e5d8bb59a8f97e46b54a919fc3f8845df29686672ad693d028570627bc661bcb6c languageName: node linkType: hard @@ -5961,6 +6188,13 @@ __metadata: languageName: node linkType: hard +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d + languageName: node + linkType: hard + "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -5970,6 +6204,16 @@ __metadata: languageName: node linkType: hard +"is-weakset@npm:^2.0.3": + version: 2.0.3 + resolution: "is-weakset@npm:2.0.3" + dependencies: + call-bind: ^1.0.7 + get-intrinsic: ^1.2.4 + checksum: 8b6a20ee9f844613ff8f10962cfee49d981d584525f2357fee0a04dfbcde9fd607ed60cb6dab626dbcc470018ae6392e1ff74c0c1aced2d487271411ad9d85ae + languageName: node + linkType: hard + "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -6342,6 +6586,109 @@ __metadata: languageName: node linkType: hard +"level-codec@npm:^9.0.0": + version: 9.0.2 + resolution: "level-codec@npm:9.0.2" + dependencies: + buffer: ^5.6.0 + checksum: 289003d51b8afcdd24c4d318606abf2bae81975e4b527d7349abfdbacc8fef26711f2f24e2d20da0e1dce0bb216a856c9433ccb9ca25fa78a96aed9f51e506ed + languageName: node + linkType: hard + +"level-concat-iterator@npm:~2.0.0": + version: 2.0.1 + resolution: "level-concat-iterator@npm:2.0.1" + checksum: 562583ef1292215f8e749c402510cb61c4d6fccf4541082b3d21dfa5ecde9fcccfe52bdcb5cfff9d2384e7ce5891f44df9439a6ddb39b0ffe31015600b4a828a + languageName: node + linkType: hard + +"level-errors@npm:^2.0.0, level-errors@npm:~2.0.0": + version: 2.0.1 + resolution: "level-errors@npm:2.0.1" + dependencies: + errno: ~0.1.1 + checksum: aca5d7670e2a40609db8d7743fce289bb5202c0bc13e4a78f81f36a6642e9abc0110f48087d3d3c2c04f023d70d4ee6f2db0e20c63d29b3fda323a67bfff6526 + languageName: node + linkType: hard + +"level-iterator-stream@npm:~4.0.0": + version: 4.0.2 + resolution: "level-iterator-stream@npm:4.0.2" + dependencies: + inherits: ^2.0.4 + readable-stream: ^3.4.0 + xtend: ^4.0.2 + checksum: 239e2c7e62bffb485ed696bcd3b98de7a2bc455d13be4fce175ae3544fe9cda81c2ed93d3e88b61380ae6d28cce02511862d77b86fb2ba5b5cf00471f3c1eccc + languageName: node + linkType: hard + +"level-js@npm:^5.0.0": + version: 5.0.2 + resolution: "level-js@npm:5.0.2" + dependencies: + abstract-leveldown: ~6.2.3 + buffer: ^5.5.0 + inherits: ^2.0.3 + ltgt: ^2.1.2 + checksum: 3c7f75979bb8c042e95a58245b8fe1230bb0f56a11ee418e08156e3eadda371efae6eb7b9bf10bf1e08e0b1b2a25d80c026858ca99ffd49109d6541e3d9d3b37 + languageName: node + linkType: hard + +"level-packager@npm:^5.1.0": + version: 5.1.1 + resolution: "level-packager@npm:5.1.1" + dependencies: + encoding-down: ^6.3.0 + levelup: ^4.3.2 + checksum: befe2aa54f2010a6ecf7ddce392c8dee225e1839205080a2704d75e560e28b01191b345494696196777b70d376e3eaae4c9e7c330cc70d3000839f5b18dd78f2 + languageName: node + linkType: hard + +"level-supports@npm:~1.0.0": + version: 1.0.1 + resolution: "level-supports@npm:1.0.1" + dependencies: + xtend: ^4.0.2 + checksum: 5d6bdb88cf00c3d9adcde970db06a548c72c5a94bf42c72f998b58341a105bfe2ea30d313ce1e84396b98cc9ddbc0a9bd94574955a86e929f73c986e10fc0df0 + languageName: node + linkType: hard + +"level@npm:^6.0.1": + version: 6.0.1 + resolution: "level@npm:6.0.1" + dependencies: + level-js: ^5.0.0 + level-packager: ^5.1.0 + leveldown: ^5.4.0 + checksum: bd4981f94162469a82a6c98d267d814d9d4a7beed4fc3d18fbe3b156f71cf4c6d35b424d14c46d401dbf0cd91425e842950a7cd17ddf7bf57acdab5af4c278da + languageName: node + linkType: hard + +"leveldown@npm:^5.4.0": + version: 5.6.0 + resolution: "leveldown@npm:5.6.0" + dependencies: + abstract-leveldown: ~6.2.1 + napi-macros: ~2.0.0 + node-gyp: latest + node-gyp-build: ~4.1.0 + checksum: 06d4683170d7fc661acd65457e531b42ad66480e9339d3154ba6d0de38ff0503d7d017c1c6eba12732b5488ecd2915c70c8dc3a7d67f4a836f3de34b8a993949 + languageName: node + linkType: hard + +"levelup@npm:^4.3.2": + version: 4.4.0 + resolution: "levelup@npm:4.4.0" + dependencies: + deferred-leveldown: ~5.3.0 + level-errors: ~2.0.0 + level-iterator-stream: ~4.0.0 + level-supports: ~1.0.0 + xtend: ~4.0.0 + checksum: 5a09e34c78cd7c23f9f6cb73563f1ebe8121ffc5f9f5f232242529d4fbdd40e8d1ffb337d2defa0b842334e0dbd4028fbfe7a072eebfe2c4d07174f0aa4aabca + languageName: node + linkType: hard + "levn@npm:^0.4.1": version: 0.4.1 resolution: "levn@npm:0.4.1" @@ -6352,16 +6699,16 @@ __metadata: languageName: node linkType: hard -"lib0@npm:^0.2.85, lib0@npm:^0.2.98": - version: 0.2.98 - resolution: "lib0@npm:0.2.98" +"lib0@npm:^0.2.31, lib0@npm:^0.2.52, lib0@npm:^0.2.85, lib0@npm:^0.2.98": + version: 0.2.99 + resolution: "lib0@npm:0.2.99" dependencies: isomorphic.js: ^0.2.4 bin: 0ecdsa-generate-keypair: bin/0ecdsa-generate-keypair.js 0gentesthtml: bin/gentesthtml.js 0serve: bin/0serve.js - checksum: 8d17060deb4ffb73f825e634e6543c024d27dad589a7ce2e6334af34b36d4441434edabf3716930f6c5e1c32c5f3e867b8c1b922c1cc51b22469f281292e423b + checksum: 240e91bd3098daf310a320f0f662b1532787329a070b7522a1f784358f915eedcd4b57e3c12749f257a4104939f6eb2af3f90311adadc1a01bfc05ca7de71da7 languageName: node linkType: hard @@ -6495,6 +6842,13 @@ __metadata: languageName: node linkType: hard +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: a3f527d22c548f43ae31c861ada88b2637eb48ac6aa3eb56e82d44917971b8aa96fbb37aa60efea674dc4ee8c42074f90f7b1f772e9db375435f6c83a19b3bc6 + languageName: node + linkType: hard + "lodash.escape@npm:^4.0.1": version: 4.0.1 resolution: "lodash.escape@npm:4.0.1" @@ -6581,6 +6935,13 @@ __metadata: languageName: node linkType: hard +"ltgt@npm:^2.1.2": + version: 2.2.1 + resolution: "ltgt@npm:2.2.1" + checksum: 7e3874296f7538bc8087b428ac4208008d7b76916354b34a08818ca7c83958c1df10ec427eeeaad895f6b81e41e24745b18d30f89abcc21d228b94f6961d50a2 + languageName: node + linkType: hard + "make-dir@npm:4.0.0": version: 4.0.0 resolution: "make-dir@npm:4.0.0" @@ -6647,23 +7008,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.1 - resolution: "make-fetch-happen@npm:13.0.1" +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" dependencies: - "@npmcli/agent": ^2.0.0 - cacache: ^18.0.0 + "@npmcli/agent": ^3.0.0 + cacache: ^19.0.1 http-cache-semantics: ^4.1.1 - is-lambda: ^1.0.1 minipass: ^7.0.2 - minipass-fetch: ^3.0.0 + minipass-fetch: ^4.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 - proc-log: ^4.2.0 + negotiator: ^1.0.0 + proc-log: ^5.0.0 promise-retry: ^2.0.1 - ssri: ^10.0.0 - checksum: 5c9fad695579b79488fa100da05777213dd9365222f85e4757630f8dd2a21a79ddd3206c78cfd6f9b37346819681782b67900ac847a57cf04190f52dda5343fd + ssri: ^12.0.0 + checksum: 6fb2fee6da3d98f1953b03d315826b5c5a4ea1f908481afc113782d8027e19f080c85ae998454de4e5f27a681d3ec58d57278f0868d4e0b736f51d396b661691 languageName: node linkType: hard @@ -6682,11 +7042,11 @@ __metadata: linkType: hard "markdown-to-jsx@npm:^7.4.1": - version: 7.7.0 - resolution: "markdown-to-jsx@npm:7.7.0" + version: 7.7.1 + resolution: "markdown-to-jsx@npm:7.7.1" peerDependencies: react: ">= 0.14.0" - checksum: 534f4d688378a94a6c8c2ce5e4b22c1551efea974c2bb7d4ea820d8f2b7956e4979a2b886b3d14227d4cd8af09682b9e7f7f9ce34d39703eb1a981e2337e12ce + checksum: 04e9f456597725db8c86548c316bb955920ed2fc957cdc96fc6c7ed35f7a559b23034108356c2bdd1e32f2b7ba175aec6eb7bd4eee58aae591a444e40c6540da languageName: node linkType: hard @@ -6945,6 +7305,21 @@ __metadata: languageName: node linkType: hard +"minipass-fetch@npm:^4.0.0": + version: 4.0.0 + resolution: "minipass-fetch@npm:4.0.0" + dependencies: + encoding: ^0.1.13 + minipass: ^7.0.3 + minipass-sized: ^1.0.3 + minizlib: ^3.0.1 + dependenciesMeta: + encoding: + optional: true + checksum: 7d59a31011ab9e4d1af6562dd4c4440e425b2baf4c5edbdd2e22fb25a88629e1cdceca39953ff209da504a46021df520f18fd9a519f36efae4750ff724ddadea + languageName: node + linkType: hard + "minipass-flush@npm:^1.0.5": version: 1.0.5 resolution: "minipass-flush@npm:1.0.5" @@ -7005,7 +7380,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": version: 7.1.2 resolution: "minipass@npm:7.1.2" checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 @@ -7022,6 +7397,16 @@ __metadata: languageName: node linkType: hard +"minizlib@npm:^3.0.1": + version: 3.0.1 + resolution: "minizlib@npm:3.0.1" + dependencies: + minipass: ^7.0.4 + rimraf: ^5.0.5 + checksum: da0a53899252380475240c587e52c824f8998d9720982ba5c4693c68e89230718884a209858c156c6e08d51aad35700a3589987e540593c36f6713fe30cd7338 + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -7031,6 +7416,15 @@ __metadata: languageName: node linkType: hard +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 972deb188e8fb55547f1e58d66bd6b4a3623bf0c7137802582602d73e6480c1c2268dcbafbfb1be466e00cc7e56ac514d7fd9334b7cf33e3e2ab547c16f83a8d + languageName: node + linkType: hard + "modify-values@npm:^1.0.1": version: 1.0.1 resolution: "modify-values@npm:1.0.1" @@ -7073,11 +7467,18 @@ __metadata: linkType: hard "nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" + version: 3.3.8 + resolution: "nanoid@npm:3.3.8" bin: nanoid: bin/nanoid.cjs - checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + checksum: dfe0adbc0c77e9655b550c333075f51bb28cfc7568afbf3237249904f9c86c9aaaed1f113f0fddddba75673ee31c758c30c43d4414f014a52a7a626efc5958c9 + languageName: node + linkType: hard + +"napi-macros@npm:~2.0.0": + version: 2.0.0 + resolution: "napi-macros@npm:2.0.0" + checksum: 30384819386977c1f82034757014163fa60ab3c5a538094f778d38788bebb52534966279956f796a92ea771c7f8ae072b975df65de910d051ffbdc927f62320c languageName: node linkType: hard @@ -7095,6 +7496,13 @@ __metadata: languageName: node linkType: hard +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 20ebfe79b2d2e7cf9cbc8239a72662b584f71164096e6e8896c8325055497c96f6b80cd22c258e8a2f2aa382a787795ec3ee8b37b422a302c7d4381b0d5ecfbb + languageName: node + linkType: hard + "neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" @@ -7157,6 +7565,17 @@ __metadata: languageName: node linkType: hard +"node-gyp-build@npm:~4.1.0": + version: 4.1.1 + resolution: "node-gyp-build@npm:4.1.1" + bin: + node-gyp-build: ./bin.js + node-gyp-build-optional: ./optional.js + node-gyp-build-test: ./build-test.js + checksum: 959d42221cc44b92700003efae741652bc4e379e4cf375830ddde03ba43c89f99694bf0883078ed0d4e03ffe2f85decab0572e04068d3900b8538d165dbc17df + languageName: node + linkType: hard + "node-gyp@npm:^9.0.0": version: 9.4.1 resolution: "node-gyp@npm:9.4.1" @@ -7179,22 +7598,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.2.0 - resolution: "node-gyp@npm:10.2.0" + version: 11.0.0 + resolution: "node-gyp@npm:11.0.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 glob: ^10.3.10 graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^4.1.0 + make-fetch-happen: ^14.0.3 + nopt: ^8.0.0 + proc-log: ^5.0.0 semver: ^7.3.5 - tar: ^6.2.1 - which: ^4.0.0 + tar: ^7.4.3 + which: ^5.0.0 bin: node-gyp: bin/node-gyp.js - checksum: 0233759d8c19765f7fdc259a35eb046ad86c3d09e22f7384613ae2b89647dd27fcf833fdf5293d9335041e91f9b1c539494225959cdb312a5c8080b7534b926f + checksum: d7d5055ccc88177f721c7cd4f8f9440c29a0eb40e7b79dba89ef882ec957975dfc1dcb8225e79ab32481a02016eb13bbc051a913ea88d482d3cbdf2131156af4 languageName: node linkType: hard @@ -7206,9 +7625,9 @@ __metadata: linkType: hard "node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 917dbced519f48c6289a44830a0ca6dc944c3ee9243c468ebd8515a41c97c8b2c256edb7f3f750416bc37952cc9608684e6483c7b6c6f39f6bd8d86c52cfe658 languageName: node linkType: hard @@ -7223,14 +7642,14 @@ __metadata: languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.1 - resolution: "nopt@npm:7.2.1" +"nopt@npm:^8.0.0": + version: 8.0.0 + resolution: "nopt@npm:8.0.0" dependencies: abbrev: ^2.0.0 bin: nopt: bin/nopt.js - checksum: 6fa729cc77ce4162cfad8abbc9ba31d4a0ff6850c3af61d59b505653bef4781ec059f8890ecfe93ee8aa0c511093369cca88bfc998101616a2904e715bbbb7c9 + checksum: 2cfc65e7ee38af2e04aea98f054753b0230011c0eeca4ecf131bd7d25984cbbf6f214586e0ae5dfcc2e830bc0bffa5a7fb28ea8d0b306ffd4ae8ea2d814c1ab3 languageName: node linkType: hard @@ -7525,7 +7944,7 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1, object-inspect@npm:^1.13.3": +"object-inspect@npm:^1.13.3": version: 1.13.3 resolution: "object-inspect@npm:1.13.3" checksum: 8c962102117241e18ea403b84d2521f78291b774b03a29ee80a9863621d88265ffd11d0d7e435c4c2cea0dc2a2fbf8bbc92255737a05536590f2df2e8756f297 @@ -7695,6 +8114,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 8c92d533acf82f0d12f7e196edccff773f384098bbb048acdd55a08778ce4fc8889d8f1bde72969487bd96f9c63212698d79744c20bedfce36c5b00b46d369f8 + languageName: node + linkType: hard + "p-pipe@npm:3.1.0": version: 3.1.0 resolution: "p-pipe@npm:3.1.0" @@ -7994,15 +8420,15 @@ __metadata: linkType: hard "postcss-modules-local-by-default@npm:^4.0.5": - version: 4.1.0 - resolution: "postcss-modules-local-by-default@npm:4.1.0" + version: 4.2.0 + resolution: "postcss-modules-local-by-default@npm:4.2.0" dependencies: icss-utils: ^5.0.0 postcss-selector-parser: ^7.0.0 postcss-value-parser: ^4.1.0 peerDependencies: postcss: ^8.1.0 - checksum: 64ac4803c21dd82e227179cf0a8489c645ea99a8c514475da028c9afe5d5b915485d00d8efbe94295d688a23a172965cc15f20d550168d1fed272dbdbbe053f0 + checksum: 720d145453f82ad5f1c1d0ff7386d64722f0812808e4132e573c1a49909745e109fcce3792a0b0cb18770dbeb3d9741867e81c698dc8353a18bc664b7d6d9533 languageName: node linkType: hard @@ -8099,11 +8525,11 @@ __metadata: linkType: hard "prettier@npm:^3.0.0": - version: 3.3.3 - resolution: "prettier@npm:3.3.3" + version: 3.4.2 + resolution: "prettier@npm:3.4.2" bin: prettier: bin/prettier.cjs - checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e + checksum: 061c84513db62d3944c8dc8df36584dad82883ce4e49efcdbedd8703dce5b173c33fd9d2a4e1725d642a3b713c932b55418342eaa347479bc4a9cca114a04cd0 languageName: node linkType: hard @@ -8125,10 +8551,10 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^4.1.0, proc-log@npm:^4.2.0": - version: 4.2.0 - resolution: "proc-log@npm:4.2.0" - checksum: 98f6cd012d54b5334144c5255ecb941ee171744f45fca8b43b58ae5a0c1af07352475f481cadd9848e7f0250376ee584f6aa0951a856ff8f021bdfbff4eb33fc +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: c78b26ecef6d5cce4a7489a1e9923d7b4b1679028c8654aef0463b27f4a90b0946cd598f55799da602895c52feb085ec76381d007ab8dcceebd40b89c2f9dfe0 languageName: node linkType: hard @@ -8197,6 +8623,13 @@ __metadata: languageName: node linkType: hard +"prr@npm:~1.0.1": + version: 1.0.1 + resolution: "prr@npm:1.0.1" + checksum: 3bca2db0479fd38f8c4c9439139b0c42dcaadcc2fbb7bb8e0e6afaa1383457f1d19aea9e5f961d5b080f1cfc05bfa1fe9e45c97a1d3fd6d421950a73d3108381 + languageName: node + linkType: hard + "punycode@npm:^2.1.0, punycode@npm:^2.1.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" @@ -8445,6 +8878,22 @@ __metadata: languageName: node linkType: hard +"reflect.getprototypeof@npm:^1.0.6": + version: 1.0.8 + resolution: "reflect.getprototypeof@npm:1.0.8" + dependencies: + call-bind: ^1.0.8 + define-properties: ^1.2.1 + dunder-proto: ^1.0.0 + es-abstract: ^1.23.5 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.4 + gopd: ^1.2.0 + which-builtin-type: ^1.2.0 + checksum: d7dcbe34bec80f50e2b2f824af83302aae2520863b56b967052ade76402cddcb61933690931d567b973ff7635ae39ff655237ad9cdb2be755190eace95c1768b + languageName: node + linkType: hard + "regexp.prototype.flags@npm:^1.5.3": version: 1.5.3 resolution: "regexp.prototype.flags@npm:1.5.3" @@ -8573,7 +9022,7 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^5.0.1": +"rimraf@npm:^5.0.1, rimraf@npm:^5.0.5": version: 5.0.10 resolution: "rimraf@npm:5.0.10" dependencies: @@ -8699,14 +9148,14 @@ __metadata: linkType: hard "schema-utils@npm:^4.0.0": - version: 4.2.0 - resolution: "schema-utils@npm:4.2.0" + version: 4.3.0 + resolution: "schema-utils@npm:4.3.0" dependencies: "@types/json-schema": ^7.0.9 ajv: ^8.9.0 ajv-formats: ^2.1.1 ajv-keywords: ^5.1.0 - checksum: 26a0463d47683258106e6652e9aeb0823bf0b85843039e068b57da1892f7ae6b6b1094d48e9ed5ba5cbe9f7166469d880858b9d91abe8bd249421eb813850cde + checksum: 3dbd9056727c871818eaf3cabeeb5c9e173ae2b17bbf2a9c7a2e49c220fa1a580e44df651c876aea3b4926cecf080730a39e28202cb63f2b68d99872b49cd37a languageName: node linkType: hard @@ -8755,7 +9204,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -8823,21 +9272,57 @@ __metadata: linkType: hard "shell-quote@npm:^1.6.1": - version: 1.8.1 - resolution: "shell-quote@npm:1.8.1" - checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b + version: 1.8.2 + resolution: "shell-quote@npm:1.8.2" + checksum: 1e97b62ced1c4c5135015978ebf273bed1f425a68cf84163e83fbb0f34b3ff9471e656720dab2b7cbb4ae0f58998e686d17d166c28dfb3662acd009e8bd7faed + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + checksum: 603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + checksum: 42501371cdf71f4ccbbc9c9e2eb00aaaab80a4c1c429d5e8da713fd4d39ef3b8d4a4b37ed4f275798a65260a551a7131fd87fe67e922dba4ac18586d6aab8b06 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + side-channel-map: ^1.0.1 + checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 languageName: node linkType: hard "side-channel@npm:^1.0.4": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" dependencies: - call-bind: ^1.0.7 es-errors: ^1.3.0 - get-intrinsic: ^1.2.4 - object-inspect: ^1.13.1 - checksum: bfc1afc1827d712271453e91b7cd3878ac0efd767495fd4e594c4c2afaa7963b7b510e249572bfd54b0527e66e4a12b61b80c061389e129755f34c493aad9b97 + object-inspect: ^1.13.3 + side-channel-list: ^1.0.0 + side-channel-map: ^1.0.1 + side-channel-weakmap: ^1.0.2 + checksum: bf73d6d6682034603eb8e99c63b50155017ed78a522d27c2acec0388a792c3ede3238b878b953a08157093b85d05797217d270b7666ba1f111345fbe933380ff languageName: node linkType: hard @@ -8907,13 +9392,13 @@ __metadata: linkType: hard "socks-proxy-agent@npm:^8.0.3": - version: 8.0.4 - resolution: "socks-proxy-agent@npm:8.0.4" + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" dependencies: - agent-base: ^7.1.1 + agent-base: ^7.1.2 debug: ^4.3.4 socks: ^2.8.3 - checksum: b2ec5051d85fe49072f9a250c427e0e9571fd09d5db133819192d078fd291276e1f0f50f6dbc04329b207738b1071314cee8bdbb4b12e27de42dbcf1d4233c67 + checksum: b4fbcdb7ad2d6eec445926e255a1fb95c975db0020543fbac8dfa6c47aecc6b3b619b7fb9c60a3f82c9b2969912a5e7e174a056ae4d98cb5322f3524d6036e1d languageName: node linkType: hard @@ -9073,6 +9558,15 @@ __metadata: languageName: node linkType: hard +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" + dependencies: + minipass: ^7.0.3 + checksum: ef4b6b0ae47b4a69896f5f1c4375f953b9435388c053c36d27998bc3d73e046969ccde61ab659e679142971a0b08e50478a1228f62edb994105b280f17900c98 + languageName: node + linkType: hard + "ssri@npm:^9.0.0, ssri@npm:^9.0.1": version: 9.0.1 resolution: "ssri@npm:9.0.1" @@ -9129,13 +9623,14 @@ __metadata: linkType: hard "string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.2 define-properties: ^1.2.1 es-object-atoms: ^1.0.0 - checksum: cc3bd2de08d8968a28787deba9a3cb3f17ca5f9f770c91e7e8fa3e7d47f079bad70fadce16f05dda9f261788be2c6e84a942f618c3bed31e42abc5c1084f8dfd + checksum: cb86f639f41d791a43627784be2175daa9ca3259c7cb83e7a207a729909b74f2ea0ec5d85de5761e6835e5f443e9420c6ff3f63a845378e4a61dd793177bc287 languageName: node linkType: hard @@ -9430,15 +9925,15 @@ __metadata: linkType: hard "table@npm:^6.8.1": - version: 6.8.2 - resolution: "table@npm:6.8.2" + version: 6.9.0 + resolution: "table@npm:6.9.0" dependencies: ajv: ^8.0.1 lodash.truncate: ^4.4.2 slice-ansi: ^4.0.0 string-width: ^4.2.3 strip-ansi: ^6.0.1 - checksum: 61188652f53a980d1759ca460ca8dea5c5322aece3210457e7084882f053c2b6a870041295e08a82cb1d676e31b056406845d94b0abf3c79a4b104777bec413b + checksum: f54a7d1c11cda8c676e1e9aff5e723646905ed4579cca14b3ce12d2b12eac3e18f5dbe2549fe0b79697164858e18961145db4dd0660bbeb0fb4032af0aaf32b4 languageName: node linkType: hard @@ -9476,7 +9971,7 @@ __metadata: languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2, tar@npm:^6.2.1": +"tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.2.1 resolution: "tar@npm:6.2.1" dependencies: @@ -9490,6 +9985,20 @@ __metadata: languageName: node linkType: hard +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" + dependencies: + "@isaacs/fs-minipass": ^4.0.0 + chownr: ^3.0.0 + minipass: ^7.1.2 + minizlib: ^3.0.1 + mkdirp: ^3.0.1 + yallist: ^5.0.0 + checksum: 8485350c0688331c94493031f417df069b778aadb25598abdad51862e007c39d1dd5310702c7be4a6784731a174799d8885d2fde0484269aea205b724d7b2ffa + languageName: node + linkType: hard + "temp-dir@npm:1.0.0": version: 1.0.0 resolution: "temp-dir@npm:1.0.0" @@ -9520,8 +10029,8 @@ __metadata: linkType: hard "terser@npm:^5.26.0": - version: 5.36.0 - resolution: "terser@npm:5.36.0" + version: 5.37.0 + resolution: "terser@npm:5.37.0" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -9529,7 +10038,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: 489afd31901a2b170f7766948a3aa0e25da0acb41e9e35bd9f9b4751dfa2fc846e485f6fb9d34f0839a96af77f675b5fbf0a20c9aa54e0b8d7c219cf0b55e508 + checksum: 70c06a8ce1288ff4370a7e481beb6fc8b22fc4995371479f49df1552aa9cf8e794ace66e1da6e87057eda1745644311213f5043bda9a06cf55421eff68b3ac06 languageName: node linkType: hard @@ -9620,11 +10129,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.0.1": - version: 1.4.0 - resolution: "ts-api-utils@npm:1.4.0" + version: 1.4.3 + resolution: "ts-api-utils@npm:1.4.3" peerDependencies: typescript: ">=4.2.0" - checksum: 477601317dc8a6d961788663ee76984005ed20c70689bd6f807eed2cad258d3731edcc4162d438ce04782ca62a05373ba51e484180fc2a081d8dab2bf693a5af + checksum: ea00dee382d19066b2a3d8929f1089888b05fec797e32e7a7004938eda1dccf2e77274ee2afcd4166f53fab9b8d7ee90ebb225a3183f9ba8817d636f688a148d languageName: node linkType: hard @@ -9747,8 +10256,8 @@ __metadata: linkType: hard "typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" + version: 1.0.3 + resolution: "typed-array-byte-offset@npm:1.0.3" dependencies: available-typed-arrays: ^1.0.7 call-bind: ^1.0.7 @@ -9756,21 +10265,22 @@ __metadata: gopd: ^1.0.1 has-proto: ^1.0.3 is-typed-array: ^1.1.13 - checksum: c8645c8794a621a0adcc142e0e2c57b1823bbfa4d590ad2c76b266aa3823895cf7afb9a893bf6685e18454ab1b0241e1a8d885a2d1340948efa4b56add4b5f67 + reflect.getprototypeof: ^1.0.6 + checksum: 36728daa80d49a9fa51cd3f0f2b037613f4574666fd4473bd37ac123d7f6f81ea68ff45424c1e2673257964e10bedeb3ebfce73532672913ebbe446999912303 languageName: node linkType: hard "typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" dependencies: call-bind: ^1.0.7 for-each: ^0.3.3 gopd: ^1.0.1 - has-proto: ^1.0.3 is-typed-array: ^1.1.13 possible-typed-array-names: ^1.0.0 - checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c + reflect.getprototypeof: ^1.0.6 + checksum: deb1a4ffdb27cd930b02c7030cb3e8e0993084c643208e52696e18ea6dd3953dfc37b939df06ff78170423d353dc8b10d5bae5796f3711c1b3abe52872b3774c languageName: node linkType: hard @@ -9782,12 +10292,12 @@ __metadata: linkType: hard "typescript@npm:>=3 < 6, typescript@npm:^5": - version: 5.6.3 - resolution: "typescript@npm:5.6.3" + version: 5.7.2 + resolution: "typescript@npm:5.7.2" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ba302f8822777ebefb28b554105f3e074466b671e7444ec6b75dadc008a62f46f373d9e57ceced1c433756d06c8b7dc569a7eefdf3a9573122a49205ff99021a + checksum: b55300c4cefee8ee380d14fa9359ccb41ff8b54c719f6bc49b424899d662a5ce62ece390ce769568c7f4d14af844085255e63788740084444eb12ef423b13433 languageName: node linkType: hard @@ -9802,22 +10312,22 @@ __metadata: linkType: hard "typescript@patch:typescript@>=3 < 6#~builtin, typescript@patch:typescript@^5#~builtin": - version: 5.6.3 - resolution: "typescript@patch:typescript@npm%3A5.6.3#~builtin::version=5.6.3&hash=85af82" + version: 5.7.2 + resolution: "typescript@patch:typescript@npm%3A5.7.2#~builtin::version=5.7.2&hash=e012d7" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: ade87bce2363ee963eed0e4ca8a312ea02c81873ebd53609bc3f6dc0a57f6e61ad7e3fb8cbb7f7ab8b5081cbee801b023f7c4823ee70b1c447eae050e6c7622b + checksum: 803430c6da2ba73c25a21880d8d4f08a56d9d2444e6db2ea949ac4abceeece8e4a442b7b9b585db7d8a0b47ebda2060e45fe8ee8b8aca23e27ec1d4844987ee6 languageName: node linkType: hard "typescript@patch:typescript@~5.0.2#~builtin": version: 5.0.4 - resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=85af82" + resolution: "typescript@patch:typescript@npm%3A5.0.4#~builtin::version=5.0.4&hash=b5f058" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: bb309d320c59a26565fb3793dba550576ab861018ff3fd1b7fccabbe46ae4a35546bc45f342c0a0b6f265c801ccdf64ffd68f548f117ceb7f0eac4b805cd52a9 + checksum: d26b6ba97b6d163c55dbdffd9bbb4c211667ebebc743accfeb2c8c0154aace7afd097b51165a72a5bad2cf65a4612259344ff60f8e642362aa1695c760d303ac languageName: node linkType: hard @@ -9852,10 +10362,10 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.8": - version: 6.19.8 - resolution: "undici-types@npm:6.19.8" - checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 +"undici-types@npm:~6.20.0": + version: 6.20.0 + resolution: "undici-types@npm:6.20.0" + checksum: b7bc50f012dc6afbcce56c9fd62d7e86b20a62ff21f12b7b5cbf1973b9578d90f22a9c7fe50e638e96905d33893bf2f9f16d98929c4673c2480de05c6c96ea8b languageName: node linkType: hard @@ -9877,6 +10387,15 @@ __metadata: languageName: node linkType: hard +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" + dependencies: + unique-slug: ^5.0.0 + checksum: 6a62094fcac286b9ec39edbd1f8f64ff92383baa430af303dfed1ffda5e47a08a6b316408554abfddd9730c78b6106bef4ca4d02c1231a735ddd56ced77573df + languageName: node + linkType: hard + "unique-slug@npm:^3.0.0": version: 3.0.0 resolution: "unique-slug@npm:3.0.0" @@ -9895,6 +10414,15 @@ __metadata: languageName: node linkType: hard +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" + dependencies: + imurmurhash: ^0.1.4 + checksum: 222d0322bc7bbf6e45c08967863212398313ef73423f4125e075f893a02405a5ffdbaaf150f7dd1e99f8861348a486dd079186d27c5f2c60e465b7dcbb1d3e5b + languageName: node + linkType: hard + "universal-user-agent@npm:^6.0.0": version: 6.0.1 resolution: "universal-user-agent@npm:6.0.1" @@ -10195,14 +10723,14 @@ __metadata: linkType: hard "webpack@npm:^5.76.1": - version: 5.96.1 - resolution: "webpack@npm:5.96.1" + version: 5.97.1 + resolution: "webpack@npm:5.97.1" dependencies: "@types/eslint-scope": ^3.7.7 "@types/estree": ^1.0.6 - "@webassemblyjs/ast": ^1.12.1 - "@webassemblyjs/wasm-edit": ^1.12.1 - "@webassemblyjs/wasm-parser": ^1.12.1 + "@webassemblyjs/ast": ^1.14.1 + "@webassemblyjs/wasm-edit": ^1.14.1 + "@webassemblyjs/wasm-parser": ^1.14.1 acorn: ^8.14.0 browserslist: ^4.24.0 chrome-trace-event: ^1.0.2 @@ -10226,7 +10754,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: ec3662f64895fae408440a997f87299e374c9d9f911f77b880bab46402f52221c7836bdf101fc2556338d07fc7cb86da50661f944eb1d1041a8361a5b9247876 + checksum: 649065e2258b495ae41a4088be804b4be2ec07d280aa514ebef43da79caf96fa973d26a08826c3902b5676a098d9b37c589f16be7b4da17b68b08b6c76441196 languageName: node linkType: hard @@ -10259,28 +10787,61 @@ __metadata: linkType: hard "which-boxed-primitive@npm:^1.0.2": + version: 1.1.0 + resolution: "which-boxed-primitive@npm:1.1.0" + dependencies: + is-bigint: ^1.1.0 + is-boolean-object: ^1.2.0 + is-number-object: ^1.1.0 + is-string: ^1.1.0 + is-symbol: ^1.1.0 + checksum: 49ebec9693ed21ee8183b9e353ee7134a03722776c84624019964124885a4a940f469af3d1508ad83022a68cc515aecbef70fb1256ace57a871c43d24d050304 + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.0": + version: 1.2.0 + resolution: "which-builtin-type@npm:1.2.0" + dependencies: + call-bind: ^1.0.7 + function.prototype.name: ^1.1.6 + has-tostringtag: ^1.0.2 + is-async-function: ^2.0.0 + is-date-object: ^1.0.5 + is-finalizationregistry: ^1.1.0 + is-generator-function: ^1.0.10 + is-regex: ^1.1.4 + is-weakref: ^1.0.2 + isarray: ^2.0.5 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.2 + which-typed-array: ^1.1.15 + checksum: 6d40ecdf33a28c3fdeab13e7e3b4289fb51f7ebd0983e628d50fa42e113d8be1bc7dd0e6eb23c6b6a0c2c0c7667763eca3a2af1f6d768e48efba8073870eb568 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" + resolution: "which-collection@npm:1.0.2" dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + is-map: ^2.0.3 + is-set: ^2.0.3 + is-weakmap: ^2.0.2 + is-weakset: ^2.0.3 + checksum: c51821a331624c8197916598a738fc5aeb9a857f1e00d89f5e4c03dc7c60b4032822b8ec5696d28268bb83326456a8b8216344fb84270d18ff1d7628051879d9 languageName: node linkType: hard "which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" + version: 1.1.16 + resolution: "which-typed-array@npm:1.1.16" dependencies: available-typed-arrays: ^1.0.7 call-bind: ^1.0.7 for-each: ^0.3.3 gopd: ^1.0.1 has-tostringtag: ^1.0.2 - checksum: 65227dcbfadf5677aacc43ec84356d17b5500cb8b8753059bb4397de5cd0c2de681d24e1a7bd575633f976a95f88233abfd6549c2105ef4ebd58af8aa1807c75 + checksum: 903d398ec234d608011e1df09af6c004e66965bb24d5e1a82856cba0495fa6389ae393d1c9d5411498a9cba8e61b2e39a8e8be7b3005cbeadd317f772b1bdaef languageName: node linkType: hard @@ -10317,14 +10878,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" dependencies: isexe: ^3.1.1 bin: node-which: bin/which.js - checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 + checksum: 6ec99e89ba32c7e748b8a3144e64bfc74aa63e2b2eacbb61a0060ad0b961eb1a632b08fb1de067ed59b002cec3e21de18299216ebf2325ef0f78e0f121e14e90 languageName: node linkType: hard @@ -10456,6 +11017,15 @@ __metadata: languageName: node linkType: hard +"ws@npm:^6.2.1": + version: 6.2.3 + resolution: "ws@npm:6.2.3" + dependencies: + async-limiter: ~1.0.0 + checksum: bbc96ff5628832d80669a88fd117487bf070492dfaa50df77fa442a2b119792e772f4365521e0a8e025c0d51173c54fa91adab165c11b8e0674685fdd36844a5 + languageName: node + linkType: hard + "ws@npm:^8.11.0": version: 8.18.0 resolution: "ws@npm:8.18.0" @@ -10471,13 +11041,25 @@ __metadata: languageName: node linkType: hard -"xtend@npm:~4.0.1": +"xtend@npm:^4.0.2, xtend@npm:~4.0.0, xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a languageName: node linkType: hard +"y-leveldb@npm:^0.1.0": + version: 0.1.2 + resolution: "y-leveldb@npm:0.1.2" + dependencies: + level: ^6.0.1 + lib0: ^0.2.31 + peerDependencies: + yjs: ^13.0.0 + checksum: 38e3293cfc5e754ba50af4c6bd03a96efde34c92809baf504b38cb4f45959187f896fe6971fa6a91823763e178807aaa14e190d1f7bea1b3a1e9b7265bb88b6d + languageName: node + linkType: hard + "y-protocols@npm:^1.0.5": version: 1.0.6 resolution: "y-protocols@npm:1.0.6" @@ -10489,6 +11071,29 @@ __metadata: languageName: node linkType: hard +"y-websocket@npm:^1.3.15": + version: 1.5.4 + resolution: "y-websocket@npm:1.5.4" + dependencies: + lib0: ^0.2.52 + lodash.debounce: ^4.0.8 + ws: ^6.2.1 + y-leveldb: ^0.1.0 + y-protocols: ^1.0.5 + peerDependencies: + yjs: ^13.5.6 + dependenciesMeta: + ws: + optional: true + y-leveldb: + optional: true + bin: + y-websocket: bin/server.js + y-websocket-server: bin/server.js + checksum: 4ab3f99cf5f3b2bb3dd12603bc85e7fc338c64636b0d2b654af16662b5600bdfa6fcaaeb4258e02b9a0dc7d90441728dc07874cf5f7eeeb837c27df53e72670f + languageName: node + linkType: hard + "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8" @@ -10503,6 +11108,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: eba51182400b9f35b017daa7f419f434424410691bbc5de4f4240cc830fdef906b504424992700dc047f16b4d99100a6f8b8b11175c193f38008e9c96322b6a5 + languageName: node + linkType: hard + "yargs-parser@npm:20.2.4": version: 20.2.4 resolution: "yargs-parser@npm:20.2.4"