diff --git a/cells/src/cells/lib.cljs b/cells/src/cells/lib.cljs index 63884fdf..b65dd9e0 100644 --- a/cells/src/cells/lib.cljs +++ b/cells/src/cells/lib.cljs @@ -112,4 +112,4 @@ (cell/complete! self) (reset! self (f @self))) n)] (cell/on-dispose self #js{} #(js/clearTimeout clear-key)) - initial-value))) + initial-value))) \ No newline at end of file diff --git a/editor2/.nvmrc b/editor2/.nvmrc index dcf74e26..03a73ef6 100644 --- a/editor2/.nvmrc +++ b/editor2/.nvmrc @@ -1 +1 @@ -16.14 \ No newline at end of file +20.0 \ No newline at end of file diff --git a/editor2/bb.edn b/editor2/bb.edn index 3544c7a2..927ca705 100644 --- a/editor2/bb.edn +++ b/editor2/bb.edn @@ -1,12 +1,15 @@ {:deps {} :tasks - {dev (shell "yarn shadow-cljs -A:local watch editor") + {dev (shell "yarn shadow-cljs -A:build clj-run build/watch") + ;; use dev-local to test local versions of libs, as specified in deps.edn + dev-local (shell "yarn shadow-cljs -A:local:build clj-run build/watch") + server (shell "yarn shadow-cljs -A:local server") copy-curriculum (do (shell "mkdir -p public/curriculum") (shell "rsync -av src/main/maria/curriculum/ public/curriculum")) - css (shell "npx tailwindcss -i src/maria.cloud.css -o public/maria.cloud.css") + css (shell "npx tailwindcss -i src/editor.css -o public/editor.css") release (do (run 'copy-curriculum) - (shell "yarn shadow-cljs release editor") + (shell "yarn shadow-cljs -A:build release editor") (run 'css)) debug (shell "yarn shadow-cljs release editor --debug")}} \ No newline at end of file diff --git a/editor2/deps.edn b/editor2/deps.edn index 9a74ad4b..df7badb0 100644 --- a/editor2/deps.edn +++ b/editor2/deps.edn @@ -1,12 +1,12 @@ {:paths ["src/main"] - :deps {thheller/shadow-cljs {:mvn/version "2.24.1"} + :deps {thheller/shadow-cljs {:mvn/version "2.27.1"} org.clojure/clojure {:mvn/version "1.12.0-alpha3"} applied-science/js-interop {#_#_:mvn/version "0.4.1" :git/url "https://github.com/applied-science/js-interop" :git/sha "e29e17b2a647006ac0e96307bbc893b01b99c3e9"} nextjournal/clojure-mode {:git/url "https://github.com/nextjournal/clojure-mode" :git/sha "8248736f7afb12fcd8e03439ff02703174dd0de6"} - org.babashka/sci {:mvn/version "0.8.40"} + org.babashka/sci {:mvn/version "0.8.41"} babashka/fs {:mvn/version "0.3.17"} babashka/process {:mvn/version "0.4.16"} io.github.babashka/sci.configs {:git/sha "bf8d209e4aeabb92cb1be04e3d8f789583d5f449"} @@ -20,10 +20,11 @@ maria/tools {:local/root "../tools"} maria/shapes {:local/root "../shapes"} maria/friendly {:local/root "../friendly"} + com.lambdaisland/glogi {:mvn/version "1.3.169"} io.github.applied-science/shapes {:git/sha "da44031cf79a649932cb502f17388db23f2b8ace"} - io.github.mhuebert/re-db {:git/sha "066439e228ae4a48383055970af74b2600b48050"} - io.github.mhuebert/yawn {:git/sha "4fee46087eb907b1e2cd62aea9f05549d08e11a8"} + io.github.mhuebert/re-db {:git/sha "ede6df195088a70217a07c5f6a04b36692ea8842"} + io.github.mhuebert/yawn {:git/sha "68285f6c132f26a2ff3cc2f7dffc3fe68c9856d9"} ;; emmy / clerk io.github.mhuebert/emmy #_org.mentat/emmy {:git/url "https://github.com/mhuebert/emmy" @@ -44,4 +45,5 @@ #_#_applied-science/js-interop {:local/root "../../js-interop"} #_#_nextjournal/clojure-mode {:local/root "../../clojure-mode"} #_#_io.github.mhuebert/yawn {:local/root "../../yawn"} - #_#_io.github.mhuebert/re-db {:local/root "../../re-db"}}}}} + #_#_io.github.mhuebert/re-db {:local/root "../../re-db"}}} + :build {:extra-paths ["dev"]}}} diff --git a/editor2/src/main/maria/cloud/build.clj b/editor2/dev/build.clj similarity index 77% rename from editor2/src/main/maria/cloud/build.clj rename to editor2/dev/build.clj index 2811145e..6201fc04 100644 --- a/editor2/src/main/maria/cloud/build.clj +++ b/editor2/dev/build.clj @@ -1,13 +1,16 @@ -(ns maria.cloud.build +(ns build (:require [babashka.fs :as fs] [babashka.process :as bp] + [cljs-static.assets :as assets] [cljs-static.page :as page] [cljs-static.shadow :as shadow] - [cljs-static.assets :as assets] + [clojure.java.browse :as browse] + [clojure.java.io :as io] [clojure.string :as str] [edamame.core :as eda] + [maria.editor.util :as u] [re-db.schema :as schema] - [maria.editor.util :as u])) + [shadow.cljs.devtools.api :as shadow.api])) (defn parse-meta [file] (let [src (slurp file) @@ -49,7 +52,7 @@ (defn index-html [] (page/root "Maria" {:meta {:viewport "width=device-width, initial-scale=1"} - :styles [{:href (assets/path "/maria.cloud.css")}] + :styles [{:href (assets/path "/editor.css")}] :scripts/head [{:src "https://polyfill.io/v3/polyfill.min.js?version=3.111.0&features=URLSearchParams%2CURL"}] :props/html {:class "bg-neutral-100"} :body [:div#maria-live] @@ -64,18 +67,35 @@ :git/sha (current-sha)})} {:src (shadow/module-path :editor :core)}]})) +(def child-process + "Run a shell command which terminates with the current one, and streams output to stdout" + (partial bp/process + {:in :inherit + :out :inherit + :err :inherit + :shutdown bp/destroy-tree})) + (defn tailwind-watch! {:shadow.build/stage :flush} [state] - (defonce _tailwind (bp/process - {:in :inherit - :out :inherit - :err :inherit - :shutdown bp/destroy-tree} - "npx tailwindcss -w -i src/maria.cloud.css -o public/maria.cloud.css")) + (defonce _tailwind + (child-process "npx tailwindcss -w -i src/editor.css -o public/editor.css")) state) (defn copy-curriculum! {:shadow.build/stage :flush} [state] (bp/sh "bb" "copy-curriculum") - state) \ No newline at end of file + state) + +(defn watch + {:shadow/requires-server true} + [& args] + (shadow.api/watch :editor)) + +(defonce browse-url (memoize browse/browse-url)) + +(defn browse! + {:shadow.build/stage :flush} + [build-state url] + (browse-url url) + build-state) \ No newline at end of file diff --git a/editor2/package.json b/editor2/package.json index 59a7431c..4e57477c 100644 --- a/editor2/package.json +++ b/editor2/package.json @@ -23,10 +23,12 @@ "@nextjournal/lezer-clojure": "^1.0.0", "@radix-ui/react-accordion": "^1.1.2", "@radix-ui/react-avatar": "^1.0.3", + "@radix-ui/react-context-menu": "^2.1.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", "@radix-ui/react-hover-card": "^1.0.6", "@radix-ui/react-menubar": "^1.0.3", "@radix-ui/react-popover": "^1.0.6", - "@radix-ui/react-tooltip": "^1.0.6", + "@radix-ui/react-tooltip": "^1.0.7", "@tailwindcss/forms": "^0.5.3", "@tailwindcss/line-clamp": "^0.4.2", "@tailwindcss/typography": "^0.5.7", @@ -42,6 +44,7 @@ "jszip": "^3.10.1", "katex": "^0.16.2", "leva": "^0.9.35", + "lodash.debounce": "^4.0.8", "mafs": "^0.17.1", "markdown-it": "^12.3.2", "markdown-it-block-image": "^0.0.3", @@ -70,8 +73,9 @@ "react": "^18.2.0", "react-dom": "^18.2.0", "react-refresh": "^0.14.0", - "shadow-cljs": "^2.24.1", - "tailwindcss": "^3.3.1", + "shadow-cljs": "^2.26.5", + "spark-md5": "^3.0.2", + "tailwindcss": "^3.4.1", "three": "^0.154.0", "threestrap": "0.5.1", "use-sync-external-store": "^1.2.0", @@ -79,6 +83,6 @@ "w3c-keyname": "^2.2.6" }, "devDependencies": { - "firebase-tools": "^11.8.0" + "firebase-tools": "^13.1.0" } } diff --git a/editor2/shadow-cljs.edn b/editor2/shadow-cljs.edn index 10a8676f..71821098 100644 --- a/editor2/shadow-cljs.edn +++ b/editor2/shadow-cljs.edn @@ -6,10 +6,11 @@ :asset-path "/js" :build-hooks [(cljs-static.shadow/write-assets! {:public-path "public" - "/index.html" (maria.cloud.build/index-html)})] - :dev {:build-hooks [(maria.cloud.build/tailwind-watch!) - (maria.cloud.build/copy-curriculum!)]} - :release {:build-hooks [(shadow.cljs.build-report/hook {:output-to "public/build-report.html"})]} + "/index.html" (build/index-html)})] + :dev {:build-hooks [(build/tailwind-watch!) + (build/copy-curriculum!) + (build/browse! "http://localhost:8000")]} + :release {:build-hooks [#_(shadow.cljs.build-report/hook {:output-to "public/build-report.html"})]} :devtools {:http-root "public" :http-port 8000 :preloads [yawn.view.refresh-preload]} diff --git a/editor2/src/maria.cloud.css b/editor2/src/editor.css similarity index 88% rename from editor2/src/maria.cloud.css rename to editor2/src/editor.css index e5c9880f..52d5c15e 100644 --- a/editor2/src/maria.cloud.css +++ b/editor2/src/editor.css @@ -16,25 +16,53 @@ --code-bool: #987aa0; --code-brackets: #9f9f9f; } + @layer base { .prose code::before, .prose code::after { content: none; } + a { @apply underline text-blue-600 hover:text-blue-800 visited:text-purple-700 } + body.dragging-prose .value-viewer { + @apply select-none + } } + @layer components { + .icon-zinc { + @apply text-zinc-500 hover:text-zinc-700 cursor-default + } + + .menu-trigger { + @apply + px-1 my-2 bg-transparent rounded whitespace-nowrap + hover:bg-zinc-200 + text-zinc-500 visited:text-zinc-500 hover:text-zinc-700 + data-[highlighted]:bg-zinc-200 + data-[delayed-open]:bg-zinc-200 + data-[state*=open]:bg-zinc-200 + cursor-default + flex items-center + } + .value-viewer { + @apply + w-full px-4 md:pl-0 md:w-1/2 font-mono text-sm md:ml-3 mt-3 md:mt-0 max-h-screen min-h-14 overflow-auto relative + } } + @layer utilities { ::placeholder, .placeholder { @apply text-black/50 } + .gap-list { @apply gap-[6px] } + .rotate-4s { animation: rotation 4s infinite linear; } @@ -74,6 +102,10 @@ @apply list-disc; } +.ProseMirror li > p:first-child, .ProseMirror li > ul { + @apply mt-0; +} + .ProseMirror > *:not(.NodeView) { @apply md:w-1/2 leading-relaxed pl-4; @@ -102,6 +134,7 @@ p code { font-size: 1.1rem; line-height: 1.5rem; } + h1 { @apply text-4xl; } @@ -244,7 +277,7 @@ button { .MenubarContent, .MenubarSubContent { - @apply shadow rounded bg-white z-20 p-[2px]; + @apply shadow rounded bg-white z-[60] p-[2px]; min-width: 220px; animation-duration: 400ms; animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1); diff --git a/editor2/src/main/cells/async.cljc b/editor2/src/main/cells/async.cljc index c326f454..b4bfa227 100644 --- a/editor2/src/main/cells/async.cljc +++ b/editor2/src/main/cells/async.cljc @@ -1,20 +1,21 @@ (ns cells.async (:require [re-db.reactive :as r])) -(defn init [] {`status (r/atom nil)}) - -(defn !status - "Async metadata is stored in a ratom containing `true` for loading-state, - or an instance of js/Error." - [x] - (get (meta x) `status)) - -(defn error! [cell e] (reset! cell (cond-> e - (string? e) - (ex-info {:cell cell})))) -(defn loading! [cell] (reset! (!status cell) {:loading true})) +(defn init [] {`loading? (r/atom nil)}) + +(defn !loading? [x] + (get (meta x) `loading?)) + +(defn error! [cell e] + (reset! cell (cond-> e + (string? e) + (ex-info {})))) + +(defn loading! [cell] + (reset! (!loading? cell) true)) + (defn complete! - ([cell] (reset! (!status cell) nil)) + ([cell] (reset! (!loading? cell) nil)) ([cell value] (reset! cell value) (complete! cell))) diff --git a/editor2/src/main/cells/core.cljc b/editor2/src/main/cells/core.cljc index 591e84f1..048301f1 100644 --- a/editor2/src/main/cells/core.cljc +++ b/editor2/src/main/cells/core.cljc @@ -50,7 +50,7 @@ #?(:cljs (defn interval "Calls `f` on interval of n milliseconds, with previous value, starting with optional init value." - ([n f] (interval n f nil)) + ([n f] (interval n f (f nil))) ([n f init] (hooks/use-interval n f init)))) @@ -60,7 +60,7 @@ [] (hooks/use-geo-location))) -(def loading? (comp async/loading? deref async/!status)) +(def loading? (comp async/loading? deref async/!loading?)) (def message (comp first r/deref-result)) (def error? (comp some? message)) diff --git a/editor2/src/main/cells/hooks.cljc b/editor2/src/main/cells/hooks.cljc index 2c67b027..4fc631ca 100644 --- a/editor2/src/main/cells/hooks.cljc +++ b/editor2/src/main/cells/hooks.cljc @@ -79,10 +79,9 @@ (parse))] (v! formatted-value) (a/complete! self)) - :else (if-let [error-message (xhrio-error-message XhrIo)] - (a/error! self (ex-info error-message {:cell self})) + (a/error! self (js/Error. error-message)) (v! "No error message")))))] #(j/call XhrIo :abort))) [url]) diff --git a/editor2/src/main/maria/cloud/core.cljs b/editor2/src/main/maria/cloud/core.cljs index 01aded6f..ebeabefe 100644 --- a/editor2/src/main/maria/cloud/core.cljs +++ b/editor2/src/main/maria/cloud/core.cljs @@ -5,7 +5,7 @@ [maria.clerkify] [maria.cloud.github :as gh] [maria.cloud.menubar :as menu] - [maria.cloud.persistence] + [maria.cloud.github] [maria.cloud.routes :as routes] [maria.cloud.sidebar :as sidebar] [maria.cloud.views] diff --git a/editor2/src/main/maria/cloud/menubar.cljs b/editor2/src/main/maria/cloud/menubar.cljs index 4e282aaf..0d082f3d 100644 --- a/editor2/src/main/maria/cloud/menubar.cljs +++ b/editor2/src/main/maria/cloud/menubar.cljs @@ -10,6 +10,7 @@ [maria.editor.command-bar :as command-bar] [maria.editor.icons :as icons] [maria.editor.keymaps :as keymaps] + [maria.editor.util :as u] [maria.ui :as ui] [yawn.hooks :as h] [yawn.view :as v])) @@ -17,7 +18,7 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Components -(def item-classes (v/classes ["flex items-center h-7 px-2 text-sm cursor-pointer rounded text-inherit visited:text-inherit no-underline" +(def item-classes (v/classes ["flex items-center h-7 px-2 text-sm rounded text-inherit visited:text-inherit no-underline" "data-[disabled]:cursor-default data-[disabled]:text-zinc-400" "data-[highlighted]:outline-none data-[highlighted]:bg-sky-500 data-[highlighted]:text-white"])) @@ -25,7 +26,7 @@ (v/from-element menu/Item {:class item-classes})) (def icon-btn - (v/from-element :div.cursor-pointer.p-1.flex.items-center.m-1)) + (v/from-element :div.p-1.flex.items-center.m-1)) (def shortcut (v/from-element :div.ml-auto.pl-3.tracking-widest.text-menu-muted)) @@ -44,15 +45,8 @@ (when (:bindings cmd) [shortcut (keymaps/show-binding (first (:bindings cmd)))])]))) -(def trigger-classes (v/classes ["px-1 h-7 bg-transparent rounded" - "hover:bg-zinc-200" - "text-zinc-500 visited:text-zinc-500 hover:text-zinc-700 " - "data-[highlighted]:bg-zinc-200" - "data-[delayed-open]:bg-zinc-200" - "data-[state*=open]:bg-zinc-200"])) (def trigger - (v/from-element menu/Trigger - {:class trigger-classes})) + (v/from-element :el.menu-trigger menu/Trigger)) (def content (v/from-element menu/Content @@ -76,80 +70,85 @@ (take 2) str/join)] [:el ava/Root {:class ["inline-flex items-center justify-center align-middle" - "overflow-hidden select-none w-6 h-6 rounded-full bg-zinc-300"]} + "overflow-hidden select-none w-5 h-5 rounded bg-zinc-300"]} [:el ava/Image {:src photo-url}] [:el ava/Fallback {:delayMs 600 :class "text-xs font-bold text-zinc-700"} initials]])) (def button-small-med - (v/from-element :a - {:class ["rounded flex items-center px-2 py-1 shadow cursor-pointer text-sm" - ui/c:button-med]})) + (v/from-element :a.menu-trigger.rounded.flex.items-center.px-2.py-1.text-sm.no-underline)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Menubar -(ui/defview doc-menu [id] - (let [current (persist/current-file id) - title (or (:file/name current) "untitled.cljs") - !initial-title (h/use-ref title) - !editing? (h/use-state false) - stop-editing! (fn [& _] - (reset! !editing? false)) - start-editing! (fn [& _] - (reset! !initial-title title) - (reset! !editing? true)) - on-value #(swap! (persist/local-ratom id) assoc :file/name %) +(ui/defview title-editor + {:key :initial-title} + [{:keys [id + !editing-title? + icon + initial-title]}] + (let [!title (h/use-state-with-deps initial-title [initial-title]) + done! (fn [& _] + (swap! (persist/local-ratom id) assoc :file/name @!title) + (reset! !editing-title? false)) cancel-editing! (fn [& _] - (on-value @!initial-title) - (stop-editing!)) + (reset! !editing-title? false)) select-name! (fn [^js el] (doto el (.focus) (.setSelectionRange 0 - (if-let [ext (re-find #"\..*$" title)] - (- (count title) (count ext)) - (count title))))) - - on-keydown (h/use-memo #(ui/keydown-handler {:Escape cancel-editing! - :Meta-. cancel-editing! - :Enter stop-editing!})) - provider (:file/provider current)] - [:<> + (if-let [ext (re-find #"\..*$" initial-title)] + (- (count initial-title) (count ext)) + (count initial-title))))) + + on-keydown (ui/keydown-handler {:Escape cancel-editing! + :Meta-. cancel-editing! + :Enter done!})] + (when @!editing-title? + [:input.inset-0.absolute.z-20.p-2.pr-6.border-none + {:class (when icon "pl-7") + :value @!title + :ref #(when (and @!editing-title? % (not (identical? % (j/get js/document :activeElement)))) + (select-name! %)) + :on-blur done! + :on-key-down on-keydown + :on-change (fn [e] + (reset! !title (.. ^js e -target -value)))}]))) + +(ui/defview doc-menu [id] + (let [file (persist/current-file id) + _ (prn :current-file file) + initial-title (or (:file/name file) "Untitled") + provider (:file/provider file) + !editing-title? (h/use-state false)] + [:div.flex.items-center.gap-1 [:div.w-2.h-2.rounded-full.transition-all {:class (if (or (= provider :file.provider/local) (seq (persist/changes id))) "bg-yellow-500" "bg-transparent")}] - (let [icon (when (= :file.provider/gist provider) [:div.inset-0.flex.items-center.justify-center.w-7.absolute.z-30 [icons/github "w-4 h-4 mx-auto"]])] [:el menu/Menu [:div.relative.flex.bg-zinc-100.border.border-zinc-200.hover:border-zinc-300.rounded.h-7 - (when @!editing? - [:input.inset-0.absolute.z-20.p-2.pr-6.border-none - {:class (when icon "pl-7") - :value title - :ref #(when (and @!editing? % (not (identical? % (j/get js/document :activeElement)))) - (select-name! %)) - :on-blur stop-editing! - :on-key-down on-keydown - :on-change #(on-value (.. ^js % -target -value))}]) + [title-editor {:id id + :initial-title initial-title + :!editing-title? !editing-title?}] [:el menu/Trigger [:<> (when icon [:div.absolute.top-0.left-0.bottom-0 icon]) [:span.p-2.pr-6 - {:class [(when @!editing? "opacity-0 overflow-hidden z-10 relative min-w-8") + {:class [(when @!editing-title? "opacity-0 overflow-hidden z-10 relative min-w-8") (when icon "pl-7")]} - title]] + initial-title]] [:div.px-1.rounded.flex.items-center.justify-center.absolute.top-0.right-0.bottom-0.z-30 [icons/chevron-down:mini "w-4 h-4"]]]] [:el menu/Portal - [:el menu/Content {:class "MenubarContent mt-2"} + [:el menu/Content {:class "MenubarContent mt-2 z-[60] relative"} (when (persist/writable? id) - [item {:on-click start-editing!} "Rename"]) + [item {:on-click #(reset! !editing-title? true)} "Rename"]) [command-item :file/revert] [command-item :file/save] (when (= :file.provider/gist provider) @@ -157,7 +156,7 @@ separator [:el menu/Item {:as-child true} [:a - {:href (str "https://gist.github.com/" (:gist/id current)) + {:href (str "https://gist.github.com/" (:gist/id file)) :target "_blank" :class item-classes} "View on GitHub" @@ -176,41 +175,32 @@ (ui/defview menubar [] (let [menubar-content @(ui/use-context ::!content)] [:<> - [:div {:style {:height 40}}] - [:div.w-100.fixed.top-0.right-0.flex.items-center.shadow.px-2.text-sm.z-50.bg-neutral-50 - {:style {:height 40 - :left (sidebar/sidebar-width)}} + [:div.h-12] + [:div.w-100.fixed.top-0.right-0.flex.items-stretch.shadow.px-2.text-sm.z-20.bg-neutral-50.h-12.gap-2.overflow-x-auto + {:style {:left (sidebar/sidebar-width)}} (when-not (:sidebar/visible? @ui/!state) - [icon-btn {:on-click #(swap! ui/!state update :sidebar/visible? not)} + [:div.menu-trigger.-mr-1 {:on-click #(swap! ui/!state update :sidebar/visible? not)} [icons/bars3 "w-4 h-4"]]) - [:el Root {:class "flex flex-row w-full items-center gap-1"} - [:div.flex-grow] - menubar-content - [:div.flex-grow] - #_[:a.text-black.inline-flex.items-center {:class trigger-classes - :href "/"} [icons/home "w-4 h-4"]] - [:a.cursor-pointer.p-1.no-underline - {:href "https://github.com/mhuebert/maria/issues" - :target "_blank" - :class trigger-classes} "Bug Report"] - (let [cmd (keymaps/resolve-command :file/new)] - [:div.cursor-pointer.p-1 - {:class [trigger-classes - "text-zinc-500 hover:text-zinc-700"] - :on-click #(keymaps/run-command cmd)} - "New" - #_[icons/document-plus:mini "w-5 h-5 -mt-[2px]"]] - #_[ui/tooltip - ... - (:title (keymaps/resolve-command :file/new))]) + [:el.contents Root + [:a.menu-trigger.flex.items-center {:href "/"} [icons/home "w-5 h-5"]] + [:div.menu-trigger.items-center.flex.bg-zinc-500.text-white.hover:text-white.hover:bg-zinc-700.gap-1.h-7.place-self-center.mr-1 + {:on-click #(keymaps/run-command (keymaps/resolve-command :file/new))} + [icons/document-plus:mini "w-5 h-5"] + "New"] + (or menubar-content [:div.flex-auto]) + [menu [:el.menu-trigger menu/Trigger + [icons/question-mark "w-4 h-4"]] + [item {:as-child true} + [:a {:href "https://github.com/mhuebert/maria/issues" + :on-click #(j/call (j/get js/window :open)) + :target "_blank"} "Report an issue"]]] + [command-bar/input] (if-let [{:keys [photo-url display-name]} (gh/get-user)] - [menu [:el menu/Trigger {:class [trigger-classes - "rounded-full"]} [avatar photo-url display-name]] + [menu [:el.menu-trigger menu/Trigger [avatar photo-url display-name]] [command-item :account/sign-out]] (if (gh/pending?) [icons/loading "w-5 h-5 opacity-30"] [button-small-med {:on-click #(gh/sign-in-with-popup!)} - [icons/github "w-4 h-4 mr-2"] - "Sign In " [:span.hidden.md:inline.pl-1 " with GitHub"]]))]]])) + [icons/github "w-4 h-4 mr-2"] "Sign in"]))]]])) diff --git a/editor2/src/main/maria/cloud/persistence.cljs b/editor2/src/main/maria/cloud/persistence.cljs index 5a42313a..c799bef6 100644 --- a/editor2/src/main/maria/cloud/persistence.cljs +++ b/editor2/src/main/maria/cloud/persistence.cljs @@ -114,14 +114,6 @@ [:file/name :file/source]))))) -(defn autosave-local-fn - "Returns a callback that will save the current doc to local storage after a 1s debounce." - [] - (-> (fn [id ^js prev-state ^js next-state] - (when-not (.eq (.-doc prev-state) (.-doc next-state)) - (swap! (local-ratom id) assoc :file/source (state-source next-state)))) - (gf/debounce 100))) - (defn swap-name [n f & args] (let [ext (re-find #"\..*$" n) pre (subs n 0 (- (count n) (count ext)))] @@ -162,9 +154,10 @@ local @!local !persisted (persisted-ratom id) source (:file/source local) - filename (or (:file/name local) - (extract-filename source) - "untitled.cljs") + filename (u/ensure-suffix (or (:file/name local) + (extract-filename source) + "untitled.cljs") + ".cljs") body {:files {filename {:content source}}}] (when (seq body) (remove-from-recents! id) diff --git a/editor2/src/main/maria/editor/code/NodeView.cljs b/editor2/src/main/maria/editor/code/NodeView.cljs index 574ae7ae..95416fd0 100644 --- a/editor2/src/main/maria/editor/code/NodeView.cljs +++ b/editor2/src/main/maria/editor/code/NodeView.cljs @@ -37,12 +37,6 @@ (defonce !focused-view (atom nil)) -(defn set-focus! [^js view _] - (if (.-hasFocus view) - (reset! !focused-view view) - (when (identical? view @!focused-view) - (reset! !focused-view nil)))) - (js (defn focus! [{:as this :keys [CodeView]}] (if (j/get this :mounted?) @@ -66,13 +60,17 @@ (js (defn code:forward-update - "Forward events from CodeMirror to ProseMirror (shen the code-editor is focused)" + "Forward events from CodeMirror to ProseMirror (when the code-editor is focused)" [{:keys [CodeView ProseView getPos code-updating?]} code-update] (let [{prose-state :state} ProseView focus-changed? (.-focusChanged code-update) has-focus? (.-hasFocus CodeView)] + (when focus-changed? - (set-focus! CodeView (.-hasFocus CodeView))) + (if (.-hasFocus CodeView) + (reset! !focused-view CodeView) + (when (identical? CodeView @!focused-view) + (reset! !focused-view nil)))) (when (and has-focus? (not code-updating?)) (let [start-pos (inc (getPos)) @@ -83,10 +81,10 @@ selection-changed? (not (.eq (.. code-update -startState -selection) (.. code-update -state -selection))) #_(not (.eq (.. prose-state -selection) - (.create TextSelection - doc - (+ start-pos from') - (+ start-pos to'))))] + (.create TextSelection + doc + (+ start-pos from') + (+ start-pos to'))))] (comment ;; or we could compare the selection inside codemirror? (not (.eq (.. code-update -startState -selection) @@ -225,41 +223,65 @@ (show opts x)) :value value}]))])) +(defn temporarily-disable-contenteditable [start-event end-event] + ;; Ugly hack: temporarily disable contenteditable when users interact with ".value-viewer" regions, + ;; to prevent iOS keyboard from showing up & scrolling to unwanted regions of the document. + ;; (I tried using `stopPropagation` on value-viewer nodes and that did not seem to work; + ;; maybe there's still a better way.) + (.addEventListener js/window start-event + (fn [^js e] + (when-let [value-viewer (.. e -target (closest ".value-viewer"))] + (let [notebook (.closest value-viewer ".notebook")] + (j/!set notebook :contentEditable "false") + (.addEventListener js/window end-event + (fn listener [e] + (j/!set notebook :contentEditable "true") + (.removeEventListener js/window start-event listener)) + true)))) + true)) + +(defonce _ + (do + (temporarily-disable-contenteditable "touchstart" "touchend") + (temporarily-disable-contenteditable "mousedown" "mouseup"))) + (v/defview code-row [^js {:as this :keys [!result !ui-state id CodeView]}] - (let [ref (h/use-callback (fn [el] (when el (mount-code-view! el this)))) + (let [ref (h/use-callback (fn [el] + (when el (mount-code-view! el this)))) {:keys [hide-source node-selected?]} (h/use-deref !ui-state) hide-source? (if (some? hide-source) hide-source (str/includes? (.. CodeView -state -doc (line 1) -text) "^:hide-source")) - classes (v/classes ["absolute top-0 right-1 z-10" - "w-6 h-6" - "inline-flex items-center justify-center" - "text-zinc-400 hover:text-zinc-700" - "cursor-pointer" - "rounded-full bg-white" - "focus:ring"]) - toggle (if hide-source? - (v/x - [:button - {:on-click #(swap! !ui-state assoc :hide-source false) - :class [classes "shadow"]} - (icons/code-bracket:mini "w-4 h-4")]) - (v/x - [:div - {:on-click #(swap! !ui-state assoc :hide-source true) - :class [classes "opacity-0 focus:opacity-100 hover:opacity-100 transition-opacity"]} - (icons/minus-small:mini "w-5 h-5")]))] + toggle-classes (v/classes ["z-10 w-6 h-6" + "inline-flex items-center justify-center" + "text-zinc-400 hover:text-zinc-700" + "cursor-pointer" + "rounded-full bg-white" + "focus:ring"])] [:<> - [:div {:class "w-full md:w-1/2 relative text-base"} + [:div {:class ["w-full md:w-1/2 relative text-base flex rounded-none sm:rounded" + (when-not hide-source? "bg-white")]} (when-not hide-source? - [:div {:class ["w-full text-base relative text-brackets" + [:div {:class ["flex-auto text-base relative text-brackets" (when node-selected? "ring ring-2 ring-selection rounded-r ring-l-none")] :ref ref :id id}]) - toggle] - [:div - {:class "w-full md:w-1/2 font-mono text-sm md:ml-3 mt-3 md:mt-0 max-h-screen overflow-auto"} - [value-viewer this]]])) + [:div.flex.flex-col.w-6.items-center.gap-1.ml-auto + (if hide-source? + [:button + {:on-click #(swap! !ui-state assoc :hide-source false) + :class [toggle-classes "mr-[6px] shadow"]} + (icons/code-bracket:mini "w-4 h-4")] + [:div + {:on-click #(swap! !ui-state assoc :hide-source true) + :class [toggle-classes "opacity-70 focus:opacity-100 hover:opacity-100 transition-opacity"]} + (icons/minus-small:mini "w-5 h-5")])]] + [:div.value-viewer + [value-viewer this] + [:div.ml-auto.flex.flex-col.items-center + [:div.text-slate-300.hover:text-slate-600.z-5.mr-1 + {:on-click #(commands/code:eval-NodeView! this)} + [icons/play-circle "w-8 h-8 sm:hidden sm:hidden"]]]]])) (j/defn select-node [^js {:keys [!ui-state ProseView CodeView]}] (when-not *selecting-node* @@ -328,9 +350,9 @@ (swap! !ui-state assoc :node-selected? false)) :setSelection (partial prose:set-CodeView-selection this) :stopEvent (fn [e] - ;; keyboard events that are handled by a keymap are already stopped; - ;; not sure what events should be stopped here. - (instance? js/MouseEvent e)) + ;; keyboard events that are handled by a keymap are already stopped + (or #_(instance? js/MouseEvent e) + (.. e -target (closest ".value-viewer")))) :destroy #(let [{:keys [CodeView !result]} this] (.destroy CodeView) (root/unmount-soon root) diff --git a/editor2/src/main/maria/editor/code/commands.cljs b/editor2/src/main/maria/editor/code/commands.cljs index a6d553cb..320749b9 100644 --- a/editor2/src/main/maria/editor/code/commands.cljs +++ b/editor2/src/main/maria/editor/code/commands.cljs @@ -256,7 +256,7 @@ :clojure.core/eval-file file} source) (catch js/Error e ^:clj {:error e}))] - (if (a/await? result) + (if (sci/await? result) (do (on-result {:value :maria.editor.code.show-values/loading}) (a/await (-> result @@ -288,7 +288,7 @@ (when-not (j/get ProseView :isDestroyed) (when-let [NodeView (nth NodeViews i nil)] (let [value (code:eval-NodeView! NodeView)] - (if (a/await? value) + (if (sci/await? value) (p/do value (continue (inc i))) (continue (inc i)))))) nil) 0))) diff --git a/editor2/src/main/maria/editor/code/repl.cljc b/editor2/src/main/maria/editor/code/repl.cljc index 76daaf01..5ba7e503 100644 --- a/editor2/src/main/maria/editor/code/repl.cljc +++ b/editor2/src/main/maria/editor/code/repl.cljc @@ -109,5 +109,4 @@ {:keys [special-form macro]} (doc-map ctx (current-ns ctx) thing)] (cond special-form "a special form: a primitive which is evaluated in a special way" macro "a macro: a function that transforms source code before it is evaluated." - :else `(what-is* ~thing)))) - + :else `(what-is* ~thing)))) \ No newline at end of file diff --git a/editor2/src/main/maria/editor/code/sci.cljs b/editor2/src/main/maria/editor/code/sci.cljs index 2db8140e..156331d0 100644 --- a/editor2/src/main/maria/editor/code/sci.cljs +++ b/editor2/src/main/maria/editor/code/sci.cljs @@ -23,34 +23,13 @@ [sci.impl.resolve] [sci.lang] [sci.pprint] - [shadow.lazy :as lazy] [shapes.core] [yawn.sci-config] [maria.editor.extensions.config :as config])) -(def prefix->loadable - (->> config/loadables - (reduce-kv (fn [out k {:keys [loadable provides]}] - (reduce (fn [out lib-prefix] - (assoc out lib-prefix loadable)) - out provides)) {}))) - -(defn lib-prefix [libname] - (symbol (first (str/split (str libname) #"\.")))) - -(def install-loadable! - (memoize (fn [ctx loadable] - (p/let [install! (lazy/load loadable)] - (ctx/with-ctx ctx (install!)))))) - -(defn lazy-load [{:keys [libname ctx]}] - (when-let [loadable (get prefix->loadable (lib-prefix libname))] - (install-loadable! ctx loadable))) - -(defn async-load-fn [{:as opts :keys [libname ctx]}] - (or (lazy-load opts) - (throw (js/Error. (str "Module not found for lib: " libname))))) - +(defn async-load-fn [opts] + (or (config/load-lib+ opts) + (throw (js/Error. (str "Module not found for lib: " (:libname opts)))))) (defn await? [x] (and (instance? js/Promise x) (a/await? x))) @@ -162,7 +141,8 @@ (intern-core 'clojure.core '[maria.editor.code.repl/doc maria.editor.code.repl/dir maria.editor.code.repl/await - maria.editor.code.repl/what-is]) + maria.editor.code.repl/what-is + maria.editor.code.repl/html]) (refer-all! '{cells.core user maria.editor.code.repl user shapes.core user}) diff --git a/editor2/src/main/maria/editor/code/show_values.cljs b/editor2/src/main/maria/editor/code/show_values.cljs index 1bc6e79a..eecb4594 100644 --- a/editor2/src/main/maria/editor/code/show_values.cljs +++ b/editor2/src/main/maria/editor/code/show_values.cljs @@ -24,6 +24,7 @@ [reagent.core :as reagent] [shadow.lazy :as lazy])) +(def HICCUP-BY-DEFAULT false) (def COLL-PADDING 4) @@ -100,6 +101,8 @@ {:title "Print to console" :on-click #(do (js/console.error error) (some-> (sci/stacktrace error) seq pprint))} (icons/command-line:mini "w-5 h-5")]] + (when-let [data (ex-data error)] + (show opts data)) #_[:pre (ui/pprinted (ex-data error))] (when-let [stack (seq (sci/stacktrace error))] [:div.p-2 @@ -129,7 +132,7 @@ (defview more-btn [on-click] [:div.inline-block.-mt-1 {:on-click on-click} - (icons/ellipsis:mini "w-4 h-4 cursor-pointer ")]) + (icons/ellipsis-circle:mini "w-4 h-4 cursor-pointer ")]) (defn punctuate ^v/el [s] (v/x [:div.inline-block s])) @@ -198,7 +201,12 @@ !parent])) (defview show-coll [left right opts coll] - (let [[coll more! !wrapper !parent] (use-limit coll 10)] + (let [coll (if (:sort-colls? opts false) + (sort (fn [a b] + (try (compare a b) (catch js/Error e -1))) + coll) + coll) + [coll more! !wrapper !parent] (use-limit coll 10)] [show-brackets left right @@ -226,7 +234,11 @@ (h/use-effect (fn [] (v! ::loading) - (p/then p v!) + (-> p + (p/then v!) + ;; if promise throws, catch it for display purposes but re-throw + ;; as the view layer should not modify behaviour + (p/catch (fn [e] (v! e) (throw e)))) nil) [p]) (v/x @@ -243,7 +255,12 @@ (defview show-var [opts x] (v/x [:<> - (when (fn? @x) [:div.text-gray-500.mb-1 (str x)]) + (when true #_(fn? @x) + [:div.text-gray-500.mb-1 + ;; show qualified var only if not in current ns + (if (= ((:sci/get-ns opts)) (:ns (meta x))) + (str "#'" (:name (meta x))) + (str x))]) (show opts @x)])) (defview show-str [opts x] @@ -256,7 +273,8 @@ [:div.text-string {:class ["max-h-[80vh] overflow-y-auto"] :on-click #(toggle! not)} x]))) -(def show-map (partial show-coll "{" "}")) +(def show-map (fn [opts x] + (show-coll "{" "}" (merge {:sort-colls? true} opts) x))) (def show-set (partial show-coll "#{" "}")) (def show-list (partial show-coll "(" ")")) (def show-vector (partial show-coll \[ \])) @@ -289,9 +307,8 @@ (defview show-cell [opts cell] ;; always watch status & value together, to avoid cell value being unwatched during loading/error states. - (let [{:keys [loading error]} (h/use-deref (cells.async/!status cell)) - [cell-error value] (r/deref-result cell) - error (or error cell-error)] + (let [{:keys [loading]} (h/use-deref (cells.async/!loading? cell)) + [error value] (r/deref-result cell)] (cond loading loader error (show-error opts error) #_cell-value-circle @@ -342,17 +359,27 @@ (when (react/isValidElement x) x))) - (handles-keys #{:hiccup} - (fn [opts x] - (when (:hiccup (meta x)) - (v/x x)))) - (handles-keys #{:TeX} ;; THIS IS TEMPORARY FOR TESTING (fn [opts x] (when-let [s (:TeX (meta x))] (show-katex opts s)))) + (handles-keys #{:hiccup} + (if HICCUP-BY-DEFAULT + (fn [opts x] + (when (and (instance? PersistentVector x) + (keyword? (first x)) + ;; provides ^:vector [] as an escape-hatch + ;; to prevent hiccup rendering. otherwise, treat + ;; any vector whose first child is a keyword as hiccup. + ;; (useful for demos, unsure if we should keep this behaviour) + (not (:vector (meta x)))) + (v/x x))) + (fn [opts x] + (when (:hiccup (meta x)) + (v/x x))))) + (handles-keys #{:number :symbol :var @@ -454,7 +481,7 @@ "Adds viewers to the global list of viewers, before/after the given viewer-key. See builtin-viewers to see what viewer-keys can be referred to" [ctx where viewer-key added-viewers] - {:pre [(#{:before :after} where)]} + {:pre [(contains? #{:before :after nil} where)]} (let [!viewers (:!viewers ctx)] (->> (insert where (comp viewer-key ::keys meta) @@ -512,3 +539,17 @@ #{:foo}]))) +(def ^:export extra-tailwind-classes + ;; placeholder to put tailwind classes which should be available after minification/compile step. + ;; check if there is a better way to do this + ["text-xs text-sm text-lg text-xl text-2xl text-3xl text-4xl text-5xl text-6xl text-7xl text-8xl" + "flex-wrap gap-1 gap-2 gap-3 gap-4 gap-5 gap-6 gap-7 gap-8" + "bg-black" + "px-1 px-2 px-3 px-4 px-5 px-6 px-7 px-8" + "py-1 py-2 py-3 py-4 py-5 py-6 py-7 py-8" + "p-1 p-2 p-3 p-4 p-5 p-6 p-7 p-8" + "mx-1 mx-2 mx-3 mx-4 mx-5 mx-6 mx-7 mx-8" + "my-1 my-2 my-3 my-4 my-5 my-6 my-7 my-8" + "m-1 m-2 m-3 m-4 m-5 m-6 m-7 m-8" + "h-1 h-2 h-3 h-4 h-5 h-6 h-7 h-8 h-9 h-10" + "leading-1 leading-2 leading-3 leading-4 leading-5 leading-6 leading-7 leading-8 leading-9 leading-10"]) \ No newline at end of file diff --git a/editor2/src/main/maria/editor/code/styles.cljs b/editor2/src/main/maria/editor/code/styles.cljs index 65b10bf4..2ef72ac6 100644 --- a/editor2/src/main/maria/editor/code/styles.cljs +++ b/editor2/src/main/maria/editor/code/styles.cljs @@ -49,12 +49,11 @@ (def code-theme (j/lit {".cm-content" {:padding "1rem 0" - :background-color "white" + :background-color "transparent" :margin-left 0 - :border-radius "4px" :white-space "pre-wrap" :max-width "100%"} - ".cm-line" {:padding "0 1rem"} + ".cm-line" {:padding "0 0 0 1rem"} ".cm-scroller" {:overflow-x "hidden"} ".cm-matchingBracket" {:color "black"} "&.cm-editor, &.cm-editor.cm-focused" {:outline "1px solid transparent"}})) \ No newline at end of file diff --git a/editor2/src/main/maria/editor/command_bar.cljs b/editor2/src/main/maria/editor/command_bar.cljs index 9330f06f..260d4141 100644 --- a/editor2/src/main/maria/editor/command_bar.cljs +++ b/editor2/src/main/maria/editor/command_bar.cljs @@ -1,6 +1,5 @@ (ns maria.editor.command-bar (:require ["cmdk$Command" :as Command] - ["cmdk" :refer [useCommandState]] ["@radix-ui/react-popover" :as Popover] [clojure.string :as str] [maria.editor.keymaps :as keymaps] @@ -24,9 +23,8 @@ {:key value :value value :onSelect (fn [_] - (let [ctx (keymaps/get-context)] - (keymaps/run-command ctx cmd) - (keymaps/hide-command-bar! ctx))) + (keymaps/run-command (:context cmd) cmd) + (keymaps/hide-command-bar! (keymaps/get-context))) :class "data-[selected]:bg-sky-500 data-[selected]:text-white"} [:div.w-20.truncate.text-menu-muted.pr-2 (when (and ns (not= \_ (first ns))) ns)] title @@ -41,9 +39,9 @@ keydown-handler (h/use-memo #(ui/keydown-handler {:Escape close! :Mod-. close!}))] [:el Popover/Root {:open true} - [:el.relative Command {:label "Command Menu"} + [:el.relative.place-self-center Command {:label "Command Menu"} [:el Popover/Anchor {:asChild true} - [:el.rounded.border-slate-300.h-6.px-2.py-0.text-sm.h-7 Command/Input + [:el.rounded.border-slate-300.px-2.py-0.text-sm.h-7.w-32.sm:w-48 Command/Input {:value @!search :placeholder "Commands..." :on-mouse-down #(reset! keymaps/!prev-selected-element (.-activeElement js/document)) diff --git a/editor2/src/main/maria/editor/core.cljs b/editor2/src/main/maria/editor/core.cljs index c88aaafe..fd6f0ee3 100644 --- a/editor2/src/main/maria/editor/core.cljs +++ b/editor2/src/main/maria/editor/core.cljs @@ -7,11 +7,13 @@ ["prosemirror-schema-list" :as cmd-list] ["react" :as react] ["react-dom" :as react-dom] + ["lodash.debounce" :as debounce] [applied-science.js-interop :as j] [applied-science.js-interop.alpha :refer [js]] - [maria.cloud.markdown :as markdown] - [maria.cloud.persistence :as persist] + [clojure.string :as str] [maria.cloud.menubar :as menu] + [maria.cloud.persistence :as persist] + [maria.cloud.routes :as routes] [maria.editor.code.NodeView :as NodeView] [maria.editor.code.commands :as commands] [maria.editor.code.parse-clj :as parse-clj :refer [clojure->markdown]] @@ -23,8 +25,7 @@ [maria.editor.util :as u] [maria.ui :as ui] [yawn.hooks :as h] - [yawn.view :as v] - [maria.cloud.routes :as routes])) + [yawn.view :as v])) (defonce focused-state-key (new p.state/PluginKey "focused-state")) @@ -84,38 +85,66 @@ (map (j/get :textContent))) (j/get-in doc [:content :content]))) -(defn use-menubar-title-dropdown! [id] + +(defn use-doc-menu-content [doc-id] (let [!content (ui/use-context ::menu/!content)] (h/use-effect (fn [] - (let [content (v/x [menu/doc-menu id])] + (let [content (v/x + [:<> + [menu/doc-menu doc-id] + [:div.flex-auto]])] (reset! !content content) #(swap! !content (fn [x] (if (identical? x content) nil x))))) - [id]))) - -(defn use-prose-view [{:keys [default-value on-change-state]} deps] + [doc-id]))) + +(defn autosave-local + "Returns a callback that will save the current doc to local storage" + [id ^js prev-state ^js next-state] + (when-not (.eq (.-doc prev-state) (.-doc next-state)) + (swap! (persist/local-ratom id) assoc + :file/source + (persist/state-source next-state)) + ;; maybe: store the hash of the original source to detect changes + #_(when-let [source (:file/source @(persist/$doc id))] + {:file/source-hash (md5/hash source)}) + )) + +(defn use-prose-view [{:keys [file/id + default-value]} deps] (let [!ref (h/use-state nil) ref-fn (h/use-callback #(when % (reset! !ref %))) !prose-view (h/use-state nil) + autosave! (h/use-memo #(debounce autosave-local 1000 #js{:leading true :trailing true})) make-prose-view (fn [element] (js (-> (p.view/EditorView. {:mount element} {:state (js (.create p.state/EditorState {:doc (clj->doc default-value) :plugins (plugins)})) :nodeViews {:code_block NodeView/editor} - #_#_:handleDOMEvents {:blur #(js/console.log "blur" %1 %2)} - ;; no-op tx for debugging :dispatchTransaction (fn [tx] (this-as ^js view (let [prev-state (.-state view) next-state (.apply prev-state tx)] (.updateState view next-state) - (when on-change-state - (on-change-state prev-state next-state)))))}) + (autosave! id prev-state next-state))))}) (j/assoc! :!sci-ctx (atom (sci/initial-context))))))] + + (h/use-effect + ;; save local state immediately when tab is hidden + (fn [] + (let [cb (fn [] + (when (j/get js/document :hidden) + (j/call autosave! :flush)))] + (when @!prose-view + (js/document.addEventListener "visibilitychange" cb) + #(do (j/call autosave! :flush) + (js/document.removeEventListener "visibilitychange" cb))))) + [@!prose-view]) + (h/use-effect (fn [] (if-let [element (and default-value @!ref)] @@ -130,24 +159,22 @@ "Returns a ref for the element where the editor is to be mounted." (persist/use-persisted-file file) - (use-menubar-title-dropdown! id) + (use-doc-menu-content id) (persist/use-recents! (::routes/path params) file) - (let [autosave! (h/use-memo persist/autosave-local-fn) - [ProseView ref-fn] (use-prose-view {:default-value (or (:file/source @(persist/local-ratom id)) + (let [[ProseView ref-fn] (use-prose-view {:file/id id + :default-value (or (:file/source @(persist/local-ratom id)) (:file/source file) - "") - :on-change-state (fn [prev-state next-state] - (autosave! id prev-state next-state))} + "")} [])] ;; initialize new editors (h/use-effect (fn [] (when (some-> ProseView (u/guard (complement (j/get :isDestroyed)))) - (keymaps/add-context :ProseView ProseView) - (commands/prose:eval-prose-view! ProseView) + (when-not (str/includes? js/window.location.href "eval=false") + (commands/prose:eval-prose-view! ProseView)) (j/call ProseView :focus))) [ProseView]) @@ -162,4 +189,4 @@ [params file] (if file [editor* params file] - "Loading...")) \ No newline at end of file + [:div.circle-loading.m-2 [:div] [:div]])) \ No newline at end of file diff --git a/editor2/src/main/maria/editor/doc.cljs b/editor2/src/main/maria/editor/doc.cljs index 148b954d..dfea6921 100644 --- a/editor2/src/main/maria/editor/doc.cljs +++ b/editor2/src/main/maria/editor/doc.cljs @@ -1,7 +1,5 @@ (ns maria.editor.doc (:require ["prosemirror-markdown" :as md] - [applied-science.js-interop :as j] - [applied-science.js-interop.alpha :refer [js]] [clojure.string :as str] [maria.editor.prosemirror.schema :as markdown])) @@ -9,38 +7,11 @@ ;; 2. for each line, strip the prefix from code lines, add `;; ` to prose lines. ;; 3. normalize spacing to 1 empty line between blocks. -(def prefix "¡Ⓜ") -(defn prefix-lines [s] - (str prefix - (str/replace-all s #"[\n\r]" (str "\n" prefix)))) - -(defn clojure-block? [lang] - (re-matches #"(?i)clj\w?|clojure|clojurescript" lang)) - -(def clj-serializer (js - (let [{:keys [nodes marks] - {original :code_block} :nodes} md/defaultMarkdownSerializer] - (new md/MarkdownSerializer - (j/extend! {} - nodes - {:code_block - (fn [{:as state :keys [delim]} - {:as node :keys [textContent] {lang :params} :attrs}] - (if (and (str/blank? delim) - (or (clojure-block? lang) - (str/blank? lang))) - (do - (when-not (str/blank? textContent) - (.text state (-> textContent str/trim prefix-lines) false)) - (.closeBlock state node)) - (original state node)))}) - marks)))) - (defn doc->clj "Returns a Clojure string from a ProseMirror markdown doc." [md-doc] - (let [md (.serialize clj-serializer md-doc) - code? #(str/starts-with? % prefix)] + (let [md (markdown/serialize md-doc) + code? #(str/starts-with? % markdown/code-prefix)] (->> (str/split-lines md) (partition-by code?) (keep (fn [ss] @@ -54,7 +25,8 @@ (str/join "\n\n")))) (comment - (-> "```\n(+ 1 2)\n```" markdown/markdown->doc doc->clj)) + (-> "```\n(+ 1 2)\n```" markdown/markdown->doc doc->clj) + (-> "- hello\n- there" markdown/markdown->doc doc->clj)) (defn md->clj "Given a Markdown string, returns Clojure source. diff --git a/editor2/src/main/maria/editor/extensions/config.cljs b/editor2/src/main/maria/editor/extensions/config.cljs index 6e9a43a4..04a4b841 100644 --- a/editor2/src/main/maria/editor/extensions/config.cljs +++ b/editor2/src/main/maria/editor/extensions/config.cljs @@ -1,15 +1,29 @@ (ns maria.editor.extensions.config - (:require [shadow.lazy :as lazy] - [shadow.loader])) + (:require [clojure.set :as set] + [clojure.string :as str] + [shadow.lazy :as lazy] + [shadow.loader] + [promesa.core :as p] + [sci.ctx-store :as ctx])) ;; feel free to submit a PR with additional extension config here -(def loadables +(def modules "A map of shadow lazy modules to namespace prefixes that they provide." + + ;; this is a handwritten index of sci extension modules, each of which contains: + ;; :loadable - a shadow.lazy/Loadable pointing to a sci install function + ;; :prefixes - a list of prefixes (first namespace segment) that the module provides + ;; :depends-on - the set of other modules in this index which must be loaded first + + ;; A more principled approach for namespace-module mapping would be nice, + ;; but at build-time we don't know which modules a given sci loadable will provide. + ;; It depends not on the shadow-cljs module but on what happens inside the `install!` function. + {:reagent {:loadable (lazy/loadable maria.editor.extensions.reagent/install!) - :provides '[reagent]} + :prefixes '[reagent]} :emmy {:loadable (lazy/loadable maria.editor.extensions.emmy/install!) - :provides '[leva + :prefixes '[leva emmy mafs jsxgraph @@ -17,9 +31,48 @@ mathlive] :depends-on #{:reagent}}}) -(defn get-load-order [dep-name loadables] - (let [dep (get loadables dep-name) +(def prefix->module-id + (->> modules + (reduce-kv (fn [out k {:keys [prefixes]}] + (reduce (fn [out lib-prefix] + (assoc out lib-prefix k)) + out prefixes)) {}))) + +(defn ordered-modules [module-id] + ;; dep + transitive deps, sorted + (let [dep (get modules module-id) deps (set (:depends-on dep))] - (concat - (mapcat #(get-load-order % loadables) deps) - [(:loadable dep)]))) \ No newline at end of file + (distinct (concat + (mapcat ordered-modules deps) + [module-id])))) + +(defn load-module+ [ctx dep-name] + (p/doseq [module-id (ordered-modules dep-name)] + ;; install module once per env + (when-not (contains? (-> ctx :env deref ::modules) module-id) + (swap! (:env ctx) update ::installed (fnil conj #{}) module-id) + (p/let [install! (lazy/load (:loadable (modules module-id)))] + (ctx/with-ctx ctx (install!)))))) + +(defn libname-prefix [libname] + (symbol (first (str/split (str libname) #"\.")))) + +(defn load-lib+ [{:as info :keys [libname ctx]}] + (let [ns-before (-> ctx :env deref :namespaces keys set)] + (if-let [module-id (some-> libname libname-prefix prefix->module-id)] + (p/do (load-module+ ctx module-id) + (swap! (:env ctx) update-in [::modules module-id] + (fn [namespaces] + (or namespaces (set/difference (-> ctx :env deref :namespaces keys set) ns-before)))) + (let [module-namespaces (-> (:env ctx) deref ::modules module-id)] + (when-not (contains? module-namespaces libname) + (throw + (ex-info (str libname " was not found in the " module-id " module, despite having the prefix `" + (libname-prefix libname) "`.") + {:module-id module-id + :module-namespaces module-namespaces}))))) + (throw (ex-info (str "No module found for " libname) info))))) + +(comment + (load-lib+ 'leva)) + diff --git a/editor2/src/main/maria/editor/extensions/emmy.cljs b/editor2/src/main/maria/editor/extensions/emmy.cljs index 2eca5b86..74878697 100644 --- a/editor2/src/main/maria/editor/extensions/emmy.cljs +++ b/editor2/src/main/maria/editor/extensions/emmy.cljs @@ -11,11 +11,9 @@ [emmy.portal.css :refer [inject!] :rename {inject! inject-css!}] [emmy.viewer.css :refer [css-map]] [emmy.mafs] - [maria.editor.extensions.reagent :as ext.reagent] [maria.editor.code.show-values :as show :refer [show]] [sci.ctx-store :refer [get-ctx]] - [yawn.view :as v] - #_[maria.editor.extensions.katex :as katex])) + [yawn.view :as v])) (defn show-frozen [opts x] (show opts (emmy.value/freeze x))) @@ -65,7 +63,6 @@ (defn install! [] (show/add-global-viewers! (get-ctx) :before :vector [show-emmy]) - (ext.reagent/install!) (doseq [href (apply concat (vals css-map))] (if (= href "https://unpkg.com/mafs@0.17.0/font.css") (inject-css-source! diff --git a/editor2/src/main/maria/editor/icons.cljs b/editor2/src/main/maria/editor/icons.cljs index f591cf99..d9656b39 100644 --- a/editor2/src/main/maria/editor/icons.cljs +++ b/editor2/src/main/maria/editor/icons.cljs @@ -35,10 +35,14 @@ (v/x [:svg {:class class :xmlns "http://www.w3.org/2000/svg" :fill "none" :viewBox "0 0 24 24" :strokeWidth "{1.5}" :stroke "currentColor"} [:path {:strokeLinecap "round" :strokeLinejoin "round" :d "M4.5 12.75l6 6 9-13.5"}]])) -(defn ellipsis:mini [class] +(defn ellipsis-circle:mini [class] (v/x [:svg {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 20 20" :fill "currentColor"} [:path {:fillRule "evenodd" :d "M2 10a8 8 0 1116 0 8 8 0 01-16 0zm8 1a1 1 0 100-2 1 1 0 000 2zm-3-1a1 1 0 11-2 0 1 1 0 012 0zm7 1a1 1 0 100-2 1 1 0 000 2z" :clipRule "evenodd"}]])) +(defn ellipsis:mini [class] + (v/x [:svg.icon {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 20 20" :fill "currentColor"} + [:path {:d "M3 10a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0ZM8.5 10a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0ZM15.5 8.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Z"}]])) + (defn chevron-down:mini [class] (v/x [:svg {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 20 20" :fill "currentColor"} [:path {:fillRule "evenodd" :d "M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" :clipRule "evenodd"}]])) @@ -104,7 +108,7 @@ (defn document-plus:mini [class] (v/x - [:svg.w-5.h-5 {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 20 20" :fill "currentColor"} + [:svg {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 20 20" :fill "currentColor"} [:path {:fill-rule "evenodd" :d "M4.5 2A1.5 1.5 0 003 3.5v13A1.5 1.5 0 004.5 18h11a1.5 1.5 0 001.5-1.5V7.621a1.5 1.5 0 00-.44-1.06l-4.12-4.122A1.5 1.5 0 0011.378 2H4.5zM10 8a.75.75 0 01.75.75v1.5h1.5a.75.75 0 010 1.5h-1.5v1.5a.75.75 0 01-1.5 0v-1.5h-1.5a.75.75 0 010-1.5h1.5v-1.5A.75.75 0 0110 8z" :clip-rule "evenodd"}]]) #_(v/x [:svg {:xmlns "http://www.w3.org/2000/svg" :fill "none" :viewBox "0 0 24 24" :strokeWidth "{1.5}" :stroke "currentColor" :class class} @@ -114,4 +118,18 @@ (defn home [class] (v/x [:svg {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 20 20" :fill "currentColor"} - [:path {:fillRule "evenodd" :d "M9.293 2.293a1 1 0 011.414 0l7 7A1 1 0 0117 11h-1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-3a1 1 0 00-1-1H9a1 1 0 00-1 1v3a1 1 0 01-1 1H5a1 1 0 01-1-1v-6H3a1 1 0 01-.707-1.707l7-7z" :clipRule "evenodd"}]])) \ No newline at end of file + [:path {:fillRule "evenodd" :d "M9.293 2.293a1 1 0 011.414 0l7 7A1 1 0 0117 11h-1v6a1 1 0 01-1 1h-2a1 1 0 01-1-1v-3a1 1 0 00-1-1H9a1 1 0 00-1 1v3a1 1 0 01-1 1H5a1 1 0 01-1-1v-6H3a1 1 0 01-.707-1.707l7-7z" :clipRule "evenodd"}]])) + +(defn bug-ant [class] + (v/x + [:svg.icon {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 16 16" :fill "currentColor"} + [:path {:d "M11.983 1.364a.75.75 0 0 0-1.281.78c.096.158.184.321.264.489a5.48 5.48 0 0 1-.713.386A2.993 2.993 0 0 0 8 2c-.898 0-1.703.394-2.253 1.02a5.485 5.485 0 0 1-.713-.387c.08-.168.168-.33.264-.489a.75.75 0 1 0-1.28-.78c-.245.401-.45.83-.61 1.278a.75.75 0 0 0 .239.84 7 7 0 0 0 1.422.876A3.01 3.01 0 0 0 5 5c0 .126.072.24.183.3.386.205.796.37 1.227.487-.126.165-.227.35-.297.549A10.418 10.418 0 0 1 3.51 5.5a10.686 10.686 0 0 1-.008-.733.75.75 0 0 0-1.5-.033 12.222 12.222 0 0 0 .041 1.31.75.75 0 0 0 .4.6A11.922 11.922 0 0 0 6.199 7.87c.04.084.088.166.14.243l-.214.031-.027.005c-1.299.207-2.529.622-3.654 1.211a.75.75 0 0 0-.4.6 12.148 12.148 0 0 0 .197 3.443.75.75 0 0 0 1.47-.299 10.551 10.551 0 0 1-.2-2.6c.352-.167.714-.314 1.085-.441-.063.3-.096.614-.096.936 0 2.21 1.567 4 3.5 4s3.5-1.79 3.5-4c0-.322-.034-.636-.097-.937.372.128.734.275 1.085.442a10.703 10.703 0 0 1-.199 2.6.75.75 0 1 0 1.47.3 12.049 12.049 0 0 0 .197-3.443.75.75 0 0 0-.4-.6 11.921 11.921 0 0 0-3.671-1.215l-.011-.002a11.95 11.95 0 0 0-.213-.03c.052-.078.1-.16.14-.244 1.336-.202 2.6-.623 3.755-1.227a.75.75 0 0 0 .4-.6 12.178 12.178 0 0 0 .041-1.31.75.75 0 0 0-1.5.033 11.061 11.061 0 0 1-.008.733c-.815.386-1.688.67-2.602.836-.07-.2-.17-.384-.297-.55.43-.117.842-.282 1.228-.488A.34.34 0 0 0 11 5c0-.22-.024-.435-.069-.642a7 7 0 0 0 1.422-.876.75.75 0 0 0 .24-.84 6.97 6.97 0 0 0-.61-1.278Z"}]])) + +(defn play-circle [class] + (v/x + [:svg.icon {:class class :xmlns "http://www.w3.org/2000/svg" :viewBox "0 0 16 16" :fill "currentColor"} + [:path {:fill-rule "evenodd" :d "M8 15A7 7 0 1 0 8 1a7 7 0 0 0 0 14Zm-.847-9.766A.75.75 0 0 0 6 5.866v4.268a.75.75 0 0 0 1.153.633l3.353-2.134a.75.75 0 0 0 0-1.266L7.153 5.234Z" :clip-rule "evenodd"}]])) + +(defn question-mark [class] + (v/x + [:svg.icon {:class class :width "15" :height "15" :viewBox "0 0 15 15" :fill "none" :xmlns "http://www.w3.org/2000/svg"} [:path {:d "M5.07505 4.10001C5.07505 2.91103 6.25727 1.92502 7.50005 1.92502C8.74283 1.92502 9.92505 2.91103 9.92505 4.10001C9.92505 5.19861 9.36782 5.71436 8.61854 6.37884L8.58757 6.4063C7.84481 7.06467 6.92505 7.87995 6.92505 9.5C6.92505 9.81757 7.18248 10.075 7.50005 10.075C7.81761 10.075 8.07505 9.81757 8.07505 9.5C8.07505 8.41517 8.62945 7.90623 9.38156 7.23925L9.40238 7.22079C10.1496 6.55829 11.075 5.73775 11.075 4.10001C11.075 2.12757 9.21869 0.775024 7.50005 0.775024C5.7814 0.775024 3.92505 2.12757 3.92505 4.10001C3.92505 4.41758 4.18249 4.67501 4.50005 4.67501C4.81761 4.67501 5.07505 4.41758 5.07505 4.10001ZM7.50005 13.3575C7.9833 13.3575 8.37505 12.9657 8.37505 12.4825C8.37505 11.9992 7.9833 11.6075 7.50005 11.6075C7.0168 11.6075 6.62505 11.9992 6.62505 12.4825C6.62505 12.9657 7.0168 13.3575 7.50005 13.3575Z" :fill "currentColor" :fill-rule "evenodd" :clip-rule "evenodd"}]])) \ No newline at end of file diff --git a/editor2/src/main/maria/editor/keymaps.cljs b/editor2/src/main/maria/editor/keymaps.cljs index 5d134839..f51abb77 100644 --- a/editor2/src/main/maria/editor/keymaps.cljs +++ b/editor2/src/main/maria/editor/keymaps.cljs @@ -159,9 +159,9 @@ :prose/backspace {:bindings [:Backspace] :hidden? true :f (chain links/open-link-on-backspace + pm.cmd/joinTextblockBackward pm.cmd/selectNodeBackward - pm.cmd/deleteSelection - pm.cmd/joinBackward) + pm.cmd/deleteSelection) :kind :prose} :prose/join-up {:bindings [:Alt-ArrowUp] :hidden? true @@ -183,6 +183,7 @@ :prose/enter {:bindings [:Enter] :hidden? true :f (chain (pm.schema-list/splitListItem list_item) + pm.cmd/liftEmptyBlock code.commands/prose:convert-to-code) :kind :prose} :prose/arrow-left {:bindings [:ArrowLeft] @@ -486,13 +487,13 @@ (assoc cmd :context context)))) (defn run-command - ([cmd] (run-command (get-context) cmd)) + ([cmd] (run-command (or (:context cmd) (get-context)) cmd)) ([context cmd] (let [{:keys [f kind active?]} (resolve-command context cmd)] (when active? (case kind - :prose (run-prosemirror f context) - :code (run-codemirror f context) + :prose (run-prosemirror context f) + :code (run-codemirror context f) (f context)))))) (defn use-global-keymap [] diff --git a/editor2/src/main/maria/editor/prosemirror/schema.cljs b/editor2/src/main/maria/editor/prosemirror/schema.cljs index fa3b40ce..8045df72 100644 --- a/editor2/src/main/maria/editor/prosemirror/schema.cljs +++ b/editor2/src/main/maria/editor/prosemirror/schema.cljs @@ -1,7 +1,43 @@ (ns maria.editor.prosemirror.schema - (:require ["prosemirror-markdown" :as md])) + (:require [applied-science.js-interop :as j] + [applied-science.js-interop.alpha :refer [js]] + ["prosemirror-markdown" :as md] + [clojure.string :as str])) (def schema md/schema) + (def parser md/defaultMarkdownParser) + (defn markdown->doc [source] (.parse parser source)) -(defn doc->markdown [doc] (.serialize md/defaultMarkdownSerializer doc)) \ No newline at end of file + +(defn clojure-block? [lang] + (re-matches #"(?i)clj\w?|clojure|clojurescript" lang)) + +(def code-prefix "¡Ⓜ") + +(defn prefix-lines [s] + (str code-prefix + (str/replace-all s #"[\n\r]" (str "\n" code-prefix)))) + +(def serializer (js + (let [{:keys [nodes marks] + {original :code_block} :nodes} md/defaultMarkdownSerializer] + (new md/MarkdownSerializer + (j/extend! {} + nodes + {:code_block + (fn [{:as state :keys [delim]} + {:as node :keys [textContent] {lang :params} :attrs}] + (if (and (str/blank? delim) + (or (clojure-block? lang) + (str/blank? lang))) + (do + (when-not (str/blank? textContent) + (.text state (-> textContent str/trim prefix-lines) false)) + (.closeBlock state node)) + (original state node)))}) + marks)))) + +(defn serialize [x] (.serialize ^js serializer x #js{:tightLists true})) + +(defn doc->markdown [doc] (.serialize md/defaultMarkdownSerializer doc #js{:tightLists true})) \ No newline at end of file diff --git a/editor2/src/main/maria/editor/util.cljc b/editor2/src/main/maria/editor/util.cljc index 5054bfce..f1dd588b 100644 --- a/editor2/src/main/maria/editor/util.cljc +++ b/editor2/src/main/maria/editor/util.cljc @@ -29,6 +29,10 @@ (cond->> s (not (str/starts-with? s pfx)) (str pfx))) +(defn ensure-suffix [s sfx] + (cond-> s + (not (str/ends-with? s sfx)) (str sfx))) + (defn strip-prefix [s pfx] (cond-> s (str/starts-with? s pfx) @@ -140,6 +144,10 @@ (truncate-segmented 35 "") (str/replace #"[\s_]+" "_"))) +#?(:cljs + (defn prevent-default! + ([] (some-> js/window.event (j/call :preventDefault))) + ([e] (j/call e :preventDefault)))) (comment (truncate-segmented "This is a long string" 7 "...") diff --git a/editor2/src/main/maria/ui.cljc b/editor2/src/main/maria/ui.cljc index e9a24025..0cb8b19b 100644 --- a/editor2/src/main/maria/ui.cljc +++ b/editor2/src/main/maria/ui.cljc @@ -47,11 +47,6 @@ `(with-out-str (~(if (:ns &env) 'cljs.pprint/pprint 'clojure.pprint/pprint) ~x))) (def c:divider "border-b-2 border-zinc-100") -(def c:button-med (str "bg-zinc-300 hover:bg-zinc-400 active:bg-zinc-500 " - "font-sans font-bolxd no-underline " - "text-zinc-800 visited:text-zinc-800 hover:text-zinc-800 " - #_"text-white visited:text-white hover:text-white " - "cursor-pointer")) (def c:button-dark (str "bg-zinc-600 hover:bg-zinc-700 active:bg-zinc-900 " "font-sans font-bold no-underline " diff --git a/editor2/yarn.lock b/editor2/yarn.lock index 67db4811..e6072a38 100644 --- a/editor2/yarn.lock +++ b/editor2/yarn.lock @@ -2,6 +2,11 @@ # yarn lockfile v1 +"@alloc/quick-lru@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@alloc/quick-lru/-/quick-lru-5.2.0.tgz#7bf68b20c0a350f936915fcae06f58e32007ce30" + integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== + "@apidevtools/json-schema-ref-parser@^9.0.3": version "9.1.2" resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.1.2.tgz#8ff5386b365d4c9faa7c8b566ff16a46a577d9b8" @@ -653,6 +658,18 @@ protobufjs "^7.0.0" yargs "^16.2.0" +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + 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" + "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -887,6 +904,11 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.3.1.tgz#ba07b864a3c955f061aa30ea3ef7f4ae4449794a" integrity sha512-wU5J8rUoo32oSef/rFpOT1HIjLjAv3qIDHkw1QIhODV3OpAVHi5oVzlouozg9obUmZKtbZ0qUe/m7FP0y0yBzA== +"@pkgjs/parseargs@^0.11.0": + version "0.11.0" + resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" + integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== + "@pnpm/config.env-replace@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz#ab29da53df41e8948a00f2433f085f54de8b3a4c" @@ -1050,6 +1072,19 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-context-menu@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context-menu/-/react-context-menu-2.1.5.tgz#1bdbd72761439f9166f75dc4598f276265785c83" + integrity sha512-R5XaDj06Xul1KGb+WP8qiOh7tKJNz2durpLBXAGZjSVtctcRFCuEvy2gtMwRJGePwQQE5nV77gs4FwRi8T+r2g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-menu" "2.0.6" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-controllable-state" "1.0.1" + "@radix-ui/react-context@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0" @@ -1116,6 +1151,32 @@ "@radix-ui/react-use-callback-ref" "1.0.1" "@radix-ui/react-use-escape-keydown" "1.0.3" +"@radix-ui/react-dismissable-layer@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz#3f98425b82b9068dfbab5db5fff3df6ebf48b9d4" + integrity sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-escape-keydown" "1.0.3" + +"@radix-ui/react-dropdown-menu@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz#cdf13c956c5e263afe4e5f3587b3071a25755b63" + integrity sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-menu" "2.0.6" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-controllable-state" "1.0.1" + "@radix-ui/react-focus-guards@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz#339c1c69c41628c1a5e655f15f7020bf11aa01fa" @@ -1150,6 +1211,16 @@ "@radix-ui/react-primitive" "1.0.3" "@radix-ui/react-use-callback-ref" "1.0.1" +"@radix-ui/react-focus-scope@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz#2ac45fce8c5bb33eb18419cdc1905ef4f1906525" + integrity sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-hover-card@^1.0.6": version "1.0.6" resolved "https://registry.yarnpkg.com/@radix-ui/react-hover-card/-/react-hover-card-1.0.6.tgz#ea4b5c02e9f145b278cbcacaf5200f80d44cba22" @@ -1207,6 +1278,31 @@ aria-hidden "^1.1.1" react-remove-scroll "2.5.5" +"@radix-ui/react-menu@2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-2.0.6.tgz#2c9e093c1a5d5daa87304b2a2f884e32288ae79e" + integrity sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-collection" "1.0.3" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-direction" "1.0.1" + "@radix-ui/react-dismissable-layer" "1.0.5" + "@radix-ui/react-focus-guards" "1.0.1" + "@radix-ui/react-focus-scope" "1.0.4" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-popper" "1.1.3" + "@radix-ui/react-portal" "1.0.4" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-roving-focus" "1.0.4" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-use-callback-ref" "1.0.1" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.5" + "@radix-ui/react-menubar@^1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-menubar/-/react-menubar-1.0.3.tgz#b731f1cea1b4fc566272fc7f5b6bf2dd06c93894" @@ -1263,6 +1359,23 @@ "@radix-ui/react-use-size" "1.0.1" "@radix-ui/rect" "1.0.1" +"@radix-ui/react-popper@1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.3.tgz#24c03f527e7ac348fabf18c89795d85d21b00b42" + integrity sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w== + dependencies: + "@babel/runtime" "^7.13.10" + "@floating-ui/react-dom" "^2.0.0" + "@radix-ui/react-arrow" "1.0.3" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-use-callback-ref" "1.0.1" + "@radix-ui/react-use-layout-effect" "1.0.1" + "@radix-ui/react-use-rect" "1.0.1" + "@radix-ui/react-use-size" "1.0.1" + "@radix-ui/rect" "1.0.1" + "@radix-ui/react-portal@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.0.tgz#7220b66743394fabb50c55cb32381395cc4a276b" @@ -1279,6 +1392,14 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" +"@radix-ui/react-portal@1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.4.tgz#df4bfd353db3b1e84e639e9c63a5f2565fb00e15" + integrity sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-presence@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a" @@ -1345,7 +1466,7 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs" "1.0.1" -"@radix-ui/react-tooltip@^1.0.5", "@radix-ui/react-tooltip@^1.0.6": +"@radix-ui/react-tooltip@^1.0.5": version "1.0.6" resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.0.6.tgz#87a7786cd9f2b4de957ac645afae1575339c58b0" integrity sha512-DmNFOiwEc2UDigsYj6clJENma58OelxD24O4IODoZ+3sQc3Zb+L8w1EP+y9laTuKCLAysPw4fD6/v0j4KNV8rg== @@ -1364,6 +1485,25 @@ "@radix-ui/react-use-controllable-state" "1.0.1" "@radix-ui/react-visually-hidden" "1.0.3" +"@radix-ui/react-tooltip@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz#8f55070f852e7e7450cc1d9210b793d2e5a7686e" + integrity sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw== + dependencies: + "@babel/runtime" "^7.13.10" + "@radix-ui/primitive" "1.0.1" + "@radix-ui/react-compose-refs" "1.0.1" + "@radix-ui/react-context" "1.0.1" + "@radix-ui/react-dismissable-layer" "1.0.5" + "@radix-ui/react-id" "1.0.1" + "@radix-ui/react-popper" "1.1.3" + "@radix-ui/react-portal" "1.0.4" + "@radix-ui/react-presence" "1.0.1" + "@radix-ui/react-primitive" "1.0.3" + "@radix-ui/react-slot" "1.0.2" + "@radix-ui/react-use-controllable-state" "1.0.1" + "@radix-ui/react-visually-hidden" "1.0.3" + "@radix-ui/react-use-callback-ref@1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90" @@ -1515,16 +1655,16 @@ lodash.merge "^4.6.2" postcss-selector-parser "6.0.10" -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - "@tootallnate/once@2": version "2.0.0" resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== +"@tootallnate/quickjs-emscripten@^0.23.0": + version "0.23.0" + resolved "https://registry.yarnpkg.com/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz#db4ecfd499a9765ab24002c3b696d02e6d32a12c" + integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA== + "@types/duplexify@^3.6.0": version "3.6.1" resolved "https://registry.yarnpkg.com/@types/duplexify/-/duplexify-3.6.1.tgz#5685721cf7dc4a21b6f0e8a8efbec6b4d2fbafad" @@ -1628,23 +1768,25 @@ acorn-jsx@^5.3.2: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^8.7.0, acorn@^8.8.0: +acorn@^8.8.0: version "8.8.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a" integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw== -agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: +agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" +agent-base@^7.0.2, agent-base@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.0.tgz#536802b76bc0b34aa50195eb2442276d613e3434" + integrity sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg== + dependencies: + debug "^4.3.4" + agentkeepalive@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.3.0.tgz#bb999ff07412653c1803b3ced35e50729830a255" @@ -1669,7 +1811,7 @@ ajv-formats@^2.1.0: dependencies: ajv "^8.0.0" -ajv@^6.12.3, ajv@^6.12.6: +ajv@^6.12.6: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1715,6 +1857,11 @@ ansi-regex@^5.0.1: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" @@ -1722,6 +1869,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +ansi-styles@^6.1.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + ansicolors@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" @@ -1836,18 +1988,6 @@ asn1.js@^5.2.0: minimalistic-assert "^1.0.0" safer-buffer "^2.1.0" -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - assert@^1.1.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" @@ -1861,7 +2001,7 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== -ast-types@^0.13.2: +ast-types@^0.13.4: version "0.13.4" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== @@ -1895,16 +2035,6 @@ attr-accept@^2.2.2: resolved "https://registry.yarnpkg.com/attr-accept/-/attr-accept-2.2.2.tgz#646613809660110749e92f2c10833b70968d929b" integrity sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg== -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -1927,17 +2057,10 @@ basic-auth@~2.0.1: dependencies: safe-buffer "5.1.2" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -big-integer@^1.6.17: - version "1.6.51" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.51.tgz#0df92a5d9880560d3ff2d5fd20245c889d130686" - integrity sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg== +basic-ftp@^5.0.2: + version "5.0.4" + resolved "https://registry.yarnpkg.com/basic-ftp/-/basic-ftp-5.0.4.tgz#28aeab7bfbbde5f5d0159cd8bb3b8e633bbb091d" + integrity sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA== bignumber.js@^9.0.0: version "9.1.1" @@ -1949,14 +2072,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -binary@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" - integrity sha512-D4H1y5KYwpJgK8wk1Cue5LLPgmwHKYSChkbspQg5JtVuR5ulGckxfR62H3AE9UDkdMC8yyXlqYihuz3Aqg2XZg== - dependencies: - buffers "~0.1.1" - chainsaw "~0.1.0" - bl@^4.0.3, bl@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" @@ -1971,11 +2086,6 @@ bluebird@^3.7.2: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bluebird@~3.4.1: - version "3.4.7" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" - integrity sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" @@ -2139,11 +2249,6 @@ buffer-equal-constant-time@1.0.1: resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== -buffer-indexof-polyfill@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz#d2732135c5999c64b277fcf9b1abe3498254729c" - integrity sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A== - buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -2166,11 +2271,6 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" -buffers@~0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" - integrity sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ== - builtin-status-codes@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" @@ -2241,11 +2341,6 @@ cardinal@^2.1.1: ansicolors "~0.3.2" redeyed "~2.1.0" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - catharsis@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" @@ -2253,13 +2348,6 @@ catharsis@^0.9.0: dependencies: lodash "^4.17.15" -chainsaw@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" - integrity sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ== - dependencies: - traverse ">=0.3.0 <0.4" - chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -2402,7 +2490,7 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -2451,7 +2539,7 @@ colorspace@1.1.x: color "^3.1.3" text-hex "1.0.x" -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: +combined-stream@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -2590,11 +2678,6 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - core-util-is@~1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" @@ -2680,7 +2763,7 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -2742,17 +2825,10 @@ d3-require@^1.3.0: resolved "https://registry.yarnpkg.com/d3-require/-/d3-require-1.3.0.tgz#2b97f5e2ebcb64ac0c63c11f30056aea1c74f0ec" integrity sha512-XaNc2azaAwXhGjmCMtxlD+AowpMfLimVsAoTMpqrvb8CWoA4QqyV12mc4Ue6KSoDvfuS831tsumfhDYxGd4FGA== -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-uri-to-buffer@3: - version "3.0.1" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" - integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== +data-uri-to-buffer@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz#540bd4c8753a25ee129035aebdedf63b078703c7" + integrity sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg== debug@2.6.9: version "2.6.9" @@ -2761,7 +2837,7 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -2809,15 +2885,14 @@ defaults@^1.0.3: dependencies: clone "^1.0.2" -degenerator@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.3.tgz#a081ac30052ca84e1d1c6e86c972ae8dabbc4079" - integrity sha512-FTq/qYMeBJACu1gHcXJvzsRBTK6aw5zWCYbEnIOyamOt5UJufWJRQ5XfDb6OuayfJWvmWAHgcZyt43vm/hbj7g== +degenerator@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-5.0.1.tgz#9403bf297c6dad9a1ece409b37db27954f91f2f5" + integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ== dependencies: - ast-types "^0.13.2" - escodegen "^1.8.1" - esprima "^4.0.0" - vm2 "^3.9.11" + ast-types "^0.13.4" + escodegen "^2.1.0" + esprima "^4.0.1" delayed-stream@~1.0.0: version "1.0.0" @@ -2918,13 +2993,6 @@ dot-prop@^5.2.0: dependencies: is-obj "^2.0.0" -duplexer2@~0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" - integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA== - dependencies: - readable-stream "^2.0.2" - duplexify@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" @@ -2935,13 +3003,10 @@ duplexify@^4.0.0: readable-stream "^3.1.1" stream-shift "^1.0.0" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: version "1.0.11" @@ -2978,6 +3043,11 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + enabled@2.0.x: version "2.0.0" resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" @@ -3052,7 +3122,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.13.0, escodegen@^1.8.1: +escodegen@^1.13.0: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -3064,6 +3134,17 @@ escodegen@^1.13.0, escodegen@^1.8.1: optionalDependencies: source-map "~0.6.1" +escodegen@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + eslint-visitor-keys@^3.4.0: version "3.4.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc" @@ -3088,7 +3169,7 @@ estraverse@^4.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -estraverse@^5.1.0: +estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== @@ -3208,7 +3289,7 @@ extend-shallow@^3.0.0: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.2, extend@~3.0.2: +extend@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -3222,25 +3303,15 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.12: - version "3.2.12" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80" - integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w== +fast-glob@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -3308,11 +3379,6 @@ file-selector@^0.5.0: dependencies: tslib "^2.0.3" -file-uri-to-path@2: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" - integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== - filesize@^6.1.0: version "6.4.0" resolved "https://registry.yarnpkg.com/filesize/-/filesize-6.4.0.tgz#914f50471dd66fdca3cefe628bd0cde4ef769bcd" @@ -3351,10 +3417,10 @@ finalhandler@1.2.0: statuses "2.0.1" unpipe "~1.0.0" -firebase-tools@^11.8.0: - version "11.25.3" - resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-11.25.3.tgz#8cec4b73430acb4e60cfd5308297ed0133b7b03c" - integrity sha512-gcM7O9mjhDs8UjtAJjHxUuSX2ZHufXJU7+GheXTlZVA+Uj5RRoAt6AU/FmtcqQtfhr2TNwADebgiVFzVlkLoUg== +firebase-tools@^13.1.0: + version "13.2.1" + resolved "https://registry.yarnpkg.com/firebase-tools/-/firebase-tools-13.2.1.tgz#f83ea3e8741d3d5957ac0592d1b5d770d21f5fbb" + integrity sha512-Dx0h9P4m0T1wWz6Yjk+VOZA/Fef1iM09gpbAxBl+2GAO3KcN3kQf8fvhlzkisCqAnVxB8U2rYRI6ZR1JwY+cqQ== dependencies: "@google-cloud/pubsub" "^3.0.1" abort-controller "^3.0.0" @@ -3397,11 +3463,10 @@ firebase-tools@^11.8.0: p-limit "^3.0.1" portfinder "^1.0.32" progress "^2.0.3" - proxy-agent "^5.0.0" - request "^2.87.0" + proxy-agent "^6.3.0" retry "^0.13.1" rimraf "^3.0.0" - semver "^5.7.1" + semver "^7.5.2" stream-chain "^2.2.4" stream-json "^1.7.3" strip-ansi "^6.0.1" @@ -3411,7 +3476,6 @@ firebase-tools@^11.8.0: tmp "^0.2.1" triple-beam "^1.3.0" universal-analytics "^0.5.3" - unzipper "^0.10.10" update-notifier-cjs "^5.1.6" uuid "^8.3.2" winston "^3.0.0" @@ -3460,10 +3524,13 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +foreground-child@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" + integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^4.0.1" form-data@^4.0.0: version "4.0.0" @@ -3474,15 +3541,6 @@ form-data@^4.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - forwarded@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" @@ -3549,29 +3607,16 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - -ftp@^0.3.10: - version "0.3.10" - resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" - integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== - dependencies: - readable-stream "1.1.x" - xregexp "2.0.0" - function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + gauge@^4.0.3: version "4.0.4" resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" @@ -3642,30 +3687,21 @@ get-nonce@^1.0.0: resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q== -get-uri@3: - version "3.0.2" - resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" - integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== +get-uri@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-6.0.2.tgz#e019521646f4a8ff6d291fbaea2c46da204bb75b" + integrity sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw== dependencies: - "@tootallnate/once" "1" - data-uri-to-buffer "3" - debug "4" - file-uri-to-path "2" + basic-ftp "^5.0.2" + data-uri-to-buffer "^6.0.0" + debug "^4.3.4" fs-extra "^8.1.0" - ftp "^0.3.10" get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -3694,17 +3730,16 @@ glob-slasher@^1.0.1: lodash.isobject "^2.4.1" toxic "^1.0.0" -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" + integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" + foreground-child "^3.1.0" + jackspeak "^2.3.5" + minimatch "^9.0.1" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-scurry "^1.10.1" glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.2.3" @@ -3813,7 +3848,7 @@ graceful-fs@4.2.10: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.6: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.6: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== @@ -3836,19 +3871,6 @@ gtoken@^6.1.0: google-p12-pem "^4.0.0" jws "^4.0.0" -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - has-flag@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" @@ -3893,6 +3915,13 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + heap-js@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/heap-js/-/heap-js-2.2.0.tgz#f4418874cd2aedc2cf3a7492d579afe23b627c5d" @@ -3933,15 +3962,6 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3" integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q== -http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - http-proxy-agent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" @@ -3951,21 +3971,20 @@ http-proxy-agent@^5.0.0: agent-base "6" debug "4" -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== +http-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz#e9096c5afd071a3fce56e6252bb321583c124673" + integrity sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ== dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + agent-base "^7.1.0" + debug "^4.3.4" https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg== -https-proxy-agent@5, https-proxy-agent@^5.0.0: +https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -3973,6 +3992,14 @@ https-proxy-agent@5, https-proxy-agent@^5.0.0: agent-base "6" debug "4" +https-proxy-agent@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz#e2645b846b90e96c6e6f347fb5b2e41f1590b09b" + integrity sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA== + dependencies: + agent-base "^7.0.2" + debug "4" + humanize-ms@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" @@ -4037,7 +4064,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -4100,7 +4127,7 @@ ip-regex@^4.1.0: resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-4.3.0.tgz#687275ab0f57fa76978ff8f4dddc8a23d5990db5" integrity sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q== -ip@^1.1.5: +ip@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== @@ -4141,6 +4168,13 @@ is-core-module@^2.11.0: dependencies: has "^1.0.3" +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" @@ -4225,7 +4259,7 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== @@ -4287,15 +4321,19 @@ isomorphic-fetch@^3.0.0: node-fetch "^2.6.1" whatwg-fetch "^3.4.1" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== +jackspeak@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" + integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + optionalDependencies: + "@pkgjs/parseargs" "^0.11.0" -jiti@^1.17.2: - version "1.18.2" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.18.2.tgz#80c3ef3d486ebf2450d9335122b32d121f2a83cd" - integrity sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg== +jiti@^1.19.1: + version "1.21.0" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d" + integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q== jju@^1.1.0: version "1.4.0" @@ -4338,11 +4376,6 @@ js2xmlparser@^4.0.2: dependencies: xmlcreate "^2.0.4" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - jsdoc@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-4.0.2.tgz#a1273beba964cf433ddf7a70c23fd02c3c60296e" @@ -4393,16 +4426,6 @@ json-schema-traverse@^1.0.0: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" @@ -4429,16 +4452,6 @@ jsonwebtoken@^9.0.0: ms "^2.1.1" semver "^7.3.8" -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - jsxgraph@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/jsxgraph/-/jsxgraph-1.5.0.tgz#21b4cc7e0f899490e676d668b49e0594498b9d00" @@ -4570,11 +4583,16 @@ lie@~3.3.0: dependencies: immediate "~3.0.5" -lilconfig@^2.0.5, lilconfig@^2.0.6: +lilconfig@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== +lilconfig@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-3.0.0.tgz#f8067feb033b5b74dab4602a5f5029420be749bc" + integrity sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g== + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" @@ -4594,11 +4612,6 @@ linkify-it@^4.0.1: dependencies: uc.micro "^1.0.1" -listenercount@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" - integrity sha512-3mk/Zag0+IJxeDrxSgaDPy4zZ3w05PRZeJNnlWhzFz5OkX49J4krc+A8X2d2M69vGMBEX0uyl8M+W+8gH+kBqQ== - lodash._objecttypes@~2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/lodash._objecttypes/-/lodash._objecttypes-2.4.1.tgz#7c0b7f69d98a1f76529f890b0cdb1b4dfec11c11" @@ -4614,6 +4627,11 @@ lodash.castarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.castarray/-/lodash.castarray-4.4.0.tgz#c02513515e309daddd4c24c60cfddcf5976d9115" integrity sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q== +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + lodash.defaults@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" @@ -4698,13 +4716,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -4712,11 +4723,16 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-cache@^7.7.1: +lru-cache@^7.14.1, lru-cache@^7.7.1: version "7.18.3" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +"lru-cache@^9.1.1 || ^10.0.0": + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + mafs@^0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/mafs/-/mafs-0.17.1.tgz#86341daba19b38c306a5d60306bf9005fe93a78c" @@ -4914,7 +4930,7 @@ mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -4972,6 +4988,13 @@ minimatch@^6.1.6: dependencies: brace-expansion "^2.0.1" +minimatch@^9.0.1: + version "9.0.3" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.3.tgz#a6e00c3de44c3a542bfaae70abfc22420a6da825" + integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== + dependencies: + brace-expansion "^2.0.1" + minimist@^1.2.0, minimist@^1.2.6: version "1.2.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -5028,6 +5051,11 @@ minipass@^4.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.7.tgz#14c6fc0dcab54d9c4dd64b2b7032fef04efec218" integrity sha512-ScVIgqHcXRMyfflqHmEW0bm8z8rb5McHyOY3ewX9JBgZaR77G7nxq9L/mtV96/QbAAwtbCAHVVLzD1kkyfFQEw== +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": + version "7.0.4" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" + integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" @@ -5044,7 +5072,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.6: +mkdirp@^0.5.6: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== @@ -5101,10 +5129,10 @@ nan@^2.17.0: resolved "https://registry.yarnpkg.com/nan/-/nan-2.17.0.tgz#c0150a2368a182f033e9aa5195ec76ea41a199cb" integrity sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ== -nanoid@^3.3.4: - version "3.3.6" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" - integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" @@ -5221,11 +5249,6 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -5361,28 +5384,27 @@ p-map@^4.0.0: dependencies: aggregate-error "^3.0.0" -pac-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" - integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - get-uri "3" - http-proxy-agent "^4.0.1" - https-proxy-agent "5" - pac-resolver "^5.0.0" - raw-body "^2.2.0" - socks-proxy-agent "5" - -pac-resolver@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" - integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== +pac-proxy-agent@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz#6b9ddc002ec3ff0ba5fdf4a8a21d363bcc612d75" + integrity sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A== + dependencies: + "@tootallnate/quickjs-emscripten" "^0.23.0" + agent-base "^7.0.2" + debug "^4.3.4" + get-uri "^6.0.1" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" + pac-resolver "^7.0.0" + socks-proxy-agent "^8.0.2" + +pac-resolver@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-7.0.0.tgz#79376f1ca26baf245b96b34c339d79bff25e900c" + integrity sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg== dependencies: - degenerator "^3.0.2" - ip "^1.1.5" + degenerator "^5.0.0" + ip "^1.1.8" netmask "^2.0.2" pako@~1.0.2, pako@~1.0.5: @@ -5431,6 +5453,14 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-scurry@^1.10.1: + version "1.10.1" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" + integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== + dependencies: + lru-cache "^9.1.1 || ^10.0.0" + minipass "^5.0.0 || ^6.0.2 || ^7.0.0" + path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -5454,11 +5484,6 @@ pbkdf2@^3.0.3: safe-buffer "^5.0.1" sha.js "^2.4.8" -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -5488,36 +5513,36 @@ portfinder@^1.0.32: debug "^3.2.7" mkdirp "^0.5.6" -postcss-import@^14.1.0: - version "14.1.0" - resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0" - integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw== +postcss-import@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.1.0.tgz#41c64ed8cc0e23735a9698b3249ffdbf704adc70" + integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== dependencies: postcss-value-parser "^4.0.0" read-cache "^1.0.0" resolve "^1.1.7" -postcss-js@^4.0.0: +postcss-js@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.1.tgz#61598186f3703bab052f1c4f7d805f3991bee9d2" integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== dependencies: camelcase-css "^2.0.1" -postcss-load-config@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" - integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== +postcss-load-config@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-4.0.2.tgz#7159dcf626118d33e299f485d6afe4aff7c4a3e3" + integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== dependencies: - lilconfig "^2.0.5" - yaml "^1.10.2" + lilconfig "^3.0.0" + yaml "^2.3.4" -postcss-nested@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735" - integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w== +postcss-nested@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.1.tgz#f83dc9846ca16d2f4fa864f16e9d9f7d0961662c" + integrity sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ== dependencies: - postcss-selector-parser "^6.0.10" + postcss-selector-parser "^6.0.11" postcss-selector-parser@6.0.10: version "6.0.10" @@ -5527,7 +5552,7 @@ postcss-selector-parser@6.0.10: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: +postcss-selector-parser@^6.0.11: version "6.0.11" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz#2e41dc39b7ad74046e1615185185cd0b17d0c8dc" integrity sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g== @@ -5535,17 +5560,17 @@ postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11: cssesc "^3.0.0" util-deprecate "^1.0.2" -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: +postcss-value-parser@^4.0.0: version "4.2.0" resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.0.9: - version "8.4.21" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" - integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== +postcss@^8.4.23: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== dependencies: - nanoid "^3.3.4" + nanoid "^3.3.7" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -5796,30 +5821,25 @@ proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" -proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" - integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== - dependencies: - agent-base "^6.0.0" - debug "4" - http-proxy-agent "^4.0.0" - https-proxy-agent "^5.0.0" - lru-cache "^5.1.1" - pac-proxy-agent "^5.0.0" - proxy-from-env "^1.0.0" - socks-proxy-agent "^5.0.0" - -proxy-from-env@^1.0.0: +proxy-agent@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-6.3.1.tgz#40e7b230552cf44fd23ffaf7c59024b692612687" + integrity sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + http-proxy-agent "^7.0.0" + https-proxy-agent "^7.0.2" + lru-cache "^7.14.1" + pac-proxy-agent "^7.0.1" + proxy-from-env "^1.1.0" + socks-proxy-agent "^8.0.2" + +proxy-from-env@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== -psl@^1.1.28: - version "1.9.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" - integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== - public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -5855,7 +5875,7 @@ punycode@^1.2.4, punycode@^1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== -punycode@^2.1.0, punycode@^2.1.1: +punycode@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== @@ -5881,11 +5901,6 @@ qs@^6.6.0: dependencies: side-channel "^1.0.4" -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -5901,11 +5916,6 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== - randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -5936,7 +5946,7 @@ raw-body@2.5.1: iconv-lite "0.4.24" unpipe "1.0.0" -raw-body@2.5.2, raw-body@^2.2.0, raw-body@^2.3.3: +raw-body@2.5.2, raw-body@^2.3.3: version "2.5.2" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== @@ -6050,16 +6060,6 @@ read-cache@^1.0.0: dependencies: pify "^2.3.0" -readable-stream@1.1.x: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - "readable-stream@>=1.0.33-1 <1.1.0-0": version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -6137,32 +6137,6 @@ registry-url@^5.1.0: dependencies: rc "^1.2.8" -request@^2.87.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" @@ -6180,7 +6154,7 @@ requizzle@^0.2.3: dependencies: lodash "^4.17.21" -resolve@^1.1.7, resolve@^1.22.1: +resolve@^1.1.7: version "1.22.2" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== @@ -6189,6 +6163,15 @@ resolve@^1.1.7, resolve@^1.22.1: path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" +resolve@^1.22.2: + version "1.22.8" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + restore-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" @@ -6220,13 +6203,6 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rimraf@2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -6294,7 +6270,7 @@ safe-stable-stringify@^2.3.1: resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz#138c84b6f6edb3db5f8ef3ef7115b8f55ccbf886" integrity sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g== -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -6313,7 +6289,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -semver@^5.5.0, semver@^5.7.1: +semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -6330,6 +6306,13 @@ semver@^7.0.0, semver@^7.1.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8: dependencies: lru-cache "^6.0.0" +semver@^7.5.2: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + send@0.18.0: version "0.18.0" resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" @@ -6374,7 +6357,7 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@^1.0.4, setimmediate@^1.0.5, setimmediate@~1.0.4: +setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== @@ -6405,10 +6388,10 @@ shadow-cljs-jar@1.3.4: resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.4.tgz#0939d91c468b4bc5eab5a958f79e7ef5696fdf62" integrity sha512-cZB2pzVXBnhpJ6PQdsjO+j/MksR28mv4QD/hP/2y1fsIa9Z9RutYgh3N34FZ8Ktl4puAXaIGlct+gMCJ5BmwmA== -shadow-cljs@^2.24.1: - version "2.25.2" - resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.25.2.tgz#ca91ef2be53e09eea5b84455ea462179fb6b319c" - integrity sha512-2Pe6LW839rGIPsWxXrjiWRETlCrNPH19u881nwsSkLLLt540lTt1OmbjlGLJjQta2t74WJI7gu6c2tjMSyUGcQ== +shadow-cljs@^2.26.5: + version "2.27.2" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.27.2.tgz#8914f8cd74d3b52341565e501e6847b5933ab7a1" + integrity sha512-ma+tvgm4W5h3uVxvQqQy91CGuKZRQfFQk4ujNc1/F2QiY3QQH3nvanb9XSuG5IxxCFYZr/v3JEoTqJTmHa8Ekg== dependencies: node-libs-browser "^2.2.1" readline-sync "^1.4.7" @@ -6455,6 +6438,11 @@ signal-exit@^3.0.2, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + simple-swizzle@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" @@ -6467,15 +6455,6 @@ smart-buffer@^4.2.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== -socks-proxy-agent@5, socks-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" - integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== - dependencies: - agent-base "^6.0.2" - debug "4" - socks "^2.3.3" - socks-proxy-agent@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" @@ -6485,7 +6464,16 @@ socks-proxy-agent@^7.0.0: debug "^4.3.3" socks "^2.6.2" -socks@^2.3.3, socks@^2.6.2: +socks-proxy-agent@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz#5acbd7be7baf18c46a3f293a840109a430a640ad" + integrity sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g== + dependencies: + agent-base "^7.0.2" + debug "^4.3.4" + socks "^2.7.1" + +socks@^2.6.2, socks@^2.7.1: version "2.7.1" resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== @@ -6515,6 +6503,11 @@ source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +spark-md5@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/spark-md5/-/spark-md5-3.0.2.tgz#7952c4a30784347abcee73268e473b9c0167e3fc" + integrity sha512-wcFzz9cDfbuqe0FZzfi2or1sgyIrsDwmPwfZC4hiNidPdPINjeUwNfv5kldczoEAcjl9Y1L3SM7Uz2PUEQzxQw== + split-string@^3.0.1: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -6527,21 +6520,6 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - ssri@^9.0.0: version "9.0.1" resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" @@ -6605,7 +6583,7 @@ stream-shift@^1.0.0: resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -6614,6 +6592,15 @@ stream-shift@^1.0.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string_decoder@^1.0.0, string_decoder@^1.1.1: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -6633,13 +6620,20 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-json-comments@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -6655,14 +6649,14 @@ style-mod@^4.0.0: resolved "https://registry.yarnpkg.com/style-mod/-/style-mod-4.0.3.tgz#136c4abc905f82a866a18b39df4dc08ec762b1ad" integrity sha512-78Jv8kYJdjbvRwwijtCevYADfsI0lGzYJe4mMFdceO8l75DFFDoqBhR1jVDicDRRaX4//g1u9wKeo+ztc2h1Rw== -sucrase@^3.29.0: - version "3.32.0" - resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.32.0.tgz#c4a95e0f1e18b6847127258a75cf360bc568d4a7" - integrity sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ== +sucrase@^3.32.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263" + integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== dependencies: "@jridgewell/gen-mapping" "^0.3.2" commander "^4.0.0" - glob "7.1.6" + glob "^10.3.10" lines-and-columns "^1.1.6" mz "^2.7.0" pirates "^4.0.1" @@ -6714,35 +6708,33 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -tailwindcss@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.3.1.tgz#b6662fab6a9b704779e48d083a9fef5a81d2b81e" - integrity sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g== +tailwindcss@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.1.tgz#f512ca5d1dd4c9503c7d3d28a968f1ad8f5c839d" + integrity sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA== dependencies: + "@alloc/quick-lru" "^5.2.0" arg "^5.0.2" chokidar "^3.5.3" - color-name "^1.1.4" didyoumean "^1.2.2" dlv "^1.1.3" - fast-glob "^3.2.12" + fast-glob "^3.3.0" glob-parent "^6.0.2" is-glob "^4.0.3" - jiti "^1.17.2" - lilconfig "^2.0.6" + jiti "^1.19.1" + lilconfig "^2.1.0" micromatch "^4.0.5" normalize-path "^3.0.0" object-hash "^3.0.0" picocolors "^1.0.0" - postcss "^8.0.9" - postcss-import "^14.1.0" - postcss-js "^4.0.0" - postcss-load-config "^3.1.4" - postcss-nested "6.0.0" + postcss "^8.4.23" + postcss-import "^15.1.0" + postcss-js "^4.0.1" + postcss-load-config "^4.0.1" + postcss-nested "^6.0.1" postcss-selector-parser "^6.0.11" - postcss-value-parser "^4.2.0" - quick-lru "^5.1.1" - resolve "^1.22.1" - sucrase "^3.29.0" + resolve "^1.22.2" + sucrase "^3.32.0" tar-stream@^2.2.0: version "2.2.0" @@ -6862,14 +6854,6 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - toxic@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/toxic/-/toxic-1.0.1.tgz#8c2e2528da591100adc3883f2c0e56acfb1c7288" @@ -6882,11 +6866,6 @@ tr46@~0.0.3: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== -"traverse@>=0.3.0 <0.4": - version "0.3.9" - resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" - integrity sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ== - triple-beam@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" @@ -6917,18 +6896,6 @@ tty-browserify@0.0.0: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" integrity sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw== -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -7025,22 +6992,6 @@ unpipe@1.0.0, unpipe@~1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== -unzipper@^0.10.10: - version "0.10.11" - resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.10.11.tgz#0b4991446472cbdb92ee7403909f26c2419c782e" - integrity sha512-+BrAq2oFqWod5IESRjL3S8baohbevGcVA+teAIOYWM3pDVdseogqbzhhvvmiyQrUNKFUnDMtELW3X8ykbyDCJw== - dependencies: - big-integer "^1.6.17" - binary "~0.3.0" - bluebird "~3.4.1" - buffer-indexof-polyfill "~1.0.0" - duplexer2 "~0.1.4" - fstream "^1.0.12" - graceful-fs "^4.2.2" - listenercount "~1.0.1" - readable-stream "~2.3.6" - setimmediate "~1.0.4" - update-notifier-cjs@^5.1.6: version "5.1.6" resolved "https://registry.yarnpkg.com/update-notifier-cjs/-/update-notifier-cjs-5.1.6.tgz#6e3aff745d1551b55bb0a0a5939b7e636d95877d" @@ -7134,11 +7085,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^8.0.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -7159,15 +7105,6 @@ vary@^1, vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - vh-sticky-table-header@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/vh-sticky-table-header/-/vh-sticky-table-header-1.2.1.tgz#ea630856a329aac3708773a7df6ab67b67d38a2e" @@ -7178,14 +7115,6 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -vm2@^3.9.11: - version "3.9.15" - resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.15.tgz#c544e6a9bc31e4e40d2e5f532342cf799ea56a6e" - integrity sha512-XqNqknHGw2avJo13gbIwLNZUumvrSHc9mLqoadFZTpo3KaNEJoe1I0lqTFhRXmXD7WkLyG01aaraXdXT0pa4ag== - dependencies: - acorn "^8.7.0" - acorn-walk "^8.2.0" - w3c-keyname@^2.2.0, w3c-keyname@^2.2.4: version "2.2.6" resolved "https://registry.yarnpkg.com/w3c-keyname/-/w3c-keyname-2.2.6.tgz#8412046116bc16c5d73d4e612053ea10a189c85f" @@ -7294,7 +7223,7 @@ word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -7303,6 +7232,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -7333,11 +7271,6 @@ xmlcreate@^2.0.4: resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== -xregexp@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" - integrity sha512-xl/50/Cf32VsGq/1R8jJE5ajH1yMCQkpmoS10QbFZWl2Oor4H0Me64Pu2yxvsRWK3m6soJbmGfzSR7BYmDcWAA== - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -7348,26 +7281,21 @@ y18n@^5.0.5: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -yallist@^3.0.2: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - yaml@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== +yaml@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" + integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee"