diff --git a/package.json b/package.json index 76d3abf..480f949 100644 --- a/package.json +++ b/package.json @@ -73,6 +73,7 @@ "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^5.0.0", "jest": "^29.2.0", + "jupyterlab-unfold": "0.3.0", "mkdirp": "^1.0.3", "npm-run-all": "^4.1.5", "prettier": "^3.0.0", diff --git a/schema/widget.json b/schema/widget.json index c450b97..c530c8c 100644 --- a/schema/widget.json +++ b/schema/widget.json @@ -1,6 +1,6 @@ { "jupyter.lab.toolbars": { - "FileBrowser": [ + "DrivePanel": [ { "name": "new-directory", "command": "filebrowser:create-new-directory", @@ -19,6 +19,67 @@ "title": "'@jupyter/drives", "description": "jupyter-drives settings.", "type": "object", - "properties": {}, - "additionalProperties": false + "jupyter.lab.transform": true, + "properties": { + "toolbar": { + "title": "File browser toolbar items", + "description": "Note: To disable a toolbar item,\ncopy it to User Preferences and add the\n\"disabled\" key. The following example will disable the uploader button:\n{\n \"toolbar\": [\n {\n \"name\": \"uploader\",\n \"disabled\": true\n }\n ]\n}\n\nToolbar description:", + "items": { + "$ref": "#/definitions/toolbarItem" + }, + "type": "array", + "default": [] + } + }, + "additionalProperties": false, + "definitions": { + "toolbarItem": { + "properties": { + "name": { + "title": "Unique name", + "type": "string" + }, + "args": { + "title": "Command arguments", + "type": "object" + }, + "command": { + "title": "Command id", + "type": "string", + "default": "" + }, + "disabled": { + "title": "Whether the item is ignored or not", + "type": "boolean", + "default": false + }, + "icon": { + "title": "Item icon id", + "description": "If defined, it will override the command icon", + "type": "string" + }, + "label": { + "title": "Item label", + "description": "If defined, it will override the command label", + "type": "string" + }, + "caption": { + "title": "Item caption", + "description": "If defined, it will override the command caption", + "type": "string" + }, + "type": { + "title": "Item type", + "type": "string", + "enum": ["command", "spacer"] + }, + "rank": { + "title": "Item rank", + "type": "number", + "minimum": 0, + "default": 50 + } + } + } + } } diff --git a/src/contents.ts b/src/contents.ts new file mode 100644 index 0000000..d483aff --- /dev/null +++ b/src/contents.ts @@ -0,0 +1,819 @@ +// Copyright (c) Jupyter Development Team. +// Distributed under the terms of the Modified BSD License. + +import { Signal, ISignal } from '@lumino/signaling'; +import { Contents, ServerConnection } from '@jupyterlab/services'; +//import { URLExt } from '@jupyterlab/coreutils'; + +/* + * The url for the default drive service. + */ +//const SERVICE_DRIVE_URL = 'api/contents'; + +let data: Contents.IModel = { + name: '', + path: '', + last_modified: '', + created: '', + content: null, + format: null, + mimetype: '', + size: 0, + writable: true, + type: '' +}; + +const drive1Contents: Contents.IModel = { + name: 'Drive1', + path: 'Drive1', + last_modified: '2023-10-31T12:39:42.832781Z', + created: '2023-10-31T12:39:42.832781Z', + content: [ + { + name: 'voila2.ipynb', + path: 'Drive1/voila2.ipynb', + last_modified: '2022-10-12T21:33:04.798185Z', + created: '2022-11-09T12:37:21.020396Z', + content: null, + format: null, + mimetype: null, + size: 5377, + writable: true, + type: 'notebook' + }, + { + name: 'Untitled.ipynb', + path: 'Drive1/Untitled.ipynb', + last_modified: '2023-10-25T08:20:09.395167Z', + created: '2023-10-25T08:20:09.395167Z', + content: null, + format: null, + mimetype: null, + size: 4772, + writable: true, + type: 'notebook' + }, + { + name: 'voila.ipynb', + path: 'Drive1/voila.ipynb', + last_modified: '2023-10-31T09:43:05.235448Z', + created: '2023-10-31T09:43:05.235448Z', + content: null, + format: null, + mimetype: null, + size: 2627, + writable: true, + type: 'notebook' + }, + { + name: 'b.ipynb', + path: 'Drive1/b.ipynb', + last_modified: '2023-10-26T15:21:06.152419Z', + created: '2023-10-26T15:21:06.152419Z', + content: null, + format: null, + mimetype: null, + size: 1198, + writable: true, + type: 'notebook' + }, + { + name: '_output', + path: '_output', + last_modified: '2023-10-31T12:39:41.222780Z', + created: '2023-10-31T12:39:41.222780Z', + content: null, + format: null, + mimetype: null, + size: null, + writable: true, + type: 'directory' + }, + { + name: 'a.ipynb', + path: 'Drive1/a.ipynb', + last_modified: '2023-10-25T10:07:09.141206Z', + created: '2023-10-25T10:07:09.141206Z', + content: null, + format: null, + mimetype: null, + size: 8014, + writable: true, + type: 'notebook' + }, + { + name: 'environment.yml', + path: 'Drive1/environment.yml', + last_modified: '2023-10-31T09:33:57.415583Z', + created: '2023-10-31T09:33:57.415583Z', + content: null, + format: null, + mimetype: null, + size: 153, + writable: true, + type: 'file' + }, + { + name: 'untitled.txt', + path: 'Drive1/untitled.txt', + last_modified: '2023-10-25T08:20:09.395167Z', + created: '2023-10-25T08:20:09.395167Z', + content: null, + format: null, + mimetype: 'text/plain', + size: 4772, + writable: true, + type: 'txt' + }, + { + name: 'untitled1.txt', + path: 'Drive1/untitled1.txt', + last_modified: '2023-10-25T08:20:09.395167Z', + created: '2023-10-25T08:20:09.395167Z', + content: null, + format: null, + mimetype: 'text/plain', + size: 4772, + writable: true, + type: 'txt' + }, + { + name: 'Untitled Folder', + path: 'Drive1/Untitled Folder', + last_modified: '2023-10-25T08:20:09.395167Z', + created: '2023-10-25T08:20:09.395167Z', + content: [], + format: null, + mimetype: '', + size: 0, + writable: true, + type: 'directory' + } + ], + + format: 'json', + mimetype: '', + size: undefined, + writable: true, + type: 'directory' +}; + +export class Drive implements Contents.IDrive { + /** + * Construct a new drive object. + * + * @param options - The options used to initialize the object. + */ + constructor(options: Drive.IOptions = {}) { + this._serverSettings = ServerConnection.makeSettings(); + //this._apiEndpoint = options.apiEndpoint ?? SERVICE_DRIVE_URL; + } + /** + * The Drive base URL + */ + get baseUrl(): string { + return this._baseUrl; + } + + /** + * The Drive base URL is set by the settingsRegistry change hook + */ + set baseUrl(url: string) { + this._baseUrl = url; + } + /** + * The Drive name getter + */ + get name(): string { + return this._name; + } + + /** + * The Drive name setter */ + set name(name: string) { + this._name = name; + } + + /** + * The Drive provider getter + */ + get provider(): string { + return this._provider; + } + + /** + * The Drive provider setter */ + set provider(name: string) { + this._provider = name; + } + + /** + * The Drive status getter (if it is active or not) + */ + get status(): string { + return this._status; + } + + /** + * The Drive status setter */ + set status(status: string) { + this._status = status; + } + + /** + * The Drive region getter + */ + get region(): string { + return this._region; + } + + /** + * The Drive region setter */ + set region(region: string) { + this._region = region; + } + + /** + * The Drive creationDate getter + */ + get creationDate(): string { + return this._creationDate; + } + + /** + * The Drive region setter */ + set creationDate(date: string) { + this._creationDate = date; + } + + /** + * Settings for the notebook server. + */ + get serverSettings(): ServerConnection.ISettings { + return this._serverSettings; + } + + /** + * A signal emitted when a file operation takes place. + */ + get fileChanged(): ISignal { + return this._fileChanged; + } + + /** + * Test whether the manager has been disposed. + */ + get isDisposed(): boolean { + return this._isDisposed; + } + + /** + * A signal emitted when the drive is disposed. + */ + get disposed(): ISignal { + return this._disposed; + } + + /** + * Dispose of the resources held by the manager. + */ + dispose(): void { + if (this.isDisposed) { + return; + } + this._isDisposed = true; + this._disposed.emit(); + Signal.clearData(this); + } + + /** + * Get an encoded download url given a file path. + * + * @param path - An absolute POSIX file path on the server. + * + * #### Notes + * It is expected that the path contains no relative paths, + * use [[ContentsManager.getAbsolutePath]] to get an absolute + * path if necessary. + */ + getDownloadUrl(path: string): Promise { + // Parse the path into user/repo/path + return Promise.reject('Empty getDownloadUrl method'); + } + + /** + * Get a file or directory. + * + * @param localPath: The path to the file. + * + * @param options: The options used to fetch the file. + * + * @returns A promise which resolves with the file content. + * + * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + */ + async get( + path: string, + options?: Contents.IFetchOptions + ): Promise { + /* + let url = this._getUrl(localPath); + if (options) { + // The notebook type cannot take an format option. + if (options.type === 'notebook') { + delete options['format']; + } + const content = options.content ? '1' : '0'; + const params: PartialJSONObject = { ...options, content }; + url += URLExt.objectToQueryString(params); + } + + const settings = this.serverSettings; + const response = await ServerConnection.makeRequest(url, {}, settings); + if (response.status !== 200) { + const err = await ServerConnection.ResponseError.create(response); + throw err; + } + const data = await response.json();*/ + + const data = drive1Contents; + //Contents.validateContentsModel(data); + return data; + } + + /** + * Create a new untitled file or directory in the specified directory path. + * + * @param options: The options used to create the file. + * + * @returns A promise which resolves with the created file content when the + * file is created. + */ + + async newUntitled( + options: Contents.ICreateOptions = {} + ): Promise { + /*let body = '{}'; + if (options) { + if (options.ext) { + options.ext = Private.normalizeExtension(options.ext); + } + body = JSON.stringify(options); + } + + const settings = this.serverSettings; + const url = this._getUrl(options.path ?? ''); + const init = { + method: 'POST', + body + }; + const response = await ServerConnection.makeRequest(url, init, settings); + if (response.status !== 201) { + const err = await ServerConnection.ResponseError.create(response); + throw err; + } + const data = await response.json();*/ + + if (options.type !== undefined) { + if (options.type !== 'directory') { + const name = this.incrementUntitledName(drive1Contents, options); + data = { + name: name, + path: options.path + '/' + name, + last_modified: '2023-12-06T10:37:42.089566Z', + created: '2023-12-06T10:37:42.089566Z', + content: null, + format: null, + mimetype: '', + size: 0, + writable: true, + type: options.type + }; + } else { + const name = this.incrementUntitledName(drive1Contents, options); + data = { + name: name, + path: options.path + '/' + name, + last_modified: '2023-12-06T10:37:42.089566Z', + created: '2023-12-06T10:37:42.089566Z', + content: [], + format: 'json', + mimetype: '', + size: undefined, + writable: true, + type: options.type + }; + } + } else { + console.warn('Type of new element is undefined'); + } + + drive1Contents.content.push(data); + + Contents.validateContentsModel(data); + this._fileChanged.emit({ + type: 'new', + oldValue: null, + newValue: data + }); + + return data; + } + + incrementUntitledName( + contents: Contents.IModel, + options: Contents.ICreateOptions + ): string { + const content: Array = contents.content; + let name: string = ''; + let countText = 0; + let countDir = 0; + let countNotebook = 0; + + content.forEach(item => { + if (options.ext !== undefined) { + if (item.name.includes('untitled') && item.name.includes('.txt')) { + countText = countText + 1; + } else if ( + item.name.includes('Untitled') && + item.name.includes('.ipynb') + ) { + countNotebook = countNotebook + 1; + } + } else if (item.name.includes('Untitled Folder')) { + countDir = countDir + 1; + } + }); + + if (options.ext === 'txt') { + if (countText === 0) { + name = 'untitled' + '.' + options.ext; + } else { + name = 'untitled' + countText + '.' + options.ext; + } + } + if (options.ext === 'ipynb') { + if (countNotebook === 0) { + name = 'Untitled' + '.' + options.ext; + } else { + name = 'Untitled' + countNotebook + '.' + options.ext; + } + } else if (options.type === 'directory') { + if (countDir === 0) { + name = 'Untitled Folder'; + } else { + name = 'Untitled Folder ' + countDir; + } + } + return name; + } + + /** + * Delete a file. + * + * @param path - The path to the file. + * + * @returns A promise which resolves when the file is deleted. + */ + /*delete(path: string): Promise { + return Promise.reject('Repository is read only'); + }*/ + + async delete(localPath: string): Promise { + /*const url = this._getUrl(localPath); + const settings = this.serverSettings; + const init = { method: 'DELETE' }; + const response = await ServerConnection.makeRequest(url, init, settings); + // TODO: update IPEP27 to specify errors more precisely, so + // that error types can be detected here with certainty. + if (response.status !== 204) { + const err = await ServerConnection.ResponseError.create(response); + throw err; + }*/ + + const content: Array = drive1Contents.content; + + content.forEach(item => { + if (item.path === localPath) { + const index = content.indexOf(item); + if (index !== -1) { + content.splice(index, 1); + } + } + }); + + this._fileChanged.emit({ + type: 'delete', + oldValue: { path: localPath }, + newValue: null + }); + } + + /** + * Rename a file or directory. + * + * @param oldLocalPath - The original file path. + * + * @param newLocalPath - The new file path. + * + * @returns A promise which resolves with the new file contents model when + * the file is renamed. + * + * #### Notes + * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + */ + async rename( + oldLocalPath: string, + newLocalPath: string, + options: Contents.ICreateOptions = {} + ): Promise { + /*const settings = this.serverSettings; + const url = this._getUrl(oldLocalPath); + const init = { + method: 'PATCH', + body: JSON.stringify({ path: newLocalPath }) + }; + const response = await ServerConnection.makeRequest(url, init, settings); + if (response.status !== 200) { + const err = await ServerConnection.ResponseError.create(response); + throw err; + } + const data = await response.json();*/ + + const content: Array = drive1Contents.content; + content.forEach(item => { + if (item.name === oldLocalPath) { + const index = content.indexOf(item); + const oldData = content[index]; + const { ...newData } = oldData; + newData.name = newLocalPath; + newData.path = oldData.path.replace(oldData.name, newData.name); + content.splice(index, 1); + content.push(newData); + } + }); + this._fileChanged.emit({ + type: 'rename', + oldValue: { path: oldLocalPath }, + newValue: { path: newLocalPath } + }); + Contents.validateContentsModel(data); + return data; + } + /** + * Save a file. + * + * @param localPath - The desired file path. + * + * @param options - Optional overrides to the model. + * + * @returns A promise which resolves with the file content model when the + * file is saved. + * + * #### Notes + * Ensure that `model.content` is populated for the file. + * + * Uses the [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents) and validates the response model. + */ + async save( + localPath: string, + options: Partial = {} + ): Promise { + /*const settings = this.serverSettings; + const url = this._getUrl(localPath); + const init = { + method: 'PUT', + body: JSON.stringify(options) + }; + const response = await ServerConnection.makeRequest(url, init, settings); + // will return 200 for an existing file and 201 for a new file + if (response.status !== 200 && response.status !== 201) { + const err = await ServerConnection.ResponseError.create(response); + throw err; + } + const data = await response.json();*/ + + Contents.validateContentsModel(data); + this._fileChanged.emit({ + type: 'save', + oldValue: null, + newValue: data + }); + return data; + } + + /** + * Copy a file into a given directory. + * + * @param path - The original file path. + * + * @param toDir - The destination directory path. + * + * @returns A promise which resolves with the new contents model when the + * file is copied. + */ + + incrementCopyName(contents: Contents.IModel, copiedItemPath: string): string { + const content: Array = contents.content; + let name: string = ''; + let countText = 0; + let countDir = 0; + let countNotebook = 0; + let ext = undefined; + const list1 = copiedItemPath.split('/'); + const copiedItemName = list1[list1.length - 1]; + + const list2 = copiedItemName.split('.'); + let rootName = list2[0]; + + content.forEach(item => { + if (item.name.includes(rootName) && item.name.includes('.txt')) { + ext = '.txt'; + if (rootName.includes('-Copy')) { + const list3 = rootName.split('-Copy'); + countText = parseInt(list3[1]) + 1; + rootName = list3[0]; + } else { + countText = countText + 1; + } + } + if (item.name.includes(rootName) && item.name.includes('.ipynb')) { + ext = '.ipynb'; + if (rootName.includes('-Copy')) { + const list3 = rootName.split('-Copy'); + countNotebook = parseInt(list3[1]) + 1; + rootName = list3[0]; + } else { + countNotebook = countNotebook + 1; + } + } else if (item.name.includes(rootName)) { + if (rootName.includes('-Copy')) { + const list3 = rootName.split('-Copy'); + countDir = parseInt(list3[1]) + 1; + rootName = list3[0]; + } else { + countDir = countDir + 1; + } + } + }); + + if (ext === '.txt') { + name = rootName + '-Copy' + countText + ext; + } + if (ext === 'ipynb') { + name = rootName + '-Copy' + countText + ext; + } else if (ext === undefined) { + name = rootName + '-Copy' + countDir; + } + + return name; + } + async copy( + fromFile: string, + toDir: string, + options: Contents.ICreateOptions = {} + ): Promise { + /*const settings = this.serverSettings; + const url = this._getUrl(toDir); + const init = { + method: 'POST', + body: JSON.stringify({ copy_from: fromFile }) + }; + const response = await ServerConnection.makeRequest(url, init, settings); + if (response.status !== 201) { + const err = await ServerConnection.ResponseError.create(response); + throw err; + } + const data = await response.json();*/ + + const content: Array = drive1Contents.content; + content.forEach(item => { + if (item.path === fromFile) { + const index = content.indexOf(item); + const oldData = content[index]; + const { ...newData } = oldData; + newData.name = this.incrementCopyName(drive1Contents, fromFile); + newData.path = oldData.path.replace(oldData.name, newData.name); + content.push(newData); + } + }); + + this._fileChanged.emit({ + type: 'new', + oldValue: null, + newValue: data + }); + Contents.validateContentsModel(data); + return data; + } + + /** + * Create a checkpoint for a file. + * + * @param path - The path of the file. + * + * @returns A promise which resolves with the new checkpoint model when the + * checkpoint is created. + */ + createCheckpoint(path: string): Promise { + return Promise.reject('Repository is read only'); + } + + /** + * List available checkpoints for a file. + * + * @param path - The path of the file. + * + * @returns A promise which resolves with a list of checkpoint models for + * the file. + */ + listCheckpoints(path: string): Promise { + return Promise.resolve([]); + } + + /** + * Restore a file to a known checkpoint state. + * + * @param path - The path of the file. + * + * @param checkpointID - The id of the checkpoint to restore. + * + * @returns A promise which resolves when the checkpoint is restored. + */ + restoreCheckpoint(path: string, checkpointID: string): Promise { + return Promise.reject('Repository is read only'); + } + + /** + * Delete a checkpoint for a file. + * + * @param path - The path of the file. + * + * @param checkpointID - The id of the checkpoint to delete. + * + * @returns A promise which resolves when the checkpoint is deleted. + */ + deleteCheckpoint(path: string, checkpointID: string): Promise { + return Promise.reject('Read only'); + } + + /** + * Get a REST url for a file given a path. + */ + /*private _getUrl(...args: string[]): string { + const parts = args.map(path => URLExt.encodeParts(path)); + const baseUrl = this.serverSettings.baseUrl; + return URLExt.join(baseUrl, this._apiEndpoint, ...parts); + }*/ + + // private _apiEndpoint: string; + private _serverSettings: ServerConnection.ISettings; + private _name: string = ''; + private _provider: string = ''; + private _baseUrl: string = ''; + private _status: string = 'active' || 'inactive'; + private _region: string = ''; + private _creationDate: string = ''; + private _fileChanged = new Signal(this); + private _isDisposed: boolean = false; + private _disposed = new Signal(this); +} + +export namespace Drive { + /** + * The options used to initialize a `Drive`. + */ + export interface IOptions { + /** + * The name for the `Drive`, which is used in file + * paths to disambiguate it from other drives. + */ + name?: string; + + /** + * The server settings for the server. + */ + serverSettings?: ServerConnection.ISettings; + + /** + * A REST endpoint for drive requests. + * If not given, defaults to the Jupyter + * REST API given by [Jupyter Notebook API](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/jupyter-server/jupyter_server/main/jupyter_server/services/api/api.yaml#!/contents). + */ + apiEndpoint?: string; + } +} + +/*namespace Private { + /** + * Normalize a file extension to be of the type `'.foo'`. + * + * Adds a leading dot if not present and converts to lower case. + */ +/*export function normalizeExtension(extension: string): string { + if (extension.length > 0 && extension.indexOf('.') !== 0) { + extension = `.${extension}`; + } + return extension; + } +}*/ diff --git a/src/drivelistmanager.tsx b/src/drivelistmanager.tsx index 66258c3..05271ad 100644 --- a/src/drivelistmanager.tsx +++ b/src/drivelistmanager.tsx @@ -1,4 +1,5 @@ import * as React from 'react'; +//import { requestAPI } from './handler'; import { VDomModel, VDomRenderer } from '@jupyterlab/ui-components'; import { Button, @@ -8,15 +9,16 @@ import { Search } from '@jupyter/react-components'; import { useState } from 'react'; +import { Drive } from './contents'; +import { DocumentRegistry } from '@jupyterlab/docregistry'; +//import { SidePanel } from '@jupyterlab/ui-components'; +//import { FileBrowser } from '@jupyterlab/filebrowser'; +//import { ILayoutRestorer, JupyterFrontEnd } from '@jupyterlab/application'; interface IProps { model: DriveListModel; + docRegistry: DocumentRegistry; } -export interface IDrive { - name: string; - url: string; -} - export interface IDriveInputProps { isName: boolean; value: string; @@ -43,6 +45,7 @@ export function DriveInputComponent(props: IDriveInputProps) { ); } + interface ISearchListProps { isName: boolean; value: string; @@ -83,7 +86,7 @@ export function DriveSearchListComponent(props: ISearchListProps) { ); } interface IDriveDataGridProps { - drives: IDrive[]; + drives: Drive[]; } export function DriveDataGridComponent(props: IDriveDataGridProps) { @@ -105,7 +108,7 @@ export function DriveDataGridComponent(props: IDriveDataGridProps) { {item.name} - {item.url} + {item.baseUrl} ))} @@ -129,7 +132,7 @@ export function DriveListManagerComponent(props: IProps) { } const [nameFilteredList, setNameFilteredList] = useState(nameList); - const isDriveAlreadySelected = (pickedDrive: IDrive, driveList: IDrive[]) => { + const isDriveAlreadySelected = (pickedDrive: Drive, driveList: Drive[]) => { const isbyNameIncluded: boolean[] = []; const isbyUrlIncluded: boolean[] = []; let isIncluded: boolean = false; @@ -139,7 +142,7 @@ export function DriveListManagerComponent(props: IProps) { } else { isbyNameIncluded.push(false); } - if (pickedDrive.url !== '' && pickedDrive.url === item.url) { + if (pickedDrive.baseUrl !== '' && pickedDrive.baseUrl === item.baseUrl) { isbyUrlIncluded.push(true); } else { isbyUrlIncluded.push(false); @@ -155,28 +158,41 @@ export function DriveListManagerComponent(props: IProps) { const updateSelectedDrives = (item: string, isName: boolean) => { updatedSelectedDrives = [...props.model.selectedDrives]; - let pickedDrive: IDrive; - if (isName) { - pickedDrive = { name: item, url: '' }; - } else { - if (item !== driveUrl) { - setDriveUrl(item); + let pickedDrive = new Drive(); + + props.model.availableDrives.forEach(drive => { + if (isName) { + if (item === drive.name) { + pickedDrive = drive; + } + } else { + if (item !== driveUrl) { + setDriveUrl(item); + } + pickedDrive.baseUrl = driveUrl; } - pickedDrive = { name: '', url: driveUrl }; - } + }); - const checkDrive = isDriveAlreadySelected( - pickedDrive, - updatedSelectedDrives - ); - if (checkDrive === false) { - updatedSelectedDrives.push(pickedDrive); + if (pickedDrive.status === 'active') { + if ( + isDriveAlreadySelected(pickedDrive, updatedSelectedDrives) === false + ) { + updatedSelectedDrives.push(pickedDrive); + console.log(`Drive filebrowser is added for ${pickedDrive.name} drive`); + } else { + console.warn( + `There is already a drive filebrowser for ${pickedDrive.name} drive` + ); + } } else { - console.log('The selected drive is already in the list'); + console.warn( + `The selected drive ${pickedDrive.name} is inactive and cannot be mounted` + ); } setSelectedDrives(updatedSelectedDrives); props.model.setSelectedDrives(updatedSelectedDrives); + props.model.stateChanged.emit(); }; const getValue = (event: any) => { @@ -242,30 +258,35 @@ export function DriveListManagerComponent(props: IProps) { } export class DriveListModel extends VDomModel { - public availableDrives: IDrive[]; - public selectedDrives: IDrive[]; + public availableDrives: Drive[]; + public selectedDrives: Drive[]; - constructor(availableDrives: IDrive[], selectedDrives: IDrive[]) { + constructor(availableDrives: Drive[], selectedDrives: Drive[]) { super(); this.availableDrives = availableDrives; this.selectedDrives = selectedDrives; } - setSelectedDrives(selectedDrives: IDrive[]) { + setSelectedDrives(selectedDrives: Drive[]) { this.selectedDrives = selectedDrives; } } export class DriveListView extends VDomRenderer { - constructor(model: DriveListModel) { + constructor(model: DriveListModel, docRegistry: DocumentRegistry) { super(model); this.model = model; + this.docRegistry = docRegistry; } render() { return ( <> - + ); } + private docRegistry: DocumentRegistry; } diff --git a/src/index.ts b/src/index.ts index 7402dcd..4009e97 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,133 +1,279 @@ import { + ILayoutRestorer, JupyterFrontEnd, JupyterFrontEndPlugin } from '@jupyterlab/application'; -import { IFileBrowserFactory } from '@jupyterlab/filebrowser'; import { ITranslator } from '@jupyterlab/translation'; -import { addJupyterLabThemeChangeListener } from '@jupyter/web-components'; -import { Dialog, showDialog } from '@jupyterlab/apputils'; -import { DriveListModel, DriveListView, IDrive } from './drivelistmanager'; import { DriveIcon } from './icons'; +import { IDocumentManager } from '@jupyterlab/docmanager'; +import { Drive } from './contents'; +import { IFileBrowserFactory } from '@jupyterlab/filebrowser'; +import { ISettingRegistry } from '@jupyterlab/settingregistry'; +import { + createToolbarFactory, + IToolbarWidgetRegistry, + setToolbar +} from '@jupyterlab/apputils'; + +import { SidePanel } from '@jupyterlab/ui-components'; + +import { IBucket } from './s3requests'; +import { Dialog, ICommandPalette, showDialog } from '@jupyterlab/apputils'; +import { DriveListModel, DriveListView } from './drivelistmanager'; +import { addJupyterLabThemeChangeListener } from '@jupyter/web-components'; +//import { getDrivesList } from './s3requests'; + + +const FILE_BROWSER_FACTORY = 'DrivePanel'; +const FILE_BROWSER_PLUGIN_ID = '@jupyter/drives:widget'; + +function buildMountedDriveNameList(driveList: Drive[]): string[] { + const driveNameList: string[] = []; + driveList.forEach(drive => { + driveNameList.push(drive.name); + }); + return driveNameList; +} + +const s3AvailableBuckets1: IBucket[] = [ + { + creation_date: '2023-12-15T13:27:57.000Z', + name: 'jupyterDriveBucket1', + provider: 'S3', + region: 'us-east-1', + status: 'active' + }, + { + creation_date: '2023-12-19T08:57:29.000Z', + name: 'jupyterDriveBucket2', + provider: 'S3', + region: 'us-east-1', + status: 'inactive' + }, + { + creation_date: '2023-12-19T09:07:29.000Z', + name: 'jupyterDriveBucket3', + provider: 'S3', + region: 'us-east-1', + status: 'inactive' + }, + { + creation_date: '2023-12-19T09:07:29.000Z', + name: 'jupyterDriveBucket4', + provider: 'S3', + region: 'us-east-1', + status: 'active' + }, + { + creation_date: '2024-01-12T09:07:29.000Z', + name: 'jupyterDriveBucket5', + provider: 'S3', + region: 'us-east-1', + status: 'active' + } +]; namespace CommandIDs { export const openDrivesDialog = 'drives:open-drives-dialog'; + export const removeDriveBrowser = 'drives:remove-drive-browser'; } -/** - * Initialization data for the @jupyter/drives extension. - */ -const plugin: JupyterFrontEndPlugin = { - id: '@jupyter/drives:plugin', - description: 'A Jupyter extension to support drives in the backend.', - autoStart: true, - activate: (app: JupyterFrontEnd) => { - console.log('JupyterLab extension @jupyter/drives is activated!'); +//const s3AvailableBuckets2: IBucket[] = await getDrivesList(); +//console.log('s3AvailableBuckets2:', s3AvailableBuckets2) + +/*async*/ function createDrivesList(bucketList: IBucket[]) { + const S3Drives: Drive[] = []; + bucketList.forEach(item => { + const drive = new Drive(); + drive.name = item.name; + drive.baseUrl = ''; + drive.region = item.region; + drive.status = item.status; + drive.provider = item.provider; + S3Drives.push(drive); + }); + return S3Drives; +} + +function camelCaseToDashedCase(name: string) { + if (name !== name.toLowerCase()) { + name = name.replace(/[A-Z]/g, m => '-' + m.toLowerCase()); } -}; + return name; +} + +function restoreDriveName(id: string) { + const list1 = id.split('-file-'); + let driveName = list1[0]; + for (let i = 0; i < driveName.length; i++) { + if (driveName[i] === '-') { + const index = i; + const char = driveName.charAt(index + 1).toUpperCase(); + driveName = driveName.replace(driveName.charAt(index + 1), char); + driveName = driveName.replace(driveName.charAt(index), ''); + } + } + return driveName; +} + +function createSidePanel( + driveName: string, + app: JupyterFrontEnd, + restorer: ILayoutRestorer +) { + const panel = new SidePanel(); + panel.title.icon = DriveIcon; + panel.title.iconClass = 'jp-SideBar-tabIcon'; + panel.title.caption = 'Browse Drives'; + panel.id = camelCaseToDashedCase(driveName) + '-file-browser'; + app.shell.add(panel, 'left', { rank: 102, type: 'DrivePanel' }); + if (restorer) { + restorer.add(panel, driveName + '-browser'); + } + return panel; +} -const openDriveDialogPlugin: JupyterFrontEndPlugin = { - id: '@jupyter/drives:widget', +const AddDrivesPlugin: JupyterFrontEndPlugin = { + id: '@jupyter/drives:add-drives', description: 'Open a dialog to select drives to be added in the filebrowser.', - requires: [IFileBrowserFactory, ITranslator], + requires: [ + ICommandPalette, + IDocumentManager, + IToolbarWidgetRegistry, + ITranslator, + ILayoutRestorer, + ISettingRegistry, + IFileBrowserFactory + ], autoStart: true, - activate: ( - app: JupyterFrontEnd, - factory: IFileBrowserFactory, - translator: ITranslator - ): void => { - addJupyterLabThemeChangeListener(); - const { commands } = app; - const { tracker } = factory; - const trans = translator.load('jupyter_drives'); - const selectedDrivesModelMap = new Map(); - - let selectedDrives: IDrive[] = [ - { - name: 'CoconutDrive', - url: '/coconut/url' + activate: activateAddDrivesPlugin +}; + +export /*async */ function activateAddDrivesPlugin( + app: JupyterFrontEnd, + palette: ICommandPalette, + manager: IDocumentManager, + toolbarRegistry: IToolbarWidgetRegistry, + translator: ITranslator, + restorer: ILayoutRestorer, + settingRegistry: ISettingRegistry, + factory: IFileBrowserFactory +) { + addJupyterLabThemeChangeListener(); + const selectedDrivesModelMap = new Map(); + let selectedDrives: Drive[] = []; + const availableDrives = createDrivesList(s3AvailableBuckets1); + let driveListModel = selectedDrivesModelMap.get(selectedDrives); + const mountedDriveNameList: string[] = + buildMountedDriveNameList(selectedDrives); + console.log('AddDrives plugin is activated!'); + const trans = translator.load('jupyter-drives'); + + function createDriveFileBrowser(drive: Drive) { + manager.services.contents.addDrive(drive); + const driveBrowser = factory.createFileBrowser('drive-browser', { + driveName: drive.name + }); + + const panel = createSidePanel(drive.name, app, restorer); + app.contextMenu.addItem({ + command: CommandIDs.removeDriveBrowser, + selector: `.jp-SideBar.lm-TabBar .lm-TabBar-tab[data-id=${panel.id}]`, + rank: 0 + }); + drive?.disposed.connect(() => { + panel.dispose(); + }); + + setToolbar( + panel, + createToolbarFactory( + toolbarRegistry, + settingRegistry, + FILE_BROWSER_FACTORY, + FILE_BROWSER_PLUGIN_ID, + translator + ) + ); + panel.addWidget(driveBrowser); + } + + app.commands.addCommand(CommandIDs.openDrivesDialog, { + execute: /*async*/ () => { + if (!driveListModel) { + driveListModel = new DriveListModel( + /*await*/ availableDrives, + selectedDrives + ); + selectedDrivesModelMap.set(selectedDrives, driveListModel); + } else { + selectedDrives = driveListModel.selectedDrives; + selectedDrivesModelMap.set(selectedDrives, driveListModel); } - ]; - - const availableDrives: IDrive[] = [ - { - name: 'CoconutDrive', - url: '/coconut/url' - }, - { - name: 'PearDrive', - url: '/pear/url' - }, - { - name: 'StrawberryDrive', - url: '/strawberrydrive/url' - }, - { - name: 'BlueberryDrive', - url: '/blueberrydrive/url' - }, - { - name: '', - url: '/mydrive/url' - }, - { - name: 'RaspberryDrive', - url: '/raspberrydrive/url' - }, - - { - name: 'PineAppleDrive', - url: '' - }, - - { name: 'PomeloDrive', url: '/https://pomelodrive/url' }, - { - name: 'OrangeDrive', - url: '' - }, - { - name: 'TomatoDrive', - url: '' - }, - { - name: '', - url: 'superDrive/url' - }, - { - name: 'AvocadoDrive', - url: '' + + function onDriveAdded(driveList: Drive[]) { + const drive: Drive = driveList[driveList.length - 1]; + if (driveListModel) { + if (!mountedDriveNameList.includes(drive.name)) { + createDriveFileBrowser(drive); + mountedDriveNameList.push(drive.name); + } + } } - ]; - let model = selectedDrivesModelMap.get(selectedDrives); - //const model = new DriveListModel(availableDrives, selectedDrives); + if (driveListModel) { + showDialog({ + body: new DriveListView(driveListModel, app.docRegistry), + buttons: [Dialog.cancelButton()] + }); + } + driveListModel.stateChanged.connect(async () => { + if (driveListModel) { + onDriveAdded(driveListModel.selectedDrives); + } + }); + }, - commands.addCommand(CommandIDs.openDrivesDialog, { - execute: args => { - const widget = tracker.currentWidget; + icon: DriveIcon.bindprops({ stylesheet: 'menuItem' }), + caption: trans.__('Add a new drive filebrowser.'), + label: trans.__('Add A New Drive Filebrowser') + }); + const command = 'drives:open-drives-dialog'; + palette.addItem({ command, category: 'Drives' }); - if (!model) { - model = new DriveListModel(availableDrives, selectedDrives); - selectedDrivesModelMap.set(selectedDrives, model); - } else { - selectedDrives = model.selectedDrives; - selectedDrivesModelMap.set(selectedDrives, model); - } - if (widget) { - if (model) { - showDialog({ - body: new DriveListView(model), - buttons: [Dialog.cancelButton()] - }); + function test(node: HTMLElement): boolean { + return node.title === 'Browse Drives'; + } + app.commands.addCommand(CommandIDs.removeDriveBrowser, { + execute: args => { + if (test !== undefined) { + const node = app.contextMenuHitTest(test); + if (node?.dataset.id) { + const driveName = restoreDriveName(node?.dataset.id); + if (driveListModel) { + const drive = driveListModel.selectedDrives.find( + drive => drive.name === driveName + ); + if (drive) { + const index = driveListModel.selectedDrives.indexOf(drive, 0); + if (index > -1) { + driveListModel.selectedDrives.splice(index, 1); + console.warn( + `Drive ${drive.name} is being disposed as well as the respective ${node?.dataset.id} panel.` + ); + } + } + drive?.dispose(); } } - }, + } + }, + caption: trans.__('Remove drive filebrowser.'), + label: trans.__('Remove Drive Filebrowser') + }); +} - icon: DriveIcon.bindprops({ stylesheet: 'menuItem' }), - caption: trans.__('Add drives to filebrowser.'), - label: trans.__('Add Drives To Filebrowser') - }); - } -}; -const plugins: JupyterFrontEndPlugin[] = [plugin, openDriveDialogPlugin]; + +const plugins: JupyterFrontEndPlugin[] = [AddDrivesPlugin]; export default plugins; diff --git a/src/s3requests.ts b/src/s3requests.ts new file mode 100644 index 0000000..ac7ac28 --- /dev/null +++ b/src/s3requests.ts @@ -0,0 +1,15 @@ +import { requestAPI } from './handler'; + +export interface IBucket { + name: string; + region: string; + provider: string; + creation_date: string; + status: string; +} + +export async function getDrivesList() { + return await requestAPI>('drives', { + method: 'GET' + }); +} diff --git a/style/base.css b/style/base.css index e0d3b8e..6c1e36e 100644 --- a/style/base.css +++ b/style/base.css @@ -31,8 +31,6 @@ li { .search-add-drive-button { background-color: var(--md-blue-700); color: white; - - /* width: 8em; */ height: 1em; border-radius: 4px; } @@ -57,10 +55,38 @@ li { } .data-grid-cell { - text-align: justify; + text-align: left; height: 2em; - min-width: 200px; border-right: 2px; border-left: 2px; background-color: var(--jp-layout-color2); } + +/* stylelint-disable-next-line selector-class-pattern */ +.jp-Dialog-body { + width: 800px; + height: 800px; +} + +/* stylelint-disable-next-line selector-class-pattern */ +.jp-DirListing-header { + display: none; +} +/* stylelint-disable-next-line selector-class-pattern */ +.lm-AccordionPanel .jp-AccordionPanel-title { + box-sizing: border-box; + line-height: 24px; + max-height: 24px; + margin: 0; + display: flex; + align-items: center; + color: var(--jp-ui-font-color1); + border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color); + box-shadow: var(--jp-toolbar-box-shadow); + font-size: var(--jp-ui-font-size0); +} + +/* stylelint-disable-next-line selector-class-pattern */ +.jp-FileBrowser .lm-AccordionPanel > h3:first-child { + display: flex; +} diff --git a/style/drive.svg b/style/drive.svg index 3fbc51e..f064d5b 100644 --- a/style/drive.svg +++ b/style/drive.svg @@ -1,4 +1,3 @@ - + > =16" - checksum: f13dd888c42ccbcb1764037e94ea6b9ee6aa82a232cbb0d8b506212b9e9d5d58965215768110f83a310585482d71dfb649a7c2bbb187553d39dd1292b5919dbe + checksum: 7d4c6f3e69ac1e66b7e7c5e53ccfb98a7e073a5a69837b814f368de247ba22f830ac567a6bb231577f6e256b2b2d9c180d50542f43891640e9a5294cb3e7a189 languageName: node linkType: hard -"@jupyterlab/statedb@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/statedb@npm:4.0.7" +"@jupyterlab/statedb@npm:^4.0.9": + version: 4.0.9 + resolution: "@jupyterlab/statedb@npm:4.0.9" dependencies: "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 - checksum: 4f4217fa1fceb40be8837cb450b1e66d4f6758531603c82ac277412ec43e3b94a5207bdeb74339307509a1b059ae6436d653beaff2fadfbc8136434ff0967190 + checksum: 0a813068476a1e2dad5aebbbe2a339e8931ba4e29c873d59a2baeed05ab71307e5a629802fddeaec666cec14e4bee45e0d733abe0b1ea0dbf930c8a427188e7b languageName: node linkType: hard -"@jupyterlab/statusbar@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/statusbar@npm:4.0.7" +"@jupyterlab/statusbar@npm:^4.0.9": + version: 4.0.9 + resolution: "@jupyterlab/statusbar@npm:4.0.9" dependencies: - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/ui-components": ^4.0.9 "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 @@ -2643,17 +2643,17 @@ __metadata: "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 7a2f75215789722a7b9a63548e91a1b179e8c315513d1b8741b508a58937569d723f2207bf542400674767246ad871432a09d1e87779151e43fa3749aa1ade06 + checksum: 09f96eea8c5601c2ddeb0f3a7eafc03f06eb949d54d0588c80f3834a14e8f99e04f19013b181ce147de1a801349f6e4c26c106916f916fd79e0ff1aab2ab3e55 languageName: node linkType: hard -"@jupyterlab/testing@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/testing@npm:4.0.7" +"@jupyterlab/testing@npm:^4.0.9": + version: 4.0.9 + resolution: "@jupyterlab/testing@npm:4.0.9" dependencies: "@babel/core": ^7.10.2 "@babel/preset-env": ^7.10.2 - "@jupyterlab/coreutils": ^6.0.7 + "@jupyterlab/coreutils": ^6.0.9 "@lumino/coreutils": ^2.1.2 "@lumino/signaling": ^2.1.2 child_process: ~1.0.2 @@ -2668,65 +2668,65 @@ __metadata: ts-jest: ^29.1.0 peerDependencies: typescript: ">=4.3" - checksum: e8de744e59e27c2d016c83aa277717e71cfbe26539a2a38dd850e5b27b39f7e81ae8f08ea4b7df90c106b7838518f365d342e4732c51d6d92c3ea81d940351b5 + checksum: 8f6d39c104916787cb1c42dcb120724f1f00ffbace98628db9628bf12004916fa2fa42f1f77ee15eb7d40b9c66eac4e45b5ba47e2072fc845c7b599603d09a2c languageName: node linkType: hard "@jupyterlab/testutils@npm:^4.0.0": - version: 4.0.7 - resolution: "@jupyterlab/testutils@npm:4.0.7" + version: 4.0.9 + resolution: "@jupyterlab/testutils@npm:4.0.9" dependencies: - "@jupyterlab/application": ^4.0.7 - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/notebook": ^4.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/testing": ^4.0.7 - checksum: de6ac284ecb2975d8b26a83eeb4dd295481f5452993ab150a9b4d71f99c745e1a4aa88032aa35610632b19fdcef01f12a51041afc86736bf4ad422246946ab86 + "@jupyterlab/application": ^4.0.9 + "@jupyterlab/apputils": ^4.1.9 + "@jupyterlab/notebook": ^4.0.9 + "@jupyterlab/rendermime": ^4.0.9 + "@jupyterlab/testing": ^4.0.9 + checksum: bf7a3800b58fb62f88daf5d49efe2b4131bfcb616e9359bd071e6e0b5c0e4c0ffd7f4a4429f3c59f67784ce272712c29f604cd68591558b7a447801e6601debe languageName: node linkType: hard -"@jupyterlab/toc@npm:^6.0.7": - version: 6.0.7 - resolution: "@jupyterlab/toc@npm:6.0.7" +"@jupyterlab/toc@npm:^6.0.9": + version: 6.0.9 + resolution: "@jupyterlab/toc@npm:6.0.9" dependencies: - "@jupyterlab/apputils": ^4.1.7 - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/docregistry": ^4.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime": ^4.0.7 - "@jupyterlab/translation": ^4.0.7 - "@jupyterlab/ui-components": ^4.0.7 + "@jupyterlab/apputils": ^4.1.9 + "@jupyterlab/coreutils": ^6.0.9 + "@jupyterlab/docregistry": ^4.0.9 + "@jupyterlab/observables": ^5.0.9 + "@jupyterlab/rendermime": ^4.0.9 + "@jupyterlab/translation": ^4.0.9 + "@jupyterlab/ui-components": ^4.0.9 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/messaging": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/widgets": ^2.3.0 react: ^18.2.0 - checksum: 6d0c17f79f8d077074a20d78f81fdda010f43edd5ffa423837c90dc9edd6810f7b7445c008ff7f0b04f917e6d37d76c7817bd1b2cedda48961c3e8c0553bbc16 + checksum: 4528f9be797b8bd76ee92888f6089aa5533884886fa7d129696ae22853f52e918a7e0f19b7966410c8e64162598027416781b1d120eebaa5dc8aef4e5f4a9c13 languageName: node linkType: hard -"@jupyterlab/translation@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/translation@npm:4.0.7" +"@jupyterlab/translation@npm:^4.0.9": + version: 4.0.9 + resolution: "@jupyterlab/translation@npm:4.0.9" dependencies: - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/services": ^7.0.7 - "@jupyterlab/statedb": ^4.0.7 + "@jupyterlab/coreutils": ^6.0.9 + "@jupyterlab/rendermime-interfaces": ^3.8.9 + "@jupyterlab/services": ^7.0.9 + "@jupyterlab/statedb": ^4.0.9 "@lumino/coreutils": ^2.1.2 - checksum: 15ad212d9447049f5d77d24681018efd52e61b861e73cdba4b09f4530801bdfa317c0eadde0b71016a9f45b68fbf91f723f9a63de9cbbe568c88923a9676ffab + checksum: 8acc2ab87261918b16ab24a3ef07d8a273049bb795f16d54180d33c54685ed2c822d49a451e76164da5451efbdd24d72953dca5fe8de375264620e1b2610c687 languageName: node linkType: hard -"@jupyterlab/ui-components@npm:^4.0.7": - version: 4.0.7 - resolution: "@jupyterlab/ui-components@npm:4.0.7" +"@jupyterlab/ui-components@npm:^4.0.9": + version: 4.0.9 + resolution: "@jupyterlab/ui-components@npm:4.0.9" dependencies: - "@jupyterlab/coreutils": ^6.0.7 - "@jupyterlab/observables": ^5.0.7 - "@jupyterlab/rendermime-interfaces": ^3.8.7 - "@jupyterlab/translation": ^4.0.7 + "@jupyterlab/coreutils": ^6.0.9 + "@jupyterlab/observables": ^5.0.9 + "@jupyterlab/rendermime-interfaces": ^3.8.9 + "@jupyterlab/translation": ^4.0.9 "@lumino/algorithm": ^2.0.1 "@lumino/commands": ^2.1.3 "@lumino/coreutils": ^2.1.2 @@ -2744,14 +2744,14 @@ __metadata: typestyle: ^2.0.4 peerDependencies: react: ^18.2.0 - checksum: 92e722b8b4fe96a1df6644de8f955fdf48f2bf568a5aaf5f450f721659afc0ecdd9c89f833d73cbad8684849caec4316d4c6b6b0575e7da5a6c3058f5e99d03e + checksum: 416d67e65b409f8f1e1960606aff283d909dd4c65c44ac0122b7ea15caeff16ab6537fa337a42b7f8782fde60db6566f08682a3c6bea84c002bd8d145e23d17a languageName: node linkType: hard "@lezer/common@npm:^1.0.0, @lezer/common@npm:^1.0.2, @lezer/common@npm:^1.1.0": - version: 1.1.0 - resolution: "@lezer/common@npm:1.1.0" - checksum: 93c208a44d1c0bdf7407853ba7c4ddcedf1c52d1b82170813d83b9bd6301aa23587405ac54332fe39ce8bc37f706936ab237ceb4d3d535d1dead650153b6474c + version: 1.1.1 + resolution: "@lezer/common@npm:1.1.1" + checksum: 1e540c152c5e6000d81aee0d6998dc340f35685d0f3aebf9c83213674b8a84509e0f6a04ea9b28d9d04499f68c2e57b484703bde53eaacf426bc2fac6a9e892c languageName: node linkType: hard @@ -2766,12 +2766,12 @@ __metadata: linkType: hard "@lezer/css@npm:^1.0.0, @lezer/css@npm:^1.1.0": - version: 1.1.3 - resolution: "@lezer/css@npm:1.1.3" + version: 1.1.4 + resolution: "@lezer/css@npm:1.1.4" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: c8069ef0a6751441d2dc9180f7ebfd7aeb35df0ca2f1a748a2f26203a9ef6cc30f17f3074e2b49520453eb39329dadfdbbb901c6d9d067dc955ceb58c1f8cc6a + checksum: 13ffe83e7aaf4213b6a86d01cd68ac02a22e96e9b8ac91368f5f79572cf5e494cee1dc039dc4ed331ba38754681d6013397d06d8c319f1fcb6852b5625eba055 languageName: node linkType: hard @@ -2788,42 +2788,42 @@ __metadata: linkType: hard "@lezer/highlight@npm:^1.0.0, @lezer/highlight@npm:^1.1.3, @lezer/highlight@npm:^1.1.4": - version: 1.1.6 - resolution: "@lezer/highlight@npm:1.1.6" + version: 1.2.0 + resolution: "@lezer/highlight@npm:1.2.0" dependencies: "@lezer/common": ^1.0.0 - checksum: 411a702394c4c996b7d7f145a38f3a85a8cc698b3918acc7121c629255bb76d4ab383753f69009e011dc415210c6acbbb5b27bde613259ab67e600b29397b03b + checksum: 5b9dfe741f95db13f6124cb9556a43011cb8041ecf490be98d44a86b04d926a66e912bcd3a766f6a3d79e064410f1a2f60ab240b50b645a12c56987bf4870086 languageName: node linkType: hard "@lezer/html@npm:^1.3.0": - version: 1.3.6 - resolution: "@lezer/html@npm:1.3.6" + version: 1.3.7 + resolution: "@lezer/html@npm:1.3.7" dependencies: "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: 1d3af781660968505e5083a34f31ea3549fd5f3949227fa93cc318bca61bce76ffe977bd875624ba938a2039834ec1a33df5d365e94c48131c85dd26f980d92c + checksum: 7145c0eae4f5cf79e34c6bf2fe3f812460969b58dd8923adeb2d14ddfbd6111fed91eaee24d914430c1dcca711a0aac144afc71df00abb750ed7b9d96a6b6f84 languageName: node linkType: hard "@lezer/java@npm:^1.0.0": - version: 1.0.4 - resolution: "@lezer/java@npm:1.0.4" + version: 1.1.0 + resolution: "@lezer/java@npm:1.1.0" dependencies: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 - checksum: 97f5a2c2d733afba5dc57a0da9a97515b19b5e63bb5937717dac4e8c9baed74d15c0cb5c1580858b678931f11d517c56d89f903968fa48931f9c62e2ea67a107 + checksum: b22b344ed770d92c0e90d94caec695210670fa28a828548eeb48415ff3a2920804c3688c85f954e53b5a80b73263edecd6846901561b3837bc332ad09dfa23c2 languageName: node linkType: hard "@lezer/javascript@npm:^1.0.0": - version: 1.4.8 - resolution: "@lezer/javascript@npm:1.4.8" + version: 1.4.9 + resolution: "@lezer/javascript@npm:1.4.9" dependencies: "@lezer/highlight": ^1.1.3 "@lezer/lr": ^1.3.0 - checksum: d0c1de5dd756c0a64b440984273cf5a9ef0d227d6b059d2db96c62fde869e34427b46389d56401d067c82222f11373e2d20f9280e4c403bf681ec6a35ae16126 + checksum: adac0048e4ab33dc48db42014f02d53a2eab81d12c990b23f237a3e83b125bda271607442aaa50dc0ac870a803e678135111366235f7c29a5052a288c1003960 languageName: node linkType: hard @@ -2838,21 +2838,21 @@ __metadata: linkType: hard "@lezer/lr@npm:^1.0.0, @lezer/lr@npm:^1.1.0, @lezer/lr@npm:^1.3.0": - version: 1.3.13 - resolution: "@lezer/lr@npm:1.3.13" + version: 1.3.14 + resolution: "@lezer/lr@npm:1.3.14" dependencies: "@lezer/common": ^1.0.0 - checksum: aad0cb8908796a6b49116842fd490093aa0de54b48150a60a4f418815c014f7a1b4355615832e305caea5c0ba8c5ab577f82aebcd0ea04586b8199284ef0fec8 + checksum: 07be41edcb6c332a3567436d2c626131544181c4d680811baf23f6157db3dce4ebfef325cbd0b88dc8b128b83fbe6363c5dcf3e0a4ff369ddfae05d9f207daee languageName: node linkType: hard "@lezer/markdown@npm:^1.0.0, @lezer/markdown@npm:^1.0.2": - version: 1.1.0 - resolution: "@lezer/markdown@npm:1.1.0" + version: 1.1.1 + resolution: "@lezer/markdown@npm:1.1.1" dependencies: "@lezer/common": ^1.0.0 "@lezer/highlight": ^1.0.0 - checksum: b3699c0724dd41e3e6e3078a0e1bcd272ccaebf17b20e5160de3ecf26200cdaa59aa19c9542aac5ab8c7e3aecce1003544b016bb5c32e458bbd5982add8ca0bf + checksum: 1cd2105ca897012883aae2a53627380a5f883ac8058139c1b1987eb9943fa4748266fe54aae1f06cf4726a24ea5808b683f37c384b7c8245b4116a37e3562663 languageName: node linkType: hard @@ -2896,7 +2896,7 @@ __metadata: languageName: node linkType: hard -"@lumino/algorithm@npm:^2.0.1": +"@lumino/algorithm@npm:^2.0.0, @lumino/algorithm@npm:^2.0.1": version: 2.0.1 resolution: "@lumino/algorithm@npm:2.0.1" checksum: cbf7fcf6ee6b785ea502cdfddc53d61f9d353dcb9659343511d5cd4b4030be2ff2ca4c08daec42f84417ab0318a3d9972a17319fa5231693e109ab112dcf8000 @@ -2904,13 +2904,13 @@ __metadata: linkType: hard "@lumino/application@npm:^2.2.1": - version: 2.2.1 - resolution: "@lumino/application@npm:2.2.1" + version: 2.3.0 + resolution: "@lumino/application@npm:2.3.0" dependencies: - "@lumino/commands": ^2.1.3 + "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 - "@lumino/widgets": ^2.3.0 - checksum: a33e661703728440bc7d2ddb4674261f4de0d20eb8c9846646cbd6debac03b5c65e78d739a500903550fd83b8f47b47fa82ec178c97bc9967ca3ac4014075cde + "@lumino/widgets": ^2.3.1 + checksum: 9d1eb5bc972ed158bf219604a53bbac1262059bc5b0123d3e041974486b9cbb8288abeeec916f3b62f62d7c32e716cccf8b73e4832ae927e4f9dd4e4b0cd37ed languageName: node linkType: hard @@ -2923,9 +2923,9 @@ __metadata: languageName: node linkType: hard -"@lumino/commands@npm:^2.1.3": - version: 2.1.3 - resolution: "@lumino/commands@npm:2.1.3" +"@lumino/commands@npm:^2.1.3, @lumino/commands@npm:^2.2.0": + version: 2.2.0 + resolution: "@lumino/commands@npm:2.2.0" dependencies: "@lumino/algorithm": ^2.0.1 "@lumino/coreutils": ^2.1.2 @@ -2934,7 +2934,7 @@ __metadata: "@lumino/keyboard": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/virtualdom": ^2.0.1 - checksum: e4e3ee279f2a5e8d68e4ce142c880333f5542f90c684972402356936ecb5cf5e07163800b59e7cb8c911cbdb4e5089edcc5dd2990bc8db10c87517268de1fc5d + checksum: 093e9715491e5cef24bc80665d64841417b400f2fa595f9b60832a3b6340c405c94a6aa276911944a2c46d79a6229f3cc087b73f50852bba25ece805abd0fae9 languageName: node linkType: hard @@ -2961,13 +2961,13 @@ __metadata: languageName: node linkType: hard -"@lumino/dragdrop@npm:^2.1.3": - version: 2.1.3 - resolution: "@lumino/dragdrop@npm:2.1.3" +"@lumino/dragdrop@npm:^2.1.4": + version: 2.1.4 + resolution: "@lumino/dragdrop@npm:2.1.4" dependencies: "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 - checksum: d5f7eb4cc9f9a084cb9af10f02d6741b25d683350878ecbc324e24ba9d4b5246451a410e2ca5fff227aab1c191d1e73a2faf431f93e13111d67a4e426e126258 + checksum: 43d82484b13b38b612e7dfb424a840ed6a38d0db778af10655c4ba235c67b5b12db1683929b35a36ab2845f77466066dfd1ee25c1c273e8e175677eba9dc560d languageName: node linkType: hard @@ -3025,22 +3025,22 @@ __metadata: languageName: node linkType: hard -"@lumino/widgets@npm:^1.37.2 || ^2.3.0, @lumino/widgets@npm:^2.3.0": - version: 2.3.0 - resolution: "@lumino/widgets@npm:2.3.0" +"@lumino/widgets@npm:^1.37.2 || ^2.3.0, @lumino/widgets@npm:^2.3.0, @lumino/widgets@npm:^2.3.1": + version: 2.3.1 + resolution: "@lumino/widgets@npm:2.3.1" dependencies: "@lumino/algorithm": ^2.0.1 - "@lumino/commands": ^2.1.3 + "@lumino/commands": ^2.2.0 "@lumino/coreutils": ^2.1.2 "@lumino/disposable": ^2.1.2 "@lumino/domutils": ^2.0.1 - "@lumino/dragdrop": ^2.1.3 + "@lumino/dragdrop": ^2.1.4 "@lumino/keyboard": ^2.0.1 "@lumino/messaging": ^2.0.1 "@lumino/properties": ^2.0.1 "@lumino/signaling": ^2.1.2 "@lumino/virtualdom": ^2.0.1 - checksum: a8559bd3574b7fc16e7679e05994c515b0d3e78dada35786d161f67c639941d134e92ce31d95c2e4ac06709cdf83b0e7fb4b6414a3f7779579222a2fb525d025 + checksum: ba7b8f8839c1cd2a41dbda13281094eb6981a270cccf4f25a0cf83686dcc526a2d8044a20204317630bb7dd4a04d65361408c7623a921549c781afca84b91c67 languageName: node linkType: hard @@ -3071,27 +3071,27 @@ __metadata: languageName: node linkType: hard -"@microsoft/fast-foundation@npm:^2.46.2, @microsoft/fast-foundation@npm:^2.49.0, @microsoft/fast-foundation@npm:^2.49.2": - version: 2.49.2 - resolution: "@microsoft/fast-foundation@npm:2.49.2" +"@microsoft/fast-foundation@npm:^2.46.2, @microsoft/fast-foundation@npm:^2.49.0, @microsoft/fast-foundation@npm:^2.49.4": + version: 2.49.4 + resolution: "@microsoft/fast-foundation@npm:2.49.4" dependencies: "@microsoft/fast-element": ^1.12.0 "@microsoft/fast-web-utilities": ^5.4.1 tabbable: ^5.2.0 tslib: ^1.13.0 - checksum: b582bd2012fa366d417c26c2e7c80ecc860664e796cfe52ed9ecee1089d73da5bdf1730aad3a30fbd5fa4ea80782259cf45e8500c358bb246b893ec103d00d9e + checksum: e979cd500aaba28090e8d9cdc6192933db01803c13288c11aded89aa54da6f0a70256ff2f249754b1c95d9abad369a18401e1df98d672e2823b83cf4cd88ad55 languageName: node linkType: hard "@microsoft/fast-react-wrapper@npm:^0.3.18": - version: 0.3.20 - resolution: "@microsoft/fast-react-wrapper@npm:0.3.20" + version: 0.3.22 + resolution: "@microsoft/fast-react-wrapper@npm:0.3.22" dependencies: "@microsoft/fast-element": ^1.12.0 - "@microsoft/fast-foundation": ^2.49.2 + "@microsoft/fast-foundation": ^2.49.4 peerDependencies: react: ">=16.9.0" - checksum: 3ced25465f1f53c18d6cf62fa75118f66d4b6c75a622bda2e7ecdfcfda3fb8347b147573665de486951b86d70312dbbf63c3faeb5cf002fa263561d3feb4d1a2 + checksum: 6c7c0992dbaf91b32bc53b9d7ac21c7c8a89e6f45cc1b015cea1d1f3e766184ac7cea159479e34ddd30c347291cd5939e8d55696712086187deae37687054328 languageName: node linkType: hard @@ -3140,6 +3140,19 @@ __metadata: languageName: node linkType: hard +"@npmcli/agent@npm:^2.0.0": + version: 2.2.0 + resolution: "@npmcli/agent@npm:2.2.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.1 + checksum: 3b25312edbdfaa4089af28e2d423b6f19838b945e47765b0c8174c1395c79d43c3ad6d23cb364b43f59fd3acb02c93e3b493f72ddbe3dfea04c86843a7311fc4 + languageName: node + linkType: hard + "@npmcli/fs@npm:^3.1.0": version: 3.1.0 resolution: "@npmcli/fs@npm:3.1.0" @@ -3156,7 +3169,7 @@ __metadata: languageName: node linkType: hard -"@pkgr/utils@npm:^2.3.1": +"@pkgr/utils@npm:^2.4.2": version: 2.4.2 resolution: "@pkgr/utils@npm:2.4.2" dependencies: @@ -3171,8 +3184,8 @@ __metadata: linkType: hard "@rjsf/core@npm:^5.1.0": - version: 5.13.2 - resolution: "@rjsf/core@npm:5.13.2" + version: 5.15.0 + resolution: "@rjsf/core@npm:5.15.0" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 @@ -3182,13 +3195,13 @@ __metadata: peerDependencies: "@rjsf/utils": ^5.12.x react: ^16.14.0 || >=17 - checksum: e977c33bc74075fe2035a22d242bd1a8433468834e3e45fe9b8edaf9e14e14793c43936917805f105960b3d71385fc6616ce502b5273fd6ee1c4539aa3c4e69c + checksum: 430750dca4d96fa0bc48f8fbbb5c31f42df5cf9079a501d56449fe1428cf6087c7c45eb1846792f748cc52ce64ffb69aa2acf509ed5328b4c85d35dfaa7d3900 languageName: node linkType: hard "@rjsf/utils@npm:^5.1.0": - version: 5.13.2 - resolution: "@rjsf/utils@npm:5.13.2" + version: 5.15.0 + resolution: "@rjsf/utils@npm:5.15.0" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -3197,7 +3210,7 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 06834669205fa0429355f04fc551986ca6899c7b656feb2f2f0477c02e6da625bf198bd292b06e703e2c029436d899a2c802fe28d1bfe5017b2a2d016a361180 + checksum: 369de8620fdbd26aea074e0a33d5ea3b1bb89e3389d826a70612dbec8881617bb0dc8403ca6774d0def332ffe15d26bed133d6ff7361ff2978a4b024cea829c3 languageName: node linkType: hard @@ -3234,114 +3247,114 @@ __metadata: linkType: hard "@types/babel__core@npm:^7.1.14": - version: 7.20.3 - resolution: "@types/babel__core@npm:7.20.3" + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" dependencies: "@babel/parser": ^7.20.7 "@babel/types": ^7.20.7 "@types/babel__generator": "*" "@types/babel__template": "*" "@types/babel__traverse": "*" - checksum: 8d14acc14d99b4b8bf36c00da368f6d597bd9ae3344aa7048f83f0f701b0463fa7c7bf2e50c3e4382fdbcfd1e4187b3452a0f0888b0f3ae8fad975591f7bdb94 + checksum: a3226f7930b635ee7a5e72c8d51a357e799d19cbf9d445710fa39ab13804f79ab1a54b72ea7d8e504659c7dfc50675db974b526142c754398d7413aa4bc30845 languageName: node linkType: hard "@types/babel__generator@npm:*": - version: 7.6.6 - resolution: "@types/babel__generator@npm:7.6.6" + version: 7.6.7 + resolution: "@types/babel__generator@npm:7.6.7" dependencies: "@babel/types": ^7.0.0 - checksum: 36e8838c7e16eff611447579e840526946a8b14c794c82486cee2a5ad2257aa6cad746d8ecff3144e3721178837d2c25d0a435d384391eb67846b933c062b075 + checksum: 03e96ea327a5238f00c38394a05cc01619b9f5f3ea57371419a1c25cf21676a6d327daf802435819f8cb3b8fa10e938a94bcbaf79a38c132068c813a1807ff93 languageName: node linkType: hard "@types/babel__template@npm:*": - version: 7.4.3 - resolution: "@types/babel__template@npm:7.4.3" + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" dependencies: "@babel/parser": ^7.1.0 "@babel/types": ^7.0.0 - checksum: 55deb814c94d1bfb78c4d1de1de1b73eb17c79374602f3bd8aa14e356a77fca64d01646cebe25ec9b307f53a047acc6d53ad6e931019d0726422f5f911e945aa + checksum: d7a02d2a9b67e822694d8e6a7ddb8f2b71a1d6962dfd266554d2513eefbb205b33ca71a0d163b1caea3981ccf849211f9964d8bd0727124d18ace45aa6c9ae29 languageName: node linkType: hard "@types/babel__traverse@npm:*, @types/babel__traverse@npm:^7.0.6": - version: 7.20.3 - resolution: "@types/babel__traverse@npm:7.20.3" + version: 7.20.4 + resolution: "@types/babel__traverse@npm:7.20.4" dependencies: "@babel/types": ^7.20.7 - checksum: 6d0f70d8972647c9b78b51a54f0b6481c4f23f0bb2699ad276e6070678bd121fede99e8e2c8c3e409d2f31a0bf83ae511abc6fefb91f0630c8d728a3a9136790 + checksum: f044ba80e00d07e46ee917c44f96cfc268fcf6d3871f7dfb8db8d3c6dab1508302f3e6bc508352a4a3ae627d2522e3fc500fa55907e0410a08e2e0902a8f3576 languageName: node linkType: hard "@types/eslint-scope@npm:^3.7.3": - version: 3.7.6 - resolution: "@types/eslint-scope@npm:3.7.6" + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" dependencies: "@types/eslint": "*" "@types/estree": "*" - checksum: a2339e312949ae7f96bca52cde89a3d2218d4505746a78a0ba1aa56573e43b3d52ce9662b86ab785663a62fa8f2bd2fb61b990398785b40f2efc91be3fd246f8 + checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e languageName: node linkType: hard "@types/eslint@npm:*": - version: 8.44.6 - resolution: "@types/eslint@npm:8.44.6" + version: 8.44.8 + resolution: "@types/eslint@npm:8.44.8" dependencies: "@types/estree": "*" "@types/json-schema": "*" - checksum: ed8de582ab3dbd7ec0bf97d41f4f3de28dd8a37fc48bc423e1c406bbb70d1fd8c4175ba17ad6495ef9ef99a43df71421277b7a2a0355097489c4c4cf6bb266ff + checksum: c3bc70166075e6e9f7fb43978882b9ac0b22596b519900b08dc8a1d761bbbddec4c48a60cc4eb674601266223c6f11db30f3fb6ceaae96c23c54b35ad88022bc languageName: node linkType: hard "@types/estree@npm:*, @types/estree@npm:^1.0.0": - version: 1.0.3 - resolution: "@types/estree@npm:1.0.3" - checksum: f21a5448995f8aa61ab2248d10590d275666b11d26c27fe75b3c23420b07b469d5ce820deefcf7399671faa09d56eb7ce012322948e484d94686fda154be5221 + version: 1.0.5 + resolution: "@types/estree@npm:1.0.5" + checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a languageName: node linkType: hard "@types/graceful-fs@npm:^4.1.3": - version: 4.1.8 - resolution: "@types/graceful-fs@npm:4.1.8" + version: 4.1.9 + resolution: "@types/graceful-fs@npm:4.1.9" dependencies: "@types/node": "*" - checksum: 6e1ee9c119e075134696171b680fee7b627f3e077ec5e5ad9ba9359f1688a84fa35ea6804f96922c43ca30ab8d4ca9531a526b64f57fa13e1d721bf741884829 + checksum: 79d746a8f053954bba36bd3d94a90c78de995d126289d656fb3271dd9f1229d33f678da04d10bce6be440494a5a73438e2e363e92802d16b8315b051036c5256 languageName: node linkType: hard "@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.0, @types/istanbul-lib-coverage@npm:^2.0.1": - version: 2.0.5 - resolution: "@types/istanbul-lib-coverage@npm:2.0.5" - checksum: 978eaf327f9a238eb1e2828b93b4b48e288ffb88c4be81330c74477ab8b93fac41a8784260d72bdd9995535d70608f738199b6364fd3344842e924a3ec3301e7 + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 3feac423fd3e5449485afac999dcfcb3d44a37c830af898b689fadc65d26526460bedb889db278e0d4d815a670331796494d073a10ee6e3a6526301fe7415778 languageName: node linkType: hard "@types/istanbul-lib-report@npm:*": - version: 3.0.2 - resolution: "@types/istanbul-lib-report@npm:3.0.2" + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" dependencies: "@types/istanbul-lib-coverage": "*" - checksum: 549e44e14a4dc98164ce477ca8650d33898e5c74a6bb8079cbec7f811567dcb805a3bfdbf83ce53222eaecc37ae53aa7f25bda1a7d8347449155c8f0b4f30232 + checksum: b91e9b60f865ff08cb35667a427b70f6c2c63e88105eadd29a112582942af47ed99c60610180aa8dcc22382fa405033f141c119c69b95db78c4c709fbadfeeb4 languageName: node linkType: hard "@types/istanbul-reports@npm:^3.0.0": - version: 3.0.3 - resolution: "@types/istanbul-reports@npm:3.0.3" + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" dependencies: "@types/istanbul-lib-report": "*" - checksum: 21d007be7dd09165ed24f5cc9947319ad435fc3b3e568f3eec0a42ee80fd2adccdeb929bc1311efb2cf7597835638cde865d3630d8b4c15d1390c9527bcad1a9 + checksum: 93eb18835770b3431f68ae9ac1ca91741ab85f7606f310a34b3586b5a34450ec038c3eed7ab19266635499594de52ff73723a54a72a75b9f7d6a956f01edee95 languageName: node linkType: hard "@types/jest@npm:^29.2.0": - version: 29.5.6 - resolution: "@types/jest@npm:29.5.6" + version: 29.5.10 + resolution: "@types/jest@npm:29.5.10" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: fa13a27bd1c8efd0381a419478769d0d6d3a8e93e1952d7ac3a16274e8440af6f73ed6f96ac1ff00761198badf2ee226b5ab5583a5d87a78d609ea78da5c5a24 + checksum: ef385905787db528de9b6beb2688865c0bb276e64256ed60b9a1a6ffc0b75737456cb5e27e952a3241c5845b6a1da487470010dd30f3ca59c8581624c564a823 languageName: node linkType: hard @@ -3357,133 +3370,133 @@ __metadata: linkType: hard "@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": - version: 7.0.14 - resolution: "@types/json-schema@npm:7.0.14" - checksum: 4b3dd99616c7c808201c56f6c7f6552eb67b5c0c753ab3fa03a6cb549aae950da537e9558e53fa65fba23d1be624a1e4e8d20c15027efbe41e03ca56f2b04fb0 + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 languageName: node linkType: hard "@types/minimist@npm:^1.2.2": - version: 1.2.4 - resolution: "@types/minimist@npm:1.2.4" - checksum: d7912f9a466312cbc1333800272b9208178140ef4da2ccec3fa82231c8e67f57f84275b3c19109c4f68f1b7b057baeacc6b80af1de14b58b46e6b54233e44c6a + version: 1.2.5 + resolution: "@types/minimist@npm:1.2.5" + checksum: 477047b606005058ab0263c4f58097136268007f320003c348794f74adedc3166ffc47c80ec3e94687787f2ab7f4e72c468223946e79892cf0fd9e25e9970a90 languageName: node linkType: hard "@types/node@npm:*": - version: 20.8.9 - resolution: "@types/node@npm:20.8.9" + version: 20.10.3 + resolution: "@types/node@npm:20.10.3" dependencies: undici-types: ~5.26.4 - checksum: 0c05f3502a9507ff27e91dd6fd574fa6f391b3fafedcfe8e0c8d33351fb22d02c0121f854e5b6b3ecb9a8a468407ddf6e7ac0029fb236d4c7e1361ffc758a01f + checksum: 34a329494f0ea239af05eeb6f00f396963725b3eb9a2f79c5e6a6d37e823f2ab85e1079c2ee56723a37d8b89e7bbe2bd050c97144e5bb06dab93fd1cace65c97 languageName: node linkType: hard "@types/normalize-package-data@npm:^2.4.0": - version: 2.4.3 - resolution: "@types/normalize-package-data@npm:2.4.3" - checksum: 6f60e157c0fc39b80d80eb9043cdd78e4090f25c5264ef0317f5701648a5712fd453d364569675a19aef44a18c6f14f6e4809bdc0b97a46a0ed9ce4a320bbe42 + version: 2.4.4 + resolution: "@types/normalize-package-data@npm:2.4.4" + checksum: 65dff72b543997b7be8b0265eca7ace0e34b75c3e5fee31de11179d08fa7124a7a5587265d53d0409532ecb7f7fba662c2012807963e1f9b059653ec2c83ee05 languageName: node linkType: hard "@types/prop-types@npm:*": - version: 15.7.9 - resolution: "@types/prop-types@npm:15.7.9" - checksum: c7591d3ff7593e243908a07e1d3e2bb6e8879008af5800d8378115a90d0fdf669a1cae72a6d7f69e59c4fa7bb4c8ed61f6ebc1c520fe110c6f2b03ac02414072 + version: 15.7.11 + resolution: "@types/prop-types@npm:15.7.11" + checksum: 7519ff11d06fbf6b275029fe03fff9ec377b4cb6e864cac34d87d7146c7f5a7560fd164bdc1d2dbe00b60c43713631251af1fd3d34d46c69cd354602bc0c7c54 languageName: node linkType: hard "@types/react-addons-linked-state-mixin@npm:^0.14.22": - version: 0.14.24 - resolution: "@types/react-addons-linked-state-mixin@npm:0.14.24" + version: 0.14.25 + resolution: "@types/react-addons-linked-state-mixin@npm:0.14.25" dependencies: "@types/react": "*" - checksum: fcebc6a45ecba6594dc9a43e807e329847be4fe3466496f2b1f8f1af160f2d4fc5a4db946cd0cd73fb12daa369f5d55f3a88b1685ed0274adfd812f2456d5f71 + checksum: 00cb973c535ff220fc8d613aa8281829bc2c98db3971e87a8d5d874c6a6b5ce1a25206f6976b6f99b0fedde27af85d33f1e442f333c60567bc52e0fc659ad827 languageName: node linkType: hard "@types/react@npm:*, @types/react@npm:^18.0.26": - version: 18.2.33 - resolution: "@types/react@npm:18.2.33" + version: 18.2.41 + resolution: "@types/react@npm:18.2.41" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 75903c4d53898c69dd23d0b2730eac4676dc5ade15c25c793dec855f0d7c650cb823832bb1dd881efe8895724f15b06d4bf7081ea0b82391aa3059512ad49ccf + checksum: fcf4c598e5adc1be1dafaa5977ff7698b5b69c6b1473ce524a28d57fa04af3f1a1aa1193cf284542451d98ae5338d26270f8c6e1f7afda5bbbe6c3a4ba40b1d8 languageName: node linkType: hard "@types/scheduler@npm:*": - version: 0.16.5 - resolution: "@types/scheduler@npm:0.16.5" - checksum: 5aae67331bb7877edc65f77f205fb03c3808d9e51c186afe26945ce69f4072886629580a751e9ce8573e4a7538d0dfa1e4ce388c7c451fa689a4c592fdf1ea45 + version: 0.16.8 + resolution: "@types/scheduler@npm:0.16.8" + checksum: 6c091b096daa490093bf30dd7947cd28e5b2cd612ec93448432b33f724b162587fed9309a0acc104d97b69b1d49a0f3fc755a62282054d62975d53d7fd13472d languageName: node linkType: hard "@types/semver@npm:^7.5.0": - version: 7.5.4 - resolution: "@types/semver@npm:7.5.4" - checksum: 120c0189f6fec5f2d12d0d71ac8a4cfa952dc17fa3d842e8afddb82bba8828a4052f8799c1653e2b47ae1977435f38e8985658fde971905ce5afb8e23ee97ecf + version: 7.5.6 + resolution: "@types/semver@npm:7.5.6" + checksum: 563a0120ec0efcc326567db2ed920d5d98346f3638b6324ea6b50222b96f02a8add3c51a916b6897b51523aad8ac227d21d3dcf8913559f1bfc6c15b14d23037 languageName: node linkType: hard "@types/source-list-map@npm:*": - version: 0.1.4 - resolution: "@types/source-list-map@npm:0.1.4" - checksum: c18896ead356c77aa7a5bb6bd0ad72a5e8dea4c7ec1e5162c3f4d7e5afa6f547ace66ce506c47d1726adb34aee9758f9367b35ddd03126f3c9d4bde4700cddf4 + version: 0.1.6 + resolution: "@types/source-list-map@npm:0.1.6" + checksum: 9cd294c121f1562062de5d241fe4d10780b1131b01c57434845fe50968e9dcf67ede444591c2b1ad6d3f9b6bc646ac02cc8f51a3577c795f9c64cf4573dcc6b1 languageName: node linkType: hard "@types/stack-utils@npm:^2.0.0": - version: 2.0.2 - resolution: "@types/stack-utils@npm:2.0.2" - checksum: 777cc7ac0c1000c5a07561013bcf7bd8477a3d55f55f376ee2f0c586331f7b999f57788140cfbdb65f6d7d97c0c41fe8fe6c778fd3ed71859c9b681ea76fc621 + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 72576cc1522090fe497337c2b99d9838e320659ac57fa5560fcbdcbafcf5d0216c6b3a0a8a4ee4fdb3b1f5e3420aa4f6223ab57b82fef3578bec3206425c6cf5 languageName: node linkType: hard "@types/tough-cookie@npm:*": - version: 4.0.4 - resolution: "@types/tough-cookie@npm:4.0.4" - checksum: 6be275b09f5fbf33f359fd6d5372c69357cf96dea5d7ba7a6563c76c6cce8b0c7f81caa4805810b0e67427cad381aeef00d8c060d614fee79ca245c2b9887c3a + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: f19409d0190b179331586365912920d192733112a195e870c7f18d20ac8adb7ad0b0ff69dad430dba8bc2be09593453a719cfea92dc3bda19748fd158fe1498d languageName: node linkType: hard "@types/webpack-sources@npm:^0.1.5": - version: 0.1.11 - resolution: "@types/webpack-sources@npm:0.1.11" + version: 0.1.12 + resolution: "@types/webpack-sources@npm:0.1.12" dependencies: "@types/node": "*" "@types/source-list-map": "*" source-map: ^0.6.1 - checksum: da64fc4b7d774dca57a0b40c20641fd387bc6c02ed3245dfd62af75a9ab0c3bb752773e6c2a023e35ce151563302af4d427ee4e81698ec3f3a7ed9f81f3390f4 + checksum: 75342659a9889478969f7bb7360b998aa084ba11ab523c172ded6a807dac43ab2a9e1212078ef8bbf0f33e4fadd2c8a91b75d38184d8030d96a32fe819c9bb57 languageName: node linkType: hard "@types/yargs-parser@npm:*": - version: 21.0.2 - resolution: "@types/yargs-parser@npm:21.0.2" - checksum: e979051aac91d778fdb3953aced8cf039d954c3936b910b57735b7b52a413d065e6b2aea1cb2c583f6c23296a6f8543d2541879d798f0afedd7409a562b7bdeb + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: ef236c27f9432983e91432d974243e6c4cdae227cb673740320eff32d04d853eed59c92ca6f1142a335cfdc0e17cccafa62e95886a8154ca8891cc2dec4ee6fc languageName: node linkType: hard "@types/yargs@npm:^17.0.8": - version: 17.0.29 - resolution: "@types/yargs@npm:17.0.29" + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" dependencies: "@types/yargs-parser": "*" - checksum: 8bbc0edd573a5a084cb13a9985c124490fd74e73b1ed8a3058861c13124e103b00a19770dc55c53215653a7845d7033e0695917b75153cfe9618d5b2fd3cf86e + checksum: 4505bdebe8716ff383640c6e928f855b5d337cb3c68c81f7249fc6b983d0aa48de3eee26062b84f37e0d75a5797bc745e0c6e76f42f81771252a758c638f36ba languageName: node linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.1.0": - version: 6.9.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.9.0" + version: 6.13.1 + resolution: "@typescript-eslint/eslint-plugin@npm:6.13.1" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.9.0 - "@typescript-eslint/type-utils": 6.9.0 - "@typescript-eslint/utils": 6.9.0 - "@typescript-eslint/visitor-keys": 6.9.0 + "@typescript-eslint/scope-manager": 6.13.1 + "@typescript-eslint/type-utils": 6.13.1 + "@typescript-eslint/utils": 6.13.1 + "@typescript-eslint/visitor-keys": 6.13.1 debug: ^4.3.4 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -3496,44 +3509,44 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 51d7afc18bab711e20147f7163083f05435b6860174169eae56de217ed2cb1b3c08cba01b7d338315c2d8ecb982e83ce8f2ca7d2108c1c7c04faff2001b094d3 + checksum: 568093d76c200a8502047d74f29300110a59b9f2a5cbf995a6cbe419c803a7ec22220e9592a884401d2dde72c79346b4cc0ee393e7b422924ad4a8a2040af3b0 languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.1.0": - version: 6.9.0 - resolution: "@typescript-eslint/parser@npm:6.9.0" + version: 6.13.1 + resolution: "@typescript-eslint/parser@npm:6.13.1" dependencies: - "@typescript-eslint/scope-manager": 6.9.0 - "@typescript-eslint/types": 6.9.0 - "@typescript-eslint/typescript-estree": 6.9.0 - "@typescript-eslint/visitor-keys": 6.9.0 + "@typescript-eslint/scope-manager": 6.13.1 + "@typescript-eslint/types": 6.13.1 + "@typescript-eslint/typescript-estree": 6.13.1 + "@typescript-eslint/visitor-keys": 6.13.1 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: d8ff69d236d6495474ab93c67e2785cc94bf9c098f25c33f1c5958a4b2b5af2b70edf1cdd0c23ee3436df454a769e80eb47d2d34df8382a826fcdb79bac4382d + checksum: 58b7fef6f2d02c8f4737f9908a8d335a20bee20dba648233a69f28e7b39237791d2b9fbb818e628dcc053ddf16507b161ace7f1139e093d72365f1270c426de3 languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.9.0": - version: 6.9.0 - resolution: "@typescript-eslint/scope-manager@npm:6.9.0" +"@typescript-eslint/scope-manager@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/scope-manager@npm:6.13.1" dependencies: - "@typescript-eslint/types": 6.9.0 - "@typescript-eslint/visitor-keys": 6.9.0 - checksum: b7ddcea11bdb95107659800bdf3b33eae22a4dc5c28dc0f8dc5507aa9affaae0e332b6d8c7d5286a7ec75e7c4abd211eb9fdf9647a9a796689cdcc11f6ab40c6 + "@typescript-eslint/types": 6.13.1 + "@typescript-eslint/visitor-keys": 6.13.1 + checksum: 109a213f82719e10f8c6a0168f2e105dc1369c7e0c075c1f30af137030fc866a3a585a77ff78a9a3538afc213061c8aedbb4462a91f26cbd90eefbab8b89ea10 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.9.0": - version: 6.9.0 - resolution: "@typescript-eslint/type-utils@npm:6.9.0" +"@typescript-eslint/type-utils@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/type-utils@npm:6.13.1" dependencies: - "@typescript-eslint/typescript-estree": 6.9.0 - "@typescript-eslint/utils": 6.9.0 + "@typescript-eslint/typescript-estree": 6.13.1 + "@typescript-eslint/utils": 6.13.1 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -3541,23 +3554,23 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 279b0000cd2fe7ccfbd2f311736b14c8bb9287081f553c9452c95966650c822e67442ba5a62d7fea3ee2f61ccc0fcb218f21e1ee7ccf3984c52e5942d2bbb065 + checksum: e39d28dd2f3b47a26b4f6aa2c7a301bdd769ce9148d734be93441a813c3d1111eba1d655677355bba5519f3d4dbe93e4ff4e46830216b0302df0070bf7a80057 languageName: node linkType: hard -"@typescript-eslint/types@npm:6.9.0": - version: 6.9.0 - resolution: "@typescript-eslint/types@npm:6.9.0" - checksum: e0444afa1f2ebca746c72b3d0bf95982eb1e8b4fb91bcba465c1345c35fa13b36c589bfd91c776b864f223bc50817b2613df5892185c2e34332bf4cc57cc865d +"@typescript-eslint/types@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/types@npm:6.13.1" + checksum: bb1d52f1646bab9acd3ec874567ffbaaaf7fe4a5f79845bdacbfea46d15698e58d45797da05b08c23f9496a17229b7f2c1363d000fd89ce4e79874fd57ba1d4a languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.9.0": - version: 6.9.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.9.0" +"@typescript-eslint/typescript-estree@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/typescript-estree@npm:6.13.1" dependencies: - "@typescript-eslint/types": 6.9.0 - "@typescript-eslint/visitor-keys": 6.9.0 + "@typescript-eslint/types": 6.13.1 + "@typescript-eslint/visitor-keys": 6.13.1 debug: ^4.3.4 globby: ^11.1.0 is-glob: ^4.0.3 @@ -3566,34 +3579,34 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 51088c23cca608a6e5c195b0a2d8a17ad00ca47199ba4df0c1013912a80194bff9f5bd4d035d6ab2596788491e9a3e04bbf6cad6494a3b1bbd59fea442750268 + checksum: 09aa0f5cbd60e84df4f58f3d479be352549600b24dbefe75c686ea89252526c52c1c06ce1ae56c0405dd7337002e741c2ba02b71fb1caa3b94a740a70fcc8699 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.9.0": - version: 6.9.0 - resolution: "@typescript-eslint/utils@npm:6.9.0" +"@typescript-eslint/utils@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/utils@npm:6.13.1" dependencies: "@eslint-community/eslint-utils": ^4.4.0 "@types/json-schema": ^7.0.12 "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.9.0 - "@typescript-eslint/types": 6.9.0 - "@typescript-eslint/typescript-estree": 6.9.0 + "@typescript-eslint/scope-manager": 6.13.1 + "@typescript-eslint/types": 6.13.1 + "@typescript-eslint/typescript-estree": 6.13.1 semver: ^7.5.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 - checksum: 973c24d7858f224934958ee58c21ff21dfe54dbb1d0e0c5f889298fadcd7ee2dbfd49cf86ccafab74d428c31de66cd9beee7c39d2b64f9edcc9e941573bac175 + checksum: 14f64840869c8755af4d287cfc74abc424dc139559e87ca1a8b0e850f4fa56311d99dfb61a43dd4433eae5914be12b4b3390e55de1f236dce6701830d17e31c9 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.9.0": - version: 6.9.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.9.0" +"@typescript-eslint/visitor-keys@npm:6.13.1": + version: 6.13.1 + resolution: "@typescript-eslint/visitor-keys@npm:6.13.1" dependencies: - "@typescript-eslint/types": 6.9.0 + "@typescript-eslint/types": 6.13.1 eslint-visitor-keys: ^3.4.1 - checksum: de8e2e363df41e5ae9774a5ebd1c49d29c771ea8b3869917f65a74cd4d14a67417c79916f456ee81ef5b0d947b7b8975385fc6eea3f1812d53a2eaaea832459e + checksum: d15d362203a2fe995ea62a59d5b44c15c8fb1fb30ff59dd1542a980f75b3b62035303dfb781d83709921613f6ac8cc5bf57b70f6e20d820aec8b7911f07152e9 languageName: node linkType: hard @@ -3809,10 +3822,10 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^1.0.0": - version: 1.1.1 - resolution: "abbrev@npm:1.1.1" - checksum: a4a97ec07d7ea112c517036882b2ac22f3109b7b19077dc656316d07d308438aac28e4d9746dc4d84bf6b1e75b4a7b0a5f3cb30592419f128ca9a8cee3bcfa17 +"abbrev@npm:^2.0.0": + version: 2.0.0 + resolution: "abbrev@npm:2.0.0" + checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 languageName: node linkType: hard @@ -3845,22 +3858,22 @@ __metadata: linkType: hard "acorn-walk@npm:^8.0.2": - version: 8.2.0 - resolution: "acorn-walk@npm:8.2.0" - checksum: 1715e76c01dd7b2d4ca472f9c58968516a4899378a63ad5b6c2d668bba8da21a71976c14ec5f5b75f887b6317c4ae0b897ab141c831d741dc76024d8745f1ad1 + version: 8.3.0 + resolution: "acorn-walk@npm:8.3.0" + checksum: 15ea56ab6529135be05e7d018f935ca80a572355dd3f6d3cd717e36df3346e0f635a93ae781b1c7942607693e2e5f3ef81af5c6fc697bbadcc377ebda7b7f5f6 languageName: node linkType: hard "acorn@npm:^8.1.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.10.0 - resolution: "acorn@npm:8.10.0" + version: 8.11.2 + resolution: "acorn@npm:8.11.2" bin: acorn: bin/acorn - checksum: 538ba38af0cc9e5ef983aee196c4b8b4d87c0c94532334fa7e065b2c8a1f85863467bb774231aae91613fcda5e68740c15d97b1967ae3394d20faddddd8af61d + checksum: 818450408684da89423e3daae24e4dc9b68692db8ab49ea4569c7c5abb7a3f23669438bf129cc81dfdada95e1c9b944ee1bfca2c57a05a4dc73834a612fbf6a7 languageName: node linkType: hard -"agent-base@npm:6, agent-base@npm:^6.0.2": +"agent-base@npm:6": version: 6.0.2 resolution: "agent-base@npm:6.0.2" dependencies: @@ -3869,12 +3882,12 @@ __metadata: languageName: node linkType: hard -"agentkeepalive@npm:^4.2.1": - version: 4.5.0 - resolution: "agentkeepalive@npm:4.5.0" +"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": + version: 7.1.0 + resolution: "agent-base@npm:7.1.0" dependencies: - humanize-ms: ^1.2.1 - checksum: 13278cd5b125e51eddd5079f04d6fe0914ac1b8b91c1f3db2c1822f99ac1a7457869068997784342fe455d59daaff22e14fb7b8c3da4e741896e7e31faf92481 + debug: ^4.3.4 + checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f languageName: node linkType: hard @@ -4011,23 +4024,6 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3 || ^2.0.0": - version: 2.0.0 - resolution: "aproba@npm:2.0.0" - checksum: 5615cadcfb45289eea63f8afd064ab656006361020e1735112e346593856f87435e02d8dcc7ff0d11928bc7d425f27bc7c2a84f6c0b35ab0ff659c814c138a24 - languageName: node - linkType: hard - -"are-we-there-yet@npm:^3.0.0": - version: 3.0.1 - resolution: "are-we-there-yet@npm:3.0.1" - dependencies: - delegates: ^1.0.0 - readable-stream: ^3.6.0 - checksum: 52590c24860fa7173bedeb69a4c05fb573473e860197f618b9a28432ee4379049336727ae3a1f9c4cb083114601c1140cee578376164d0e651217a9843f9fe83 - languageName: node - linkType: hard - "argparse@npm:^1.0.7": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -4231,9 +4227,9 @@ __metadata: linkType: hard "big-integer@npm:^1.6.44": - version: 1.6.51 - resolution: "big-integer@npm:1.6.51" - checksum: 3d444173d1b2e20747e2c175568bedeebd8315b0637ea95d75fd27830d3b8e8ba36c6af40374f36bdaea7b5de376dcada1b07587cb2a79a928fccdb6e6e3c518 + version: 1.6.52 + resolution: "big-integer@npm:1.6.52" + checksum: 6e86885787a20fed96521958ae9086960e4e4b5e74d04f3ef7513d4d0ad631a9f3bde2730fc8aaa4b00419fc865f6ec573e5320234531ef37505da7da192c40b languageName: node linkType: hard @@ -4282,16 +4278,16 @@ __metadata: linkType: hard "browserslist@npm:^4.14.5, browserslist@npm:^4.21.9, browserslist@npm:^4.22.1": - version: 4.22.1 - resolution: "browserslist@npm:4.22.1" + version: 4.22.2 + resolution: "browserslist@npm:4.22.2" dependencies: - caniuse-lite: ^1.0.30001541 - electron-to-chromium: ^1.4.535 - node-releases: ^2.0.13 + caniuse-lite: ^1.0.30001565 + electron-to-chromium: ^1.4.601 + node-releases: ^2.0.14 update-browserslist-db: ^1.0.13 bin: browserslist: cli.js - checksum: 7e6b10c53f7dd5d83fd2b95b00518889096382539fed6403829d447e05df4744088de46a571071afb447046abc3c66ad06fbc790e70234ec2517452e32ffd862 + checksum: 33ddfcd9145220099a7a1ac533cecfe5b7548ffeb29b313e1b57be6459000a1f8fa67e781cf4abee97268ac594d44134fcc4a6b2b4750ceddc9796e3a22076d9 languageName: node linkType: hard @@ -4329,23 +4325,23 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^17.0.0": - version: 17.1.4 - resolution: "cacache@npm:17.1.4" +"cacache@npm:^18.0.0": + version: 18.0.1 + resolution: "cacache@npm:18.0.1" dependencies: "@npmcli/fs": ^3.1.0 fs-minipass: ^3.0.0 glob: ^10.2.2 - lru-cache: ^7.7.1 + lru-cache: ^10.0.1 minipass: ^7.0.3 - minipass-collect: ^1.0.2 + 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: b7751df756656954a51201335addced8f63fc53266fa56392c9f5ae83c8d27debffb4458ac2d168a744a4517ec3f2163af05c20097f93d17bdc2dc8a385e14a6 + checksum: 5a0b3b2ea451a0379814dc1d3c81af48c7c6db15cd8f7d72e028501ae0036a599a99bbac9687bfec307afb2760808d1c7708e9477c8c70d2b166e7d80b162a23 languageName: node linkType: hard @@ -4393,10 +4389,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001541": - version: 1.0.30001554 - resolution: "caniuse-lite@npm:1.0.30001554" - checksum: ccb557daa716b474a15f3a0a3a0e33f59393024a9fd1ccef6d8ee6f35c195fb5cca7f99f1ac88e3db5926b4f1bcd4ad6d7380a27e1d45d68468a837dd7e60106 +"caniuse-lite@npm:^1.0.30001565": + version: 1.0.30001566 + resolution: "caniuse-lite@npm:1.0.30001566" + checksum: 0f9084bf9f7d5c0a9ddb200c2baddb25dd2ad5a2f205f01e7b971f3e98e9a7bb23c2d86bae48237e9bc9782b682cffaaf3406d936937ab9844987dbe2a6401f2 languageName: node linkType: hard @@ -4538,15 +4534,6 @@ __metadata: languageName: node linkType: hard -"color-support@npm:^1.1.3": - version: 1.1.3 - resolution: "color-support@npm:1.1.3" - bin: - color-support: bin.js - checksum: 9b7356817670b9a13a26ca5af1c21615463b500783b739b7634a0c2047c16cef4b2865d7576875c31c3cddf9dd621fa19285e628f20198b233a5cfdda6d0793b - languageName: node - linkType: hard - "colord@npm:^2.9.3": version: 2.9.3 resolution: "colord@npm:2.9.3" @@ -4621,13 +4608,6 @@ __metadata: languageName: node linkType: hard -"console-control-strings@npm:^1.1.0": - version: 1.1.0 - resolution: "console-control-strings@npm:1.1.0" - checksum: 8755d76787f94e6cf79ce4666f0c5519906d7f5b02d4b884cf41e11dcd759ed69c57da0670afd9236d229a46e0f9cf519db0cd829c6dca820bb5a5c3def584ed - languageName: node - linkType: hard - "convert-source-map@npm:^2.0.0": version: 2.0.0 resolution: "convert-source-map@npm:2.0.0" @@ -4636,11 +4616,11 @@ __metadata: linkType: hard "core-js-compat@npm:^3.31.0, core-js-compat@npm:^3.33.1": - version: 3.33.1 - resolution: "core-js-compat@npm:3.33.1" + version: 3.33.3 + resolution: "core-js-compat@npm:3.33.3" dependencies: browserslist: ^4.22.1 - checksum: 39329daf135a3d8fdd86cf61d4fb2e868d1d9a60308cd98fccd0296d5e40b040c107e9aaa8a87163d8c058c69fbd441bc0a7a035aebd2d0978275bd0b257df15 + checksum: cb121e83f0f5f18b2b75428cdfb19524936a18459f1e0358f9124c8ff8b75d6a5901495cb996560cfde3a416103973f78eb5947777bb8b2fd877cdf84471465d languageName: node linkType: hard @@ -4812,7 +4792,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4": +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.2, debug@npm:^4.3.4": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -4921,7 +4901,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -4939,13 +4919,6 @@ __metadata: languageName: node linkType: hard -"delegates@npm:^1.0.0": - version: 1.0.0 - resolution: "delegates@npm:1.0.0" - checksum: a51744d9b53c164ba9c0492471a1a2ffa0b6727451bdc89e31627fdf4adda9d51277cfcbfb20f0a6f08ccb3c436f341df3e92631a3440226d93a8971724771fd - languageName: node - linkType: hard - "detect-newline@npm:^3.0.0": version: 3.1.0 resolution: "detect-newline@npm:3.1.0" @@ -5044,10 +5017,10 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.535": - version: 1.4.567 - resolution: "electron-to-chromium@npm:1.4.567" - checksum: 346aa125a2a83d7586f12c88c6bfbd0103e55a1fe2464fe062b09b02c25a4f4d85c751661b6cd2df24286eb2eda505e2c7dda3a22da3955f2c56bd83cf6500aa +"electron-to-chromium@npm:^1.4.601": + version: 1.4.601 + resolution: "electron-to-chromium@npm:1.4.601" + checksum: 6c6d090afaab83f49fe413c2558a3294e7dfce6a9d8afda3496a80ba59377901279ea7903122558399d5f5dbbdcca8562e3e826b7b78e7ec0b561fcc02c45f73 languageName: node linkType: hard @@ -5120,11 +5093,11 @@ __metadata: linkType: hard "envinfo@npm:^7.7.3": - version: 7.10.0 - resolution: "envinfo@npm:7.10.0" + version: 7.11.0 + resolution: "envinfo@npm:7.11.0" bin: envinfo: dist/cli.js - checksum: 05e81a5768c42cbd5c580dc3f274db3401facadd53e9bd52e2aa49dfbb5d8b26f6181c25a6652d79618a6994185bd2b1c137673101690b147f758e4e71d42f7d + checksum: c45a7d20409d5f4cda72483b150d3816b15b434f2944d72c1495d8838bd7c4e7b2f32c12128ffb9b92b5f66f436237b8a525eb3a9a5da2d20013bc4effa28aef languageName: node linkType: hard @@ -5192,9 +5165,9 @@ __metadata: linkType: hard "es-module-lexer@npm:^1.2.1": - version: 1.3.1 - resolution: "es-module-lexer@npm:1.3.1" - checksum: 3beafa7e171eb1e8cc45695edf8d51638488dddf65294d7911f8d6a96249da6a9838c87529262cc6ea53988d8272cec0f4bff93f476ed031a54ba3afb51a0ed3 + version: 1.4.1 + resolution: "es-module-lexer@npm:1.4.1" + checksum: a11b5a256d4e8e9c7d94c2fd87415ccd1591617b6edd847e064503f8eaece2d25e2e9078a02c5ce3ed5e83bb748f5b4820efbe78072c8beb07ac619c2edec35d languageName: node linkType: hard @@ -5324,13 +5297,13 @@ __metadata: linkType: hard "eslint@npm:^8.36.0": - version: 8.52.0 - resolution: "eslint@npm:8.52.0" + version: 8.55.0 + resolution: "eslint@npm:8.55.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.6.1 - "@eslint/eslintrc": ^2.1.2 - "@eslint/js": 8.52.0 + "@eslint/eslintrc": ^2.1.4 + "@eslint/js": 8.55.0 "@humanwhocodes/config-array": ^0.11.13 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -5367,7 +5340,7 @@ __metadata: text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: fd22d1e9bd7090e31b00cbc7a3b98f3b76020a4c4641f987ae7d0c8f52e1b88c3b268bdfdabac2e1a93513e5d11339b718ff45cbff48a44c35d7e52feba510ed + checksum: 83f82a604559dc1faae79d28fdf3dfc9e592ca221052e2ea516e1b379b37e77e4597705a16880e2f5ece4f79087c1dd13fd7f6e9746f794a401175519db18b41 languageName: node linkType: hard @@ -5521,15 +5494,15 @@ __metadata: linkType: hard "fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1": - version: 3.3.1 - resolution: "fast-glob@npm:3.3.1" + version: 3.3.2 + resolution: "fast-glob@npm:3.3.2" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 micromatch: ^4.0.4 - checksum: b6f3add6403e02cf3a798bfbb1183d0f6da2afd368f27456010c0bc1f9640aea308243d4cb2c0ab142f618276e65ecb8be1661d7c62a7b4e5ba774b9ce5432e5 + checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 languageName: node linkType: hard @@ -5582,11 +5555,11 @@ __metadata: linkType: hard "file-entry-cache@npm:^7.0.0": - version: 7.0.1 - resolution: "file-entry-cache@npm:7.0.1" + version: 7.0.2 + resolution: "file-entry-cache@npm:7.0.2" dependencies: - flat-cache: ^3.1.1 - checksum: 3b5affa175cc246147ca394fa2ed719d306126a9259bef7b29c4024451d6671c82bf505600c37ec1398f80427c1fa91edb973b5d5228fd40590f797ce7a2401c + flat-cache: ^3.2.0 + checksum: 283c674fc26bed1c44e74cf25c2640c813e222ea30a2536404b53511ca311d4a2502ee8145a01aecd12b9a910eb4162364776be27a9683e8447332054e9d712f languageName: node linkType: hard @@ -5626,14 +5599,14 @@ __metadata: languageName: node linkType: hard -"flat-cache@npm:^3.0.4, flat-cache@npm:^3.1.1": - version: 3.1.1 - resolution: "flat-cache@npm:3.1.1" +"flat-cache@npm:^3.0.4, flat-cache@npm:^3.2.0": + version: 3.2.0 + resolution: "flat-cache@npm:3.2.0" dependencies: flatted: ^3.2.9 keyv: ^4.5.3 rimraf: ^3.0.2 - checksum: 4958cfe0f46acf84953d4e16676ef5f0d38eab3a92d532a1e8d5f88f11eea8b36d5d598070ff2aeae15f1fde18f8d7d089eefaf9db10b5a587cc1c9072325c7a + checksum: e7e0f59801e288b54bee5cb9681e9ee21ee28ef309f886b312c9d08415b79fc0f24ac842f84356ce80f47d6a53de62197ce0e6e148dc42d5db005992e2a756ec languageName: node linkType: hard @@ -5771,22 +5744,6 @@ __metadata: languageName: node linkType: hard -"gauge@npm:^4.0.3": - version: 4.0.4 - resolution: "gauge@npm:4.0.4" - dependencies: - aproba: ^1.0.3 || ^2.0.0 - color-support: ^1.1.3 - console-control-strings: ^1.1.0 - has-unicode: ^2.0.1 - signal-exit: ^3.0.7 - string-width: ^4.2.3 - strip-ansi: ^6.0.1 - wide-align: ^1.1.5 - checksum: 788b6bfe52f1dd8e263cda800c26ac0ca2ff6de0b6eee2fe0d9e3abf15e149b651bd27bf5226be10e6e3edb5c4e5d5985a5a1a98137e7a892f75eff76467ad2d - languageName: node - linkType: hard - "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -5862,7 +5819,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.7": +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.3.7": version: 10.3.10 resolution: "glob@npm:10.3.10" dependencies: @@ -6061,13 +6018,6 @@ __metadata: languageName: node linkType: hard -"has-unicode@npm:^2.0.1": - version: 2.0.1 - resolution: "has-unicode@npm:2.0.1" - checksum: 1eab07a7436512db0be40a710b29b5dc21fa04880b7f63c9980b706683127e3c1b57cb80ea96d47991bdae2dfe479604f6a1ba410106ee1046a41d1bd0814400 - languageName: node - linkType: hard - "hasown@npm:^2.0.0": version: 2.0.0 resolution: "hasown@npm:2.0.0" @@ -6146,7 +6096,17 @@ __metadata: languageName: node linkType: hard -"https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": +"http-proxy-agent@npm:^7.0.0": + version: 7.0.0 + resolution: "http-proxy-agent@npm:7.0.0" + dependencies: + agent-base: ^7.1.0 + debug: ^4.3.4 + checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" dependencies: @@ -6156,6 +6116,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.1": + version: 7.0.2 + resolution: "https-proxy-agent@npm:7.0.2" + dependencies: + agent-base: ^7.0.2 + debug: 4 + checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e5248444292 + languageName: node + linkType: hard + "human-signals@npm:^2.1.0": version: 2.1.0 resolution: "human-signals@npm:2.1.0" @@ -6170,15 +6140,6 @@ __metadata: languageName: node linkType: hard -"humanize-ms@npm:^1.2.1": - version: 1.2.1 - resolution: "humanize-ms@npm:1.2.1" - dependencies: - ms: ^2.0.0 - checksum: 9c7a74a2827f9294c009266c82031030eae811ca87b0da3dceb8d6071b9bde22c9f3daef0469c3c533cc67a97d8a167cd9fc0389350e5f415f61a79b171ded16 - languageName: node - linkType: hard - "iconv-lite@npm:0.6.3, iconv-lite@npm:^0.6.2": version: 0.6.3 resolution: "iconv-lite@npm:0.6.3" @@ -6207,9 +6168,9 @@ __metadata: linkType: hard "ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef + version: 5.3.0 + resolution: "ignore@npm:5.3.0" + checksum: 2736da6621f14ced652785cb05d86301a66d70248597537176612bd0c8630893564bd5f6421f8806b09e8472e75c591ef01672ab8059c07c6eb2c09cefe04bf9 languageName: node linkType: hard @@ -6273,7 +6234,7 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.3": +"inherits@npm:2": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 @@ -6592,6 +6553,13 @@ __metadata: languageName: node linkType: hard +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 7fe1931ee4e88eb5aa524cd3ceb8c882537bc3a81b02e438b240e47012eef49c86904d0f0e593ea7c3a9996d18d0f1f3be8d3eaa92333977b0c3a9d353d5563e + languageName: node + linkType: hard + "isobject@npm:^3.0.1": version: 3.0.1 resolution: "isobject@npm:3.0.1" @@ -6607,9 +6575,9 @@ __metadata: linkType: hard "istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": - version: 3.2.0 - resolution: "istanbul-lib-coverage@npm:3.2.0" - checksum: a2a545033b9d56da04a8571ed05c8120bf10e9bce01cf8633a3a2b0d1d83dff4ac4fe78d6d5673c27fc29b7f21a41d75f83a36be09f82a61c367b56aa73c1ff9 + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 languageName: node linkType: hard @@ -7345,6 +7313,19 @@ __metadata: languageName: node linkType: hard +"jupyterlab-unfold@npm:0.3.0": + version: 0.3.0 + resolution: "jupyterlab-unfold@npm:0.3.0" + dependencies: + "@jupyterlab/application": ^4.0.5 + "@jupyterlab/docmanager": ^4.0.5 + "@jupyterlab/filebrowser": ^4.0.5 + "@jupyterlab/services": ^7.0.5 + "@lumino/algorithm": ^2.0.0 + checksum: 7316f695a6349474b749f965a8105b5845c3dcdf55169977a875ff661a02ae36f9b961f6abeeb56f724d6060d642d7dafda807d69c03a6858a58312a137ec133 + languageName: node + linkType: hard + "keyv@npm:^4.5.3": version: 4.5.4 resolution: "keyv@npm:4.5.4" @@ -7392,15 +7373,15 @@ __metadata: languageName: node linkType: hard -"lib0@npm:^0.2.74, lib0@npm:^0.2.85": - version: 0.2.87 - resolution: "lib0@npm:0.2.87" +"lib0@npm:^0.2.85, lib0@npm:^0.2.86": + version: 0.2.88 + resolution: "lib0@npm:0.2.88" dependencies: isomorphic.js: ^0.2.4 bin: 0gentesthtml: bin/gentesthtml.js 0serve: bin/0serve.js - checksum: c50f4ed27e4df1a8fe8846251740e3757ac37146087a3b14f23240aa654174ccaf62f4f516cfa162fae019f82cdc0483b78310dd8410ac5fc8b5092b4d2e0b5d + checksum: 1ac13d6781f4d29aa317ad9fb9b6c41e8bed52b096a369f54d10d9b8651ceb4a0a63b06c01c2e1c7319d3bb74668afb6cac3735161b32031f185cec024bbba37 languageName: node linkType: hard @@ -7539,6 +7520,13 @@ __metadata: languageName: node linkType: hard +"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.1.0 + resolution: "lru-cache@npm:10.1.0" + checksum: 58056d33e2500fbedce92f8c542e7c11b50d7d086578f14b7074d8c241422004af0718e08a6eaae8705cee09c77e39a61c1c79e9370ba689b7010c152e6a76ab + languageName: node + linkType: hard + "lru-cache@npm:^5.1.1": version: 5.1.1 resolution: "lru-cache@npm:5.1.1" @@ -7557,20 +7545,6 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^7.7.1": - version: 7.18.3 - resolution: "lru-cache@npm:7.18.3" - checksum: e550d772384709deea3f141af34b6d4fa392e2e418c1498c078de0ee63670f1f46f5eee746e8ef7e69e1c895af0d4224e62ee33e66a543a14763b0f2e74c1356 - languageName: node - linkType: hard - -"lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.0.1 - resolution: "lru-cache@npm:10.0.1" - checksum: 06f8d0e1ceabd76bb6f644a26dbb0b4c471b79c7b514c13c6856113879b3bf369eb7b497dad4ff2b7e2636db202412394865b33c332100876d838ad1372f0181 - languageName: node - linkType: hard - "make-dir@npm:^4.0.0": version: 4.0.0 resolution: "make-dir@npm:4.0.0" @@ -7587,26 +7561,22 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^11.0.3": - version: 11.1.1 - resolution: "make-fetch-happen@npm:11.1.1" +"make-fetch-happen@npm:^13.0.0": + version: 13.0.0 + resolution: "make-fetch-happen@npm:13.0.0" dependencies: - agentkeepalive: ^4.2.1 - cacache: ^17.0.0 + "@npmcli/agent": ^2.0.0 + cacache: ^18.0.0 http-cache-semantics: ^4.1.1 - http-proxy-agent: ^5.0.0 - https-proxy-agent: ^5.0.0 is-lambda: ^1.0.1 - lru-cache: ^7.7.1 - minipass: ^5.0.0 + minipass: ^7.0.2 minipass-fetch: ^3.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 negotiator: ^0.6.3 promise-retry: ^2.0.1 - socks-proxy-agent: ^7.0.0 ssri: ^10.0.0 - checksum: 7268bf274a0f6dcf0343829489a4506603ff34bd0649c12058753900b0eb29191dce5dba12680719a5d0a983d3e57810f594a12f3c18494e93a1fbc6348a4540 + checksum: 7c7a6d381ce919dd83af398b66459a10e2fe8f4504f340d1d090d3fa3d1b0c93750220e1d898114c64467223504bd258612ba83efbc16f31b075cd56de24b4af languageName: node linkType: hard @@ -7800,12 +7770,12 @@ __metadata: languageName: node linkType: hard -"minipass-collect@npm:^1.0.2": - version: 1.0.2 - resolution: "minipass-collect@npm:1.0.2" +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" dependencies: - minipass: ^3.0.0 - checksum: 14df761028f3e47293aee72888f2657695ec66bd7d09cae7ad558da30415fdc4752bbfee66287dcc6fd5e6a2fa3466d6c484dc1cbd986525d9393b9523d97f10 + minipass: ^7.0.3 + checksum: b251bceea62090f67a6cced7a446a36f4cd61ee2d5cea9aee7fff79ba8030e416327a1c5aa2908dc22629d06214b46d88fdab8c51ac76bacbf5703851b5ad342 languageName: node linkType: hard @@ -7867,7 +7837,7 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.3": +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": version: 7.0.4 resolution: "minipass@npm:7.0.4" checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 @@ -7900,19 +7870,12 @@ __metadata: languageName: node linkType: hard -"ms@npm:^2.0.0": - version: 2.1.3 - resolution: "ms@npm:2.1.3" - checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d - languageName: node - linkType: hard - -"nanoid@npm:^3.3.6": - version: 3.3.6 - resolution: "nanoid@npm:3.3.6" +"nanoid@npm:^3.3.6, nanoid@npm:^3.3.7": + version: 3.3.7 + resolution: "nanoid@npm:3.3.7" bin: nanoid: bin/nanoid.cjs - checksum: 7d0eda657002738aa5206107bd0580aead6c95c460ef1bdd0b1a87a9c7ae6277ac2e9b945306aaa5b32c6dcb7feaf462d0f552e7f8b5718abfc6ead5c94a71b3 + checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 languageName: node linkType: hard @@ -7959,23 +7922,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 9.4.0 - resolution: "node-gyp@npm:9.4.0" + version: 10.0.1 + resolution: "node-gyp@npm:10.0.1" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 - glob: ^7.1.4 + glob: ^10.3.10 graceful-fs: ^4.2.6 - make-fetch-happen: ^11.0.3 - nopt: ^6.0.0 - npmlog: ^6.0.0 - rimraf: ^3.0.2 + make-fetch-happen: ^13.0.0 + nopt: ^7.0.0 + proc-log: ^3.0.0 semver: ^7.3.5 tar: ^6.1.2 - which: ^2.0.2 + which: ^4.0.0 bin: node-gyp: bin/node-gyp.js - checksum: 78b404e2e0639d64e145845f7f5a3cb20c0520cdaf6dda2f6e025e9b644077202ea7de1232396ba5bde3fee84cdc79604feebe6ba3ec84d464c85d407bb5da99 + checksum: 60a74e66d364903ce02049966303a57f898521d139860ac82744a5fdd9f7b7b3b61f75f284f3bfe6e6add3b8f1871ce305a1d41f775c7482de837b50c792223f languageName: node linkType: hard @@ -7986,21 +7948,21 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.13": - version: 2.0.13 - resolution: "node-releases@npm:2.0.13" - checksum: 17ec8f315dba62710cae71a8dad3cd0288ba943d2ece43504b3b1aa8625bf138637798ab470b1d9035b0545996f63000a8a926e0f6d35d0996424f8b6d36dda3 +"node-releases@npm:^2.0.14": + version: 2.0.14 + resolution: "node-releases@npm:2.0.14" + checksum: 59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41 languageName: node linkType: hard -"nopt@npm:^6.0.0": - version: 6.0.0 - resolution: "nopt@npm:6.0.0" +"nopt@npm:^7.0.0": + version: 7.2.0 + resolution: "nopt@npm:7.2.0" dependencies: - abbrev: ^1.0.0 + abbrev: ^2.0.0 bin: nopt: bin/nopt.js - checksum: 82149371f8be0c4b9ec2f863cc6509a7fd0fa729929c009f3a58e4eb0c9e4cae9920e8f1f8eb46e7d032fec8fb01bede7f0f41a67eb3553b7b8e14fa53de1dac + checksum: a9c0f57fb8cb9cc82ae47192ca2b7ef00e199b9480eed202482c962d61b59a7fbe7541920b2a5839a97b42ee39e288c0aed770e38057a608d7f579389dfde410 languageName: node linkType: hard @@ -8074,18 +8036,6 @@ __metadata: languageName: node linkType: hard -"npmlog@npm:^6.0.0": - version: 6.0.2 - resolution: "npmlog@npm:6.0.2" - dependencies: - are-we-there-yet: ^3.0.0 - console-control-strings: ^1.1.0 - gauge: ^4.0.3 - set-blocking: ^2.0.0 - checksum: ae238cd264a1c3f22091cdd9e2b106f684297d3c184f1146984ecbe18aaa86343953f26b9520dedd1b1372bc0316905b736c1932d778dbeb1fcf5a1001390e2a - languageName: node - linkType: hard - "nwsapi@npm:^2.2.2": version: 2.2.7 resolution: "nwsapi@npm:2.2.7" @@ -8115,14 +8065,14 @@ __metadata: linkType: hard "object.assign@npm:^4.1.4": - version: 4.1.4 - resolution: "object.assign@npm:4.1.4" + version: 4.1.5 + resolution: "object.assign@npm:4.1.5" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.1.4 + call-bind: ^1.0.5 + define-properties: ^1.2.1 has-symbols: ^1.0.3 object-keys: ^1.1.1 - checksum: 76cab513a5999acbfe0ff355f15a6a125e71805fcf53de4e9d4e082e1989bdb81d1e329291e1e4e0ae7719f0e4ef80e88fb2d367ae60500d79d25a6224ac8864 + checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25 languageName: node linkType: hard @@ -8477,13 +8427,13 @@ __metadata: linkType: hard "postcss@npm:^8.3.11, postcss@npm:^8.4.21, postcss@npm:^8.4.28": - version: 8.4.31 - resolution: "postcss@npm:8.4.31" + version: 8.4.32 + resolution: "postcss@npm:8.4.32" dependencies: - nanoid: ^3.3.6 + nanoid: ^3.3.7 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 1d8611341b073143ad90486fcdfeab49edd243377b1f51834dc4f6d028e82ce5190e4f11bb2633276864503654fb7cab28e67abdc0fbf9d1f88cad4a0ff0beea + checksum: 220d9d0bf5d65be7ed31006c523bfb11619461d296245c1231831f90150aeb4a31eab9983ac9c5c89759a3ca8b60b3e0d098574964e1691673c3ce5c494305ae languageName: node linkType: hard @@ -8504,11 +8454,11 @@ __metadata: linkType: hard "prettier@npm:^3.0.0": - version: 3.0.3 - resolution: "prettier@npm:3.0.3" + version: 3.1.0 + resolution: "prettier@npm:3.1.0" bin: prettier: bin/prettier.cjs - checksum: e10b9af02b281f6c617362ebd2571b1d7fc9fb8a3bd17e371754428cda992e5e8d8b7a046e8f7d3e2da1dcd21aa001e2e3c797402ebb6111b5cd19609dd228e0 + checksum: 44b556bd56f74d7410974fbb2418bb4e53a894d3e7b42f6f87779f69f27a6c272fa7fc27cec0118cd11730ef3246478052e002cbd87e9a253f9cd04a56aa7d9b languageName: node linkType: hard @@ -8523,6 +8473,13 @@ __metadata: languageName: node linkType: hard +"proc-log@npm:^3.0.0": + version: 3.0.0 + resolution: "proc-log@npm:3.0.0" + checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 + languageName: node + linkType: hard + "process@npm:^0.11.10": version: 0.11.10 resolution: "process@npm:0.11.10" @@ -8569,9 +8526,9 @@ __metadata: linkType: hard "punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 languageName: node linkType: hard @@ -8681,17 +8638,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^3.6.0": - version: 3.6.2 - resolution: "readable-stream@npm:3.6.2" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: bdcbe6c22e846b6af075e32cf8f4751c2576238c5043169a1c221c92ee2878458a816a4ea33f4c67623c0b6827c8a400409bfb3cf0bf3381392d0b1dfb52ac8d - languageName: node - linkType: hard - "rechoir@npm:^0.8.0": version: 0.8.0 resolution: "rechoir@npm:0.8.0" @@ -8922,7 +8868,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.1.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.1.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -9051,13 +8997,6 @@ __metadata: languageName: node linkType: hard -"set-blocking@npm:^2.0.0": - version: 2.0.0 - resolution: "set-blocking@npm:2.0.0" - checksum: 6e65a05f7cf7ebdf8b7c75b101e18c0b7e3dff4940d480efed8aad3a36a4005140b660fa1d804cb8bce911cac290441dc728084a30504d3516ac2ff7ad607b02 - languageName: node - linkType: hard - "set-function-length@npm:^1.1.1": version: 1.1.1 resolution: "set-function-length@npm:1.1.1" @@ -9195,18 +9134,18 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "socks-proxy-agent@npm:7.0.0" +"socks-proxy-agent@npm:^8.0.1": + version: 8.0.2 + resolution: "socks-proxy-agent@npm:8.0.2" dependencies: - agent-base: ^6.0.2 - debug: ^4.3.3 - socks: ^2.6.2 - checksum: 720554370154cbc979e2e9ce6a6ec6ced205d02757d8f5d93fe95adae454fc187a5cbfc6b022afab850a5ce9b4c7d73e0f98e381879cf45f66317a4895953846 + agent-base: ^7.0.2 + debug: ^4.3.4 + socks: ^2.7.1 + checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d languageName: node linkType: hard -"socks@npm:^2.6.2": +"socks@npm:^2.7.1": version: 2.7.1 resolution: "socks@npm:2.7.1" dependencies: @@ -9357,7 +9296,7 @@ __metadata: languageName: node linkType: hard -"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^1.0.2 || 2 || 3 || 4, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" dependencies: @@ -9423,15 +9362,6 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.1.1": - version: 1.3.0 - resolution: "string_decoder@npm:1.3.0" - dependencies: - safe-buffer: ~5.2.0 - checksum: 8417646695a66e73aefc4420eb3b84cc9ffd89572861fe004e6aeb13c7bc00e2f616247505d2dbbef24247c372f70268f594af7126f43548565c68c117bdeb56 - languageName: node - linkType: hard - "strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": version: 6.0.1 resolution: "strip-ansi@npm:6.0.1" @@ -9549,14 +9479,14 @@ __metadata: linkType: hard "stylelint-prettier@npm:^4.0.0": - version: 4.0.2 - resolution: "stylelint-prettier@npm:4.0.2" + version: 4.1.0 + resolution: "stylelint-prettier@npm:4.1.0" dependencies: prettier-linter-helpers: ^1.0.0 peerDependencies: prettier: ">=3.0.0" stylelint: ">=15.8.0" - checksum: b60112c10b8f31456211d65b4c17238fdaf46ee9f80ab035621f2eb86b47505a4b9582d99f4334dfe370cc8104de870f7fcc256737d0f2e68f4357239f739054 + checksum: bbeb7e0dd49099c43297e88a61385b39f4b5810c8bfcc972d5b2706b6a7e14a8eefd5f9e623841cf3127111a8859eb624a3e7cc1bc5197c83c55c6c9a616a4d2 languageName: node linkType: hard @@ -9669,12 +9599,12 @@ __metadata: linkType: hard "synckit@npm:^0.8.5": - version: 0.8.5 - resolution: "synckit@npm:0.8.5" + version: 0.8.6 + resolution: "synckit@npm:0.8.6" dependencies: - "@pkgr/utils": ^2.3.1 - tslib: ^2.5.0 - checksum: 8a9560e5d8f3d94dc3cf5f7b9c83490ffa30d320093560a37b88f59483040771fd1750e76b9939abfbb1b5a23fd6dfbae77f6b338abffe7cae7329cd9b9bb86b + "@pkgr/utils": ^2.4.2 + tslib: ^2.6.2 + checksum: 7c1f4991d0afd63c090c0537f1cf8619dd5777a40cf83bf46beadbf4eb0f9e400d92044e90a177a305df4bcb56efbaf1b689877f301f2672d865b6eecf1be75a languageName: node linkType: hard @@ -9742,8 +9672,8 @@ __metadata: linkType: hard "terser@npm:^5.16.8": - version: 5.22.0 - resolution: "terser@npm:5.22.0" + version: 5.24.0 + resolution: "terser@npm:5.24.0" dependencies: "@jridgewell/source-map": ^0.3.3 acorn: ^8.8.2 @@ -9751,7 +9681,7 @@ __metadata: source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: ee95981c54ebd381e0b7f5872c646e7a05543e53960f8e0c2f240863c368989d43a3ca80b7e9f691683c92ba199eb4b91d61785fef0b9ca4a887eb55866001f4 + checksum: d88f774b6fa711a234fcecefd7657f99189c367e17dbe95a51c2776d426ad0e4d98d1ffe6edfdf299877c7602e495bdd711d21b2caaec188410795e5447d0f6c languageName: node linkType: hard @@ -9896,7 +9826,7 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.5.0, tslib@npm:^2.6.0": +"tslib@npm:^2.6.0, tslib@npm:^2.6.2": version: 2.6.2 resolution: "tslib@npm:2.6.2" checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad @@ -10093,9 +10023,9 @@ __metadata: linkType: hard "universalify@npm:^2.0.0": - version: 2.0.0 - resolution: "universalify@npm:2.0.0" - checksum: 2406a4edf4a8830aa6813278bab1f953a8e40f2f63a37873ffa9a3bc8f9745d06cc8e88f3572cb899b7e509013f7f6fcc3e37e8a6d914167a5381d8440518c44 + version: 2.0.1 + resolution: "universalify@npm:2.0.1" + checksum: ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60 languageName: node linkType: hard @@ -10139,7 +10069,7 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": +"util-deprecate@npm:^1.0.2": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 @@ -10156,13 +10086,13 @@ __metadata: linkType: hard "v8-to-istanbul@npm:^9.0.1": - version: 9.1.3 - resolution: "v8-to-istanbul@npm:9.1.3" + version: 9.2.0 + resolution: "v8-to-istanbul@npm:9.2.0" dependencies: "@jridgewell/trace-mapping": ^0.3.12 "@types/istanbul-lib-coverage": ^2.0.1 convert-source-map: ^2.0.0 - checksum: 5d592ab3d186b386065dace8e01c543a922a904b3cfac39667de172455a6b3d0e8e1401574fecb8a12092ad0809b5a8fd15f1cc14d0666139a1bb77cd6ac2cf8 + checksum: 31ef98c6a31b1dab6be024cf914f235408cd4c0dc56a5c744a5eea1a9e019ba279e1b6f90d695b78c3186feed391ed492380ccf095009e2eb91f3d058f0b4491 languageName: node linkType: hard @@ -10500,7 +10430,7 @@ __metadata: languageName: node linkType: hard -"which@npm:^2.0.1, which@npm:^2.0.2": +"which@npm:^2.0.1": version: 2.0.2 resolution: "which@npm:2.0.2" dependencies: @@ -10511,12 +10441,14 @@ __metadata: languageName: node linkType: hard -"wide-align@npm:^1.1.5": - version: 1.1.5 - resolution: "wide-align@npm:1.1.5" +"which@npm:^4.0.0": + version: 4.0.0 + resolution: "which@npm:4.0.0" dependencies: - string-width: ^1.0.2 || 2 || 3 || 4 - checksum: d5fc37cd561f9daee3c80e03b92ed3e84d80dde3365a8767263d03dacfc8fa06b065ffe1df00d8c2a09f731482fcacae745abfbb478d4af36d0a891fad4834d3 + isexe: ^3.1.1 + bin: + node-which: bin/which.js + checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 languageName: node linkType: hard @@ -10693,11 +10625,11 @@ __metadata: linkType: hard "yjs@npm:^13.5.0, yjs@npm:^13.5.40": - version: 13.6.8 - resolution: "yjs@npm:13.6.8" + version: 13.6.10 + resolution: "yjs@npm:13.6.10" dependencies: - lib0: ^0.2.74 - checksum: a2a6fd17a2cce6461b64bedd69f66845b9dfd4702e285be0b5e382840337232e54ba5cf5d48f871263074de625d3902d17ab8a1766695af3fc05a0b4da8d95e0 + lib0: ^0.2.86 + checksum: 027adf7fb6739debc44fa1a74f5e87248e026c582b65872c0a1b26aca0110f7a04605f77a38643ea562b9165d6c84e7a9311407e01a07870ebdafce008fc7ba4 languageName: node linkType: hard