diff --git a/exporter/shadow-cljs.edn b/exporter/shadow-cljs.edn index 421623be4..c8a8a5f5e 100644 --- a/exporter/shadow-cljs.edn +++ b/exporter/shadow-cljs.edn @@ -1,9 +1,9 @@ {:dependencies - [[funcool/promesa "5.1.0"] + [[funcool/promesa "6.0.0"] [danlentz/clj-uuid "0.1.9"] [funcool/cuerdas "2020.03.26-3"] - [lambdaisland/glogi "1.0.63"] - [metosin/reitit-core "0.5.2"] + [lambdaisland/glogi "1.0.74"] + [metosin/reitit-core "0.5.9"] [com.cognitect/transit-cljs "0.8.264"] [frankiesardo/linked "1.3.0"]] diff --git a/frontend/deps.edn b/frontend/deps.edn index c1403dc63..072351097 100644 --- a/frontend/deps.edn +++ b/frontend/deps.edn @@ -5,7 +5,7 @@ com.cognitect/transit-cljs {:mvn/version "0.8.264"} environ/environ {:mvn/version "1.2.0"} - metosin/reitit-core {:mvn/version "0.5.6"} + metosin/reitit-core {:mvn/version "0.5.9"} expound/expound {:mvn/version "0.8.6"} danlentz/clj-uuid {:mvn/version "0.1.9"} @@ -42,7 +42,7 @@ org.antlr/antlr4-runtime {:mvn/version "4.7"}}} :outdated - {:extra-deps {olical/depot {:mvn/version "1.8.4"}} + {:extra-deps {olical/depot {:mvn/version "RELEASE"}} :main-opts ["-m" "depot.outdated.main"]} :repl diff --git a/frontend/package.json b/frontend/package.json index 298940f0e..d45034123 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -13,7 +13,7 @@ ], "scripts": {}, "devDependencies": { - "autoprefixer": "^9.8.6", + "autoprefixer": "^10.0.1", "clean-css": "^4.2.3", "gulp": "4.0.2", "gulp-gzip": "^1.4.2", @@ -22,7 +22,7 @@ "gulp-rename": "^2.0.0", "gulp-svg-sprite": "^1.5.0", "mkdirp": "^1.0.4", - "postcss": "^7.0.32", + "postcss": "^8.1.2", "rimraf": "^3.0.0", "sass": "^1.26.10", "shadow-cljs": "2.11.5" @@ -32,11 +32,11 @@ "map-stream": "0.0.7", "mousetrap": "^1.6.5", "randomcolor": "^0.6.2", - "react": "^16.13.1", - "react-dom": "^16.13.1", + "react": "^17.0.0", + "react-dom": "^17.0.0", "rxjs": "7.0.0-beta.4", - "slate": "^0.58.4", - "slate-react": "^0.58.4", + "slate": "^0.59.0", + "slate-react": "^0.59.0", "source-map-support": "^0.5.16", "tdigest": "^0.1.1", "xregexp": "^4.3.0" diff --git a/frontend/src/app/main.cljs b/frontend/src/app/main.cljs index 9b113d339..70053ffc4 100644 --- a/frontend/src/app/main.cljs +++ b/frontend/src/app/main.cljs @@ -24,10 +24,15 @@ [app.util.storage :refer [storage]] [app.util.theme :as theme] [app.util.timers :as ts] + [app.util.logging :as log] [beicon.core :as rx] [cljs.spec.alpha :as s] [rumext.alpha :as mf])) +(log/initialize!) +(log/set-level! :root :warn) +(log/set-level! :app :info) + (declare reinit) (defn on-navigate @@ -78,4 +83,3 @@ (defn ^:dev/after-load after-load [] (reinit)) - diff --git a/frontend/src/app/util/logging.clj b/frontend/src/app/util/logging.clj new file mode 100644 index 000000000..50ef0eb8f --- /dev/null +++ b/frontend/src/app/util/logging.clj @@ -0,0 +1,39 @@ +(ns app.util.logging) + +(defn- log-expr [form level keyvals] + (let [keyvals-map (apply array-map keyvals) + formatter (::formatter keyvals-map 'identity)] + `(log ~(::logger keyvals-map (str *ns*)) + ~level + ~(-> keyvals-map + (dissoc ::logger) + #_(assoc :line (:line (meta form)))) + ~(:err keyvals-map)))) + +(defmacro set-level! + ([level] + `(set-level* ~(str *ns*) ~level)) + ([n level] + `(set-level* ~n ~level))) + +(defmacro error [& keyvals] + (log-expr &form :error keyvals)) + +(defmacro warn [& keyvals] + (log-expr &form :warn keyvals)) + +(defmacro info [& keyvals] + (log-expr &form :info keyvals)) + +(defmacro debug [& keyvals] + (log-expr &form :debug keyvals)) + +(defmacro trace [& keyvals] + (log-expr &form :trace keyvals)) + +(defmacro spy [form] + (let [res (gensym)] + `(let [~res ~form] + ~(log-expr &form :debug [:spy `'~form + :=> res]) + ~res))) diff --git a/frontend/src/app/util/logging.cljs b/frontend/src/app/util/logging.cljs new file mode 100644 index 000000000..2837216e2 --- /dev/null +++ b/frontend/src/app/util/logging.cljs @@ -0,0 +1,200 @@ +;; This Source Code Form is subject to the terms of the Mozilla Public +;; License, v. 2.0. If a copy of the MPL was not distributed with this +;; file, You can obtain one at http://mozilla.org/MPL/2.0/. +;; +;; Copyright (c) 2020 UXBOX Labs SL +;; +;; This code is highly inspired on the lambdaisland/glogi library but +;; adapted and simplified to our needs. The adapted code shares the +;; same license. You can found the origianl source code here: +;; https://github.com/lambdaisland/glogi + +(ns app.util.logging + (:require + [goog.log :as glog] + [goog.debug.Logger :as Logger] + [goog.debug.Logger.Level :as Level] + [goog.debug.Console :as Console] + [cuerdas.core :as str] + [goog.object :as gobj]) + (:import + [goog.debug Logger Console LogRecord] + [goog.debug.Logger Level]) + (:require-macros [app.util.logging])) + +(defn- logger-name + [s] + (cond + (string? s) s + (= s :root) "" + (simple-ident? s) (name s) + (qualified-ident? s) (str (namespace s) "." (name s)) + :else (str s))) + +(defn get-logger + [n] + (if (instance? Logger n) + n + (glog/getLogger (logger-name n)))) + +(def root (get-logger :root)) + +(def levels + {:off Level/OFF + :error Level/SEVERE + :warn Level/WARNING + :warning Level/WARNING + :info Level/INFO + :debug Level/FINE + :trace Level/FINER + :fine Level/FINE + :finer Level/FINER + :all Level/ALL}) + +(def colors + {:gray3 "#8e908c" + :gray4 "#969896" + :gray5 "#4d4d4c" + :gray6 "#282a2e" + :black "#1d1f21" + :red "#c82829" + :blue "#4271ae" + :orange "#f5871f"}) + +(defn- get-level-value + [level] + (if (instance? Level level) + (.-value ^Level level) + (.-value ^Level (get levels level)))) + +(defn- level->color + [level] + (condp <= (get-level-value level) + (get-level-value :error) (get colors :red) + (get-level-value :warn) (get colors :orange) + (get-level-value :info) (get colors :blue) + (get-level-value :debug) (get colors :gray4) + (get-level-value :trace) (get colors :gray3) + (get colors :gray2))) + +(defn- level->short-name + [l] + (case l + :fine "DBG" + :debug "DBG" + :finer "TRC" + :trace "TRC" + :info "INF" + :warn "WRN" + :warning "WRN" + :error "ERR")) + +(defn- make-log-record + [level message name exception] + (let [record (LogRecord. level message name)] + (when exception + (.setException record exception)) + record)) + +(defn log + "Output a log message to the given logger, optionally with an exception to be + logged." + ([name lvl message] + (log name lvl message nil)) + ([name lvl message exception] + (when glog/ENABLED + (when-let [l (get-logger name)] + (.logRecord ^Logger l (make-log-record (get levels lvl) message name exception)))))) + +(defn set-level* + "Set the level (a keyword) of the given logger, identified by name." + [name lvl] + (assert (contains? levels lvl)) + (when-let [l (get-logger name)] + (.setLevel ^Logger l (get levels lvl)))) + +(defn set-levels! + [lvls] + (doseq [[logger level] lvls + :let [level (if (string? level) (keyword level) level)]] + (set-level* logger level))) + +(defn add-handler! + ([handler-fn] + (add-handler! root handler-fn)) + ([logger-or-name handler-fn] + (when-let [l (get-logger logger-or-name)] + (letfn [(handler [^LogRecord record] + (handler-fn {:seqn (.-sequenceNumber_ record) + :time (.-time_ record) + :level (keyword (str/lower (.-name (.-level_ record)))) + :message (.-msg_ record) + :logger-name (.-loggerName_ record) + :exception (.-exception_ record)}))] + (unchecked-set handler "handler-fn" handler-fn) + (.addHandler ^Logger l handler))))) + +(defn add-handler-once! + ([handler-fn] + (add-handler-once! root handler-fn)) + ([logger-or-name handler-fn] + (when-let [l (get-logger logger-or-name)] + (when-not (some (comp #{handler-fn} #(gobj/get % "handler-fn")) + (.-handlers_ l)) + (add-handler! l handler-fn))))) + +(defn- prepare-message + [message] + (loop [kvpairs (seq message) + message (array-map) + specials []] + (if (nil? kvpairs) + [message specials] + (let [[k v] (first kvpairs)] + (cond + (= k :err) + (recur (next kvpairs) + message + (conj specials [:error nil v])) + + (and (qualified-ident? k) + (= "js" (namespace k))) + (recur (next kvpairs) + message + (conj specials [:js (name k) (if (object? v) v (clj->js v))])) + + :else + (recur (next kvpairs) + (assoc message k v) + specials)))))) + +(defonce default-console-handler + (fn [{:keys [message exception level logger-name]}] + (let [header-styles (str "font-weight: 600; color: " (level->color level)) + normal-styles (str "font-weight: 300; color: " (get colors :gray6)) + level-name (level->short-name level) + header (str "%c" level-name " [" logger-name "] ")] + + (if (string? message) + (let [message (str header "%c" message)] + (js/console.log message header-styles normal-styles)) + (let [[message specials] (prepare-message message)] + (if (seq specials) + (let [message (str header "%c" (pr-str message))] + (js/console.group message header-styles normal-styles) + (doseq [[type n v] specials] + (case type + :js (js/console.log n v) + :error (if (instance? cljs.core.ExceptionInfo v) + (js/console.error (pr-str v)) + (js/console.error v)))) + (js/console.groupEnd message)) + (let [message (str header "%c" (pr-str message))] + (js/console.log message header-styles normal-styles)))))))) + +(defn initialize! + [] + (when-let [instance Console/instance] + (.setCapturing ^Console instance false)) + + (add-handler-once! default-console-handler)) diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 6363803cc..f0066f938 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -277,17 +277,16 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -autoprefixer@^9.8.6: - version "9.8.6" - resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.8.6.tgz#3b73594ca1bf9266320c5acf1588d74dea74210f" - integrity sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg== +autoprefixer@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.0.1.tgz#e2d9000f84ebd98d77b7bc16f8adb2ff1f7bb946" + integrity sha512-aQo2BDIsoOdemXUAOBpFv4ZQa2DrOtEufarYhtFsK1088Ca0TUwu/aQWf0M3mrILXZ3mTIVn1lR3hPW8acacsw== dependencies: - browserslist "^4.12.0" - caniuse-lite "^1.0.30001109" + browserslist "^4.14.5" + caniuse-lite "^1.0.30001137" colorette "^1.2.1" normalize-range "^0.1.2" num2fraction "^1.2.2" - postcss "^7.0.32" postcss-value-parser "^4.1.0" aws-sign2@~0.7.0: @@ -484,15 +483,15 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.12.0: - version "4.12.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" - integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== +browserslist@^4.14.5: + version "4.14.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.5.tgz#1c751461a102ddc60e40993639b709be7f2c4015" + integrity sha512-Z+vsCZIvCBvqLoYkBFTwEYH3v5MCQbsAjp50ERycpOjnPmolg1Gjy4+KaWWpm8QOJt9GHkhdqAl14NpCX73CWA== dependencies: - caniuse-lite "^1.0.30001088" - electron-to-chromium "^1.3.483" - escalade "^3.0.1" - node-releases "^1.1.58" + caniuse-lite "^1.0.30001135" + electron-to-chromium "^1.3.571" + escalade "^3.1.0" + node-releases "^1.1.61" buffer-crc32@~0.2.3: version "0.2.13" @@ -558,22 +557,17 @@ camelcase@^5.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001088: - version "1.0.30001093" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001093.tgz#833e80f64b1a0455cbceed2a4a3baf19e4abd312" - integrity sha512-0+ODNoOjtWD5eS9aaIpf4K0gQqZfILNY4WSNuYzeT1sXni+lMrrVjc0odEobJt6wrODofDZUX8XYi/5y7+xl8g== - -caniuse-lite@^1.0.30001109: - version "1.0.30001111" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001111.tgz#dd0ce822c70eb6c7c068e4a55c22e19ec1501298" - integrity sha512-xnDje2wchd/8mlJu8sXvWxOGvMgv+uT3iZ3bkIAynKOzToCssWCmkz/ZIkQBs/2pUB4uwnJKVORWQ31UkbVjOg== +caniuse-lite@^1.0.30001135, caniuse-lite@^1.0.30001137: + version "1.0.30001150" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001150.tgz#6d0d829da654b0b233576de00335586bc2004df1" + integrity sha512-kiNKvihW0m36UhAFnl7bOAv0i1K1f6wpfVtTF5O5O82XzgtBnb05V0XeV3oZ968vfg2sRNChsHw8ASH2hDfoYQ== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -1158,10 +1152,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.483: - version "1.3.487" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.487.tgz#8075e6ea33ee2e79a2dfb2a2467033f014017258" - integrity sha512-m4QS3IDShxauFfYFpnEzRCcUI55oKB9acEnHCuY/hSCZMz9Pz2KJj+UBnGHxRxS/mS1aphqOQ5wI6gc3yDZ7ew== +electron-to-chromium@^1.3.571: + version "1.3.582" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.582.tgz#1adfac5affce84d85b3d7b3dfbc4ade293a6ffc4" + integrity sha512-0nCJ7cSqnkMC+kUuPs0YgklFHraWGl/xHqtZWWtOeVtyi+YqkoAOMGuZQad43DscXCQI/yizcTa3u6B5r+BLww== elliptic@^6.5.3: version "6.5.3" @@ -1267,10 +1261,10 @@ es6-weak-map@^2.0.1: es6-iterator "^2.0.3" es6-symbol "^3.1.1" -escalade@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" - integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== +escalade@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5: version "1.0.5" @@ -2412,6 +2406,14 @@ liftoff@^3.1.0: rechoir "^0.6.2" resolve "^1.1.7" +line-column@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" + integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= + dependencies: + isarray "^1.0.0" + isobject "^2.0.0" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2552,7 +2554,7 @@ logform@^2.2.0: ms "^2.1.1" triple-beam "^1.3.0" -loose-envify@^1.1.0, loose-envify@^1.4.0: +loose-envify@^1.1.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -2783,6 +2785,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nanoid@^3.1.12: + version "3.1.12" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" + integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -2839,10 +2846,10 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" -node-releases@^1.1.58: - version "1.1.58" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" - integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== +node-releases@^1.1.61: + version "1.1.64" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.64.tgz#71b4ae988e9b1dd7c1ffce58dd9e561752dfebc5" + integrity sha512-Iec8O9166/x2HRMJyLLLWkd0sFFLrFNy+Xf+JQfSQsdBJzPcHpNl3JQ9gD4j+aJxmCa25jNsIbM4bmACtSbkSg== normalize-package-data@^2.3.2: version "2.5.0" @@ -3258,14 +3265,15 @@ postcss-value-parser@^4.1.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== -postcss@^7.0.32: - version "7.0.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" - integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== +postcss@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.2.tgz#9731fcaa4f7b0bef47121821bdae9eeb609a324c" + integrity sha512-mToqEVFq8jF9TFhlIK4HhE34zknFJuNTgqtsr60vUvrWn+9TIYugCwiV1JZRxCuOrej2jjstun1bn4Bc7/1HkA== dependencies: - chalk "^2.4.2" + colorette "^1.2.1" + line-column "^1.0.2" + nanoid "^3.1.12" source-map "^0.6.1" - supports-color "^6.1.0" pretty-hrtime@^1.0.0: version "1.0.3" @@ -3292,15 +3300,6 @@ progress@^1.1.8: resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be" integrity sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74= -prop-types@^15.6.2: - version "15.7.2" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" - integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.8.1" - psl@^1.1.28: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -3398,29 +3397,22 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -react-dom@^16.13.1: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.14.0.tgz#7ad838ec29a777fb3c75c3a190f661cf92ab8b89" - integrity sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw== +react-dom@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.0.tgz#f8266e4d9861584553ccbd186d596a1c7dd8dcb4" + integrity sha512-OGnFbxCjI2TMAZYMVxi4hqheJiN8rCEVVrL7XIGzCB6beNc4Am8M47HtkvxODZw9QgjmAPKpLba9FTu4fC1byA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" - scheduler "^0.19.1" + scheduler "^0.20.0" -react-is@^16.8.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react@^16.13.1: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react/-/react-16.14.0.tgz#94d776ddd0aaa37da3eda8fc5b6b18a4c9a3114d" - integrity sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g== +react@^17.0.0: + version "17.0.0" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.0.tgz#ad96d5fa1a33bb9b06d0cc52672f7992d84aa662" + integrity sha512-rG9bqS3LMuetoSUKHN8G3fMNuQOePKDThK6+2yXFWtoeTDLVNh/QCaxT+Jr+rNf4lwNXpx+atdn3Aa0oi8/6eQ== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" - prop-types "^15.6.2" read-pkg-up@^1.0.1: version "1.0.1" @@ -3679,10 +3671,10 @@ sax@~1.2.4: resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== +scheduler@^0.20.0: + version "0.20.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.0.tgz#3ff543696b169613afadb09d3fb3fe998d234dd2" + integrity sha512-XegIgta1bIaz2LdaL6eg1GEcE42g0BY9qFXCqlZ/+s2MuEKfigFCW6DEGBlZzeVFlwDmVusrWEyFtBo4sbkkdA== dependencies: loose-envify "^1.1.0" object-assign "^4.1.1" @@ -3819,10 +3811,10 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -slate-react@^0.58.4: - version "0.58.4" - resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.58.4.tgz#ecde34dd322af8413c2f23f0f0a577fed2422f46" - integrity sha512-3JXWHVPmYrR/EMcH1qtmwXZtYxxCtuokQg+r/4wD1Ab9J3zRmW4UGLoaRP9/uQrZOAOvr8mMh4IgmrxV2dQskw== +slate-react@^0.59.0: + version "0.59.0" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.59.0.tgz#c8043dce7ea71279f314d9951c32e4f548b1ea0b" + integrity sha512-Fx5vfTi0s1fY5PaXzPH8uA9mW8aevVVYrGGvqX/k363tlPDnQSs/QTibIyFl1Y3MPJ+GdocoyOGjAaZMUIXfIg== dependencies: "@types/is-hotkey" "^0.1.1" "@types/lodash" "^4.14.149" @@ -3832,10 +3824,10 @@ slate-react@^0.58.4: lodash "^4.17.4" scroll-into-view-if-needed "^2.2.20" -slate@^0.58.4: - version "0.58.4" - resolved "https://registry.yarnpkg.com/slate/-/slate-0.58.4.tgz#4259387e632b45b00cf88bcecf5570d7d16ddd8b" - integrity sha512-XxKwNJgCMf7S2sDT8CVJy0zYm95MiYorJo9Hah05zKjItrw0VVeCc2BGKDZSlNGcaIfM3xcfFUN7XE+c8ehAbA== +slate@^0.59.0: + version "0.59.0" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.59.0.tgz#3169daf2f036e84aa149f60e0d12ef2fc4c0839e" + integrity sha512-M4UTMkXExxuq8tCD+knn7BtV2pmY8pepay++EF59rmg/v4RB6X1gNzA0xP3aw2rqYl8TmWdOBdy9InFrm3WyXw== dependencies: "@types/esrever" "^0.2.0" esrever "^0.2.0" @@ -4113,13 +4105,6 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - sver-compat@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8"