From c06471c81129dbad2f8a7cbd2718b2f1b79127de Mon Sep 17 00:00:00 2001 From: Jon Eugster Date: Tue, 7 May 2024 12:20:09 +0200 Subject: [PATCH] many things --- client/src/App.tsx | 37 +- client/src/Editor.tsx | 26 +- client/src/Navigation.tsx | 42 +- client/src/Popups/Settings.tsx | 160 +- client/src/config.json | 17 + client/src/config/settings.ts | 16 +- client/src/config/text.tsx | 17 + client/src/css/Editor.css | 4 + client/src/css/Navigation.css | 55 +- client/src/css/index.css | 4 +- client/src/editor/vscode.css | 2 +- client/src/monaco-lean4/config.ts | 96 +- client/src/monaco-lean4/docview.ts | 2 +- client/src/monaco-lean4/extension.ts | 4 +- client/src/monaco-lean4/infoview.ts | 38 +- .../language-configuration.json | 35 +- client/src/monaco-lean4/leanclient.ts | 78 +- client/src/monaco-lean4/taskgutter.ts | 2 +- client/src/monaco-lean4/utils/batch.ts | 5 +- .../src/monaco-lean4/utils/clientProvider.ts | 76 +- client/src/monaco-lean4/utils/exturi.ts | 4 +- .../src/monaco-lean4/utils/leanInstaller.ts | 10 +- client/src/monaco-lean4/utils/projectInfo.ts | 4 +- client/src/monacoSetup.ts | 2 +- package-lock.json | 3097 ++++++++++++++++- package.json | 6 +- 26 files changed, 3363 insertions(+), 476 deletions(-) create mode 100644 client/src/config.json create mode 100644 client/src/config/text.tsx rename client/src/{from-vscode-lean4 => monaco-lean4}/language-configuration.json (79%) diff --git a/client/src/App.tsx b/client/src/App.tsx index fa844fe5..fa3e02c7 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -12,7 +12,8 @@ import LoadUrlPopup from './Popups/LoadUrl'; import LoadZulipPopup from './Popups/LoadZulip'; import lean4webConfig from './config/config' -import settings from './config/settings' +import initialSettings from './config/settings' +import { PreferencesContext } from './Popups/Settings' import { ReactComponent as Logo } from './assets/logo.svg' import { ReactComponent as ZulipIcon } from './assets/zulip.svg' @@ -20,6 +21,7 @@ import { ReactComponent as ZulipIcon } from './assets/zulip.svg' import './css/App.css' import './css/Modal.css' import './css/Navigation.css' +import { useWindowDimensions } from './window_width'; const Editor = React.lazy(() => import('./Editor')) @@ -64,6 +66,15 @@ const App: React.FC = () => { const [openExample, setOpenExample] = useState(false) const [openLoad, setOpenLoad] = useState(false) + + /* Vertical layout is changeable in the settings. + If screen width is below 800, default to vertical layout instead. */ + const {width, height} = useWindowDimensions() + + const [settings, setSettings] = useState(initialSettings) + const [mobile, setMobile] = useState(width < 800) + + // state for the popups const [privacyOpen, setPrivacyOpen] = useState(false) const [toolsOpen, setToolsOpen] = useState(false) @@ -107,6 +118,12 @@ const App: React.FC = () => { setOpenNav(false) } + // Calculate `mobile` from the settings. + useEffect(() => { + setMobile(settings.mobile == 'true' || (settings.mobile == 'auto' && width < 800)) + + }, [settings.mobile, width]) + // keep url updated on changes useEffect(() => { let _project = (project == 'mathlib-demo' ? null : project) @@ -149,9 +166,10 @@ const App: React.FC = () => { }, [project]) /** The menu items either appearing inside the dropdown or outside */ - function flexibleMenu (isDropdown = false) { return <> + function flexibleMenu (isInDropdown = false) { return <> {setOpenLoad(false); (!isDropdown && setOpenNav(false))}}> + useOverlay={isInDropdown} + onClick={() => {setOpenLoad(false); (!isInDropdown && setOpenNav(false))}}> {lean4webConfig.projects.map(proj => proj.examples?.map(example => { ))} {setOpenExample(false); (!isDropdown && setOpenNav(false))}}> + useOverlay={isInDropdown} + onClick={() => {setOpenExample(false); (!isInDropdown && setOpenNav(false))}}> @@ -171,18 +190,19 @@ const App: React.FC = () => { } text="Load Zulip Message" onClick={() => {setLoadZulipOpen(true)}} /> + {restart && } } return (
+ @@ -202,6 +222,7 @@ const App: React.FC = () => { +
) } diff --git a/client/src/Editor.tsx b/client/src/Editor.tsx index fea880f2..255e5f43 100644 --- a/client/src/Editor.tsx +++ b/client/src/Editor.tsx @@ -14,7 +14,6 @@ import { AbbreviationProvider } from './editor/abbreviation/AbbreviationProvider import { LeanTaskGutter } from './editor/taskgutter' import Split from 'react-split' import Notification from './Notification' -import settings from './config/settings' import { IConnectionProvider } from 'monaco-languageclient' import { toSocket, WebSocketMessageWriter } from 'vscode-ws-jsonrpc' import { DisposingWebSocketMessageReader } from './reader' @@ -24,6 +23,7 @@ import './css/Editor.css' import './editor/infoview.css' import './editor/vscode.css' import { render } from '@testing-library/react' +import { PreferencesContext } from './Popups/Settings' monacoSetup() @@ -39,6 +39,8 @@ const Editor: React.FC<{setRestart?, onDidChangeContent?, value: string, theme: const [dragging, setDragging] = useState(false) const [restartMessage, setRestartMessage] = useState(false) + const {settings, mobile} = React.useContext(PreferencesContext) + useEffect(() => { if (['lightPlus', 'custom'].includes(theme)) { monaco.editor.setTheme(theme) @@ -85,7 +87,7 @@ const Editor: React.FC<{setRestart?, onDidChangeContent?, value: string, theme: tabSize: 2, 'semanticHighlighting.enabled': true, theme: 'vs', - wordWrap: settings.wordWrap ? "on" : "off", + wordWrap: settings.wordWrap, fontFamily: "JuliaMono", }) setEditor(editor) @@ -188,22 +190,22 @@ const Editor: React.FC<{setRestart?, onDidChangeContent?, value: string, theme: }} gutterStyle={(dimension, gutterSize, index) => { return { - 'width': settings.verticalLayout ? '100%' : `${gutterSize}px`, - 'height': settings.verticalLayout ? `${gutterSize}px` : '100%', - 'cursor': settings.verticalLayout ? 'row-resize' : 'col-resize', - 'margin-left': settings.verticalLayout ? 0 : `-${gutterSize}px`, - 'margin-top': settings.verticalLayout ? `-${gutterSize}px` : 0, + 'width': mobile ? '100%' : `${gutterSize}px`, + 'height': mobile ? `${gutterSize}px` : '100%', + 'cursor': mobile ? 'row-resize' : 'col-resize', + 'margin-left': mobile ? 0 : `-${gutterSize}px`, + 'margin-top': mobile ? `-${gutterSize}px` : 0, 'z-index': 0, }}} gutterSize={5} onDragStart={() => setDragging(true)} onDragEnd={() => setDragging(false)} - sizes={settings.verticalLayout ? [50, 50] : [70, 30]} - direction={settings.verticalLayout ? "vertical" : "horizontal"} - style={{flexDirection: settings.verticalLayout ? "column" : "row"}}> + sizes={mobile ? [50, 50] : [70, 30]} + direction={mobile ? "vertical" : "horizontal"} + style={{flexDirection: mobile ? "column" : "row"}}>
+ style={mobile ? {width : '100%'} : {height: '100%'}}>
+ style={mobile ? {width : '100%'} : {height: '100%'}}> {restartMessage ? > icon?: IconDefinition text?: string + useOverlay?: boolean onClick?: React.MouseEventHandler children?: React.ReactNode -}> = ({open, setOpen, icon, text, onClick, children}) => { +}> = ({open, setOpen, icon, text, useOverlay=false, onClick, children}) => { // note: it seems that we can just leave the `target="_blank"` and it has no // effect on links without a `href`. If not, add `if (href)` statement here... - return
+ return <>
{setOpen(!open); onClick(ev); ev.stopPropagation()}} /> {open && -
setOpen(false)}> - {children} -
} +
setOpen(false)}> + {children} +
+ }
- - if (open) { - return
- {children} -
- } else { - return <> + { useOverlay && open && +
{setOpen(false); ev.stopPropagation()}}/> } + + + // if (open) { + // return
+ // {children} + //
+ // } else { + // return <> + // } } /** A popup which overlays the entire screen. */ @@ -53,17 +59,17 @@ export const Popup: React.FC<{ handleClose: () => void // TODO: what's the correct type? children?: React.ReactNode }> = ({open, handleClose, children}) => { - if (open) { - return
+ // if (open) { + return
{children}
- } else { - // don't display closed popup - return <> - } + // } else { + // // don't display closed popup + // return <> + // } } diff --git a/client/src/Popups/Settings.tsx b/client/src/Popups/Settings.tsx index 097694e4..204ec10f 100644 --- a/client/src/Popups/Settings.tsx +++ b/client/src/Popups/Settings.tsx @@ -1,37 +1,68 @@ import * as React from 'react' import { useEffect } from 'react' -import settings from '../config/settings'; import Switch from '@mui/material/Switch'; import { useWindowDimensions } from '../window_width'; import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js' import lean4webConfig from '../config/config' import { Popup } from '../Navigation'; +import initialSettings from '../config/settings' +import { Box, FormControlLabel, Slider } from '@mui/material'; + +/** Note that `mobile` is the calculated boolean, while `settings.mobile` is a string `true`/`false`/`auto` */ +export const PreferencesContext = React.createContext<{ + settings: typeof initialSettings, + mobile: boolean +}>({settings: initialSettings, mobile: false}) + const SettingsPopup: React.FC<{ open: boolean + settings + setSettings handleClose: () => void closeNav: () => void theme setTheme project setProject -}> = ({open, handleClose, closeNav, theme, setTheme, project, setProject}) => { +}> = ({open, settings, setSettings, handleClose, closeNav, theme, setTheme, project, setProject}) => { + + + function changeSetting(key: string, value: any) { + let newSettings = { ...settings } + newSettings[key] = value + setSettings(newSettings) + } + + function setAbbreviationCharacter(char: string) { + setSettings({...settings, abbreviationCharacter: char}) + } + + /** "on" or "off" */ + function setWordWrap(val: string) { + setSettings({...settings, wordWrap: val}) + } - const [abbreviationCharacter, setAbbreviationCharacter] = React.useState(settings.abbreviationCharacter) + function toggleWordWrap() { + let newVal = settings.wordWrap == 'on' ? 'off' : 'on' + setWordWrap(newVal) + } + + /** "true", "false" or "auto" */ + function setMobile(val: string) { + setSettings({...settings, mobile: val}) + } const [savingAllowed, setSavingAllowed] = React.useState(false) - /* Vertical layout is changeable in the settings. - If screen width is below 800, default to vertical layout instead. */ - const {width, height} = useWindowDimensions() - const [verticalLayout, setVerticalLayout] = React.useState(width < 800) - const [wordWrap, setWordWrap] = React.useState(false) + + // const [verticalLayout, setVerticalLayout] = React.useState(width < 800) const [customTheme, setCustomTheme] = React.useState('initial') // Synchronize state with initial local store useEffect(() => { let _abbreviationCharacter = window.localStorage.getItem("abbreviationCharacter") - let _verticalLayout = window.localStorage.getItem("verticalLayout") + let _mobile = window.localStorage.getItem("mobile") let _wordWrap = window.localStorage.getItem("wordWrap") let _theme = window.localStorage.getItem("theme") let _savingAllowed = window.localStorage.getItem("savingAllowed") @@ -40,8 +71,8 @@ const SettingsPopup: React.FC<{ setAbbreviationCharacter(_abbreviationCharacter) setSavingAllowed(true) } - if (_verticalLayout) { - setVerticalLayout(_verticalLayout == 'true') + if (_mobile) { + setMobile(_mobile) setSavingAllowed(true) } if (_theme) { @@ -49,7 +80,7 @@ const SettingsPopup: React.FC<{ setSavingAllowed(true) } if (_wordWrap) { - setWordWrap(_wordWrap == "true") + setWordWrap(_wordWrap) setSavingAllowed(true) } if (_customTheme) { @@ -70,24 +101,25 @@ const SettingsPopup: React.FC<{ * variables (state) */ useEffect(() => { - settings.abbreviationCharacter = abbreviationCharacter - settings.verticalLayout = verticalLayout - settings.wordWrap = wordWrap - settings.theme = theme + let newSettings = {...settings, + theme: theme, + } + setSettings(newSettings) + if (savingAllowed) { - window.localStorage.setItem("abbreviationCharacter", abbreviationCharacter) - window.localStorage.setItem("verticalLayout", verticalLayout ? 'true' : 'false') - window.localStorage.setItem("wordWrap", wordWrap ? 'true' : 'false') + window.localStorage.setItem("abbreviationCharacter", settings.abbreviationCharacter) + window.localStorage.setItem("mobile", settings.mobile) + window.localStorage.setItem("wordWrap", settings.wordWrap ? 'true' : 'false') window.localStorage.setItem("theme", theme) window.localStorage.setItem("customTheme", customTheme) } else { window.localStorage.removeItem("abbreviationCharacter") - window.localStorage.removeItem("verticalLayout") + window.localStorage.removeItem("mobile") window.localStorage.removeItem("wordWrap") window.localStorage.removeItem("theme") window.localStorage.removeItem("customTheme") } - }, [savingAllowed, abbreviationCharacter, verticalLayout, wordWrap, theme]) + }, [savingAllowed, settings, theme]) const handleChangeSaving = (ev) => { if (ev.target.checked) { @@ -97,11 +129,6 @@ const SettingsPopup: React.FC<{ } } - const handleLayoutChange = (ev: React.ChangeEvent) => { - setVerticalLayout(!verticalLayout) - // ev.stopPropagation() - } - /** Load a custom monaco theme, store it in local storage and activate it */ function uploadTheme(ev) { const fileToLoad = ev.target.files[0] @@ -122,13 +149,32 @@ const SettingsPopup: React.FC<{ fileReader.readAsText(fileToLoad, "UTF-8") } + const mobileSliderMarks = [ + { + value: 0, + label: 'desktop', + key: "false" + }, + { + value: 1, + label: 'auto', + key: "auto" + }, + { + value: 2, + label: 'mobile', + key: "true" + }, + + ]; + return
{ev.preventDefault(); handleClose(); closeNav()}}>

Project settings

-

These settigns are stored in the URL as they change the project's setup

-

- - {setAbbreviationCharacter(ev.target.value)}} value={abbreviationCharacter} /> + onChange={(ev) => {changeSetting('abbreviationCharacter', ev.target.value)}} value={settings.abbreviationCharacter} /> +

+

+ + + item.key === settings.mobile).value} + step={1} + marks={mobileSliderMarks} + min={-0.2} + max={2.2} + sx={{ + '& .MuiSlider-track': { display: 'none', }, + }} + onChange={(ev, value: number) =>{setMobile(mobileSliderMarks[value].key)}} + /> +

+

- - - {/* */} -

-

- -

+ + + {/*
+ + + + } + label="" + /> +
*/}

- {setWordWrap(!wordWrap)}} checked={wordWrap} /> +

+

Saving

@@ -188,6 +256,14 @@ const SettingsPopup: React.FC<{

+ + + //

User settings

+ + + + // + // } export default SettingsPopup diff --git a/client/src/config.json b/client/src/config.json new file mode 100644 index 00000000..d5ca4fb9 --- /dev/null +++ b/client/src/config.json @@ -0,0 +1,17 @@ +{ + "projects": [ + { "folder": "mathlib-demo", + "name": "Latest Mathlib", + "examples": [ + { "file": "MathlibLatest/Bijection.lean", + "name": "Bijection" }, + { "file": "MathlibLatest/Logic.lean", + "name": "Logic" }, + { "file": "MathlibLatest/Ring.lean", + "name": "Ring" }, + { "file": "MathlibLatest/Rational.lean", + "name": "Rational" }]}, + { "folder": "lean4web-tools", + "name": "Stable Lean" } + ] +} diff --git a/client/src/config/settings.ts b/client/src/config/settings.ts index bcd951be..3c2d88c2 100644 --- a/client/src/config/settings.ts +++ b/client/src/config/settings.ts @@ -1,13 +1,23 @@ /* This file contains the default settings. */ -const settings = { +const settings : { + 'inputModeEnabled': boolean, + 'abbreviationCharacter': string, + 'languages': Array, + 'inputModeCustomTranslations', + 'eagerReplacementEnabled': boolean, + 'mobile': 'true' | 'false' | 'auto', + 'wordWrap': 'on' | 'off', + 'theme': string, + 'customTheme': string, +} = { 'inputModeEnabled': true, 'abbreviationCharacter': '\\', 'languages': ['lean4', 'lean'], 'inputModeCustomTranslations': {}, 'eagerReplacementEnabled': true, - 'verticalLayout': false, // value here irrelevant, will be overwritten with `width < 800` in Settings.tsx - 'wordWrap': false, + 'mobile': 'auto', // `true`, `false`, or `auto` + 'wordWrap': 'on', // 'on' or 'off' 'theme': 'lightPlus', 'customTheme': '', } diff --git a/client/src/config/text.tsx b/client/src/config/text.tsx new file mode 100644 index 00000000..0f1c3efb --- /dev/null +++ b/client/src/config/text.tsx @@ -0,0 +1,17 @@ +import React from "react" + +/** + * serverCountry: string or `null`. + * contactInformation: React fragment like `<>blah blah` to be inserted inside a `

`. Alternatively `null` to be ommitted. + */ +export const text = { + serverCountry: 'Germany', + contactInformation: <> + Jon Eugster
+ Mathematisches Institut der Heinrich-Heine-Universität Düsseldorf
+ Universitätsstr. 1
+ 40225 Düsseldorf
+ Germany
+ +49 211 81-12173
+ +} diff --git a/client/src/css/Editor.css b/client/src/css/Editor.css index acad1704..f58105b3 100644 --- a/client/src/css/Editor.css +++ b/client/src/css/Editor.css @@ -149,3 +149,7 @@ code { cursor: pointer; display: flex; } + +.tmp-infoview-wrapper { + border: 1px solid "red"; +} diff --git a/client/src/css/Navigation.css b/client/src/css/Navigation.css index 2da72ad6..82b18f6b 100644 --- a/client/src/css/Navigation.css +++ b/client/src/css/Navigation.css @@ -17,17 +17,20 @@ nav .logo { mix-blend-mode: difference; } +/* The top bar with menu items. */ nav .menu { float: right; } +/* A dropdown comprises a `nav-link` and a `dropdown-content`. The latter has absolute +positioning to be displayed on top of things. */ nav .dropdown { display: inline-block; position: relative; } +/* The dropdown itself */ nav .dropdown-content { - /* background: none; */ position: absolute; right: 0; display: flex; @@ -41,16 +44,13 @@ nav .dropdown-content { box-shadow: -.1rem .3rem .3rem 0 var(--vscode-menu-separatorBackground); } - -nav .submenu { - /* position: absolute; - right: 100%; - width: 100%; - display: flex; - flex-direction: column; +/* Overlay to fade out the dropdown if a sub-dropdown is displayed on top. */ +nav .dropdown-overlay { background-color: var(--vscode-menu-background); - z-index: 1; - box-shadow: -0.1rem 0.3rem 0.3rem 0 var(--vscode-menu-separatorBackground); */ + opacity: 0.7; + position: absolute; + width:100%; + height: 100%; } /* The menu items */ @@ -67,38 +67,17 @@ nav .nav-link { padding-bottom: .6rem; } -nav .nav-link svg { - width: 1.4rem; -} - -/* menu items for dropdown */ -nav .nav-link { - width: 100%; - padding-left: .8rem; - padding-right: .8rem; - padding-top: .6rem; - padding-bottom: .6rem; -} - nav .nav-link:hover { color: var(--vscode-menu-selectionForeground); background-color: var(--vscode-menu-selectionBackground); } -/* `.nav-icon` is the burger for the dropdown menu */ -/* .nav-icon { - background: none; - border: none; - color: inherit; - cursor: pointer; - text-decoration: none; - padding: .5rem; - height: 100%; - float: right; - padding-right: 1rem; +/* menu items inside a dropdown */ +nav .dropdown .nav-link { + width: 100%; } -.nav-icon:hover { - color: var(--vscode-menu-selectionForeground); - background-color: var(--vscode-menu-selectionBackground); -} */ +/* Zulip logo (instead of font-awesome icon) */ +nav .nav-link svg { + width: 1.4rem; +} diff --git a/client/src/css/index.css b/client/src/css/index.css index e097b331..3aa45d9e 100644 --- a/client/src/css/index.css +++ b/client/src/css/index.css @@ -14,7 +14,7 @@ body { src: local('JuliaMono'), url('/fonts/JuliaMono-Regular.ttf') format('truetype'); } -@font-face { +/* @font-face { font-family: 'NotoColorEmoji'; src: local('NotoColorEmoji'), url('/fonts/NotoColorEmoji-Regular.ttf') format('truetype'); -} +} */ diff --git a/client/src/editor/vscode.css b/client/src/editor/vscode.css index ac32a1a7..6a66366d 100644 --- a/client/src/editor/vscode.css +++ b/client/src/editor/vscode.css @@ -1,7 +1,7 @@ :root { --vscode-font-weight:normal; --vscode-font-size:13px; - --vscode-editor-font-family: 'NotoColorEmoji', 'JuliaMono', 'Source Code Pro', 'STIX Two Math', monospace; + --vscode-editor-font-family: 'JuliaMono', 'Source Code Pro', 'STIX Two Math', monospace; --vscode-editor-font-weight:normal; --vscode-editor-font-size:15px; --vscode-foreground: #616161; diff --git a/client/src/monaco-lean4/config.ts b/client/src/monaco-lean4/config.ts index 33912261..d3d0366d 100644 --- a/client/src/monaco-lean4/config.ts +++ b/client/src/monaco-lean4/config.ts @@ -1,7 +1,7 @@ -import * as fs from 'fs' +// import * as fs from 'fs' import * as path from 'path' import { workspace } from 'vscode' -import { logger } from './utils/logger' +// import { logger } from './utils/logger' // TODO: does currently not contain config options for `./abbreviation` // so that it is easy to keep it in sync with vscode-lean. @@ -61,51 +61,51 @@ export function addDefaultElanPath(): void { } } -function findToolchainBin(root: string): string { - logger.log(`Looking for toolchains in ${root}`) - if (!fs.existsSync(root)) { - return '' - } - const toolchains = fs.readdirSync(path.join(root, '..', 'toolchains')) - for (const toolchain of toolchains) { - if (toolchain.indexOf('leanprover--lean4') >= 0) { - return path.join(root, '..', 'toolchains', toolchains[0], 'bin') - } - } - return '' -} - -export function addToolchainBinPath(elanPath: string) { - const bin = findToolchainBin(elanPath) - if (bin) { - const paths = getEnvPath() - setEnvPath(paths + path.delimiter + bin) - } -} - -export function findProgramInPath(name: string): string { - if (fs.existsSync(name)) { - return name - } - const extensions: string[] = [] - if (process.platform === 'win32') { - extensions.push('.exe') - extensions.push('.com') - extensions.push('.cmd') - } else { - extensions.push('') - } - const parts = splitEnvPath(getEnvPath()) - for (const part of parts) { - for (const ext of extensions) { - const fullPath = path.join(part, name + ext) - if (fs.existsSync(fullPath)) { - return fullPath - } - } - } - return '' -} +// function findToolchainBin(root: string): string { +// // logger.log(`Looking for toolchains in ${root}`) +// if (!fs.existsSync(root)) { +// return '' +// } +// const toolchains = fs.readdirSync(path.join(root, '..', 'toolchains')) +// for (const toolchain of toolchains) { +// if (toolchain.indexOf('leanprover--lean4') >= 0) { +// return path.join(root, '..', 'toolchains', toolchains[0], 'bin') +// } +// } +// return '' +// } + +// export function addToolchainBinPath(elanPath: string) { +// const bin = findToolchainBin(elanPath) +// if (bin) { +// const paths = getEnvPath() +// setEnvPath(paths + path.delimiter + bin) +// } +// } + +// export function findProgramInPath(name: string): string { +// if (fs.existsSync(name)) { +// return name +// } +// const extensions: string[] = [] +// if (process.platform === 'win32') { +// extensions.push('.exe') +// extensions.push('.com') +// extensions.push('.cmd') +// } else { +// extensions.push('') +// } +// const parts = splitEnvPath(getEnvPath()) +// for (const part of parts) { +// for (const ext of extensions) { +// const fullPath = path.join(part, name + ext) +// if (fs.existsSync(fullPath)) { +// return fullPath +// } +// } +// } +// return '' +// } export function removeElanPath(): string { const parts = splitEnvPath(getEnvPath()) @@ -113,7 +113,7 @@ export function removeElanPath(): string { for (let i = 0; i < parts.length; ) { const part = parts[i] if (part.indexOf('.elan') > 0) { - logger.log(`removing path to elan: ${part}`) + // logger.log(`removing path to elan: ${part}`) result = part parts.splice(i, 1) } else { diff --git a/client/src/monaco-lean4/docview.ts b/client/src/monaco-lean4/docview.ts index b702f9ed..85e84525 100644 --- a/client/src/monaco-lean4/docview.ts +++ b/client/src/monaco-lean4/docview.ts @@ -19,7 +19,7 @@ import { } from 'vscode' import { AbbreviationConfig, SymbolsByAbbreviation } from './abbreviation/config' import { TempFolder } from './utils/tempFolder' -import cheerio = require('cheerio') +import * as cheerio from 'cheerio' export function mkCommandUri(commandName: string, ...args: any[]): string { return `command:${commandName}?${encodeURIComponent(JSON.stringify(args))}` diff --git a/client/src/monaco-lean4/extension.ts b/client/src/monaco-lean4/extension.ts index 9da2d1ba..71fec6a2 100644 --- a/client/src/monaco-lean4/extension.ts +++ b/client/src/monaco-lean4/extension.ts @@ -19,7 +19,7 @@ import { LeanClientProvider } from './utils/clientProvider' import { LeanConfigWatchService } from './utils/configwatchservice' import { isExtUri, toExtUriOrError, UntitledUri } from './utils/exturi' import { LeanInstaller } from './utils/leanInstaller' -import { logger } from './utils/logger' +// import { logger } from './utils/logger' import { findLeanPackageVersionInfo } from './utils/projectInfo' interface AlwaysEnabledFeatures { @@ -132,7 +132,7 @@ async function isLean3Project(installer: LeanInstaller): Promise { docUri.scheme === 'file' ? await findLeanPackageVersionInfo(docUri) : [new UntitledUri(), undefined] if (toolchainVersion && toolchainVersion.indexOf('lean:3') > 0) { - logger.log(`Lean4 skipping lean 3 project: ${toolchainVersion}`) + // logger.log(`Lean4 skipping lean 3 project: ${toolchainVersion}`) return true } diff --git a/client/src/monaco-lean4/infoview.ts b/client/src/monaco-lean4/infoview.ts index 31349a40..dfbe3e8d 100644 --- a/client/src/monaco-lean4/infoview.ts +++ b/client/src/monaco-lean4/infoview.ts @@ -8,7 +8,7 @@ import { RpcKeepAliveParams, ServerStoppedReason, TextInsertKind, -} from '@leanprover/infoview-api' +} from '@joneugster/infoview-api' import { join } from 'path' import { commands, @@ -51,7 +51,9 @@ import { Rpc } from './rpc' import { LeanClientProvider } from './utils/clientProvider' import { c2pConverter, p2cConverter } from './utils/converters' import { ExtUri, parseExtUri, toExtUri } from './utils/exturi' -import { logger } from './utils/logger' +import { loadRenderInfoview } from '@joneugster/infoview/loader' +import { ShowDocumentParams, TextDocumentPositionParams, WorkspaceEdit } from 'monaco-languageclient/.' +// import { logger } from './utils/logger' const keepAlivePeriodMs = 10000 @@ -61,7 +63,7 @@ async function rpcConnect(client: LeanClient, uri: ls.DocumentUri): Promise { - logger.log('[InfoProvider] got client restarted event') + // logger.log('[InfoProvider] got client restarted event') // This event is triggered both the first time the server starts // as well as when the server restarts. @@ -433,7 +435,7 @@ export class InfoProvider implements Disposable { await this.onClientRestarted(client) }), client.restartedWorker(async uri => { - logger.log('[InfoProvider] got worker restarted event') + // logger.log('[InfoProvider] got worker restarted event') await this.onWorkerRestarted(uri) }), client.didSetLanguage(() => this.onLanguageChanged()), @@ -447,7 +449,7 @@ export class InfoProvider implements Disposable { await this.webviewPanel?.api.serverStopped(undefined) // clear any server stopped state if (this.workersFailed.has(uri)) { this.workersFailed.delete(uri) - logger.log('[InfoProvider] Restarting worker for file: ' + uri) + // logger.log('[InfoProvider] Restarting worker for file: ' + uri) } await this.sendPosition() } @@ -463,7 +465,7 @@ export class InfoProvider implements Disposable { if (!this.workersFailed.has(uri)) { this.workersFailed.set(uri, reason) } - logger.log(`[InfoProvider]client crashed: ${uri}`) + // logger.log(`[InfoProvider]client crashed: ${uri}`) await client.showRestartMessage(true, extUri) } @@ -479,7 +481,7 @@ export class InfoProvider implements Disposable { await this.webviewPanel?.api.serverStopped(reason) } - logger.log(`[InfoProvider] client stopped: ${client.getClientFolder()}`) + // logger.log(`[InfoProvider] client stopped: ${client.getClientFolder()}`) // remember this client is in a stopped state const key = client.getClientFolder() @@ -487,7 +489,7 @@ export class InfoProvider implements Disposable { if (!this.clientsFailed.has(key.toString())) { this.clientsFailed.set(key.toString(), reason) } - logger.log(`[InfoProvider] client stopped: ${key}`) + // logger.log(`[InfoProvider] client stopped: ${key}`) await client.showRestartMessage() } @@ -664,7 +666,7 @@ export class InfoProvider implements Disposable { // by listening to notifications. Send these notifications when the infoview starts // so that it has up-to-date information. if (client?.initializeResult) { - logger.log('[InfoProvider] initInfoView!') + // logger.log('[InfoProvider] initInfoView!') await this.sendConfig() await this.webviewPanel?.api.serverStopped(undefined) // clear any server stopped state await this.webviewPanel?.api.serverRestarted(client.initializeResult) @@ -672,9 +674,9 @@ export class InfoProvider implements Disposable { await this.sendProgress(client) await this.sendPosition() } else if (client === undefined) { - logger.log('[InfoProvider] initInfoView got null client.') + // logger.log('[InfoProvider] initInfoView got null client.') } else { - logger.log('[InfoProvider] initInfoView got undefined client.initializeResult') + // logger.log('[InfoProvider] initInfoView got undefined client.initializeResult') } } @@ -781,9 +783,9 @@ export class InfoProvider implements Disposable { await this.updateStatus(loc) } } else { - logger.log( - '[InfoProvider] ### what does it mean to have sendPosition but no LeanClient for this document???', - ) + // logger.log( + // '[InfoProvider] ### what does it mean to have sendPosition but no LeanClient for this document???', + // ) } } else { await this.updateStatus(loc) diff --git a/client/src/from-vscode-lean4/language-configuration.json b/client/src/monaco-lean4/language-configuration.json similarity index 79% rename from client/src/from-vscode-lean4/language-configuration.json rename to client/src/monaco-lean4/language-configuration.json index ed98e16b..e6ba7f89 100644 --- a/client/src/from-vscode-lean4/language-configuration.json +++ b/client/src/monaco-lean4/language-configuration.json @@ -1,11 +1,16 @@ { "comments": { "lineComment": "--", - "blockComment": [ "/-", "-/" ] + "blockComment": ["/-", "-/"] }, "brackets": [ ["(", ")"], + ["`(", ")"], + ["``(", ")"], ["[", "]"], + ["#[", "]"], + ["@[", "]"], + ["%[", "]"], ["{", "}"], ["⁅", "⁆"], ["⁽", "⁾"], @@ -43,17 +48,24 @@ ["[", "]"], ["{", "}"], ["「", "」"], - ["\"", "\""] + ["\"", "\""], + ["s!\"", "\""], + ["f!\"", "\""], + ["m!\"", "\""] ], "autoClosingPairs": [ ["(", ")"], + ["`(", ")"], + ["``(", ")"], ["[", "]"], + ["#[", "]"], + ["@[", "]"], + ["%[", "]"], ["{", "}"], ["⁅", "⁆"], ["⟮", "⟯"], ["⁽", "⁾"], ["₍", "₎"], - ["〈", "〉"], ["⎴", "⎵"], ["⟅", "⟆"], ["⟦", "⟧"], @@ -86,7 +98,10 @@ ["{", "}"], ["「", "」"], ["/-", "-/"], - ["\"", "\""] + ["\"", "\""], + ["s!\"", "\""], + ["f!\"", "\""], + ["m!\"", "\""] ], "surroundingPairs": [ ["(", ")"], @@ -128,7 +143,15 @@ ["{", "}"], ["「", "」"], ["\"", "\""], - ["'", "'"] + ["'", "'"], + ["`", "`"], + ["*", "*"] ], - "wordPattern" : "([^`~@$%^&*()\\-=+\\[{\\]}⟨⟩⦃⦄⟦⟧⟮⟯‹›<>\\\\|;:\",./\\s]+)" + "wordPattern": "([^`~@$%^&*()\\-=+\\[{\\]}⟨⟩⦃⦄⟦⟧⟮⟯‹›<>\\\\|;:\",./\\s]+)", + "onEnterRules": [ + { + "beforeText": "^\\s*(·|\\.)\\s.*$", + "action": { "indent": "indent" } + } + ] } diff --git a/client/src/monaco-lean4/leanclient.ts b/client/src/monaco-lean4/leanclient.ts index 72e551f0..1c093cff 100644 --- a/client/src/monaco-lean4/leanclient.ts +++ b/client/src/monaco-lean4/leanclient.ts @@ -31,7 +31,7 @@ import { } from 'vscode-languageclient/node' import * as ls from 'vscode-languageserver-protocol' -import { LeanFileProgressParams, LeanFileProgressProcessingInfo, ServerStoppedReason } from '@leanprover/infoview-api' +import { LeanFileProgressParams, LeanFileProgressProcessingInfo, ServerStoppedReason } from '@joneugster/infoview-api' import { join } from 'path' import { addServerEnvPaths, @@ -47,16 +47,16 @@ import { toolchainPath, } from './config' import { assert } from './utils/assert' -import { batchExecute, ExecutionExitCode, ExecutionResult } from './utils/batch' -import { logger } from './utils/logger' -import { readLeanVersion } from './utils/projectInfo' +// import { batchExecute, ExecutionExitCode, ExecutionResult } from './utils/batch' +// import { logger } from './utils/logger' +// import { readLeanVersion } from './utils/projectInfo' // @ts-ignore import { SemVer } from 'semver' import { c2pConverter, p2cConverter, patchConverters } from './utils/converters' import { displayErrorWithOutput } from './utils/errors' import { ExtUri, FileUri, parseExtUri, toExtUri } from './utils/exturi' -import { fileExists } from './utils/fsHelper' -import path = require('path') +// import { fileExists } from './utils/fsHelper' +import * as path from 'path' const escapeRegExp = (s: string) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') @@ -174,7 +174,7 @@ export class LeanClient implements Disposable { } this.isRestarting = true try { - logger.log('[LeanClient] Restarting Lean Server') + // logger.log('[LeanClient] Restarting Lean Server') if (this.isStarted()) { await this.stop() } @@ -205,17 +205,17 @@ export class LeanClient implements Disposable { this.client.onDidChangeState(async s => { // see https://github.com/microsoft/vscode-languageserver-node/issues/825 if (s.newState === State.Starting) { - logger.log('[LeanClient] starting') + // logger.log('[LeanClient] starting') } else if (s.newState === State.Running) { const end = Date.now() - logger.log(`[LeanClient] running, started in ${end - startTime} ms`) + // logger.log(`[LeanClient] running, started in ${end - startTime} ms`) this.running = true // may have been auto restarted after it failed. if (!insideRestart) { this.restartedEmitter.fire(undefined) } } else if (s.newState === State.Stopped) { this.running = false - logger.log('[LeanClient] has stopped or it failed to start') + // logger.log('[LeanClient] has stopped or it failed to start') if (!this.noPrompt) { // only raise this event and show the message if we are not the ones // who called the stop() method. @@ -243,7 +243,7 @@ export class LeanClient implements Disposable { this.running = true } catch (error) { const msg = '' + error - logger.log(`[LeanClient] restart error ${msg}`) + // logger.log(`[LeanClient] restart error ${msg}`) this.outputChannel.appendLine(msg) this.serverFailedEmitter.fire(msg) insideRestart = false @@ -406,7 +406,7 @@ export class LeanClient implements Disposable { // this to throw an exception which then causes those tests to fail. await this.client.stop() } catch (e) { - logger.log(`[LeanClient] Error stopping language client: ${e}`) + // logger.log(`[LeanClient] Error stopping language client: ${e}`) } } @@ -438,7 +438,7 @@ export class LeanClient implements Disposable { return } const uri = docUri.toString() - logger.log(`[LeanClient] Restarting File: ${uri}`) + // logger.log(`[LeanClient] Restarting File: ${uri}`) // This causes a text document version number discontinuity. In // (didChange (oldVersion) => restartFile => didChange (newVersion)) // the client emits newVersion = oldVersion + 1, despite the fact that the @@ -484,43 +484,9 @@ export class LeanClient implements Disposable { return this.running ? this.client?.initializeResult : undefined } - private async checkToolchainVersion(folderUri: FileUri): Promise { - // see if we have a well known toolchain label that corresponds - // to a known date like 'leanprover/lean4:nightly-2022-02-01' - const toolchainVersion = await readLeanVersion(folderUri) - if (toolchainVersion) { - const nightly_match = /^leanprover\/lean4:nightly-(\d+)-(\d+)-(\d+)$/.exec(toolchainVersion) - if (nightly_match) { - return new Date(parseInt(nightly_match[1]), parseInt(nightly_match[2]) - 1, parseInt(nightly_match[3])) - } - const release_match = /^leanprover\/lean4:(\d+)-(\d+)-(\d+)$/.exec(toolchainVersion) - if (release_match) { - return new Date(2023, 9, 8) - } - if (toolchainVersion === 'leanprover/lean4:stable') { - return new Date(2022, 2, 1) - } - } - return undefined - } - async checkLakeVersion(executable: string, version: string | null): Promise { // Check that the Lake version is high enough to support "lake serve" option. - const versionOptions = version ? ['+' + version, '--version'] : ['--version'] - const start = Date.now() - const cwd = this.folderUri.scheme === 'file' ? this.folderUri.fsPath : undefined - const result: ExecutionResult = await batchExecute(executable, versionOptions, cwd) - if (result.exitCode !== ExecutionExitCode.Success) { - logger.error(`[LeanClient] Ran '${executable} ${versionOptions.join(' ')}', got error:\n${result.stderr}`) - return false - } - logger.log(`[LeanClient] Ran '${executable} ${versionOptions.join(' ')}' in ${Date.now() - start} ms`) - const lakeVersion = result.stdout - const actual = this.extractVersion(lakeVersion) - if (actual.compare('3.0.0') > 0) { - return true - } - return false + return true } private extractVersion(v: string | undefined): SemVer { @@ -581,21 +547,7 @@ export class LeanClient implements Disposable { if (!lakeEnabled() || this.folderUri.scheme !== 'file') { return false } - - const lakefileLean = this.folderUri.join('lakefile.lean') - const lakefileToml = this.folderUri.join('lakefile.toml') - if (!(await fileExists(lakefileLean.fsPath)) && !(await fileExists(lakefileToml.fsPath))) { - return false - } - - // see if we can avoid the more expensive checkLakeVersion call. - const date = await this.checkToolchainVersion(this.folderUri) - if (date) { - // Feb 16 2022 is when the 3.1.0.pre was released. - return date >= new Date(2022, 1, 16) - } - - return await this.checkLakeVersion(lakeExecutable, null) + return true } private obtainClientOptions(): LanguageClientOptions { diff --git a/client/src/monaco-lean4/taskgutter.ts b/client/src/monaco-lean4/taskgutter.ts index ec220e28..c4260e33 100644 --- a/client/src/monaco-lean4/taskgutter.ts +++ b/client/src/monaco-lean4/taskgutter.ts @@ -1,4 +1,4 @@ -import { LeanFileProgressKind, LeanFileProgressProcessingInfo } from '@leanprover/infoview-api' +import { LeanFileProgressKind, LeanFileProgressProcessingInfo } from '@joneugster/infoview-api' import { Disposable, ExtensionContext, OverviewRulerLane, Range, TextEditorDecorationType, window } from 'vscode' import { LeanClientProvider } from './utils/clientProvider' diff --git a/client/src/monaco-lean4/utils/batch.ts b/client/src/monaco-lean4/utils/batch.ts index 2e236674..cb0d54f6 100644 --- a/client/src/monaco-lean4/utils/batch.ts +++ b/client/src/monaco-lean4/utils/batch.ts @@ -2,7 +2,6 @@ import { spawn } from 'child_process' import { CancellationToken, Disposable, OutputChannel, ProgressLocation, ProgressOptions, window } from 'vscode' import { findProgramInPath, isRunningTest } from '../config' import { displayErrorWithOutput } from './errors' -import { logger } from './logger' export interface ExecutionChannel { combined?: OutputChannel | undefined @@ -88,7 +87,7 @@ export async function batchExecute( proc.on('close', (code, signal) => { disposeKill?.dispose() - logger.log(`child process exited with code ${code}`) + // logger.log(`child process exited with code ${code}`) if (signal === 'SIGTERM') { if (channel?.combined) { channel.combined.appendLine('=> Operation cancelled by user.') @@ -120,7 +119,7 @@ export async function batchExecute( }) }) } catch (e) { - logger.log(`error running ${executablePath} : ${e}`) + // logger.log(`error running ${executablePath} : ${e}`) resolve(createCannotLaunchExecutionResult('')) } }) diff --git a/client/src/monaco-lean4/utils/clientProvider.ts b/client/src/monaco-lean4/utils/clientProvider.ts index d85aa7ac..f4b5011e 100644 --- a/client/src/monaco-lean4/utils/clientProvider.ts +++ b/client/src/monaco-lean4/utils/clientProvider.ts @@ -1,8 +1,8 @@ -import { LeanFileProgressProcessingInfo, ServerStoppedReason } from '@leanprover/infoview-api' +import { LeanFileProgressProcessingInfo, ServerStoppedReason } from '@joneugster/infoview-api' import { commands, Disposable, EventEmitter, OutputChannel, TextDocument, TextEditor, window, workspace } from 'vscode' import { addDefaultElanPath, - addToolchainBinPath, + // addToolchainBinPath, getDefaultElanPath, isElanDisabled, shouldShowInvalidProjectWarnings, @@ -11,7 +11,7 @@ import { LeanClient } from '../leanclient' import { displayErrorWithOutput } from './errors' import { ExtUri, FileUri, getWorkspaceFolderUri, toExtUri, UntitledUri } from './exturi' import { LeanInstaller, LeanVersion } from './leanInstaller' -import { logger } from './logger' +// import { logger } from './logger' import { checkParentFoldersForLeanProject, findLeanPackageRoot, isValidLeanProject } from './projectInfo' // This class ensures we have one LeanClient per folder. @@ -38,12 +38,10 @@ export class LeanClientProvider implements Disposable { private clientStoppedEmitter = new EventEmitter<[LeanClient, boolean, ServerStoppedReason]>() clientStopped = this.clientStoppedEmitter.event - constructor(installer: LeanInstaller, outputChannel: OutputChannel) { - this.outputChannel = outputChannel - this.installer = installer + constructor() { - // we must setup the installChanged event handler first before any didOpenEditor calls. - installer.installChanged(async (uri: ExtUri) => await this.onInstallChanged(uri)) + // // we must setup the installChanged event handler first before any didOpenEditor calls. + // installer.installChanged(async (uri: ExtUri) => await this.onInstallChanged(uri)) window.visibleTextEditors.forEach(e => this.didOpenEditor(e.document)) this.subscriptions.push( @@ -74,7 +72,7 @@ export class LeanClientProvider implements Disposable { return } - logger.log(`[ClientProvider] onDidChangeWorkspaceFolders removing client for ${key}`) + // logger.log(`[ClientProvider] onDidChangeWorkspaceFolders removing client for ${key}`) this.clients.delete(key) this.versions.delete(key) client.dispose() @@ -98,7 +96,7 @@ export class LeanClientProvider implements Disposable { private async onInstallChanged(uri: ExtUri) { // Uri is a package Uri in the case a lean package file was changed. - logger.log(`[ClientProvider] installChanged for ${uri}`) + // logger.log(`[ClientProvider] installChanged for ${uri}`) this.pendingInstallChanged.push(uri) if (this.processingInstallChanged) { // avoid re-entrancy. @@ -115,38 +113,38 @@ export class LeanClientProvider implements Disposable { // have to check again here in case elan install had --default-toolchain none. const packageUri = await this.findPackageRootUri(uri) - logger.log('[ClientProvider] testLeanVersion') + // logger.log('[ClientProvider] testLeanVersion') const version = await this.installer.testLeanVersion(packageUri) if (version.version === '4') { - logger.log('[ClientProvider] got lean version 4') + // logger.log('[ClientProvider] got lean version 4') const [cached, client] = await this.ensureClient(uri, version) if (cached && client) { await client.restart() - logger.log('[ClientProvider] restart complete') + // logger.log('[ClientProvider] restart complete') } } else if (version.error) { - logger.log(`[ClientProvider] Lean version not ok: ${version.error}`) + // logger.log(`[ClientProvider] Lean version not ok: ${version.error}`) } } catch (e) { - logger.log(`[ClientProvider] Exception checking lean version: ${e}`) + // logger.log(`[ClientProvider] Exception checking lean version: ${e}`) } } this.processingInstallChanged = false } - private async autoInstall(): Promise { - // no prompt, just do it! - await this.installer.installElan() - if (isElanDisabled()) { - addToolchainBinPath(getDefaultElanPath()) - } else { - addDefaultElanPath() - } + // private async autoInstall(): Promise { + // // no prompt, just do it! + // await this.installer.installElan() + // if (isElanDisabled()) { + // // addToolchainBinPath(getDefaultElanPath()) + // } else { + // addDefaultElanPath() + // } - for (const [_, client] of this.clients) { - await this.onInstallChanged(client.folderUri) - } - } + // for (const [_, client] of this.clients) { + // await this.onInstallChanged(client.folderUri) + // } + // } private getVisibleEditor(uri: ExtUri): TextEditor | undefined { for (const editor of window.visibleTextEditors) { @@ -216,7 +214,7 @@ export class LeanClientProvider implements Disposable { await this.checkIsValidProjectFolder(client.folderUri) } catch (e) { - logger.log(`[ClientProvider] ### Error opening document: ${e}`) + // logger.log(`[ClientProvider] ### Error opening document: ${e}`) } } @@ -263,7 +261,7 @@ export class LeanClientProvider implements Disposable { this.versions.set(key, versionInfo) } else if (versionInfo.error === 'no elan installed' || versionInfo.error === 'lean not found') { if (!this.installer.getPromptUser()) { - await this.autoInstall() + // await this.autoInstall() versionInfo = await this.installer.testLeanVersion(folderUri) if (!versionInfo.error) { this.versions.set(key, versionInfo) @@ -289,7 +287,7 @@ export class LeanClientProvider implements Disposable { const cachedClient = client !== undefined if (!client) { if (this.pending.has(key)) { - logger.log('[ClientProvider] ignoring ensureClient already pending on ' + folderUri.toString()) + // logger.log('[ClientProvider] ignoring ensureClient already pending on ' + folderUri.toString()) return [cachedClient, client] } @@ -300,7 +298,7 @@ export class LeanClientProvider implements Disposable { versionInfo = await this.getLeanVersion(folderUri) } - logger.log('[ClientProvider] Creating LeanClient for ' + folderUri.toString()) + // logger.log('[ClientProvider] Creating LeanClient for ' + folderUri.toString()) const elanDefaultToolchain = await this.installer.getElanDefaultToolchain(folderUri) // We must create a Client before doing the long running testLeanVersion @@ -315,9 +313,9 @@ export class LeanClientProvider implements Disposable { if (versionInfo && versionInfo.version && versionInfo.version !== '4') { // ignore workspaces that belong to a different version of Lean. - logger.log( - `[ClientProvider] Lean4 extension ignoring workspace '${folderUri}' because it is not a Lean 4 workspace.`, - ) + // logger.log( + // `[ClientProvider] Lean4 extension ignoring workspace '${folderUri}' because it is not a Lean 4 workspace.`, + // ) this.pending.delete(key) this.clients.delete(key) client.dispose() @@ -326,7 +324,7 @@ export class LeanClientProvider implements Disposable { client.serverFailed(err => { // forget this client! - logger.log(`[ClientProvider] serverFailed, removing client for ${key}`) + // logger.log(`[ClientProvider] serverFailed, removing client for ${key}`) const cached = this.clients.get(key) this.clients.delete(key) cached?.dispose() @@ -346,7 +344,7 @@ export class LeanClientProvider implements Disposable { }) this.pending.delete(key) - logger.log('[ClientProvider] firing clientAddedEmitter event') + // logger.log('[ClientProvider] firing clientAddedEmitter event') this.clientAddedEmitter.fire(client) if (versionInfo) { @@ -355,9 +353,9 @@ export class LeanClientProvider implements Disposable { // as a result of UI options shown by testLeanVersion. await client.start() } else { - logger.log( - `[ClientProvider] skipping client.start because of versionInfo error: ${versionInfo?.error}`, - ) + // logger.log( + // `[ClientProvider] skipping client.start because of versionInfo error: ${versionInfo?.error}`, + // ) } } } diff --git a/client/src/monaco-lean4/utils/exturi.ts b/client/src/monaco-lean4/utils/exturi.ts index 39e737eb..19aa935d 100644 --- a/client/src/monaco-lean4/utils/exturi.ts +++ b/client/src/monaco-lean4/utils/exturi.ts @@ -1,5 +1,5 @@ import { Uri, workspace } from 'vscode' -import { isFileInFolder } from './fsHelper' +// import { isFileInFolder } from './fsHelper' function unsupportedSchemeError(uri: Uri): Error { return new Error(`Got URI with unsupported scheme '${uri.scheme}': '${uri}'`) @@ -54,7 +54,7 @@ export class FileUri { } isInFolder(folderUri: FileUri): boolean { - return isFileInFolder(this.fsPath, folderUri.fsPath) + throw "isInFolder is not implemented" } } diff --git a/client/src/monaco-lean4/utils/leanInstaller.ts b/client/src/monaco-lean4/utils/leanInstaller.ts index fca5d641..99ace2db 100644 --- a/client/src/monaco-lean4/utils/leanInstaller.ts +++ b/client/src/monaco-lean4/utils/leanInstaller.ts @@ -3,7 +3,7 @@ import { EventEmitter, OutputChannel, TerminalOptions, window } from 'vscode' import { addServerEnvPaths, getPowerShellPath, isRunningTest, shouldAutofocusOutput, toolchainPath } from '../config' import { batchExecute, ExecutionExitCode, ExecutionResult } from './batch' import { ExtUri, FileUri } from './exturi' -import { logger } from './logger' +// import { logger } from './logger' import { isCoreLean4Directory, readLeanVersion } from './projectInfo' export class LeanVersion { @@ -162,7 +162,7 @@ export class LeanInstaller { this.installChangedEmitter.fire(packageUri) } catch (err) { const msg = '' + err - logger.log(`[LeanInstaller] restart error ${msg}`) + // logger.log(`[LeanInstaller] restart error ${msg}`) this.outputChannel.appendLine(msg) } } @@ -208,7 +208,7 @@ export class LeanInstaller { // Specifically, if the extension was not opened inside of a folder, it // looks for a global (default) installation of Lean. This way, we can support // single file editing. - logger.log(`executeWithProgress ${cmd} ${options}`) + // logger.log(`executeWithProgress ${cmd} ${options}`) const cwd = packageUri.scheme === 'file' ? packageUri.fsPath : undefined const checkingResult: ExecutionResult = await batchExecute(cmd, options, cwd, { combined: this.outputChannel, @@ -237,7 +237,7 @@ export class LeanInstaller { } } catch (err) { const msg = '' + err - logger.log(`[LeanInstaller] check lean version error ${msg}`) + // logger.log(`[LeanInstaller] check lean version error ${msg}`) if (this.outputChannel) this.outputChannel.appendLine(msg) result.error = err } @@ -326,7 +326,7 @@ export class LeanInstaller { if (t === terminal) { resolve(true) } else { - logger.log('[LeanInstaller] ignoring terminal closed: ' + t.name + ', waiting for: ' + terminalName) + // logger.log('[LeanInstaller] ignoring terminal closed: ' + t.name + ', waiting for: ' + terminalName) } }) }) diff --git a/client/src/monaco-lean4/utils/projectInfo.ts b/client/src/monaco-lean4/utils/projectInfo.ts index ec43856b..7aa8aa8f 100644 --- a/client/src/monaco-lean4/utils/projectInfo.ts +++ b/client/src/monaco-lean4/utils/projectInfo.ts @@ -1,8 +1,8 @@ import * as fs from 'fs' import { FileUri, getWorkspaceFolderUri } from './exturi' import { fileExists } from './fsHelper' -import { logger } from './logger' -import path = require('path') +// import { logger } from './logger' +import * as path from 'path' // Detect lean4 root directory (works for both lean4 repo and nightly distribution) diff --git a/client/src/monacoSetup.ts b/client/src/monacoSetup.ts index 53bccde6..5f96a32f 100644 --- a/client/src/monacoSetup.ts +++ b/client/src/monacoSetup.ts @@ -3,7 +3,7 @@ import { wireTmGrammars } from 'monaco-editor-textmate' import * as leanSyntax from './syntaxes/lean.json' import * as leanMarkdownSyntax from './syntaxes/lean-markdown.json' import * as codeblockSyntax from './syntaxes/codeblock.json' -import languageConfig from './from-vscode-lean4/language-configuration.json'; +import languageConfig from './monaco-lean4/language-configuration.json'; import { loadWASM } from 'onigasm' import * as monaco from 'monaco-editor/esm/vs/editor/editor.api.js' import { MonacoServices } from 'monaco-languageclient'; diff --git a/package-lock.json b/package-lock.json index 2261b402..019ddebb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,10 +16,13 @@ "@fortawesome/free-solid-svg-icons": "^6.2.0", "@fortawesome/react-fontawesome": "^0.2.0", "@joneugster/infoview": "^0.6.2", + "@joneugster/lean4": "^0.0.146", + "@monaco-editor/react": "^4.6.0", "@mui/material": "^5.13.7", "@vitejs/plugin-react-swc": "^3.4.0", "express": "^4.18.2", "file-saver": "^2.0.5", + "install": "^0.13.0", "ip-anonymize": "^0.1.0", "mobx": "^6.6.2", "moment-timezone": "^0.5.39", @@ -28,6 +31,7 @@ "monaco-languageclient": "^4.0.1", "monaco-textmate": "^3.0.1", "nocache": "^3.0.4", + "npm": "^10.7.0", "onigasm": "^2.2.5", "path-browserify": "^1.0.1", "react": "^18.2.0", @@ -89,21 +93,21 @@ } }, "node_modules/@babel/core": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", - "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.4", + "@babel/generator": "^7.24.5", "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.24.4", - "@babel/parser": "^7.24.4", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -157,12 +161,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", "dev": true, "dependencies": { - "@babel/types": "^7.24.0", + "@babel/types": "^7.24.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -242,16 +246,16 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -261,24 +265,24 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" @@ -293,9 +297,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "engines": { "node": ">=6.9.0" } @@ -310,25 +314,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", - "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", "dev": true, "dependencies": { "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -402,9 +406,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -414,9 +418,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -439,19 +443,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -483,12 +487,12 @@ "dev": true }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1067,6 +1071,33 @@ "resolved": "https://registry.npmjs.org/@joneugster/infoview-api/-/infoview-api-0.4.2.tgz", "integrity": "sha512-zaQWdCgb2GkVkHYc4XLVADUlnqeoDC/OCqHqHjtfeDXWpVox2TJcqkjA/JpuUV8Wqn0PHZ7K14OiHFJlKUuVHw==" }, + "node_modules/@joneugster/lean4": { + "version": "0.0.146", + "resolved": "https://registry.npmjs.org/@joneugster/lean4/-/lean4-0.0.146.tgz", + "integrity": "sha512-QMMAsueGFAqFQxhEl63k9pVfKRkHW64TqcK4UKiZ5pQNCJUh3rfDY5H/kABZ8JkG+oWDT+PhEp+otD0fLSmS5w==", + "dependencies": { + "@joneugster/infoview": "~0.6.1", + "@joneugster/infoview-api": "~0.4.0", + "axios": "^1.6.7", + "cheerio": "^1.0.0-rc.12", + "mobx": "^5.15.7", + "semver": "^7.6.0", + "vscode-languageclient": "^8.0.2", + "zod": "^3.22.4" + }, + "engines": { + "vscode": "^1.75.0" + } + }, + "node_modules/@joneugster/lean4/node_modules/mobx": { + "version": "5.15.7", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-5.15.7.tgz", + "integrity": "sha512-wyM3FghTkhmC+hQjyPGGFdpehrcX1KOXsDuERhfK2YbJemkUhEB+6wzEN639T21onxlfYBmriA1PFnvxTUhcKw==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", @@ -1167,6 +1198,30 @@ "exenv-es6": "^1.1.1" } }, + "node_modules/@monaco-editor/loader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.4.0.tgz", + "integrity": "sha512-00ioBig0x642hytVspPl7DbQyaSWRaolYie/UFNjoTdvoKPzo6xrXLhTk9ixgIKcLH5b5vDOjVNiGyY+uDCUlg==", + "dependencies": { + "state-local": "^1.0.6" + }, + "peerDependencies": { + "monaco-editor": ">= 0.21.0 < 1" + } + }, + "node_modules/@monaco-editor/react": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@monaco-editor/react/-/react-4.6.0.tgz", + "integrity": "sha512-RFkU9/i7cN2bsq/iTkurMWOEErmYcY6JiQI3Jn+WeR/FGISH8JbHERjpS9oRuSOPvDMJI0Z8nJeKkbOs9sBYQw==", + "dependencies": { + "@monaco-editor/loader": "^1.4.0" + }, + "peerDependencies": { + "monaco-editor": ">= 0.25.0 < 1", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@mui/base": { "version": "5.0.0-beta.40", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", @@ -1199,22 +1254,22 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.15.15", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.15.tgz", - "integrity": "sha512-aXnw29OWQ6I5A47iuWEI6qSSUfH6G/aCsW9KmW3LiFqr7uXZBK4Ks+z8G+qeIub8k0T5CMqlT2q0L+ZJTMrqpg==", + "version": "5.15.16", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.16.tgz", + "integrity": "sha512-PTIbMJs5C/vYMfyJNW8ArOezh4eyHkg2pTeA7bBxh2kLP1Uzs0Nm+krXWbWGJPwTWjM8EhnDrr4aCF26+2oleg==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/material": { - "version": "5.15.15", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.15.tgz", - "integrity": "sha512-3zvWayJ+E1kzoIsvwyEvkTUKVKt1AjchFFns+JtluHCuvxgKcLSRJTADw37k0doaRtVAsyh8bz9Afqzv+KYrIA==", + "version": "5.15.16", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.16.tgz", + "integrity": "sha512-ery2hFReewko9gpDBqOr2VmXwQG9ifXofPhGzIx09/b9JqCQC/06kZXZDGGrOTpIddK9HlIf4yrS+G70jPAzUQ==", "dependencies": { "@babel/runtime": "^7.23.9", "@mui/base": "5.0.0-beta.40", - "@mui/core-downloads-tracker": "^5.15.15", + "@mui/core-downloads-tracker": "^5.15.16", "@mui/system": "^5.15.15", "@mui/types": "^7.2.14", "@mui/utils": "^5.15.14", @@ -1977,9 +2032,9 @@ "peer": true }, "node_modules/@types/node": { - "version": "20.12.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", - "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "version": "20.12.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.8.tgz", + "integrity": "sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w==", "devOptional": true, "peer": true, "dependencies": { @@ -2230,8 +2285,7 @@ "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" }, "node_modules/accepts": { "version": "1.3.8", @@ -2308,7 +2362,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -2368,6 +2421,11 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -2383,6 +2441,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-plugin-macros": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", @@ -2437,6 +2505,11 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -2549,9 +2622,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001614", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", - "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "version": "1.0.30001615", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001615.tgz", + "integrity": "sha512-1IpazM5G3r38meiae0bHRnPhz+CBQ3ZLqbQMtrg+AsTPKAXgW38JNsXkyZ+v8waCsDmPq87lmfun5Q2AGysNEQ==", "dev": true, "funding": [ { @@ -2572,7 +2645,6 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -2584,6 +2656,42 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -2644,7 +2752,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -2655,8 +2762,18 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } }, "node_modules/commander": { "version": "2.20.3", @@ -2799,6 +2916,32 @@ } } }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -2905,6 +3048,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2937,6 +3088,57 @@ "csstype": "^3.0.2" } }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", @@ -2953,9 +3155,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.751", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.751.tgz", - "integrity": "sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==", + "version": "1.4.754", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.754.tgz", + "integrity": "sha512-7Kr5jUdns5rL/M9wFFmMZAgFDuL2YOnanFH4OI4iFzUqyh3XOL7nAGbSlSMZdzKMIyyTpNSbqZsWG9odwLeKvA==", "dev": true }, "node_modules/emoji-regex": { @@ -2989,7 +3191,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, "engines": { "node": ">=0.12" }, @@ -3317,6 +3518,25 @@ "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -3326,6 +3546,19 @@ "is-callable": "^1.1.3" } }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -3464,8 +3697,7 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/has-bigints": { "version": "1.0.2", @@ -3480,7 +3712,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3557,6 +3788,24 @@ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -3621,6 +3870,14 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "node_modules/install": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.13.0.tgz", + "integrity": "sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -4257,6 +4514,33 @@ "vscode": ">= npm:@codingame/monaco-vscode-api@1.69.0 < npm:@codingame/monaco-vscode-api@1.70.0" } }, + "node_modules/monaco-languageclient/node_modules/vscode-languageclient": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", + "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", + "dependencies": { + "minimatch": "^3.0.4", + "semver": "^7.3.5", + "vscode-languageserver-protocol": "3.17.2" + }, + "engines": { + "vscode": "^1.67.0" + } + }, + "node_modules/monaco-languageclient/node_modules/vscode-languageserver-protocol": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", + "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", + "dependencies": { + "vscode-jsonrpc": "8.0.2", + "vscode-languageserver-types": "3.17.2" + } + }, + "node_modules/monaco-languageclient/node_modules/vscode-languageserver-types": { + "version": "3.17.2", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", + "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" + }, "node_modules/monaco-textmate": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/monaco-textmate/-/monaco-textmate-3.0.1.tgz", @@ -4405,7 +4689,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", - "dev": true, "dependencies": { "abbrev": "1" }, @@ -4425,87 +4708,2514 @@ "node": ">=0.10.0" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/npm": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.7.0.tgz", + "integrity": "sha512-FXylyYSXNjgXx3l82BT8RSQvCoGIQ3h8YdRFGKNvo3Pv/bKscK4pdWkx/onwTpHDqGw+oeLf4Rxln9WVyxAxlQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/redact", + "@npmcli/run-script", + "@sigstore/tuf", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^7.2.1", + "@npmcli/config": "^8.0.2", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.6", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.1", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "@sigstore/tuf": "^2.3.2", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^18.0.2", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.3.12", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^7.0.1", + "ini": "^4.1.2", + "init-package-json": "^6.0.2", + "is-cidr": "^5.0.5", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^8.0.1", + "libnpmdiff": "^6.0.3", + "libnpmexec": "^8.0.0", + "libnpmfund": "^5.0.1", + "libnpmhook": "^10.0.0", + "libnpmorg": "^6.0.1", + "libnpmpack": "^7.0.0", + "libnpmpublish": "^9.0.2", + "libnpmsearch": "^7.0.0", + "libnpmteam": "^6.0.0", + "libnpmversion": "^6.0.0", + "make-fetch-happen": "^13.0.1", + "minimatch": "^9.0.4", + "minipass": "^7.0.4", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^10.1.0", + "nopt": "^7.2.0", + "normalize-package-data": "^6.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.0", + "npm-profile": "^9.0.2", + "npm-registry-fetch": "^17.0.0", + "npm-user-validate": "^2.0.0", + "p-map": "^4.0.0", + "pacote": "^18.0.3", + "parse-conflict-json": "^3.0.1", + "proc-log": "^4.2.0", + "qrcode-terminal": "^0.12.0", + "read": "^3.0.1", + "semver": "^7.6.0", + "spdx-expression-parse": "^4.0.0", + "ssri": "^10.0.5", + "supports-color": "^9.4.0", + "tar": "^6.2.1", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^4.0.0", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", - "dev": true, + "node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=12" + } + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">= 0.4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, + "node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dependencies": { - "ee-first": "1.1.1" + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/agent": { + "version": "2.2.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "7.5.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.1.0", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^7.1.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.1.0", + "@npmcli/query": "^3.1.0", + "@npmcli/redact": "^2.0.0", + "@npmcli/run-script": "^8.1.0", + "bin-links": "^4.0.1", + "cacache": "^18.0.0", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^7.0.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.4", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^11.0.2", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "pacote": "^18.0.1", + "parse-conflict-json": "^3.0.0", + "proc-log": "^4.2.0", + "proggy": "^2.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.5", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" }, "engines": { - "node": ">= 0.8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/onigasm": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", - "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "node_modules/npm/node_modules/@npmcli/config": { + "version": "8.3.1", + "inBundle": true, + "license": "ISC", "dependencies": { - "lru-cache": "^5.1.1" + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.2", + "nopt": "^7.0.0", + "proc-log": "^4.2.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "5.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "7.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^18.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^18.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "5.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/query": { + "version": "3.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/redact": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "8.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "proc-log": "^4.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/@sigstore/bundle": { + "version": "2.3.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/core": { + "version": "1.1.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.3.1", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/sign": { + "version": "2.3.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.0", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/tuf": { + "version": "2.3.2", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.0", + "tuf-js": "^2.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@sigstore/verify": { + "version": "1.2.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/@tufjs/models": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/agent-base": { + "version": "7.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "6.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bin-links": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "5.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "18.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "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" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "4.0.5", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^5.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/npm/node_modules/foreground-child": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "10.3.12", + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.6", + "minimatch": "^9.0.1", + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "7.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "7.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ini": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "6.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/package-json": "^5.0.0", + "npm-package-arg": "^11.0.0", + "promzard": "^1.0.0", + "read": "^3.0.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "5.0.5", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^4.0.4" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.13.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jackspeak": { + "version": "2.3.6", + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "8.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "6.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/installed-package-contents": "^2.1.0", + "binary-extensions": "^2.3.0", + "diff": "^5.1.0", + "minimatch": "^9.0.4", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.1", + "tar": "^6.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "8.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^8.1.0", + "ci-info": "^4.0.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.1", + "proc-log": "^4.2.0", + "read": "^3.0.1", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "5.0.9", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "10.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "6.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "7.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^7.2.1", + "@npmcli/run-script": "^8.1.0", + "npm-package-arg": "^11.0.2", + "pacote": "^18.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "9.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^6.0.0", + "npm-package-arg": "^11.0.2", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.2.0", + "semver": "^7.3.7", + "sigstore": "^2.2.0", + "ssri": "^10.0.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "7.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^17.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "6.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^17.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "6.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.6", + "@npmcli/run-script": "^8.1.0", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^4.2.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "10.2.2", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "13.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "9.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "7.0.4", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "10.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "6.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "11.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^4.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "8.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "9.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "9.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "17.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/redact": "^2.0.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "18.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/package-json": "^5.1.0", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^8.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^17.0.0", + "proc-log": "^4.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/path-scurry": { + "version": "1.10.2", + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.16", + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/proc-log": { + "version": "4.2.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/proggy": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/read": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/npm/node_modules/semver": { + "version": "7.6.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/sigstore": { + "version": "2.3.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^2.3.1", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.1", + "@sigstore/sign": "^2.3.0", + "@sigstore/tuf": "^2.3.1", + "@sigstore/verify": "^1.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.8.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "8.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-correct/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.17", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sprintf-js": { + "version": "1.1.3", + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/npm/node_modules/ssri": { + "version": "10.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/tuf-js": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "2.0.0", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/which": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/which/node_modules/isexe": { + "version": "3.1.1", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onigasm": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/onigasm/-/onigasm-2.2.5.tgz", + "integrity": "sha512-F+th54mPc0l1lp1ZcFMyL/jTs2Tlq4SqIHKIXGZOR/VkHkF9A7Fr5rRr5+ZG/lWeRsyrClLYRq7s/yFQ/XhWCA==", + "dependencies": { + "lru-cache": "^5.1.1" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dependencies": { "callsites": "^3.0.0" @@ -4531,6 +7241,29 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -4752,6 +7485,11 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -5320,6 +8058,11 @@ "resolved": "https://registry.npmjs.org/split.js/-/split.js-1.6.5.tgz", "integrity": "sha512-mPTnGCiS/RiuTNsVhCm9De9cCAUsrNFFviRbADdKiiV+Kk8HKp/0fWu7Kr8pi3/yBmsqLFHuXGT9UUZ+CNLwFw==" }, + "node_modules/state-local": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/state-local/-/state-local-1.0.7.tgz", + "integrity": "sha512-HTEHMNieakEnoe33shBYcZ7NX83ACUjCu8c40iOGEZsngj9zRnkqS9j1pqQPXwobB0ZcVTk27REb7COQ0UR59w==" + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -5410,7 +8153,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5647,9 +8389,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.14.tgz", + "integrity": "sha512-JixKH8GR2pWYshIPUg/NujK3JO7JiqEEUiNArE86NQyrgUuZeTlZQN3xuS/yiV5Kb48ev9K6RqNkaJjXsdg7Jw==", "dev": true, "funding": [ { @@ -5666,7 +8408,7 @@ } ], "dependencies": { - "escalade": "^3.1.1", + "escalade": "^3.1.2", "picocolors": "^1.0.0" }, "bin": { @@ -5813,31 +8555,58 @@ } }, "node_modules/vscode-languageclient": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.0.2.tgz", - "integrity": "sha512-lHlthJtphG9gibGb/y72CKqQUxwPsMXijJVpHEC2bvbFqxmkj9LwQ3aGU9dwjBLqsX1S4KjShYppLvg1UJDF/Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-languageclient/-/vscode-languageclient-8.1.0.tgz", + "integrity": "sha512-GL4QdbYUF/XxQlAsvYWZRV3V34kOkpRlvV60/72ghHfsYFnS/v2MANZ9P6sHmxFcZKOse8O+L9G7Czg0NUWing==", "dependencies": { - "minimatch": "^3.0.4", - "semver": "^7.3.5", - "vscode-languageserver-protocol": "3.17.2" + "minimatch": "^5.1.0", + "semver": "^7.3.7", + "vscode-languageserver-protocol": "3.17.3" }, "engines": { "vscode": "^1.67.0" } }, + "node_modules/vscode-languageclient/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/vscode-languageclient/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/vscode-languageclient/node_modules/vscode-jsonrpc": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.1.0.tgz", + "integrity": "sha512-6TDy/abTQk+zDGYazgbIPc+4JoXdwC8NHU9Pbn4UJP1fehUyZmM4RHp5IthX7A6L5KS30PRui+j+tbbMMMafdw==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/vscode-languageclient/node_modules/vscode-languageserver-protocol": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.2.tgz", - "integrity": "sha512-8kYisQ3z/SQ2kyjlNeQxbkkTNmVFoQCqkmGrzLH6A9ecPlgTbp3wDTnUNqaUxYr4vlAcloxx8zwy7G5WdguYNg==", + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.3.tgz", + "integrity": "sha512-924/h0AqsMtA5yK22GgMtCYiMdCOtWTSGgUOkgEDX+wk2b0x4sAfLiO4NxBxqbiVtz7K7/1/RgVrVI0NClZwqA==", "dependencies": { - "vscode-jsonrpc": "8.0.2", - "vscode-languageserver-types": "3.17.2" + "vscode-jsonrpc": "8.1.0", + "vscode-languageserver-types": "3.17.3" } }, "node_modules/vscode-languageclient/node_modules/vscode-languageserver-types": { - "version": "3.17.2", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.2.tgz", - "integrity": "sha512-zHhCWatviizPIq9B7Vh9uvrH6x3sK8itC84HkamnBWoDFJtzBf7SWlpLCZUit72b3os45h6RWQNC9xHRDF8dRA==" + "version": "3.17.3", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.3.tgz", + "integrity": "sha512-SYU4z1dL0PyIMd4Vj8YOqFvHu7Hz/enbWtpfnVbJHU4Nd1YNYx8u0ennumc6h48GQNeOLxmwySmnADouT/AuZA==" }, "node_modules/vscode-languageserver-protocol": { "version": "3.17.5", @@ -6111,6 +8880,14 @@ "engines": { "node": ">=12" } + }, + "node_modules/zod": { + "version": "3.23.5", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.5.tgz", + "integrity": "sha512-fkwiq0VIQTksNNA131rDOsVJcns0pfVUjHzLrNBiF/O/Xxb5lQyEXkhZWcJ7npWsYlvs+h0jFWXXy4X46Em1JA==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/package.json b/package.json index fd41a541..d9f699e4 100644 --- a/package.json +++ b/package.json @@ -11,12 +11,15 @@ "@fortawesome/fontawesome-svg-core": "^6.2.0", "@fortawesome/free-solid-svg-icons": "^6.2.0", "@fortawesome/react-fontawesome": "^0.2.0", + "@joneugster/infoview": "^0.6.2", + "@joneugster/lean4": "^0.0.146", + "@monaco-editor/react": "^4.6.0", "@mui/material": "^5.13.7", "@vitejs/plugin-react-swc": "^3.4.0", "express": "^4.18.2", "file-saver": "^2.0.5", + "install": "^0.13.0", "ip-anonymize": "^0.1.0", - "@joneugster/infoview": "^0.6.2", "mobx": "^6.6.2", "moment-timezone": "^0.5.39", "monaco-editor": "^0.34.1", @@ -24,6 +27,7 @@ "monaco-languageclient": "^4.0.1", "monaco-textmate": "^3.0.1", "nocache": "^3.0.4", + "npm": "^10.7.0", "onigasm": "^2.2.5", "path-browserify": "^1.0.1", "react": "^18.2.0",