diff --git a/package.json b/package.json index 3b78c97cf4..aab8d91c84 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,6 @@ "nyc": "^14.1.1", "process": "0.11.10", "rn-snoopy": "git+https://github.com/status-im/rn-snoopy.git#v2.0.2-status", - "shadow-cljs": "2.9.2" + "shadow-cljs": "2.10.14" } } diff --git a/shadow-cljs.edn b/shadow-cljs.edn index 5dcc0b8c31..6a49a8a446 100644 --- a/shadow-cljs.edn +++ b/shadow-cljs.edn @@ -38,10 +38,12 @@ :init-fn status-im.core/init :closure-defines {"status-im.utils.config/INFURA_TOKEN" #shadow/env "INFURA_TOKEN"} :dev {:devtools {:after-load status-im.reloader/reload + :build-notify status-im.reloader/build-notify :preloads [re-frisk-remote.preload]} :compiler-options {:closure-defines {re-frame.trace/trace-enabled? true} - :source-map false} + :source-map false + :infer-externs true} ;; if you want to use a real device, set your local ip ;; in the SHADOW_HOST env variable to make sure that ;; it will use the right interface diff --git a/src/shadow/cljs/devtools/client/react_native.cljs b/src/shadow/cljs/devtools/client/react_native.cljs deleted file mode 100644 index b18200de6e..0000000000 --- a/src/shadow/cljs/devtools/client/react_native.cljs +++ /dev/null @@ -1,221 +0,0 @@ -(ns shadow.cljs.devtools.client.react-native - (:require [cljs.reader :as reader] - [clojure.string :as str] - [goog.net.XhrIo :as xhr] - [shadow.cljs.devtools.client.env :as env] - [status-im.reloader :as reloader])) - -(defonce repl-ns-ref (atom nil)) - -(defonce socket-ref (volatile! nil)) - -(defn ws-msg [msg] - (if-let [s @socket-ref] - (.send s (pr-str msg)) - (js/console.warn "WEBSOCKET NOT CONNECTED" (pr-str msg)))) - -(defn devtools-msg - ([x] - (js/console.log x)) - ([x y] - (js/console.log x y))) - -(defn script-eval [code] - (js/goog.global.eval code)) - -(defn do-js-load [sources] - (doseq [{:keys [resource-name js] :as src} sources] - (devtools-msg "load JS" resource-name) - (env/before-load-src src) - (script-eval (str js "\n//# sourceURL=" resource-name)))) - -(defn do-js-reload [msg sources complete-fn] - (env/do-js-reload - (assoc msg - :log-missing-fn - (fn [fn-sym] - (devtools-msg (str "can't find fn " fn-sym))) - :log-call-async - (fn [fn-sym] - (devtools-msg (str "call async " fn-sym))) - :log-call - (fn [fn-sym] - (devtools-msg (str "call " fn-sym)))) - #(do-js-load sources) - complete-fn)) - -(defn load-sources [sources callback] - (if (empty? sources) - (callback []) - (xhr/send - (env/files-url) - (fn [_] - (this-as ^goog req - (let [content - (-> req - (.getResponseText) - (reader/read-string))] - (callback content)))) - - "POST" - (pr-str {:client :browser - :sources (into [] (map :resource-id) sources)}) - #js {"content-type" "application/edn; charset=utf-8"}))) - -(defn noop [& _]) - -(defn handle-build-complete [{:keys [info reload-info] :as msg}] - (let [{:keys [sources]} - info - - warnings - (->> (for [{:keys [resource-name warnings] :as src} sources - :when (not (:from-jar src)) - warning warnings] - (assoc warning :resource-name resource-name)) - (distinct) - (into []))] - (when (seq warnings) - (reloader/build-failed)) - (when (and env/autoload - (or (empty? warnings) env/ignore-warnings)) - (reloader/build-competed) - (let [sources-to-get (env/filter-reload-sources info reload-info)] - - (when (seq sources-to-get) - (load-sources sources-to-get #(do-js-reload msg % noop))))))) - -(defn repl-error [e] - (js/console.error "repl/invoke error" (.-message e) e) - (env/repl-error e)) - -(defn repl-invoke [{:keys [id js]}] - (let [result (env/repl-call #(js/eval js) repl-error)] - (-> result - (assoc :id id) - (ws-msg)))) - -(defn repl-require [{:keys [id sources reload-namespaces]} done] - (let [sources-to-load - (->> sources - (remove (fn [{:keys [provides] :as src}] - (and (env/src-is-loaded? src) - (not (some reload-namespaces provides))))) - (into []))] - - (load-sources - sources-to-load - (fn [sources] - (do-js-load sources) - (ws-msg {:type :repl/require-complete :id id}) - (done))))) - -(defn repl-init [{:keys [repl-state id]} done] - (reset! repl-ns-ref (get-in repl-state [:current :ns])) - (load-sources - ;; maybe need to load some missing files to init REPL - (->> (:repl-sources repl-state) - (remove env/src-is-loaded?) - (into [])) - (fn [sources] - (do-js-load sources) - (ws-msg {:type :repl/init-complete :id id}) - (devtools-msg "REPL init successful") - (done)))) - -(defn repl-set-ns [{:keys [id ns]}] - (reset! repl-ns-ref ns) - (ws-msg {:type :repl/set-ns-complete :id id :ns ns})) - -;; FIXME: core.async-ify this -(defn handle-message [{:keys [type] :as msg} done] - ;; (js/console.log "ws-msg" (pr-str msg)) - (case type - :repl/invoke - (repl-invoke msg) - - :repl/require - (repl-require msg done) - - :repl/set-ns - (repl-set-ns msg) - - :repl/init - (repl-init msg done) - - :repl/ping - (ws-msg {:type :repl/pong :time-server (:time-server msg) :time-runtime (js/Date.now)}) - - :build-complete - (handle-build-complete msg) - - :build-failure - (reloader/build-failed) - - :build-init - nil - - :build-start - (reloader/build-start) - - :pong - nil - - :client/stale - (devtools-msg "Stale Client! You are not using the latest compilation output!") - - :client/no-worker - (devtools-msg (str "watch for build \"" env/build-id "\" not running")) - - ;; default - :ignored) - - (when-not (contains? env/async-ops type) - (done))) - -(defn ws-connect [] - (let [ws-url - (env/ws-url :react-native) - - socket - (js/WebSocket. ws-url)] - - (vreset! socket-ref socket) - (set! (.-onmessage socket) - (fn [e] - (env/process-ws-msg (. e -data) handle-message))) - - (set! (.-onopen socket) - (fn [_] - ;; :module-format :js already patches provide - (when (= "goog" env/module-format) - ;; patch away the already declared exception - (set! (.-provide js/goog) js/goog.constructNamespace_)) - - (env/set-print-fns! ws-msg) - - (devtools-msg "WebSocket connected!"))) - - (set! (.-onclose socket) - (fn [_] - ;; not a big fan of reconnecting automatically since a disconnect - ;; may signal a change of config, safer to just reload the page - (devtools-msg "WebSocket disconnected!") - (vreset! socket-ref nil) - (env/reset-print-fns!))) - - (set! (.-onerror socket) - (fn [e] - (js/console.error (str "WebSocket connect failed:" (.-message e) "\n" - "It was trying to connect to: " (subs ws-url 0 (str/index-of ws-url "/" 6)) "\n")))))) - -(when ^boolean env/enabled - ;; disconnect an already connected socket, happens if this file is reloaded - ;; pretty much only for me while working on this file - (when-let [s @socket-ref] - (devtools-msg "connection reset!") - (set! (.-onclose s) (fn [_])) - (.close s) - (vreset! socket-ref nil)) - - (ws-connect)) diff --git a/src/status_im/android/platform.cljs b/src/status_im/android/platform.cljs deleted file mode 100644 index 710f299e99..0000000000 --- a/src/status_im/android/platform.cljs +++ /dev/null @@ -1,4 +0,0 @@ -(ns status-im.android.platform) - -(def platform-specific - {:status-bar-default-height 25}) diff --git a/src/status_im/ios/platform.cljs b/src/status_im/ios/platform.cljs deleted file mode 100644 index 85c6a59997..0000000000 --- a/src/status_im/ios/platform.cljs +++ /dev/null @@ -1,15 +0,0 @@ -(ns status-im.ios.platform - (:require ["react-native" :refer (Dimensions)])) - -;; iPhone X dimensions -(def x-height 812) -(def xs-height 896) - -(defn iphone-x-dimensions? [] - (let [{:keys [height]} (-> Dimensions - (.get "window") - (js->clj :keywordize-keys true))] - (or (= height x-height) (= height xs-height)))) - -(def platform-specific - {:status-bar-default-height (if (iphone-x-dimensions?) 0 20)}) diff --git a/src/status_im/reloader.cljs b/src/status_im/reloader.cljs index e219b90d3c..7cbeb4eecf 100644 --- a/src/status_im/reloader.cljs +++ b/src/status_im/reloader.cljs @@ -21,9 +21,11 @@ (reset! warning? false) (reset! visible true)) -(defn build-failed [] +(defn build-failed [warnings] (reset! warning? true) - (reset! label "building failed") + (reset! label (str "building failed" + (when (seq warnings) + (str "\n" (count warnings) " warnings")))) (reset! visible true)) (defn build-start [] @@ -31,6 +33,15 @@ (reset! label "building") (reset! visible true)) +(defn build-notify [{:keys [type info]}] + (cond (= :build-start type) + (build-start) + (or (= :build-failure type) + (and (= :build-complete type) (seq (:warnings info)))) + (build-failed (:warnings info)) + (= :build-complete type) + (build-competed))) + (defn reload-view [_] (fn [cnt] (when @timeout (js/clearTimeout @timeout)) diff --git a/src/status_im/utils/platform.cljs b/src/status_im/utils/platform.cljs index 6d3f44a29a..1040b162ab 100644 --- a/src/status_im/utils/platform.cljs +++ b/src/status_im/utils/platform.cljs @@ -1,6 +1,5 @@ (ns status-im.utils.platform - (:require [status-im.ios.platform :as ios] - ["react-native" :as react-native])) + (:require ["react-native" :as react-native :refer (Dimensions)])) (def platform (.-Platform react-native)) @@ -13,9 +12,19 @@ (when platform (.-Version ^js platform))) +;; iPhone X dimensions +(def x-height 812) +(def xs-height 896) + +(defn iphone-x-dimensions? [] + (let [{:keys [height]} (-> Dimensions + (.get "window") + (js->clj :keywordize-keys true))] + (or (= height x-height) (= height xs-height)))) + (def android? (= os "android")) (def ios? (= os "ios")) -(def iphone-x? (and ios? (ios/iphone-x-dimensions?))) +(def iphone-x? (and ios? (iphone-x-dimensions?))) (defn no-backup-directory [] (cond diff --git a/yarn.lock b/yarn.lock index a5e0e71eec..8c958422bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2035,11 +2035,21 @@ bn.js@4.11.6: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= -bn.js@4.11.8, bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.6, bn.js@^4.4.0: +bn.js@4.11.8, bn.js@^4.11.6: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -2138,7 +2148,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= @@ -2147,17 +2157,19 @@ browserify-rsa@^4.0.0: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -2670,7 +2682,7 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -2681,7 +2693,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -3034,7 +3046,20 @@ electron-to-chromium@^1.3.413: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.414.tgz#9d0a92defefda7cc1cf8895058b892795ddd6b41" integrity sha512-UfxhIvED++qLwWrAq9uYVcqF8FdeV9sU2S7qhiHYFODxzXRrd1GZRl/PjITHsTEejgibcWDraD8TQqoHb1aCBQ== -elliptic@^6.0.0, elliptic@^6.4.0: +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +elliptic@^6.4.0: version "6.5.2" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== @@ -3796,12 +3821,13 @@ has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" @@ -3945,7 +3971,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.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== @@ -6039,7 +6065,7 @@ pako@~1.0.5: resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -parse-asn1@^5.0.0: +parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== @@ -6142,9 +6168,9 @@ path-type@^3.0.0: pify "^3.0.0" pbkdf2@^3.0.3: - version "3.0.17" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" - integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== dependencies: create-hash "^1.1.2" create-hmac "^1.1.4" @@ -6711,6 +6737,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + readline-sync@^1.4.7: version "1.4.10" resolved "https://registry.yarnpkg.com/readline-sync/-/readline-sync-1.4.10.tgz#41df7fbb4b6312d673011594145705bf56d8873b" @@ -6997,10 +7032,10 @@ safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-regex@^1.1.0: version "1.1.0" @@ -7139,10 +7174,10 @@ shadow-cljs-jar@1.3.2: resolved "https://registry.yarnpkg.com/shadow-cljs-jar/-/shadow-cljs-jar-1.3.2.tgz#97273afe1747b6a2311917c1c88d9e243c81957b" integrity sha512-XmeffAZHv8z7451kzeq9oKh8fh278Ak+UIOGGrapyqrFBB773xN8vMQ3O7J7TYLnb9BUwcqadKkmgaq7q6fhZg== -shadow-cljs@2.9.2: - version "2.9.2" - resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.9.2.tgz#e84b79a129c19b5134095da017a51fe6065e04ba" - integrity sha512-BuOWpM9jYarrIpDMkLWkeViXOSo+zLBRE7CzPetJa8aDnpohQ7jUeJMsX28S0uQ/rt+XSsElWqVGt3CiP6XjkA== +shadow-cljs@2.10.14: + version "2.10.14" + resolved "https://registry.yarnpkg.com/shadow-cljs/-/shadow-cljs-2.10.14.tgz#b2406619b09f2f2fd00b0b8cb0d125ff9b7c72a7" + integrity sha512-70UjdzhmF64lDrftsD2HdBqstpfZ9iVimbZMgmV6xfjakbuiuwqnJvtJZ/CbOhsCsS2m+E6EqSFfIDiT+vtbEA== dependencies: node-libs-browser "^2.0.0" readline-sync "^1.4.7" @@ -7546,7 +7581,7 @@ string.prototype.trimstart@^1.0.0: define-properties "^1.1.3" es-abstract "^1.17.5" -string_decoder@^1.0.0: +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" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== @@ -8045,7 +8080,7 @@ utf8@3.0.0, utf8@^3.0.0: resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=