From e65e64f9cbdc85712910d0a52f54b5b5485a82da Mon Sep 17 00:00:00 2001 From: david qiu Date: Fri, 14 Apr 2023 07:52:03 -0700 Subject: [PATCH] implement better chat history UI (#65) * implement better chat history UI * remove console log * add ScrollContainer component --- packages/jupyter-ai/jupyter_ai/handlers.py | 6 +- packages/jupyter-ai/jupyter_ai/models.py | 7 + packages/jupyter-ai/package.json | 19 +- .../src/components/chat-messages.tsx | 180 +++-- packages/jupyter-ai/src/components/chat.tsx | 60 +- .../src/components/scroll-container.tsx | 67 ++ .../src/contexts/collaborators-context.tsx | 68 ++ packages/jupyter-ai/src/handler.ts | 10 +- packages/jupyter-ai/src/index.ts | 11 +- .../jupyter-ai/src/widgets/chat-sidebar.tsx | 10 +- yarn.lock | 727 +++++++++++++++--- 11 files changed, 956 insertions(+), 209 deletions(-) create mode 100644 packages/jupyter-ai/src/components/scroll-container.tsx create mode 100644 packages/jupyter-ai/src/contexts/collaborators-context.tsx diff --git a/packages/jupyter-ai/jupyter_ai/handlers.py b/packages/jupyter-ai/jupyter_ai/handlers.py index d8d7849cd..4668a5a44 100644 --- a/packages/jupyter-ai/jupyter_ai/handlers.py +++ b/packages/jupyter-ai/jupyter_ai/handlers.py @@ -3,6 +3,7 @@ from typing import Dict, List import tornado import uuid +import time from tornado.web import HTTPError from pydantic import ValidationError @@ -191,10 +192,9 @@ def open(self): from `self.client_id`.""" client_id = self.generate_client_id() - chat_client_kwargs = {k: v for k, v in asdict(self.current_user).items() if k != "username"} self.chat_handlers[client_id] = self - self.chat_clients[client_id] = ChatClient(**chat_client_kwargs, id=client_id) + self.chat_clients[client_id] = ChatClient(**asdict(self.current_user), id=client_id) self.client_id = client_id self.write_message(ConnectionMessage(client_id=client_id).dict()) @@ -235,6 +235,7 @@ async def on_message(self, message): chat_message_id = str(uuid.uuid4()) chat_message = HumanChatMessage( id=chat_message_id, + time=time.time(), body=chat_request.prompt, client=self.chat_client, ) @@ -246,6 +247,7 @@ async def on_message(self, message): response = await ensure_async(self.chat_provider.apredict(input=message.content)) agent_message = AgentChatMessage( id=str(uuid.uuid4()), + time=time.time(), body=response, reply_to=chat_message_id ) diff --git a/packages/jupyter-ai/jupyter_ai/models.py b/packages/jupyter-ai/jupyter_ai/models.py index 71e2e8740..2800a545b 100644 --- a/packages/jupyter-ai/jupyter_ai/models.py +++ b/packages/jupyter-ai/jupyter_ai/models.py @@ -11,7 +11,12 @@ class ChatRequest(BaseModel): prompt: str class ChatClient(BaseModel): + # Client ID assigned by us. Necessary because different JupyterLab clients + # on the same device (i.e. running on multiple tabs/windows) may have the + # same user ID assigned to them by IdentityProvider. id: str + # User ID assigned by IdentityProvider. + username: str initials: str name: str display_name: str @@ -21,6 +26,7 @@ class ChatClient(BaseModel): class AgentChatMessage(BaseModel): type: Literal["agent"] = "agent" id: str + time: float body: str # message ID of the HumanChatMessage it is replying to reply_to: str @@ -28,6 +34,7 @@ class AgentChatMessage(BaseModel): class HumanChatMessage(BaseModel): type: Literal["human"] = "human" id: str + time: float body: str client: ChatClient diff --git a/packages/jupyter-ai/package.json b/packages/jupyter-ai/package.json index 0135fbd29..d3062c419 100644 --- a/packages/jupyter-ai/package.json +++ b/packages/jupyter-ai/package.json @@ -60,15 +60,17 @@ "dependencies": { "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", - "@jupyterlab/application": "^3.1.0", - "@jupyterlab/cells": "^3.4.2", - "@jupyterlab/coreutils": "^5.1.0", - "@jupyterlab/fileeditor": "^3.5.1", - "@jupyterlab/notebook": "^3.4.2", - "@jupyterlab/services": "^6.1.0", - "@jupyterlab/ui-components": "^3.4.2", + "@jupyterlab/application": "^3.6.3", + "@jupyterlab/cells": "^3.6.3", + "@jupyterlab/coreutils": "^5.6.3", + "@jupyterlab/fileeditor": "^3.6.3", + "@jupyterlab/notebook": "^3.6.3", + "@jupyterlab/services": "^6.6.3", + "@jupyterlab/ui-components": "^3.6.3", + "@jupyterlab/collaboration": "^3.6.3", "@mui/icons-material": "^5.11.0", "@mui/material": "^5.11.0", + "date-fns": "^2.29.3", "react": "^18.2.0", "react-dom": "^18.2.0", "react-markdown": "^8.0.6", @@ -99,7 +101,8 @@ "stylelint-config-standard": "~24.0.0", "stylelint-prettier": "^2.0.0", "ts-jest": "^26.0.0", - "typescript": "~4.1.3" + "typescript": "~4.1.3", + "y-protocols": "^1.0.5" }, "sideEffects": [ "style/*.css", diff --git a/packages/jupyter-ai/src/components/chat-messages.tsx b/packages/jupyter-ai/src/components/chat-messages.tsx index 3ad2ce017..e9c05038b 100644 --- a/packages/jupyter-ai/src/components/chat-messages.tsx +++ b/packages/jupyter-ai/src/components/chat-messages.tsx @@ -1,84 +1,146 @@ -import React from 'react'; +import React, { useState, useEffect } from 'react'; -import { Avatar, Box, useTheme } from '@mui/material'; +import { Avatar, Box, Typography } from '@mui/material'; import type { SxProps, Theme } from '@mui/material'; import PsychologyIcon from '@mui/icons-material/Psychology'; +import { formatDistanceToNowStrict, fromUnixTime } from 'date-fns'; import ReactMarkdown from 'react-markdown'; import remarkMath from 'remark-math'; import rehypeKatex from 'rehype-katex'; import 'katex/dist/katex.min.css'; import { ChatCodeView } from './chat-code-view'; +import { AiService } from '../handler'; +import { useCollaboratorsContext } from '../contexts/collaborators-context'; type ChatMessagesProps = { - sender: 'self' | 'ai' | string; - messages: string[]; + messages: AiService.ChatMessage[]; }; -function getAvatar(sender: 'self' | 'ai' | string) { +type ChatMessageHeaderProps = { + message: AiService.ChatMessage; + timestamp: string; + sx?: SxProps; +}; + +export function ChatMessageHeader(props: ChatMessageHeaderProps) { + const collaborators = useCollaboratorsContext(); + const sharedStyles: SxProps = { - height: '2em', - width: '2em' + height: '24px', + width: '24px' }; - switch (sender) { - case 'self': - return ; - case 'ai': - return ( - - - - ); - default: - return ; + let avatar: JSX.Element; + if (props.message.type === 'human') { + const bgcolor = collaborators?.[props.message.client.username]?.color; + avatar = ( + + + {props.message.client.initials} + + + ); + } else { + avatar = ( + + + + ); } + + const name = + props.message.type === 'human' + ? props.message.client.display_name + : 'Jupyter AI'; + + return ( + :not(:last-child)': { + marginRight: 3 + }, + ...props.sx + }} + > + {avatar} + + {name} + + {props.timestamp} + + + + ); } export function ChatMessages(props: ChatMessagesProps) { - const theme = useTheme(); - const radius = theme.spacing(2); + const [timestamps, setTimestamps] = useState>({}); + + /** + * Effect: update cached timestamp strings upon receiving a new message and + * every 5 seconds after that. + */ + useEffect(() => { + function updateTimestamps() { + const newTimestamps: Record = {}; + for (const message of props.messages) { + newTimestamps[message.id] = + formatDistanceToNowStrict(fromUnixTime(message.time)) + ' ago'; + } + setTimestamps(newTimestamps); + } + + updateTimestamps(); + const intervalId = setInterval(updateTimestamps, 5000); + return () => { + clearInterval(intervalId); + }; + }, [props.messages]); return ( - :not(:last-child)': { marginRight: 2 } }}> - {getAvatar(props.sender)} - - {props.messages.map((message, i) => ( - // extra div needed to ensure each bubble is on a new line - - - - {message} - - - - ))} - + :not(:last-child)': { borderBottom: '1px solid lightgrey' } }} + > + {props.messages.map((message, i) => ( + // extra div needed to ensure each bubble is on a new line + + + + {message.body} + + + ))} ); } diff --git a/packages/jupyter-ai/src/components/chat.tsx b/packages/jupyter-ai/src/components/chat.tsx index fbcc708f2..0a27578b7 100644 --- a/packages/jupyter-ai/src/components/chat.tsx +++ b/packages/jupyter-ai/src/components/chat.tsx @@ -1,6 +1,6 @@ import React, { useState, useEffect } from 'react'; - import { Box } from '@mui/system'; +import type { Awareness } from 'y-protocols/awareness'; import { JlThemeProvider } from './jl-theme-provider'; import { ChatMessages } from './chat-messages'; @@ -12,18 +12,15 @@ import { } from '../contexts/selection-context'; import { SelectionWatcher } from '../selection-watcher'; import { ChatHandler } from '../chat_handler'; - -type ChatMessageGroup = { - sender: 'self' | 'ai' | string; - messages: string[]; -}; +import { CollaboratorsContextProvider } from '../contexts/collaborators-context'; +import { ScrollContainer } from './scroll-container'; type ChatBodyProps = { chatHandler: ChatHandler; }; function ChatBody({ chatHandler }: ChatBodyProps): JSX.Element { - const [messageGroups, setMessageGroups] = useState([]); + const [messages, setMessages] = useState([]); const [includeSelection, setIncludeSelection] = useState(true); const [replaceSelection, setReplaceSelection] = useState(false); const [input, setInput] = useState(''); @@ -35,18 +32,7 @@ function ChatBody({ chatHandler }: ChatBodyProps): JSX.Element { useEffect(() => { async function fetchHistory() { const history = await chatHandler.getHistory(); - const messages = history.messages; - if (!messages.length) { - return; - } - - const newMessageGroups = messages.map( - (message: AiService.ChatMessage): ChatMessageGroup => ({ - sender: message.type === 'agent' ? 'ai' : 'self', - messages: [message.body] - }) - ); - setMessageGroups(newMessageGroups); + setMessages(history.messages); } fetchHistory(); @@ -61,13 +47,7 @@ function ChatBody({ chatHandler }: ChatBodyProps): JSX.Element { return; } - setMessageGroups(messageGroups => [ - ...messageGroups, - { - sender: message.type === 'agent' ? 'ai' : 'self', - messages: [message.body] - } - ]); + setMessages(messageGroups => [...messageGroups, message]); } chatHandler.addListener(handleChatEvents); @@ -115,24 +95,11 @@ function ChatBody({ chatHandler }: ChatBodyProps): JSX.Element { flexDirection: 'column' }} > - :not(:last-child)': { - marginBottom: 1 - } - }} - > - {messageGroups.map((group, idx) => ( - - ))} - + + + {/* https://css-tricks.com/books/greatest-css-tricks/pin-scrolling-to-bottom/ */} + + - + + + ); diff --git a/packages/jupyter-ai/src/components/scroll-container.tsx b/packages/jupyter-ai/src/components/scroll-container.tsx new file mode 100644 index 000000000..38ee9eaeb --- /dev/null +++ b/packages/jupyter-ai/src/components/scroll-container.tsx @@ -0,0 +1,67 @@ +import React, { useEffect, useMemo } from 'react'; +import { Box, SxProps, Theme } from '@mui/material'; + +type ScrollContainerProps = { + children: React.ReactNode; + sx?: SxProps; +}; + +/** + * Component that handles intelligent scrolling. + * + * - If viewport is at the bottom of the overflow container, appending new + * children keeps the viewport on the bottom of the overflow container. + * + * - If viewport is in the middle of the overflow container, appending new + * children leaves the viewport unaffected. + * + * Currently only works for Chrome and Firefox due to reliance on + * `overflow-anchor`. + * + * **References** + * - https://css-tricks.com/books/greatest-css-tricks/pin-scrolling-to-bottom/ + */ +export function ScrollContainer(props: ScrollContainerProps) { + const id = useMemo( + () => 'jupyter-ai-scroll-container-' + Date.now().toString(), + [] + ); + + /** + * Effect: Scroll the container to the bottom as soon as it is visible. + */ + useEffect(() => { + const el = document.querySelector(`#${id}`); + if (!el) return; + + const observer = new IntersectionObserver( + entries => { + entries.forEach(entry => { + if (entry.isIntersecting) { + el.scroll({ top: 999999999 }); + } + }); + }, + { threshold: 1.0 } + ); + + observer.observe(el); + return () => observer.disconnect(); + }, []); + + return ( + + {props.children} + + + ); +} diff --git a/packages/jupyter-ai/src/contexts/collaborators-context.tsx b/packages/jupyter-ai/src/contexts/collaborators-context.tsx new file mode 100644 index 000000000..333acbb98 --- /dev/null +++ b/packages/jupyter-ai/src/contexts/collaborators-context.tsx @@ -0,0 +1,68 @@ +import React, { useContext, useEffect, useState } from 'react'; +import type { Awareness } from 'y-protocols/awareness'; + +import { AiService } from '../handler'; + +const CollaboratorsContext = React.createContext< + Record +>({}); + +/** + * Returns a dictionary mapping each collaborator's username to their associated + * Collaborator object. + */ +export function useCollaboratorsContext() { + return useContext(CollaboratorsContext); +} + +type GlobalAwarenessStates = Map< + number, + { current: string; user: AiService.Collaborator } +>; + +type CollaboratorsContextProviderProps = { + globalAwareness: Awareness | null; + children: JSX.Element; +}; + +export function CollaboratorsContextProvider({ + globalAwareness, + children +}: CollaboratorsContextProviderProps) { + const [collaborators, setCollaborators] = useState< + Record + >({}); + + /** + * Effect: listen to changes in global awareness and update collaborators + * dictionary. + */ + useEffect(() => { + function handleChange() { + const states = (globalAwareness?.getStates() ?? + new Map()) as GlobalAwarenessStates; + + const collaboratorsDict: Record = {}; + states.forEach(state => { + collaboratorsDict[state.user.username] = state.user; + }); + + setCollaborators(collaboratorsDict); + } + + globalAwareness?.on('change', handleChange); + return () => { + globalAwareness?.off('change', handleChange); + }; + }, [globalAwareness]); + + if (!globalAwareness) { + return children; + } + + return ( + + {children} + + ); +} diff --git a/packages/jupyter-ai/src/handler.ts b/packages/jupyter-ai/src/handler.ts index 7887d6275..793a17b27 100644 --- a/packages/jupyter-ai/src/handler.ts +++ b/packages/jupyter-ai/src/handler.ts @@ -64,8 +64,8 @@ export namespace AiService { prompt: string; }; - export type ChatClient = { - id: string; + export type Collaborator = { + username: string; initials: string; name: string; display_name: string; @@ -73,9 +73,14 @@ export namespace AiService { avatar_url?: string; }; + export type ChatClient = Collaborator & { + id: string; + }; + export type AgentChatMessage = { type: 'agent'; id: string; + time: number; body: string; reply_to: string; }; @@ -83,6 +88,7 @@ export namespace AiService { export type HumanChatMessage = { type: 'human'; id: string; + time: number; body: string; client: ChatClient; }; diff --git a/packages/jupyter-ai/src/index.ts b/packages/jupyter-ai/src/index.ts index 2e6e764c9..a3cd1e252 100644 --- a/packages/jupyter-ai/src/index.ts +++ b/packages/jupyter-ai/src/index.ts @@ -6,6 +6,8 @@ import { INotebookTracker } from '@jupyterlab/notebook'; import { IEditorTracker } from '@jupyterlab/fileeditor'; import { IWidgetTracker } from '@jupyterlab/apputils'; import { IDocumentWidget } from '@jupyterlab/docregistry'; +import { IGlobalAwareness } from '@jupyterlab/collaboration'; +import type { Awareness } from 'y-protocols/awareness'; import { buildNotebookShortcutCommand, @@ -48,10 +50,12 @@ const plugin: JupyterFrontEndPlugin = { id: 'jupyter_ai:plugin', autoStart: true, requires: [INotebookTracker, IEditorTracker], + optional: [IGlobalAwareness], activate: async ( app: JupyterFrontEnd, notebookTracker: INotebookTracker, - editorTracker: IEditorTracker + editorTracker: IEditorTracker, + globalAwareness: Awareness | null ) => { const { commands, shell } = app; @@ -91,7 +95,10 @@ const plugin: JupyterFrontEndPlugin = { /** * Add Chat widget to right sidebar */ - shell.add(buildChatSidebar(selectionWatcher, chatHandler), 'right'); + shell.add( + buildChatSidebar(selectionWatcher, chatHandler, globalAwareness), + 'right' + ); /** * Register inserters diff --git a/packages/jupyter-ai/src/widgets/chat-sidebar.tsx b/packages/jupyter-ai/src/widgets/chat-sidebar.tsx index 101ffd906..d75caba44 100644 --- a/packages/jupyter-ai/src/widgets/chat-sidebar.tsx +++ b/packages/jupyter-ai/src/widgets/chat-sidebar.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { ReactWidget } from '@jupyterlab/apputils'; +import type { Awareness } from 'y-protocols/awareness'; import { Chat } from '../components/chat'; import { psychologyIcon } from '../icons'; @@ -8,10 +9,15 @@ import { ChatHandler } from '../chat_handler'; export function buildChatSidebar( selectionWatcher: SelectionWatcher, - chatHandler: ChatHandler + chatHandler: ChatHandler, + globalAwareness: Awareness | null ) { const ChatWidget = ReactWidget.create( - + ); ChatWidget.id = 'jupyter-ai::chat'; ChatWidget.title.icon = psychologyIcon; diff --git a/yarn.lock b/yarn.lock index ee8e21ac2..7a91514b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1381,7 +1381,16 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -1401,22 +1410,27 @@ integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda" + integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg== dependencies: "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" -"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": +"@jridgewell/sourcemap-codec@1.4.14": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== -"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.17" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985" - integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g== +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.18" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" + integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA== dependencies: "@jridgewell/resolve-uri" "3.1.0" "@jridgewell/sourcemap-codec" "1.4.14" @@ -1438,6 +1452,18 @@ y-protocols "^1.0.5" yjs "^13.5.40" +"@jupyter/ydoc@~0.2.3": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@jupyter/ydoc/-/ydoc-0.2.4.tgz#bc312f171777b58e286aadca62dadeca3a894dd1" + integrity sha512-QACcB4bF+Ew4UJmJP+3OyiyQm3vwRYF6iZCQK9q0nE2U5uAosQkfLyT6Bx71jPUXe4G9lEF6m9fjpZvSUX7Lyw== + dependencies: + "@jupyterlab/nbformat" "^3.0.0 || ^4.0.0-alpha.15" + "@lumino/coreutils" "^1.11.0 || ^2.0.0-alpha.6" + "@lumino/disposable" "^1.10.0 || ^2.0.0-alpha.6" + "@lumino/signaling" "^1.10.0 || ^2.0.0-alpha.6" + y-protocols "^1.0.5" + yjs "^13.5.40" + "@jupyterlab/application@^3.1.0": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-3.6.1.tgz#41b897a809847fcd9426fe12ab0415c4373d24ed" @@ -1464,6 +1490,32 @@ "@lumino/signaling" "^1.10.0" "@lumino/widgets" "^1.37.1" +"@jupyterlab/application@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/application/-/application-3.6.3.tgz#7e199f77a4536bc7429fbecf9ba1850f51d9de52" + integrity sha512-G0tR6sUSCuHB8vGQnaB5lfihKNJVHtqYNoMlsZYF9rYpZEhW1TRD4uE5rg4RfDDR+GghjckQlP3rRNB2Vn4tMA== + dependencies: + "@fortawesome/fontawesome-free" "^5.12.0" + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/docregistry" "^3.6.3" + "@jupyterlab/rendermime" "^3.6.3" + "@jupyterlab/rendermime-interfaces" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/statedb" "^3.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/application" "^1.31.4" + "@lumino/commands" "^1.19.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/messaging" "^1.10.0" + "@lumino/polling" "^1.9.0" + "@lumino/properties" "^1.8.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + "@jupyterlab/apputils@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.6.1.tgz#c547886300e67c5eea0b9ee349e6e1acb0576e64" @@ -1493,6 +1545,35 @@ sanitize-html "~2.7.3" url "^0.11.0" +"@jupyterlab/apputils@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/apputils/-/apputils-3.6.3.tgz#bc37683142b281e21d22a2f4698634563658298e" + integrity sha512-um2Aaa5fOUwHFpAqKTDA+MFpnAldzOILIi5QsKOWRxiJA2W8x+hlg5HvHbq+eSWuWEU3ah15M7htzBcL3g9d4Q== + dependencies: + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/settingregistry" "^3.6.3" + "@jupyterlab/statedb" "^3.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/commands" "^1.19.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/domutils" "^1.8.0" + "@lumino/messaging" "^1.10.0" + "@lumino/polling" "^1.9.0" + "@lumino/properties" "^1.8.0" + "@lumino/signaling" "^1.10.0" + "@lumino/virtualdom" "^1.14.0" + "@lumino/widgets" "^1.37.2" + "@types/react" "^17.0.0" + react "^17.0.1" + react-dom "^17.0.1" + sanitize-html "~2.7.3" + url "^0.11.0" + "@jupyterlab/attachments@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.6.1.tgz#af3b3baa0f4150d412a874121b15029e9761c3a8" @@ -1505,7 +1586,60 @@ "@lumino/disposable" "^1.10.0" "@lumino/signaling" "^1.10.0" -"@jupyterlab/builder@^3.1.0", "@jupyterlab/builder@^3.5.1": +"@jupyterlab/attachments@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/attachments/-/attachments-3.6.3.tgz#f2e52c3518d3f84cb7a7cc7c8a113f49dfdde4f1" + integrity sha512-ZYDJjcoExmojsGkX5f1WVFfW39XJcb7CtfzFcNz3AbytebRK13S1xqCRlef/TFW+XT6BG7hjMSJlpW3GdkCV1Q== + dependencies: + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/rendermime" "^3.6.3" + "@jupyterlab/rendermime-interfaces" "^3.6.3" + "@lumino/disposable" "^1.10.0" + "@lumino/signaling" "^1.10.0" + +"@jupyterlab/builder@^3.1.0": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.6.3.tgz#a4b22efe34e9598b84122ff10509d3d890017b6a" + integrity sha512-oY1a/r75RMoPzhSmuVu+DfjL0cKk1ceHTniZsM2wPuhjjyoF875u6CDzArJatpOOuTgLm7CY5OcU3LCIK1OAgg== + dependencies: + "@lumino/algorithm" "^1.9.0" + "@lumino/application" "^1.31.4" + "@lumino/commands" "^1.19.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/domutils" "^1.8.0" + "@lumino/dragdrop" "^1.13.0" + "@lumino/messaging" "^1.10.0" + "@lumino/properties" "^1.8.0" + "@lumino/signaling" "^1.10.0" + "@lumino/virtualdom" "^1.14.0" + "@lumino/widgets" "^1.37.2" + ajv "^6.12.3" + commander "~6.0.0" + css-loader "^5.0.1" + duplicate-package-checker-webpack-plugin "^3.0.0" + file-loader "~6.0.0" + fs-extra "^9.0.1" + glob "~7.1.6" + license-webpack-plugin "^2.3.14" + mini-css-extract-plugin "~1.3.2" + path-browserify "^1.0.0" + process "^0.11.10" + raw-loader "~4.0.0" + source-map-loader "~1.0.2" + style-loader "~2.0.0" + supports-color "^7.2.0" + svg-url-loader "~6.0.0" + terser-webpack-plugin "^4.1.0" + to-string-loader "^1.1.6" + url-loader "~4.1.0" + webpack "^5.41.1" + webpack-cli "^4.1.0" + webpack-merge "^5.1.2" + worker-loader "^3.0.2" + +"@jupyterlab/builder@^3.5.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/builder/-/builder-3.6.1.tgz#a04bf0312e8679d1f452c27fee2554ba4a6af3f5" integrity sha512-LvHQe6InEXJisEcvAdvSFbEEl8OhTjxBSNz7MrjRB+Ur+Qs898dg8QhDH9Ad5mgK3uh4nEN1BDq9W7C/NomqoA== @@ -1546,7 +1680,7 @@ webpack-merge "^5.1.2" worker-loader "^3.0.2" -"@jupyterlab/cells@^3.4.2", "@jupyterlab/cells@^3.6.1": +"@jupyterlab/cells@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-3.6.1.tgz#84c4a43cb66e94a934bcf25172b6ded64d87bba6" integrity sha512-Ojep4Sw83c4uzYSDMQcECW7wuan/dkerimKkb/5cm277ryHL51IgjZTEpJKaW8AeEjNxtAwjlo4cl/5KIwKvQw== @@ -1576,6 +1710,36 @@ marked "^4.0.17" react "^17.0.1" +"@jupyterlab/cells@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/cells/-/cells-3.6.3.tgz#ac8191f99923a004211725435d25280347794cff" + integrity sha512-o3Uydof6bZ6HGSRgSm6isuAhaqYVmv+ozsmADYNmIGbwwwC+eb391Cv+rC3kuPZX/+2UhhO6s7fqFxW8aHUDkg== + dependencies: + "@jupyter/ydoc" "~0.2.3" + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/attachments" "^3.6.3" + "@jupyterlab/codeeditor" "^3.6.3" + "@jupyterlab/codemirror" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/filebrowser" "^3.6.3" + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/outputarea" "^3.6.3" + "@jupyterlab/rendermime" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/domutils" "^1.8.0" + "@lumino/dragdrop" "^1.13.0" + "@lumino/messaging" "^1.10.0" + "@lumino/polling" "^1.9.0" + "@lumino/signaling" "^1.10.0" + "@lumino/virtualdom" "^1.14.0" + "@lumino/widgets" "^1.37.2" + marked "^4.0.17" + react "^17.0.1" + "@jupyterlab/codeeditor@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.6.1.tgz#9643e9f4f594f6cc3f02a2d5a192d8e2bc844284" @@ -1594,6 +1758,24 @@ "@lumino/signaling" "^1.10.0" "@lumino/widgets" "^1.37.1" +"@jupyterlab/codeeditor@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/codeeditor/-/codeeditor-3.6.3.tgz#a889c1821001888af7b60f66b1ee91e15797c0bb" + integrity sha512-SnVo5KDhyRkK/o1SDRX9nehLEAMaOBFf+GUx2jeXBTfr6wTKcwDBnJAUwlOfncwRlMV79aUIqTIcS861FSXDyA== + dependencies: + "@jupyter/ydoc" "~0.2.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/dragdrop" "^1.13.0" + "@lumino/messaging" "^1.10.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + "@jupyterlab/codemirror@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-3.6.1.tgz#e21134b02d8ae5b6d971549a689b8462987d30c7" @@ -1618,7 +1800,47 @@ react "^17.0.1" y-codemirror "^3.0.1" -"@jupyterlab/coreutils@^5.1.0", "@jupyterlab/coreutils@^5.6.1": +"@jupyterlab/codemirror@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/codemirror/-/codemirror-3.6.3.tgz#7cb19faae58d4fc26bc37064f029c4b17098c20a" + integrity sha512-VU5bInzSqsyPGZkEd/w6HtJ9PSw7U5twoyrQSpSM+E2SEYWskaBZOHJf8XNunVoRRKwSvDLyxSs07Ot6zUlA0w== + dependencies: + "@jupyter/ydoc" "~0.2.3" + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/codeeditor" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/statusbar" "^3.6.3" + "@jupyterlab/translation" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/commands" "^1.19.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/polling" "^1.9.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + codemirror "~5.61.0" + react "^17.0.1" + y-codemirror "^3.0.1" + +"@jupyterlab/collaboration@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/collaboration/-/collaboration-3.6.3.tgz#541cbd1cf547323424fb29306ba9c8b482172f68" + integrity sha512-QavtKrFRpNzflTG2MkP86pR1PHY1FrOvsh8D8pBYo6vUz1VgQnS25y+XSmJBfl93NRU5C20OeHfrK+4Ntq4bxg== + dependencies: + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/coreutils" "^1.11.0" + "@lumino/virtualdom" "^1.14.0" + "@lumino/widgets" "^1.37.2" + react "^17.0.1" + y-protocols "^1.0.5" + yjs "^13.5.17" + +"@jupyterlab/coreutils@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.6.1.tgz#da6c2fe28298ffcad09f1ec5ad4202bdaf1c07c8" integrity sha512-nS4ixC9H53lFzdszOfZfDhlM2hlXfOtQAn6TnA/0Ra/gTBQ+LEbFIWdAp588iKuv8eKX39O/Us53T4oq24A31g== @@ -1631,6 +1853,19 @@ path-browserify "^1.0.0" url-parse "~1.5.1" +"@jupyterlab/coreutils@^5.6.3": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/coreutils/-/coreutils-5.6.3.tgz#3b0b5d481b14596158b560336833c89be509e84e" + integrity sha512-jRVTpwGzP9wBNYuaZTip89FS1qbeSYrEO2qdNVdW2rs0mQHcIlu3Fkv5muMFmKYGi0XHhG3UhZiWQ7qiPw2svQ== + dependencies: + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/signaling" "^1.10.0" + minimist "~1.2.0" + moment "^2.24.0" + path-browserify "^1.0.0" + url-parse "~1.5.1" + "@jupyterlab/docmanager@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-3.6.1.tgz#2f62aabb9dc3f8007f5f54b61473274f784b1972" @@ -1652,6 +1887,27 @@ "@lumino/widgets" "^1.37.1" react "^17.0.1" +"@jupyterlab/docmanager@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/docmanager/-/docmanager-3.6.3.tgz#df2c5b45c5e9b38e2a48eb703ff5e3a9b4b7860c" + integrity sha512-4d5zGE3SGbg58wsFJtyskUxK7dEvl8d5Wh90hTlmsFNmr+nh5duTWcqTQ/a+d76YxYbGhH5vqOsNm5ORZq4Umw== + dependencies: + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/docprovider" "^3.6.3" + "@jupyterlab/docregistry" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/statusbar" "^3.6.3" + "@jupyterlab/translation" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/messaging" "^1.10.0" + "@lumino/properties" "^1.8.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + react "^17.0.1" + "@jupyterlab/docprovider@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/docprovider/-/docprovider-3.6.1.tgz#8be66a419d595b490d6ca3f79238fd160d1cd53e" @@ -1667,6 +1923,22 @@ y-websocket "^1.3.15" yjs "^13.5.17" +"@jupyterlab/docprovider@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/docprovider/-/docprovider-3.6.3.tgz#90fbf07214b6c3e98055787fc351a68e9d83470c" + integrity sha512-M5IoyykDpWnUFNePHz3+fi/RNvV92UNbQGfAvsaCMSn+fl48rD4rHB9EZGceOisb3m1U+E4SntKYI3pl49yUEg== + dependencies: + "@jupyter/ydoc" "~0.2.3" + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/translation" "^3.6.3" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/signaling" "^1.10.0" + y-protocols "^1.0.5" + y-websocket "^1.4.6" + "@jupyterlab/docregistry@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-3.6.1.tgz#942b76ea7c59ab9ee375dce4a7bb9377d28d7f61" @@ -1691,6 +1963,30 @@ "@lumino/signaling" "^1.10.0" "@lumino/widgets" "^1.37.1" +"@jupyterlab/docregistry@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/docregistry/-/docregistry-3.6.3.tgz#4a03fbb704449bda7a94df7a4bd63078c11aef58" + integrity sha512-unDMrtCSGKPqX9uvYCkI7zGTvskuC9odAPIHPsYSVMcHL/o5M7lQkHmRZCoSIezfe5OvPGXbYT2boQrBKXqCFw== + dependencies: + "@jupyter/ydoc" "~0.2.3" + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/codeeditor" "^3.6.3" + "@jupyterlab/codemirror" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/docprovider" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/rendermime" "^3.6.3" + "@jupyterlab/rendermime-interfaces" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/messaging" "^1.10.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + "@jupyterlab/filebrowser@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.6.1.tgz#8fe44d03545fd9318fe8014edd5c4ddbf705bcb5" @@ -1717,20 +2013,46 @@ "@lumino/widgets" "^1.37.1" react "^17.0.1" -"@jupyterlab/fileeditor@^3.5.1": - version "3.6.1" - resolved "https://registry.yarnpkg.com/@jupyterlab/fileeditor/-/fileeditor-3.6.1.tgz#095aeefe0d6bafcd9349cd2419bd8db1127652c4" - integrity sha512-OzlC9XWkpWttRRWgWjLtgogIh/Cprx4n3aI9Rmz1Fo3b2jLMqcoC/dS4B0VGcIuHi5Py8sGqz0sMrc23KnrfCQ== - dependencies: - "@jupyterlab/apputils" "^3.6.1" - "@jupyterlab/codeeditor" "^3.6.1" - "@jupyterlab/docregistry" "^3.6.1" - "@jupyterlab/statusbar" "^3.6.1" - "@jupyterlab/translation" "^3.6.1" - "@jupyterlab/ui-components" "^3.6.1" +"@jupyterlab/filebrowser@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/filebrowser/-/filebrowser-3.6.3.tgz#169b880e19a8686f9a669a750027c2817b4b6cef" + integrity sha512-Qu+Mtx3d0QY7qCMIxg5nQtkQYh+kZ2kGO7tgS+yfKjo0cluPsxo+Zr56KtJU6zyDYjylVCtLYIK2RflwRKhdng== + dependencies: + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/docmanager" "^3.6.3" + "@jupyterlab/docregistry" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/statedb" "^3.6.3" + "@jupyterlab/statusbar" "^3.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/algorithm" "^1.9.0" "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/domutils" "^1.8.0" + "@lumino/dragdrop" "^1.13.0" "@lumino/messaging" "^1.10.0" - "@lumino/widgets" "^1.37.1" + "@lumino/polling" "^1.9.0" + "@lumino/signaling" "^1.10.0" + "@lumino/virtualdom" "^1.14.0" + "@lumino/widgets" "^1.37.2" + react "^17.0.1" + +"@jupyterlab/fileeditor@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/fileeditor/-/fileeditor-3.6.3.tgz#3eff401fe35e3c3f0b960d0252e1c7068aeb1d96" + integrity sha512-O3VM2Dd5tsMNC/mvwGGTBdrQuQYVqqQ7SUAlF8eFnDLnmMranq05s5fNRADQLJez6FtR8lDZR8vmxRcOhUN5iw== + dependencies: + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/codeeditor" "^3.6.3" + "@jupyterlab/docregistry" "^3.6.3" + "@jupyterlab/statusbar" "^3.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/coreutils" "^1.11.0" + "@lumino/messaging" "^1.10.0" + "@lumino/widgets" "^1.37.2" react "^17.0.1" "@jupyterlab/nbformat@^3.0.0 || ^4.0.0-alpha.15", "@jupyterlab/nbformat@^3.6.1": @@ -1740,7 +2062,14 @@ dependencies: "@lumino/coreutils" "^1.11.0" -"@jupyterlab/notebook@^3.4.2", "@jupyterlab/notebook@^3.6.1": +"@jupyterlab/nbformat@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/nbformat/-/nbformat-3.6.3.tgz#8520338e3679cbe8ce2ea8eb5a9b816f8b774ad3" + integrity sha512-0qJLa4dtOmu9EmHFeM7gaZi4qheovIPc9ZrgGGRuG0obajs4YYlvh4MQvCSgpVhme4AuBfGlcfzhlx+Gbzr5Xw== + dependencies: + "@lumino/coreutils" "^1.11.0" + +"@jupyterlab/notebook@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/notebook/-/notebook-3.6.1.tgz#9bb7d78c694f403b1b5d59889737e56c787348d2" integrity sha512-wkc0/HcnLhYSMtF1y5pf2ngvuhU0UE6tmIjCWl4rP0aC4aAjZZzkRNXV4EwNfY73fLT4EGB149l8Jv4vKUVGdQ== @@ -1770,6 +2099,36 @@ "@lumino/widgets" "^1.37.1" react "^17.0.1" +"@jupyterlab/notebook@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/notebook/-/notebook-3.6.3.tgz#1584be72184d67d59291e2b22f55bc257afde436" + integrity sha512-id1KD5/9IDPr/IZFCl/YX4Vc+Q198LZshhFNEcVJZcRdjD7Vh+LGvWcLOh80OAv86J4XSTTAsp3gHPr4iSwPDg== + dependencies: + "@jupyter/ydoc" "~0.2.3" + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/cells" "^3.6.3" + "@jupyterlab/codeeditor" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/docregistry" "^3.6.3" + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/rendermime" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/settingregistry" "^3.6.3" + "@jupyterlab/statusbar" "^3.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/domutils" "^1.8.0" + "@lumino/dragdrop" "^1.13.0" + "@lumino/messaging" "^1.10.0" + "@lumino/properties" "^1.8.0" + "@lumino/signaling" "^1.10.0" + "@lumino/virtualdom" "^1.14.0" + "@lumino/widgets" "^1.37.2" + react "^17.0.1" + "@jupyterlab/observables@^4.6.1": version "4.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.6.1.tgz#7d05b60192e85732db29de5f9e8525798a08aee6" @@ -1781,6 +2140,17 @@ "@lumino/messaging" "^1.10.0" "@lumino/signaling" "^1.10.0" +"@jupyterlab/observables@^4.6.3": + version "4.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/observables/-/observables-4.6.3.tgz#49a9ca49fbda7428abbd1bfb8a4006ecd406c18d" + integrity sha512-CvQoL+9WHXOy/CXp/PQLi4c5iZVJ4psz11+GrycDDinX1AdVQ8a43OLTC0gxWl3Tk2C8ZvAi1sgn4FS68E1ACQ== + dependencies: + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/messaging" "^1.10.0" + "@lumino/signaling" "^1.10.0" + "@jupyterlab/outputarea@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.6.1.tgz#904d0933d4e8c4bedb6e4179da8d4b6cfd32630d" @@ -1801,6 +2171,26 @@ "@lumino/widgets" "^1.37.1" resize-observer-polyfill "^1.5.1" +"@jupyterlab/outputarea@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/outputarea/-/outputarea-3.6.3.tgz#acf7a604eb352109d096d2a9fdd1fbbddbf80af1" + integrity sha512-SSmkDWS8MhdXl7+rQoLu/5wJBKTq1YEkxlQcKh1Z0VN4VjYDCA/bKFGjOmKN7wMmoVP/zRmWvUwl/DLJCHx/Tw== + dependencies: + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/rendermime" "^3.6.3" + "@jupyterlab/rendermime-interfaces" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/messaging" "^1.10.0" + "@lumino/properties" "^1.8.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + resize-observer-polyfill "^1.5.1" + "@jupyterlab/rendermime-interfaces@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.6.1.tgz#d531a6ba228df83b581aee0df5041f7f9a1b4495" @@ -1810,6 +2200,15 @@ "@lumino/coreutils" "^1.11.0" "@lumino/widgets" "^1.37.1" +"@jupyterlab/rendermime-interfaces@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime-interfaces/-/rendermime-interfaces-3.6.3.tgz#80009705d5ded65a4b27c4b826b295f40f126902" + integrity sha512-VHZVnqB0K1nmoQMOhFGHwvSYMQmxqcOC3wWDRFeUOv8S+tejTYfbrKXPOZJvhdGB52Jn8XNIesXOuNpLhl4HmQ== + dependencies: + "@jupyterlab/translation" "^3.6.3" + "@lumino/coreutils" "^1.11.0" + "@lumino/widgets" "^1.37.2" + "@jupyterlab/rendermime@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-3.6.1.tgz#ebeef56293cf83f6aa8eb8f12edcd16c4eaafae7" @@ -1831,7 +2230,28 @@ lodash.escape "^4.0.1" marked "^4.0.17" -"@jupyterlab/services@^6.1.0", "@jupyterlab/services@^6.6.1": +"@jupyterlab/rendermime@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/rendermime/-/rendermime-3.6.3.tgz#48d83c70493b0356d4dac6d89a863d8a5a84f68e" + integrity sha512-w3e38OddJin9fbfe7EWsKiiup/0ayvHPrAsacde8PqGLvi/sLeAXT98PqihsKt8EAlOgXSkSO0Ivjbd0JzgGgA== + dependencies: + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/codemirror" "^3.6.3" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/rendermime-interfaces" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/translation" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/messaging" "^1.10.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + lodash.escape "^4.0.1" + marked "^4.0.17" + +"@jupyterlab/services@^6.6.1": version "6.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.6.1.tgz#5fd96574bb1eee2e4217a6d039b4dcdeb51bb66f" integrity sha512-4YIwTsfx7+JO7Lz9YFTpUvniA3aHdR5dDQJfdo9TsCMxs+NDVfjNAvp9VHa1xNJWYll4Ay31lYWbvuN/SI+KEA== @@ -1849,6 +2269,24 @@ node-fetch "^2.6.0" ws "^7.4.6" +"@jupyterlab/services@^6.6.3": + version "6.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/services/-/services-6.6.3.tgz#303938e5dc5aebce7a86324a64ed89c25c61c9e7" + integrity sha512-BxEOMRl9X18T5wY7iV6ZJhARnibFghpD3OruqeSbnGdbRv6XJi8prsRbCQQ6Mf9agvf81B20KmDvYKikPHC0xQ== + dependencies: + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/nbformat" "^3.6.3" + "@jupyterlab/observables" "^4.6.3" + "@jupyterlab/settingregistry" "^3.6.3" + "@jupyterlab/statedb" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/polling" "^1.9.0" + "@lumino/signaling" "^1.10.0" + node-fetch "^2.6.0" + ws "^7.4.6" + "@jupyterlab/settingregistry@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.6.1.tgz#cd04e64d598598950c64aa99e1fc8a2c962d8c31" @@ -1862,6 +2300,19 @@ ajv "^6.12.3" json5 "^2.1.1" +"@jupyterlab/settingregistry@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/settingregistry/-/settingregistry-3.6.3.tgz#642f8b6449d626821ef13a7e778ae716fa8331c9" + integrity sha512-pnzIge0ZC8V63R97HiNroJ0eaPM0DN6x65SStyLuv/K8Qez4XqpOdc0Wfell5ri5mxMvm1qKekuFeTikqSXQKQ== + dependencies: + "@jupyterlab/statedb" "^3.6.3" + "@lumino/commands" "^1.19.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/signaling" "^1.10.0" + ajv "^6.12.3" + json5 "^2.1.1" + "@jupyterlab/statedb@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.6.1.tgz#3f64bfee22ff7779404835fa87b08c67e66716c3" @@ -1873,6 +2324,17 @@ "@lumino/properties" "^1.8.0" "@lumino/signaling" "^1.10.0" +"@jupyterlab/statedb@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/statedb/-/statedb-3.6.3.tgz#6ba2166af9232c9a185cf0077cf1272f24cc9a69" + integrity sha512-A36L+0NN8f0WOES2GdtZjp9uFuC7IBjhKiO/RlKRX5AFjNxoJ9oO3PZtoxJQYPnGBljMqVdRa+m9aYEfvKhYyQ== + dependencies: + "@lumino/commands" "^1.19.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/properties" "^1.8.0" + "@lumino/signaling" "^1.10.0" + "@jupyterlab/statusbar@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.6.1.tgz#382c32eb6599973176d5ac0497e4a0c9dfa8df37" @@ -1893,6 +2355,26 @@ react "^17.0.1" typestyle "^2.0.4" +"@jupyterlab/statusbar@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/statusbar/-/statusbar-3.6.3.tgz#29c24427a2d6b205349b94583de0ccb8b9435d88" + integrity sha512-m59NLR0Zghm53PU6hDzRF4XVORnJx/YRx0svcjj/TGLk8LSffpQbUDBy24dl3tOuChk4D5cCdgeDH1X30TzCaA== + dependencies: + "@jupyterlab/apputils" "^3.6.3" + "@jupyterlab/codeeditor" "^3.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/translation" "^3.6.3" + "@jupyterlab/ui-components" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/messaging" "^1.10.0" + "@lumino/signaling" "^1.10.0" + "@lumino/widgets" "^1.37.2" + csstype "~3.0.3" + react "^17.0.1" + typestyle "^2.0.4" + "@jupyterlab/testutils@^3.0.0": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/testutils/-/testutils-3.6.1.tgz#d9bfe4e1fbc2bceea19489e97d5f77341e4a9345" @@ -1936,7 +2418,17 @@ "@jupyterlab/statedb" "^3.6.1" "@lumino/coreutils" "^1.11.0" -"@jupyterlab/ui-components@^3.4.2", "@jupyterlab/ui-components@^3.6.1": +"@jupyterlab/translation@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/translation/-/translation-3.6.3.tgz#3fd95f726316762bc1799a7b7be0243d5465932a" + integrity sha512-m+wwBv/hiN5Y6Sb7Ij150ZhPXZdhN5wI8CT3afnzARwKr2Aww5AIURO3upmMwnKaPVQTrWqsS3+7bZS/21JuJA== + dependencies: + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/services" "^6.6.3" + "@jupyterlab/statedb" "^3.6.3" + "@lumino/coreutils" "^1.11.0" + +"@jupyterlab/ui-components@^3.6.1": version "3.6.1" resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.6.1.tgz#1e12b23614288a1c45fda50c2d141483b879bebf" integrity sha512-p9wH9iidGuuKSm2yXFGhHs6gzpoBpsHRCiOJw9bmj2PBsDKEGjh65Rh0YBv0d7TD6VVgAwMmokaT01KqjUmY+g== @@ -1957,6 +2449,27 @@ react-dom "^17.0.1" typestyle "^2.0.4" +"@jupyterlab/ui-components@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@jupyterlab/ui-components/-/ui-components-3.6.3.tgz#36555036b383c5d80346f409a7a168d13c9d8c85" + integrity sha512-XzseUo2IXclPlYcGxCIz8evjWF+dCBMmbJlvoE5OF29BYBvI5N/DUaTem8bHN5kmQwHIXX6BImHu7rbC9Xjl6w== + dependencies: + "@blueprintjs/core" "^3.36.0" + "@blueprintjs/select" "^3.15.0" + "@jupyterlab/coreutils" "^5.6.3" + "@jupyterlab/translation" "^3.6.3" + "@lumino/algorithm" "^1.9.0" + "@lumino/commands" "^1.19.0" + "@lumino/coreutils" "^1.11.0" + "@lumino/disposable" "^1.10.0" + "@lumino/signaling" "^1.10.0" + "@lumino/virtualdom" "^1.14.0" + "@lumino/widgets" "^1.37.2" + "@rjsf/core" "^3.1.0" + react "^17.0.1" + react-dom "^17.0.1" + typestyle "^2.0.4" + "@lerna/child-process@6.6.1": version "6.6.1" resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-6.6.1.tgz#e31bc411ad6d474cf7b676904da6f77f58fd64eb" @@ -2058,14 +2571,14 @@ resolved "https://registry.yarnpkg.com/@lumino/algorithm/-/algorithm-1.9.2.tgz#b95e6419aed58ff6b863a51bfb4add0f795141d3" integrity sha512-Z06lp/yuhz8CtIir3PNTGnuk7909eXt4ukJsCzChsGuot2l5Fbs96RJ/FOHgwCedaX74CtxPjXHXoszFbUA+4A== -"@lumino/application@^1.31.3": - version "1.31.3" - resolved "https://registry.yarnpkg.com/@lumino/application/-/application-1.31.3.tgz#c5a9bc84212a2505be8f5d43516e0603d9100965" - integrity sha512-XnsXm5PD9QevJRl/pHJziYmhRKqJYjEOTL6Vh9dtKpPPML57uswOj59Pokxx/yCvym1xRF9iDVvujy3KallRwQ== +"@lumino/application@^1.31.3", "@lumino/application@^1.31.4": + version "1.31.4" + resolved "https://registry.yarnpkg.com/@lumino/application/-/application-1.31.4.tgz#b804fcc46fb77deb41aee94c48bea990f735d6b9" + integrity sha512-dOSsDJ1tXOxC3fnSHvtDQK5RcICLEVPtO19HeCGwurb5W2ZZ55SZT2b5jZu6V/v8lGdtkNbr1RJltRpJRSRb/A== dependencies: "@lumino/commands" "^1.21.1" "@lumino/coreutils" "^1.12.1" - "@lumino/widgets" "^1.37.1" + "@lumino/widgets" "^1.37.2" "@lumino/collections@^1.9.3": version "1.9.3" @@ -2105,10 +2618,10 @@ resolved "https://registry.yarnpkg.com/@lumino/domutils/-/domutils-1.8.2.tgz#d15cdbae12bea52852bbc13c4629360f9f05b7f5" integrity sha512-QIpMfkPJrs4GrWBuJf2Sn1fpyVPmvqUUAeD8xAQo8+4V5JAT0vUDLxZ9HijefMgNCi3+Bs8Z3lQwRCrz+cFP1A== -"@lumino/dragdrop@^1.13.0", "@lumino/dragdrop@^1.14.4": - version "1.14.4" - resolved "https://registry.yarnpkg.com/@lumino/dragdrop/-/dragdrop-1.14.4.tgz#b6ec4cf4f470c17a849e31f299d5a24acdc8c7d3" - integrity sha512-IHX2M8Yqs2YsFHHXKSKiYLgv9DEuhyyKoDS85Chg34J9OaPC5ocT0AmNVnpeq9T4A50sg3vdL9mSRCZ0f302Gw== +"@lumino/dragdrop@^1.13.0", "@lumino/dragdrop@^1.14.5": + version "1.14.5" + resolved "https://registry.yarnpkg.com/@lumino/dragdrop/-/dragdrop-1.14.5.tgz#1db76c8a01f74cb1b0428db6234e820bb58b93ba" + integrity sha512-LC5xB82+xGF8hFyl716TMpV32OIMIMl+s3RU1PaqDkD6B7PkgiVk6NkJ4X9/GcEvl2igkvlGQt/3L7qxDAJNxw== dependencies: "@lumino/coreutils" "^1.12.1" "@lumino/disposable" "^1.10.4" @@ -2155,17 +2668,17 @@ dependencies: "@lumino/algorithm" "^1.9.2" -"@lumino/widgets@^1.37.1": - version "1.37.1" - resolved "https://registry.yarnpkg.com/@lumino/widgets/-/widgets-1.37.1.tgz#d7a2398b276e15e60aff4fec58c035d46549a75b" - integrity sha512-/whz5B/hL0fjv0bR8JYZ+Emx+CH7HBwXc4TqI9PrrHGm3g6+jRJAyIFGZcQubqkPxxHrRE/VxQgoDKGhINw/Gw== +"@lumino/widgets@^1.37.1", "@lumino/widgets@^1.37.2": + version "1.37.2" + resolved "https://registry.yarnpkg.com/@lumino/widgets/-/widgets-1.37.2.tgz#b408fae221ecec2f1b028607782fbe1e82588bce" + integrity sha512-NHKu1NBDo6ETBDoNrqSkornfUCwc8EFFzw6+LWBfYVxn2PIwciq2SdiJGEyNqL+0h/A9eVKb5ui5z4cwpRekmQ== dependencies: "@lumino/algorithm" "^1.9.2" "@lumino/commands" "^1.21.1" "@lumino/coreutils" "^1.12.1" "@lumino/disposable" "^1.10.4" "@lumino/domutils" "^1.8.2" - "@lumino/dragdrop" "^1.14.4" + "@lumino/dragdrop" "^1.14.5" "@lumino/keyboard" "^1.8.2" "@lumino/messaging" "^1.10.3" "@lumino/properties" "^1.8.2" @@ -2828,23 +3341,18 @@ "@types/estree" "*" "@types/eslint@*": - version "8.21.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.21.0.tgz#21724cfe12b96696feafab05829695d4d7bd7c48" - integrity sha512-35EhHNOXgxnUgh4XCJsGhE7zdlDhYDN/aMG6UbkByCFFNgQ7b3U+uVoqBpicFydR8JEfgdjCF7SJ7MiJfzuiTA== + version "8.37.0" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.37.0.tgz#29cebc6c2a3ac7fea7113207bf5a828fdf4d7ef1" + integrity sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": +"@types/estree@*", "@types/estree@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== -"@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - "@types/graceful-fs@^4.1.2": version "4.1.6" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" @@ -2924,9 +3432,9 @@ integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node@*": - version "18.13.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.13.0.tgz#0400d1e6ce87e9d3032c19eb6c58205b0d3f7850" - integrity sha512-gC3TazRzGoOnoKAhUx+Q0t8S9Tzs74z7m0ipwGpSqQrleP14hKxP4/JUeEQcD3W1/aIpnWl8pHowI7WokuZpXg== + version "18.15.11" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f" + integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q== "@types/normalize-package-data@^2.4.0": version "2.4.1" @@ -3978,9 +4486,9 @@ camelcase@^6.0.0: integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001449: - version "1.0.30001451" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001451.tgz#2e197c698fc1373d63e1406d6607ea4617c613f1" - integrity sha512-XY7UbUpGRatZzoRft//5xOa69/1iGJRBlrieH6QYrkKLIFn3m7OVEJ81dSrKoy2BnKsdbX5cLrOispZNYo9v2w== + version "1.0.30001478" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a" + integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw== capture-exit@^2.0.0: version "2.0.0" @@ -4591,6 +5099,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +date-fns@^2.29.3: + version "2.29.3" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8" + integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA== + dateformat@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" @@ -4889,9 +5402,9 @@ ejs@^3.1.7: jake "^10.8.5" electron-to-chromium@^1.4.284: - version "1.4.295" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.295.tgz#911d5df67542bf7554336142eb302c5ec90bba66" - integrity sha512-lEO94zqf1bDA3aepxwnWoHUjA8sZ+2owgcSZjYQy0+uOSEclJX0VieZC+r+wLpSxUHRd6gG32znTWmr+5iGzFw== + version "1.4.362" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.362.tgz#1dfd7a076fc4785a16941f06410d0668e1a7a1aa" + integrity sha512-PYzAoScDfUcAwZfJQvr6hK2xXzLsMocj/Wuz6LpW6TZQNVv9TflBSB+UoEPuFujc478BgAxCoCFarcVPmjzsog== emittery@^0.7.1: version "0.7.2" @@ -5020,10 +5533,10 @@ es-abstract@^1.19.0, es-abstract@^1.20.4: unbox-primitive "^1.0.2" which-typed-array "^1.1.9" -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== +es-module-lexer@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.2.1.tgz#ba303831f63e6a394983fde2f97ad77b22324527" + integrity sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg== es-set-tostringtag@^2.0.1: version "2.0.1" @@ -5964,12 +6477,12 @@ gopd@^1.0.1: dependencies: get-intrinsic "^1.1.3" -graceful-fs@4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@4.2.10: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -6586,13 +7099,20 @@ is-ci@2.0.0, is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1, is-core-module@^2.9.0: +is-core-module@^2.11.0, is-core-module@^2.5.0, is-core-module@^2.8.1: version "2.11.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144" integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw== dependencies: has "^1.0.3" +is-core-module@^2.9.0: + version "2.12.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4" + integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -8593,7 +9113,12 @@ minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: dependencies: yallist "^4.0.0" -minipass@^4.0.0, minipass@^4.0.2, minipass@^4.2.4: +minipass@^4.0.0: + version "4.2.8" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.8.tgz#f0010f64393ecfc1d1ccb5f582bcaf45f48e1a3a" + integrity sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ== + +minipass@^4.0.2, minipass@^4.2.4: version "4.2.5" resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb" integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== @@ -8674,11 +9199,16 @@ mute-stream@0.0.8, mute-stream@~0.0.4: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nanoid@^3.1.23, nanoid@^3.3.4: +nanoid@^3.1.23: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.4: + version "3.3.6" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -10352,7 +10882,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== -resolve@^1.10.0: +resolve@^1.10.0, resolve@^1.9.0: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -10361,7 +10891,7 @@ resolve@^1.10.0: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" -resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.9.0: +resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0: version "1.22.1" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== @@ -10548,7 +11078,7 @@ semver@7.3.4: dependencies: lru-cache "^6.0.0" -semver@7.3.8, semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: +semver@7.3.8, semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.7, semver@^7.3.8: version "7.3.8" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== @@ -10560,6 +11090,13 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.3.5: + version "7.4.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318" + integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw== + dependencies: + lru-cache "^6.0.0" + serialize-javascript@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" @@ -10567,7 +11104,7 @@ serialize-javascript@^5.0.1: dependencies: randombytes "^2.1.0" -serialize-javascript@^6.0.0: +serialize-javascript@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== @@ -11249,21 +11786,21 @@ terser-webpack-plugin@^4.1.0: terser "^5.3.4" webpack-sources "^1.4.3" -terser-webpack-plugin@^5.1.3: - version "5.3.6" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c" - integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ== +terser-webpack-plugin@^5.3.7: + version "5.3.7" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz#ef760632d24991760f339fe9290deb936ad1ffc7" + integrity sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw== dependencies: - "@jridgewell/trace-mapping" "^0.3.14" + "@jridgewell/trace-mapping" "^0.3.17" jest-worker "^27.4.5" schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.14.1" + serialize-javascript "^6.0.1" + terser "^5.16.5" -terser@^5.14.1, terser@^5.3.4: - version "5.16.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.3.tgz#3266017a9b682edfe019b8ecddd2abaae7b39c6b" - integrity sha512-v8wWLaS/xt3nE9dgKEWhNUFP6q4kngO5B8eYFUuebsu7Dw/UNAnpUod6UHo04jSSkv8TzKHjZDSd7EXdDQAl8Q== +terser@^5.16.5, terser@^5.3.4: + version "5.16.9" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.9.tgz#7a28cb178e330c484369886f2afd623d9847495f" + integrity sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -12064,12 +12601,12 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.41.1: - version "5.75.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152" - integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ== + version "5.79.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.79.0.tgz#8552b5da5a26e4e25842c08a883e08fc7740547a" + integrity sha512-3mN4rR2Xq+INd6NnYuL9RC9GAmc1ROPKJoHhrZ4pAjdMFEkJJWrsPw8o2JjCIyQyTu7rTXYn4VG6OpyB3CobZg== dependencies: "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" + "@types/estree" "^1.0.0" "@webassemblyjs/ast" "1.11.1" "@webassemblyjs/wasm-edit" "1.11.1" "@webassemblyjs/wasm-parser" "1.11.1" @@ -12078,7 +12615,7 @@ webpack@^5.41.1: browserslist "^4.14.5" chrome-trace-event "^1.0.2" enhanced-resolve "^5.10.0" - es-module-lexer "^0.9.0" + es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" @@ -12089,7 +12626,7 @@ webpack@^5.41.1: neo-async "^2.6.2" schema-utils "^3.1.0" tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" + terser-webpack-plugin "^5.3.7" watchpack "^2.4.0" webpack-sources "^3.2.3" @@ -12354,6 +12891,18 @@ y-websocket@^1.3.15: ws "^6.2.1" y-leveldb "^0.1.0" +y-websocket@^1.4.6: + version "1.5.0" + resolved "https://registry.yarnpkg.com/y-websocket/-/y-websocket-1.5.0.tgz#3c13ed205f1553185e1d144eac94150b5b5d55d6" + integrity sha512-A8AO6XtnQlYwWFytWdkDCeXg4l8ghRTIw5h2YUgUYDmEC9ugWGIwYNW80yadhSFAF7CvuWTEkQNEpevnH6EiZw== + dependencies: + lib0 "^0.2.52" + lodash.debounce "^4.0.8" + y-protocols "^1.0.5" + optionalDependencies: + ws "^6.2.1" + y-leveldb "^0.1.0" + y18n@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf"