diff --git a/index.js b/index.js index 279a714468..e00193dcc8 100644 --- a/index.js +++ b/index.js @@ -1 +1,2 @@ +import "node-libs-react-native/globals"; import "./app/index.js"; diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ef14e7787e..a5c2c44265 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -208,6 +208,8 @@ PODS: - React - react-native-blob-util (0.13.18): - React-Core + - react-native-blur (0.8.0): + - React - react-native-camera-kit (8.0.4): - React - react-native-cameraroll (4.0.4): @@ -224,6 +226,8 @@ PODS: - React - react-native-notifications (4.1.3): - React-Core + - react-native-randombytes (3.6.1): + - React-Core - react-native-safe-area-context (2.0.0): - React - react-native-shake (3.4.0): @@ -422,6 +426,7 @@ DEPENDENCIES: - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) - react-native-background-timer (from `../node_modules/react-native-background-timer`) - react-native-blob-util (from `../node_modules/react-native-blob-util`) + - "react-native-blur (from `../node_modules/@react-native-community/blur`)" - react-native-camera-kit (from `../node_modules/react-native-camera-kit`) - "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)" - react-native-config (from `../node_modules/react-native-config`) @@ -429,6 +434,7 @@ DEPENDENCIES: - react-native-mail (from `../node_modules/react-native-mail`) - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" - react-native-notifications (from `../node_modules/react-native-notifications`) + - react-native-randombytes (from `../node_modules/react-native-randombytes`) - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-shake (from `../node_modules/react-native-shake`) - "react-native-slider (from `../node_modules/@react-native-community/slider`)" @@ -525,6 +531,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-background-timer" react-native-blob-util: :path: "../node_modules/react-native-blob-util" + react-native-blur: + :path: "../node_modules/@react-native-community/blur" react-native-camera-kit: :path: "../node_modules/react-native-camera-kit" react-native-cameraroll: @@ -539,6 +547,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-community/netinfo" react-native-notifications: :path: "../node_modules/react-native-notifications" + react-native-randombytes: + :path: "../node_modules/react-native-randombytes" react-native-safe-area-context: :path: "../node_modules/react-native-safe-area-context" react-native-shake: @@ -653,6 +663,7 @@ SPEC CHECKSUMS: React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a react-native-background-timer: 1f7d560647b40e6a60b01c452ba29c54bf581fc4 react-native-blob-util: 600972b1782380a5a7d5db61a3817ea32349dae9 + react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c react-native-camera-kit: 498a6d111a904834e0824e9073cfadef7303235f react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2 react-native-config: c98128a72bc2c3a1ca72caec0b021f0fa944aa29 @@ -660,6 +671,7 @@ SPEC CHECKSUMS: react-native-mail: 8fdcd3aef007c33a6877a18eb4cf7447a1d4ce4a react-native-netinfo: ddaca8bbb9e6e914b1a23787ccb879bc642931c9 react-native-notifications: 805108822ceff3440644d5701944f0cda35f5b4b + react-native-randombytes: 421f1c7d48c0af8dbcd471b0324393ebf8fe7846 react-native-safe-area-context: 60f654e00b6cc416573f6d5dbfce3839958eb57a react-native-shake: de052eaa3eadc4a326b8ddd7ac80c06e8d84528c react-native-slider: 12bd76d3d568c9c5500825db54123d44b48e4ad4 diff --git a/metro.config.js b/metro.config.js index 95d743601b..d4ec8aa4de 100644 --- a/metro.config.js +++ b/metro.config.js @@ -13,4 +13,7 @@ module.exports = { }, }), }, + resolver: { + extraNodeModules: require('node-libs-react-native'), + }, }; diff --git a/package.json b/package.json index 091f087c07..e31df1741c 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "dependencies": { "@react-native-community/async-storage": "^1.11.0", "@react-native-community/audio-toolkit": "git+https://github.com/tbenr/react-native-audio-toolkit.git#v2.0.3-status-v6", + "@react-native-community/blur": "^3.6.0", "@react-native-community/cameraroll": "git+https://github.com/status-im/react-native-cameraroll.git#v4.0.4-status.0", "@react-native-community/clipboard": "^1.2.2", "@react-native-community/hooks": "^2.5.1", @@ -20,6 +21,7 @@ "@react-native-community/netinfo": "^4.4.0", "@react-native-community/push-notification-ios": "^1.4.1", "@react-native-community/slider": "^3.0.0", + "@walletconnect/client": "^2.0.0-beta.23", "bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status", "buffer": "^5.4.2", "chance": "^1.1.0", @@ -30,6 +32,7 @@ "hermes-engine": "0.5.2-rc1", "hi-base32": "^0.5.0", "i18n-js": "^3.3.0", + "node-libs-react-native": "^1.2.1", "qrcode": "^1.4.1", "react": "16.13.1", "react-dom": "^16.4.2", @@ -56,6 +59,7 @@ "react-native-navigation": "^7.13.0", "react-native-notifications": "^4.1.3", "react-native-permissions": "^2.1.5", + "react-native-randombytes": "^3.6.1", "react-native-reanimated": "^2.1.0", "react-native-redash": "^16.0.11", "react-native-safe-area-context": "^2.0.0", diff --git a/react-native.config.js b/react-native.config.js index 3357184d96..61a28e5ee9 100644 --- a/react-native.config.js +++ b/react-native.config.js @@ -22,5 +22,10 @@ module.exports = { ios: null, }, }, + '@react-native-community/blur': { + platforms: { + android: null, + }, + }, }, }; diff --git a/resources/images/icons/billfold@2x.png b/resources/images/icons/billfold@2x.png new file mode 100644 index 0000000000..96c63ac715 Binary files /dev/null and b/resources/images/icons/billfold@2x.png differ diff --git a/resources/images/icons/billfold@3x.png b/resources/images/icons/billfold@3x.png new file mode 100644 index 0000000000..5d3bf8198e Binary files /dev/null and b/resources/images/icons/billfold@3x.png differ diff --git a/resources/images/icons/checkmark@2x.png b/resources/images/icons/checkmark@2x.png new file mode 100644 index 0000000000..e5fffc5a0a Binary files /dev/null and b/resources/images/icons/checkmark@2x.png differ diff --git a/resources/images/icons/checkmark@3x.png b/resources/images/icons/checkmark@3x.png new file mode 100644 index 0000000000..43c9cdb35e Binary files /dev/null and b/resources/images/icons/checkmark@3x.png differ diff --git a/resources/images/icons/chevron_down@2x.png b/resources/images/icons/chevron_down@2x.png index 0fc2c2eddc..2eb293bf3e 100644 Binary files a/resources/images/icons/chevron_down@2x.png and b/resources/images/icons/chevron_down@2x.png differ diff --git a/resources/images/icons/chevron_down@3x.png b/resources/images/icons/chevron_down@3x.png index edc9820def..1c3680098f 100644 Binary files a/resources/images/icons/chevron_down@3x.png and b/resources/images/icons/chevron_down@3x.png differ diff --git a/resources/images/icons/chevron_right@2x.png b/resources/images/icons/chevron_right@2x.png new file mode 100644 index 0000000000..0fc2c2eddc Binary files /dev/null and b/resources/images/icons/chevron_right@2x.png differ diff --git a/resources/images/icons/chevron_right@3x.png b/resources/images/icons/chevron_right@3x.png new file mode 100644 index 0000000000..edc9820def Binary files /dev/null and b/resources/images/icons/chevron_right@3x.png differ diff --git a/src/mocks/js_dependencies.cljs b/src/mocks/js_dependencies.cljs index d00195ec94..c3c05cf24a 100644 --- a/src/mocks/js_dependencies.cljs +++ b/src/mocks/js_dependencies.cljs @@ -213,6 +213,16 @@ (def react-native-notifications #js {:Notifications #js {}}) +(def react-native-blur + (clj->js {:BlurView {}})) + +(def wallet-connect-client #js {:default #js {} + :CLIENT_EVENTS #js {:session #js {:request nil + :created nil + :deleted nil + :proposal nil + :updated nil}}}) + ;; Update i18n_resources.cljs (defn mock [module] (case module @@ -243,12 +253,14 @@ "react-native-linear-gradient" react-native-gradien "react-native-navigation" react-native-navigation "@react-native-community/push-notification-ios" push-notification-ios + "@react-native-community/blur" react-native-blur "react-native-camera-kit" react-native-camera-kit "rn-emoji-keyboard" rn-emoji-keyboard "react-native-notifications" react-native-notifications "react-native-draggable-flatlist" react-native-draggable-flatlist "./fleets.js" default-fleets "./chats.js" default-chats + "@walletconnect/client" wallet-connect-client "../translations/ar.json" (js/JSON.parse (slurp "./translations/ar.json")) "../translations/de.json" (js/JSON.parse (slurp "./translations/de.json")) "../translations/en.json" (js/JSON.parse (slurp "./translations/en.json")) diff --git a/src/quo/components/animated/pressable.cljs b/src/quo/components/animated/pressable.cljs index e1dea47b28..6c69afde1d 100644 --- a/src/quo/components/animated/pressable.cljs +++ b/src/quo/components/animated/pressable.cljs @@ -57,6 +57,8 @@ (defn pressable-hooks [props] (let [{background-color :bgColor border-radius :borderRadius + border-color :borderColor + border-width :borderWidth type :type disabled :disabled on-press :onPress @@ -121,7 +123,9 @@ [animated/view {:style (merge absolute-fill background {:background-color background-color - :border-radius border-radius})}] + :border-radius border-radius + :border-color border-color + :border-width border-width})}] (into [animated/view {:style foreground}] (react/get-children children))]]]]))) diff --git a/src/quo/components/button/view.cljs b/src/quo/components/button/view.cljs index e3a4a50442..9df324fb18 100644 --- a/src/quo/components/button/view.cljs +++ b/src/quo/components/button/view.cljs @@ -28,27 +28,31 @@ (defn themes [theme] (case theme - :main {:icon-color (:icon-04 @colors/theme) - :background-color (:interactive-02 @colors/theme) - :text-color (:text-04 @colors/theme)} - :icon {:icon-color (:icon-01 @colors/theme) - :background-color (:interactive-02 @colors/theme) - :text-color (:text-01 @colors/theme)} - :negative {:icon-color (:negative-01 @colors/theme) - :background-color (:negative-02 @colors/theme) - :text-color (:negative-01 @colors/theme)} - :positive {:icon-color (:positive-01 @colors/theme) - :background-color (:positive-02 @colors/theme) - :text-color (:positive-01 @colors/theme)} - :accent {:icon-color (:icon-05 @colors/theme) - :background-color (:interactive-01 @colors/theme) - :text-color (:text-05 @colors/theme)} - :secondary {:icon-color (:icon-02 @colors/theme) - :background-color (:interactive-02 @colors/theme) - :text-color (:text-02 @colors/theme)} - :disabled {:icon-color (:icon-02 @colors/theme) - :background-color (:ui-01 @colors/theme) - :text-color (:text-02 @colors/theme)})) + :main {:icon-color (:icon-04 @colors/theme) + :background-color (:interactive-02 @colors/theme) + :text-color (:text-04 @colors/theme)} + :icon {:icon-color (:icon-01 @colors/theme) + :background-color (:interactive-02 @colors/theme) + :text-color (:text-01 @colors/theme)} + :negative {:icon-color (:negative-01 @colors/theme) + :background-color (:negative-02 @colors/theme) + :text-color (:negative-01 @colors/theme)} + :positive {:icon-color (:positive-01 @colors/theme) + :background-color (:positive-02 @colors/theme) + :text-color (:positive-01 @colors/theme)} + :accent {:icon-color (:icon-05 @colors/theme) + :background-color (:interactive-01 @colors/theme) + :text-color (:text-05 @colors/theme)} + :secondary {:icon-color (:icon-02 @colors/theme) + :background-color (:interactive-02 @colors/theme) + :text-color (:text-02 @colors/theme)} + :disabled {:icon-color (:icon-02 @colors/theme) + :background-color (:ui-01 @colors/theme) + :text-color (:text-02 @colors/theme)} + :monocromatic {:icon-color (:icon-01 @colors/theme) + :background-color (:ui-background @colors/theme) + :text-color (:text-01 @colors/theme) + :border-color (:ui-01 @colors/theme)})) (defn button [{:keys [on-press disabled type theme before after haptic-feedback haptic-type on-long-press on-press-start @@ -62,7 +66,7 @@ (let [theme' (cond disabled :disabled :else theme) - {:keys [icon-color background-color text-color]} + {:keys [icon-color background-color text-color border-color]} (themes theme') optional-haptic (fn [] @@ -73,6 +77,9 @@ :type type :disabled disabled :accessibility-label accessibility-label} + (when border-color + {:border-color border-color + :border-width 1}) (when on-press {:on-press (fn [] (optional-haptic) diff --git a/src/quo/design_system/colors.cljs b/src/quo/design_system/colors.cljs index f84761e5ed..6a2ac73a98 100644 --- a/src/quo/design_system/colors.cljs +++ b/src/quo/design_system/colors.cljs @@ -20,6 +20,7 @@ (def light-theme {:positive-01 "rgba(68,208,88,1)" ; Primary Positive, text, icons color :positive-02 "rgba(78,188,96,0.1)" ; Secondary Positive, Supporting color for success illustrations + :positive-03 "rgba(78,188,96,1)" ; Lighter Positive, Supporting color for success illustrations :negative-01 "rgba(255,45,85,1)" ; Primary Negative, text, icons color :negative-02 "rgba(255,45,85,0.1))" ; Secondary Negative, Supporting color for errors illustrations :warning-01 "rgba(255, 202, 15, 1)" @@ -46,11 +47,13 @@ :backdrop "rgba(0,0,0,0.4)" ; Backdrop for modals and bottom sheet :border-01 "rgba(238,242,245,1)" :border-02 "rgba(67, 96, 223, 0.1)" - :highlight "rgba(67,96,223,0.4)"}) + :highlight "rgba(67,96,223,0.4)" + :blurred-bg "rgba(255,255,255,0.3)"}) (def dark-theme {:positive-01 "rgba(68,208,88,1)" :positive-02 "rgba(78,188,96,0.1)" + :positive-03 "rgba(78,188,96,1)" :negative-01 "rgba(252,95,95,1)" :negative-02 "rgba(252,95,95,0.1)" :warning-01 "rgba(255, 202, 15, 1)" @@ -77,7 +80,8 @@ :backdrop "rgba(0,0,0,0.4)" :border-01 "rgba(37,37,40,1)" :border-02 "rgba(97,119,229,0.1)" - :highlight "rgba(67,96,223,0.4)"}) + :highlight "rgba(67,96,223,0.4)" + :blurred-bg "rgba(0,0,0,0.3)"}) (def theme (reagent/atom light-theme)) diff --git a/src/status_im/events.cljs b/src/status_im/events.cljs index 195c14dfbd..72e2f61893 100644 --- a/src/status_im/events.cljs +++ b/src/status_im/events.cljs @@ -61,7 +61,8 @@ status-im.wallet.custom-tokens.core [status-im.navigation.core :as navigation.core] [status-im.multiaccounts.login.core :as login.core] - [status-im.signing.core :as signing])) + [status-im.signing.core :as signing] + status-im.wallet-connect.core)) (re-frame/reg-fx :dismiss-keyboard diff --git a/src/status_im/multiaccounts/login/core.cljs b/src/status_im/multiaccounts/login/core.cljs index b211ab3c6a..630ed6db70 100644 --- a/src/status_im/multiaccounts/login/core.cljs +++ b/src/status_im/multiaccounts/login/core.cljs @@ -42,7 +42,8 @@ [status-im.ui.components.react :as react] [status-im.utils.platform :as platform] [status-im.ethereum.tokens :as tokens] - [clojure.string :as string])) + [clojure.string :as string] + [status-im.utils.wallet-connect :as wallet-connect])) (re-frame/reg-fx ::initialize-communities-enabled @@ -82,6 +83,20 @@ (fn [] (status/start-local-notifications))) +(re-frame/reg-fx + ::initialize-wallet-connect + (fn [] + (wallet-connect/init + #(re-frame/dispatch [:wallet-connect/client-init %]) + #(log/error "[wallet-connect]" %)))) + +(re-frame/reg-fx + ::initialize-wallet-connect + (fn [] + (async-storage/get-item + :wallet-connect-enabled? + #(re-frame/dispatch [:multiaccounts.ui/switch-wallet-connect-enabled %])))) + (defn rpc->accounts [accounts] (reduce (fn [acc {:keys [chat type wallet] :as account}] (if chat @@ -343,6 +358,10 @@ [cofx] {::initialize-transactions-management-enabled nil}) +(fx/defn initialize-wallet-connect + [cofx] + {::initialize-wallet-connect nil}) + (fx/defn get-node-config-callback {:events [::get-node-config-callback]} [{:keys [db] :as cofx} node-config-json] @@ -377,6 +396,7 @@ (acquisition/login) (initialize-appearance) (initialize-communities-enabled) + (initialize-wallet-connect) (get-node-config) (communities/fetch) (logging/set-log-level (:log-level multiaccount)) diff --git a/src/status_im/navigation.cljs b/src/status_im/navigation.cljs index ecbe11b27a..c39249f510 100644 --- a/src/status_im/navigation.cljs +++ b/src/status_im/navigation.cljs @@ -86,3 +86,20 @@ [_] {:hide-select-acc-sheet nil}) +(fx/defn hide-wallet-connect-sheet + {:events [:hide-wallet-connect-sheet]} + [_] + {:hide-wallet-connect-sheet nil}) + +(fx/defn hide-wallet-connect-success-sheet + {:events [:hide-wallet-connect-success-sheet]} + [_] + {:hide-wallet-connect-success-sheet nil}) + +(fx/defn hide-wallet-connect-app-management-sheet + {:events [:hide-wallet-connect-app-management-sheet]} + [{:keys [db]}] + {:db (-> db + (assoc db :wallet-connect/showing-app-management-sheet? false) + (dissoc :wallet-connect/session-managed)) + :hide-wallet-connect-app-management-sheet nil}) diff --git a/src/status_im/navigation/core.cljs b/src/status_im/navigation/core.cljs index 497074575f..f3fefe6aea 100644 --- a/src/status_im/navigation/core.cljs +++ b/src/status_im/navigation/core.cljs @@ -159,7 +159,7 @@ (.events Navigation) (fn [^js evn] (let [view-id (keyword (.-componentName evn))] - (when-not (#{"popover" "bottom-sheet" "signing-sheet" "visibility-status-popover"} + (when-not (#{"popover" "bottom-sheet" "signing-sheet" "visibility-status-popover" "wallet-connect-sheet" "wallet-connect-success-sheet" "wallet-connect-app-management-sheet"} (.-componentName evn)) (re-frame/dispatch [::view-disappeared view-id]) (doseq [[_ {:keys [ref value]}] @quo.text-input/text-input-refs] @@ -338,6 +338,33 @@ (re-frame/reg-fx :show-bottom-sheet (fn [] (show-overlay "bottom-sheet"))) (re-frame/reg-fx :hide-bottom-sheet (fn [] (dissmiss-overlay "bottom-sheet"))) +;; WALLET CONNECT + +(defonce wallet-connect-sheet-reg + (.registerComponent Navigation + "wallet-connect-sheet" + (fn [] (gestureHandlerRootHOC views/wallet-connect-comp)) + (fn [] views/wallet-connect-comp))) + +(defonce wallet-connect-success-sheet-reg + (.registerComponent Navigation + "wallet-connect-success-sheet" + (fn [] (gestureHandlerRootHOC views/wallet-connect-success-comp)) + (fn [] views/wallet-connect-success-comp))) + +(defonce wallet-connect-app-management-sheet-reg + (.registerComponent Navigation + "wallet-connect-app-management-sheet" + (fn [] (gestureHandlerRootHOC views/wallet-connect-app-management-comp)) + (fn [] views/wallet-connect-app-management-comp))) + +(re-frame/reg-fx :show-wallet-connect-sheet (fn [] (show-overlay "wallet-connect-sheet"))) +(re-frame/reg-fx :hide-wallet-connect-sheet (fn [] (dissmiss-overlay "wallet-connect-sheet"))) +(re-frame/reg-fx :show-wallet-connect-success-sheet (fn [] (show-overlay "wallet-connect-success-sheet"))) +(re-frame/reg-fx :hide-wallet-connect-success-sheet (fn [] (dissmiss-overlay "wallet-connect-success-sheet"))) +(re-frame/reg-fx :show-wallet-connect-app-management-sheet (fn [] (show-overlay "wallet-connect-app-management-sheet"))) +(re-frame/reg-fx :hide-wallet-connect-app-management-sheet (fn [] (dissmiss-overlay "wallet-connect-app-management-sheet"))) + ;; SIGNING (defonce signing-sheet-reg diff --git a/src/status_im/qr_scanner/core.cljs b/src/status_im/qr_scanner/core.cljs index 9d64533b94..18d97bd57d 100644 --- a/src/status_im/qr_scanner/core.cljs +++ b/src/status_im/qr_scanner/core.cljs @@ -78,16 +78,20 @@ (navigation/change-tab :wallet) (navigation/pop-to-root-tab :wallet-stack))) +(fx/defn handle-wallet-connect [cofx data] + {:dispatch [:wallet-connect/pair data]}) + (fx/defn match-scan {:events [::match-scanned-value]} [cofx {:keys [type] :as data}] (case type - :public-chat (handle-public-chat cofx data) - :group-chat (handle-group-chat cofx data) - :private-chat (handle-private-chat cofx data) - :contact (handle-view-profile cofx data) - :browser (handle-browse cofx data) - :eip681 (handle-eip681 cofx data) + :public-chat (handle-public-chat cofx data) + :group-chat (handle-group-chat cofx data) + :private-chat (handle-private-chat cofx data) + :contact (handle-view-profile cofx data) + :browser (handle-browse cofx data) + :eip681 (handle-eip681 cofx data) + :wallet-connect (handle-wallet-connect cofx data) {:dispatch [:navigate-back] :utils/show-popup {:title (i18n/label :t/unable-to-read-this-code) :on-dismiss #(re-frame/dispatch [:pop-to-root-tab :chat-stack])}})) diff --git a/src/status_im/router/core.cljs b/src/status_im/router/core.cljs index 3929b8e95a..cf4b02c126 100644 --- a/src/status_im/router/core.cljs +++ b/src/status_im/router/core.cljs @@ -12,12 +12,15 @@ [status-im.utils.db :as utils.db] [status-im.utils.http :as http] [status-im.chat.models :as chat.models] - [status-im.ethereum.stateofus :as stateofus])) + [status-im.ethereum.stateofus :as stateofus] + [status-im.utils.wallet-connect :as wallet-connect])) (def ethereum-scheme "ethereum:") (def uri-schemes ["status-im://" "status-im:"]) +(def wallet-connect-scheme "wc:") + (def web-prefixes ["https://" "http://" "https://www." "http://wwww."]) (def web2-domain "join.status.im") @@ -226,6 +229,9 @@ (http/url? uri) (cb (match-browser-string uri)) + (wallet-connect/url? uri) + (cb {:type :wallet-connect :data uri}) + :else (cb {:type :undefined :data uri})))) diff --git a/src/status_im/subs.cljs b/src/status_im/subs.cljs index 5463cc328b..6b23adb647 100644 --- a/src/status_im/subs.cljs +++ b/src/status_im/subs.cljs @@ -268,6 +268,14 @@ (reg-root-key-sub :backup/performing-backup :backup/performing-backup) +;; wallet connect +(reg-root-key-sub :wallet-connect/proposal-metadata :wallet-connect/proposal-metadata) +(reg-root-key-sub :wallet-connect/enabled? :wallet-connect/enabled?) +(reg-root-key-sub :wallet-connect/session-connected :wallet-connect/session-connected) +(reg-root-key-sub :wallet-connect/showing-app-management-sheet? :wallet-connect/showing-app-management-sheet?) +(reg-root-key-sub :wallet-connect/sessions :wallet-connect/sessions) +(reg-root-key-sub :wallet-connect/session-managed :wallet-connect/session-managed) + (re-frame/reg-sub :communities :<- [:raw-communities] @@ -640,9 +648,11 @@ :bottom-sheet :<- [:bottom-sheet/show?] :<- [:bottom-sheet/view] - (fn [[show? view]] + :<- [:bottom-sheet/options] + (fn [[show? view options]] {:show? show? - :view view})) + :view view + :options options})) (re-frame/reg-sub :is-contact-selected? diff --git a/src/status_im/ui/components/bottom_panel/views.cljs b/src/status_im/ui/components/bottom_panel/views.cljs index 5b65138bdb..ef0d545cbf 100644 --- a/src/status_im/ui/components/bottom_panel/views.cljs +++ b/src/status_im/ui/components/bottom_panel/views.cljs @@ -43,7 +43,7 @@ :duration 500 :useNativeDriver true})]))) -(defn bottom-panel [_ render window-height on-close] +(defn bottom-panel [_ render window-height on-close on-touch-outside show-overlay?] (let [bottom-anim-value (anim/create-value window-height) alpha-value (anim/create-value 0) clear-timeout (atom nil) @@ -97,8 +97,12 @@ :ignore-offset true} [react/view {:flex 1} - (when platform/ios? + (when (and platform/ios? show-overlay?) [react/animated-view {:flex 1 :background-color colors/black-persist :opacity alpha-value}]) + (when on-touch-outside + [react/touchable-opacity {:active-opacity 0 + :on-press on-touch-outside + :style {:flex 1}}]) [react/animated-view {:style {:position :absolute :transform [{:translateY bottom-anim-value}] :bottom 0 :left 0 :right 0}} @@ -108,6 +112,6 @@ #(do (on-close) nil)))}))) -(views/defview animated-bottom-panel [val signing-view on-close] +(views/defview animated-bottom-panel [val view on-close on-touch-outside show-overlay?] (views/letsubs [{window-height :height} [:dimensions/window]] - [bottom-panel (when val (select-keys val [:from :contact :amount :token :approve? :message :cancel? :hash])) signing-view window-height on-close])) + [bottom-panel (when val (select-keys val [:from :contact :amount :token :approve? :message :cancel? :hash :name :url :icons :description :topic :relay :self :peer :permissions :state])) view window-height on-close on-touch-outside (if-not (nil? show-overlay?) show-overlay? true)])) diff --git a/src/status_im/ui/components/react.cljs b/src/status_im/ui/components/react.cljs index a4a9fbc4fb..ae2d358f5b 100644 --- a/src/status_im/ui/components/react.cljs +++ b/src/status_im/ui/components/react.cljs @@ -13,7 +13,8 @@ ["@react-native-community/clipboard" :default Clipboard] ["react-native-linear-gradient" :default LinearGradient] ["react-native-navigation" :refer (Navigation)] - ["react-native-fast-image" :as FastImage]) + ["react-native-fast-image" :as FastImage] + ["@react-native-community/blur" :as blur]) (:require-macros [status-im.utils.views :as views])) (def native-modules (.-NativeModules react-native)) @@ -39,6 +40,8 @@ (def linear-gradient (reagent/adapt-react-class LinearGradient)) +(def blur-view (reagent/adapt-react-class (.-BlurView blur))) + (defn valid-source? [source] (or (not (map? source)) (not (contains? source :uri)) diff --git a/src/status_im/ui/screens/advanced_settings/views.cljs b/src/status_im/ui/screens/advanced_settings/views.cljs index 6df2f46275..96f2520b18 100644 --- a/src/status_im/ui/screens/advanced_settings/views.cljs +++ b/src/status_im/ui/screens/advanced_settings/views.cljs @@ -13,7 +13,8 @@ transactions-management-enabled? wakuv2-flag current-fleet - webview-debug]}] + webview-debug + wallet-connect-enabled?]}] (keep identity [{:size :small @@ -112,7 +113,16 @@ #(re-frame/dispatch [:multiaccounts.ui/waku-bloom-filter-mode-switched (not waku-bloom-filter-mode)]) :accessory :switch - :active waku-bloom-filter-mode}])) + :active waku-bloom-filter-mode} + {:size :small + :title (i18n/label :t/wallet-connect-2.0) + :accessibility-label :wallet-connect-settings-switch + :container-margin-bottom 8 + :on-press + #(re-frame/dispatch + [:multiaccounts.ui/switch-wallet-connect-enabled (not wallet-connect-enabled?)]) + :accessory :switch + :active wallet-connect-enabled?}])) (defn- flat-list-data [options] (normal-mode-settings-data options)) @@ -130,7 +140,8 @@ communities-enabled? [:communities/enabled?] transactions-management-enabled? [:wallet/transactions-management-enabled?] current-log-level [:log-level/current-log-level] - current-fleet [:fleets/current-fleet]] + current-fleet [:fleets/current-fleet] + wallet-connect-enabled? [:wallet-connect/enabled?]] [list/flat-list {:data (flat-list-data {:network-name network-name @@ -141,6 +152,7 @@ :dev-mode? false :wakuv2-flag wakuv2-flag :waku-bloom-filter-mode waku-bloom-filter-mode - :webview-debug webview-debug}) + :webview-debug webview-debug + :wallet-connect-enabled? wallet-connect-enabled?}) :key-fn (fn [_ i] (str i)) :render-fn render-item}])) diff --git a/src/status_im/ui/screens/bottom_sheets/views.cljs b/src/status_im/ui/screens/bottom_sheets/views.cljs index 55067a7876..86c4171bf1 100644 --- a/src/status_im/ui/screens/bottom_sheets/views.cljs +++ b/src/status_im/ui/screens/bottom_sheets/views.cljs @@ -9,7 +9,7 @@ [quo.core :as quo])) (defn bottom-sheet [] - (let [{:keys [show? view]} @(re-frame/subscribe [:bottom-sheet]) + (let [{:keys [show? view options]} @(re-frame/subscribe [:bottom-sheet]) {:keys [content] :as opts} (cond-> {:visible? show? @@ -40,4 +40,4 @@ (merge key-storage/migrate-account-password))] [quo/bottom-sheet opts (when content - [content])])) + [content (when options options)])])) diff --git a/src/status_im/ui/screens/notifications_center/views/notification.cljs b/src/status_im/ui/screens/notifications_center/views/notification.cljs index 467d46cb4d..55eb68beb4 100644 --- a/src/status_im/ui/screens/notifications_center/views/notification.cljs +++ b/src/status_im/ui/screens/notifications_center/views/notification.cljs @@ -71,7 +71,7 @@ :size :small} name] [icons/icon - :main-icons/chevron-down + :main-icons/chevron-right {:color colors/gray :width 16 :height 22}]]) diff --git a/src/status_im/ui/screens/views.cljs b/src/status_im/ui/screens/views.cljs index 49c6e506f3..64bc33ec03 100644 --- a/src/status_im/ui/screens/views.cljs +++ b/src/status_im/ui/screens/views.cljs @@ -13,7 +13,8 @@ [quo.design-system.colors :as colors] [status-im.utils.config :as config] [status-im.keycard.test-menu :as keycard.test-menu] - [status-im.utils.platform :as platform])) + [status-im.utils.platform :as platform] + [status-im.ui.screens.wallet-connect.session-proposal.views :as wallet-connect])) (defn get-screens [] (reduce @@ -112,7 +113,7 @@ (def signing-comp (reagent/reactify-component (fn [] - ^{:key (str "signing-seet" @reloader/cnt)} + ^{:key (str "signing-sheet" @reloader/cnt)} [react/safe-area-provider [inactive] [signing/signing] @@ -128,3 +129,33 @@ [wallet.send.views/select-account] (when js/goog.DEBUG [reloader/reload-view])]))) + +(def wallet-connect-comp + (reagent/reactify-component + (fn [] + ^{:key (str "wallet-connect-sheet" @reloader/cnt)} + [react/safe-area-provider + [inactive] + [wallet-connect/wallet-connect-proposal-sheet] + (when js/goog.DEBUG + [reloader/reload-view])]))) + +(def wallet-connect-success-comp + (reagent/reactify-component + (fn [] + ^{:key (str "wallet-connect-success-sheet" @reloader/cnt)} + [react/safe-area-provider + [inactive] + [wallet-connect/wallet-connect-success-sheet-view] + (when js/goog.DEBUG + [reloader/reload-view])]))) + +(def wallet-connect-app-management-comp + (reagent/reactify-component + (fn [] + ^{:key (str "wallet-connect-app-management-sheet" @reloader/cnt)} + [react/safe-area-provider + [inactive] + [wallet-connect/wallet-connect-app-management-sheet-view] + (when js/goog.DEBUG + [reloader/reload-view])]))) \ No newline at end of file diff --git a/src/status_im/ui/screens/wallet_connect/session_proposal/styles.cljs b/src/status_im/ui/screens/wallet_connect/session_proposal/styles.cljs new file mode 100644 index 0000000000..a1f152ce4c --- /dev/null +++ b/src/status_im/ui/screens/wallet_connect/session_proposal/styles.cljs @@ -0,0 +1,144 @@ +(ns status-im.ui.screens.wallet-connect.session-proposal.styles + (:require [quo.design-system.colors :as colors])) + +(defn toolbar-container [background-color] + {:height 36 + :border-radius 18 + :background-color background-color + :align-items :center + :flex-direction :row + :padding-left 13 + :padding-right 6}) + +(def toolbar-text + {:flex-grow 1 + :margin-right 3}) + +(defn dapp-logo [] + {:width 120 + :height 120 + :resize-mode :cover + :margin-top 31 + :border-radius 16 + :border-width 2 + :border-color (:interactive-02 @colors/theme) + :padding 5}) + +(def sheet-body-container + {:flex 1 + :align-items :center}) + +(defn acc-sheet [] + {:background-color (:ui-background @colors/theme) + :border-top-right-radius 16 + :border-top-left-radius 16 + :padding-bottom 1}) + +(defn proposal-sheet-container [] + {:background-color (:ui-background @colors/theme) + :width "100%" + :align-items :center + :padding-top 0 + :padding-bottom 50 + :border-top-right-radius 16 + :border-top-left-radius 16}) + +(defn proposal-sheet-header [] + {:flex-direction :row + :align-items :center + :justify-content :center + :height 56 + :width "100%" + :border-color colors/gray-lighter + :border-bottom-width 1}) + +(def proposal-title-container + {:align-items :center + :margin-top 21}) + +(def message-title + {:margin-top 10 + :margin-bottom 14 + :margin-horizontal 72.5 + :text-align :center}) + +(defn proposal-buttons-container [] + {:width "100%" + :height 76 + :border-color colors/gray-lighter + :border-top-width 1 + :flex 1 + :flex-direction :row + :justify-content :space-between + :align-items :center + :padding-horizontal 16}) + +(defn success-button-container [] + {:width "100%" + :height 76 + :border-color colors/gray-lighter + :border-top-width 1 + :flex-direction :row + :justify-content :flex-end + :align-items :center + :padding-horizontal 16}) + +(defn account-container [color account-selected?] + {:height 34 + :background-color color + :border-radius 17 + :padding-horizontal 10 + :justify-content :center + :margin-right 4 + :opacity (if account-selected? 1 0.5)}) + +(def account-selector-container + {:height 80 + :width "100%" + :justify-content :center + :padding-horizontal 16}) + +(def account-selector-wrapper + {:margin-top 40 + :width "100%"}) + +(def account-selector-list + {:height 40 + :width "100%" + :margin-top 10}) + +(def single-account-container + {:width "100%" + :align-items :center + :padding-top 8}) + +(defn blur-view [] + {:position :absolute + :top 60 + :left 0 + :right 0 + :bottom 0 + :background-color (:blurred-bg @colors/theme)}) + +(def shadow + {:width "100%" + :height 50 + :opacity 0.3}) + +(defn management-sheet-header [] + {:width "100%" + :flex-direction :row + :padding 16 + :align-items :center + :border-bottom-width 1 + :border-bottom-color colors/gray-lighter}) + +(def management-icon + {:width 40 + :height 40 + :border-radius 20 + :margin-right 16}) + +(def app-info-container + {:flex-direction :column + :flex 1}) \ No newline at end of file diff --git a/src/status_im/ui/screens/wallet_connect/session_proposal/views.cljs b/src/status_im/ui/screens/wallet_connect/session_proposal/views.cljs new file mode 100644 index 0000000000..3b031a72a3 --- /dev/null +++ b/src/status_im/ui/screens/wallet_connect/session_proposal/views.cljs @@ -0,0 +1,205 @@ +(ns status-im.ui.screens.wallet-connect.session-proposal.views + (:require-macros [status-im.utils.views :refer [defview letsubs]]) + (:require [re-frame.core :as re-frame] + [status-im.ui.components.react :as react] + [status-im.i18n.i18n :as i18n] + [status-im.utils.security] + [quo.design-system.colors :as colors] + [quo.core :as quo] + [status-im.ui.components.icons.icons :as icons] + [status-im.ui.components.bottom-panel.views :as bottom-panel] + [status-im.ui.screens.wallet-connect.session-proposal.styles :as styles] + [status-im.ui.components.list.views :as list] + [reagent.core :as reagent] + [clojure.string :as string] + [quo.platform :as platform])) + +(def chevron-icon-container-width 24) + +(def chevron-icon-container-height 24) + +(defn toolbar-selection [{:keys [text background-color on-press]}] + [react/touchable-opacity {:on-press on-press} + [react/view (styles/toolbar-container background-color) + [quo/text {:color :inverse + :weight :medium + :style styles/toolbar-text} + text] + [icons/icon + :main-icons/chevron-down + {:color (:text-05 @colors/theme) + :width chevron-icon-container-width + :height chevron-icon-container-height}]]]) + +(def show-account-selector? (reagent/atom false)) + +(defn render-account [{:keys [address name color] :as account} _ _ {:keys [selected-account on-select]}] + (let [account-selected? (= (:address @selected-account) address)] + [react/touchable-without-feedback {:on-press #(do + (reset! selected-account (merge {} account)) + (when on-select (on-select)))} + [react/view (styles/account-container color account-selected?) + [quo/text {:color :inverse + :weight (if account-selected? :medium :regular)} + name]]])) + +(defn account-selector [accounts selected-account-atom on-select] + [react/view styles/account-selector-container + [quo/text {:size :small} (i18n/label :t/select-account)] + [list/flat-list {:data accounts + :key-fn :address + :render-fn render-account + :render-data {:selected-account selected-account-atom + :on-select on-select} + :horizontal true + :shows-horizontal-scroll-indicator false + :extra-data @selected-account-atom + :style styles/account-selector-list}]]) + +(defn account-picker [accounts selected-account-atom {:keys [on-press on-select]}] + (if (> (count accounts) 1) + [react/view {:style styles/account-selector-wrapper} + [account-selector accounts selected-account-atom on-select]] + [react/touchable-opacity {:style styles/single-account-container} + [toolbar-selection {:text (:name @selected-account-atom) + :background-color (:color @selected-account-atom) + :on-press on-press}]])) + +(defview success-sheet-view [{:keys [topic]}] + (letsubs [visible-accounts [:visible-accounts-without-watch-only] + dapps-account [:dapps-account] + sessions [:wallet-connect/sessions] + managed-session [:wallet-connect/session-managed]] + (let [{:keys [peer state] :as session} (first (filter #(= (:topic %) topic) sessions)) + {:keys [accounts]} state + {:keys [metadata]} peer + {:keys [name icons]} metadata + icon-uri (when (and icons (> (count icons) 0)) (first icons)) + address (last (string/split (first accounts) #":")) + account (first (filter #(= (:address %) address) visible-accounts)) + selected-account-atom (reagent/atom account)] + [react/view (styles/proposal-sheet-container) + [react/view (styles/proposal-sheet-header) + [quo/text {:weight :bold + :size :large} + (i18n/label :t/connection-request)]] + [react/image {:style (styles/dapp-logo) + :source {:uri icon-uri}}] + [react/view styles/sheet-body-container + [react/view styles/proposal-title-container + [quo/text {:weight :bold + :size :large} + name] + [quo/text {:weight :regular + :size :large} + (i18n/label :t/connected)]]] + [account-picker + (vector dapps-account) + selected-account-atom + {:on-press #(do + (re-frame/dispatch [:wallet-connect/manage-app session]) + (reset! show-account-selector? true))}] + [quo/text {:weight :regular + :color :secondary + :style styles/message-title} + (i18n/label :t/manage-connections)] + [react/view (styles/success-button-container) + [quo/button + {:theme :accent + :on-press #(do + (reset! show-account-selector? false) + (re-frame/dispatch [:hide-wallet-connect-success-sheet]))} + (i18n/label :t/close)]] + (when managed-session + (if platform/ios? + [react/blur-view {:style (styles/blur-view) + :blurAmount 2 + :blurType (if (colors/dark?) :dark :light)}] + [react/view (styles/blur-view)]))]))) + +(defview app-management-sheet-view [{:keys [topic]}] + (letsubs [sessions [:wallet-connect/sessions] + visible-accounts [:visible-accounts-without-watch-only]] + (let [{:keys [peer state]} (first (filter #(= (:topic %) topic) sessions)) + {:keys [accounts]} state + {:keys [metadata]} peer + {:keys [name icons url]} metadata + icon-uri (when (and icons (> (count icons) 0)) (first icons)) + account-address (last (string/split (first accounts) #":")) + selected-account-atom (reagent/atom (first (filter #(= (:address %) account-address) visible-accounts)))] + [react/view {:style (merge (styles/acc-sheet) {:background-color "rgba(0,0,0,0)"})} + [react/linear-gradient {:colors ["rgba(0,0,0,0)" "rgba(0,0,0,0.3)"] + :start {:x 0 :y 0} :end {:x 0 :y 1} + :style styles/shadow}] + [react/view (styles/proposal-sheet-container) + [react/view (styles/management-sheet-header) + [react/image {:style styles/management-icon + :source {:uri icon-uri}}] + [react/view styles/app-info-container + [quo/text {:weight :medium} name] + [quo/text {:color :secondary + :number-of-lines 1 + :elipsize-mode :tail} url]] + [quo/button + {:type :secondary + :theme :secondary + :on-press #(re-frame/dispatch [:wallet-connect/disconnect topic])} + (i18n/label :t/disconnect)]] + [account-selector + visible-accounts + selected-account-atom + #(re-frame/dispatch [:wallet-connect/change-session-account topic @selected-account-atom])]]]))) + +(defview session-proposal-sheet [{:keys [name icons]}] + (letsubs [visible-accounts [:visible-accounts-without-watch-only] + dapps-account [:dapps-account]] + (let [icon-uri (when (and icons (> (count icons) 0)) (first icons)) + selected-account-atom (reagent/atom dapps-account)] + [react/view (styles/proposal-sheet-container) + [react/view (styles/proposal-sheet-header) + [quo/text {:weight :bold + :size :large} + (i18n/label :t/connection-request)]] + [react/image {:style (styles/dapp-logo) + :source {:uri icon-uri}}] + [react/view styles/sheet-body-container + [react/view styles/proposal-title-container + [quo/text {:weight :bold + :size :large} + (str name " ")] + [quo/text {:weight :regular + :size :large} + (i18n/label :t/wallet-connect-proposal-title)]]] + [account-picker visible-accounts selected-account-atom] + [react/view (merge (styles/proposal-buttons-container) (when (= (count visible-accounts) 1) {:margin-top 12})) + [quo/button + {:type :secondary + :on-press #(re-frame/dispatch [:wallet-connect/reject-proposal])} + (i18n/label :t/reject)] + [quo/button + {:theme :accent + :on-press #(re-frame/dispatch [:wallet-connect/approve-proposal @selected-account-atom])} + (i18n/label :t/connect)]]]))) + +(defview wallet-connect-proposal-sheet [] + (letsubs [proposal-metadata [:wallet-connect/proposal-metadata]] + [bottom-panel/animated-bottom-panel + proposal-metadata + session-proposal-sheet + #(re-frame/dispatch [:hide-wallet-connect-sheet])])) + +(defview wallet-connect-success-sheet-view [] + (letsubs [session [:wallet-connect/session-connected]] + [bottom-panel/animated-bottom-panel + session + success-sheet-view + #(re-frame/dispatch [:hide-wallet-connect-success-sheet])])) + +(defview wallet-connect-app-management-sheet-view [] + (letsubs [session [:wallet-connect/session-managed]] + [bottom-panel/animated-bottom-panel + session + app-management-sheet-view + #(re-frame/dispatch [:hide-wallet-connect-app-management-sheet]) + #(re-frame/dispatch [:hide-wallet-connect-app-management-sheet]) + false])) diff --git a/src/status_im/utils/config.cljs b/src/status_im/utils/config.cljs index 6edbe504ae..0a74ebad05 100644 --- a/src/status_im/utils/config.cljs +++ b/src/status_im/utils/config.cljs @@ -167,3 +167,12 @@ "giphy.com" "gph.is" "media.giphy.com"}) + +(def default-relay-provider "https://relay.walletconnect.com") + +(def default-wallet-connect-metadata {:name "Status Wallet" + :description "Status is a secure messaging app, crypto wallet, and Web3 browser built with state of the art technology." + :url "#" + :icons ["https://statusnetwork.com/img/press-kit-status-logo.svg"]}) + +(def wallet-connect-project-id "87815d72a81d739d2a7ce15c2cfdefb3") \ No newline at end of file diff --git a/src/status_im/utils/wallet_connect.cljs b/src/status_im/utils/wallet_connect.cljs new file mode 100644 index 0000000000..9489f71e72 --- /dev/null +++ b/src/status_im/utils/wallet_connect.cljs @@ -0,0 +1,28 @@ +(ns status-im.utils.wallet-connect + (:require ["@walletconnect/client" :refer [CLIENT_EVENTS] :default WalletConnectClient] + ["@react-native-community/async-storage" :default AsyncStorage] + [clojure.string :as string] + [status-im.utils.config :as config])) + +(defn init [on-success on-error] + (-> ^js WalletConnectClient + (.init (clj->js {:controller true + :projectId config/wallet-connect-project-id + :logger "debug" + :metadata config/default-wallet-connect-metadata + :storageOptions {:asyncStorage ^js AsyncStorage}})) + (.then on-success) + (.catch on-error))) + +(defn session-request-event [] (.-request (.-session CLIENT_EVENTS))) + +(defn session-created-event [] (.-created (.-session CLIENT_EVENTS))) + +(defn session-deleted-event [] (.-deleted (.-session CLIENT_EVENTS))) + +(defn session-proposal-event [] (.-proposal (.-session CLIENT_EVENTS))) + +(defn session-updated-event [] (.-updated (.-session CLIENT_EVENTS))) + +(defn url? [url] + (string/starts-with? url "wc:")) \ No newline at end of file diff --git a/src/status_im/wallet_connect/core.cljs b/src/status_im/wallet_connect/core.cljs new file mode 100644 index 0000000000..7f3ebe2e99 --- /dev/null +++ b/src/status_im/wallet_connect/core.cljs @@ -0,0 +1,273 @@ +(ns status-im.wallet-connect.core + (:require [clojure.string :as string] + [re-frame.core :as re-frame] + [status-im.constants :as constants] + [status-im.ethereum.core :as ethereum] + [status-im.utils.fx :as fx] + [status-im.signing.core :as signing] + [status-im.utils.wallet-connect :as wallet-connect] + [status-im.browser.core :as browser] + [taoensso.timbre :as log] + [status-im.async-storage.core :as async-storage] + [status-im.utils.config :as config] + [status-im.utils.types :as types])) + +(fx/defn switch-wallet-connect-enabled + {:events [:multiaccounts.ui/switch-wallet-connect-enabled]} + [{:keys [db]} enabled?] + (merge + {::async-storage/set! {:wallet-connect-enabled? enabled?} + :db (cond-> db + (not enabled?) + (dissoc :wallet-connect/client) + :always + (assoc :wallet-connect/enabled? enabled?))} + (when enabled? {:wc-2-init nil}))) + +(fx/defn proposal-handler + {:events [:wallet-connect/proposal]} + [{:keys [db] :as cofx} request-event] + (let [proposal (types/js->clj request-event) + proposer (:proposer proposal) + metadata (:metadata proposer)] + {:db (assoc db :wallet-connect/proposal proposal :wallet-connect/proposal-metadata metadata) + :show-wallet-connect-sheet nil})) + +(fx/defn session-connected + {:events [:wallet-connect/created]} + [{:keys [db]} session] + (let [session (types/js->clj session) + client (get db :wallet-connect/client)] + (log/debug "[wallet connect] session created - " session) + {:show-wallet-connect-success-sheet nil + :db (assoc db :wallet-connect/session-connected session :wallet-connect/sessions (types/js->clj (.-values (.-session client))))})) + +(fx/defn manage-app + {:events [:wallet-connect/manage-app]} + [{:keys [db]} session] + (let [session (types/js->clj session)] + {:db (assoc db :wallet-connect/session-managed session :wallet-connect/showing-app-management-sheet? true) + :show-wallet-connect-app-management-sheet nil})) + +(fx/defn request-handler + {:events [:wallet-connect/request]} + [{:keys [db] :as cofx} request-event] + (let [request (types/js->clj request-event) + params (:request request) + pending-requests (or (:wallet-connect/pending-requests db) []) + new-pending-requests (conj pending-requests request) + client (get db :wallet-connect/client) + topic (:topic request)] + {:db (assoc db :wallet-connect/pending-requests new-pending-requests) + :dispatch [:wallet-connect/request-received request]})) + +(fx/defn request-handler-test + {:events [:wallet-connect/request-test]} + [{:keys [db] :as cofx}] + {:show-wallet-connect-sheet nil}) + +(defn subscribe-to-events [wallet-connect-client] + (.on wallet-connect-client (wallet-connect/session-request-event) #(re-frame/dispatch [:wallet-connect/request %])) + (.on wallet-connect-client (wallet-connect/session-created-event) #(re-frame/dispatch [:wallet-connect/created %])) + (.on wallet-connect-client (wallet-connect/session-deleted-event) #(re-frame/dispatch [:wallet-connect/update-sessions])) + (.on wallet-connect-client (wallet-connect/session-updated-event) #(re-frame/dispatch [:wallet-connect/update-sessions])) + (.on wallet-connect-client (wallet-connect/session-proposal-event) #(re-frame/dispatch [:wallet-connect/proposal %]))) + +(re-frame/reg-fx + :wc-2-init + (fn [] + (wallet-connect/init + #(re-frame/dispatch [:wallet-connect/client-init %]) + #(log/error "[wallet-connect]" %)))) + +(re-frame/reg-fx + :wc-2-subscribe-to-events + (fn [client] + (subscribe-to-events client))) + +(re-frame/reg-fx + :wc-2-client-approve-proposal + (fn [[client proposal response]] + (-> ^js client + (.approve (clj->js {:proposal proposal :response response})) + (.then #(log/debug "[wallet-connect] session proposal approved")) + (.catch #(log/error "[wallet-connect] session proposal approval error:" %))))) + +(re-frame/reg-fx + :wc-2-client-reject-proposal + (fn [[client proposal]] + (-> ^js client + (.reject (clj->js {:proposal proposal})) + (.then #(log/debug "[wallet-connect] session proposal rejected")) + (.catch #(log/error "[wallet-connect] " %))))) + +(re-frame/reg-fx + :wc-2-client-disconnect + (fn [[client topic]] + (-> ^js client + (.disconnect (clj->js {:topic topic})) + (.then #(log/debug "[wallet-connect] session disconnected - topic " topic)) + (.catch #(log/error "[wallet-connect] " %))))) + +(re-frame/reg-fx + :wc-2-change-session + (fn [[client topic accounts]] + (-> ^js client + (.update (clj->js {:topic topic + :state {:accounts accounts}})) + (.then #(log/debug "[wallet-connect] session topic " topic " changed to account " (first accounts))) + (.catch #(log/error "[wallet-connect] " %))))) + +(re-frame/reg-fx + :wc-2-change-session + (fn [[client topic accounts]] + (-> ^js client + (.update (clj->js {:topic topic + :state {:accounts accounts}})) + (.then #(log/debug "[wallet-connect] session topic " topic " changed to account " (first accounts))) + (.catch #(log/error "[wallet-connect] " %))))) + +(re-frame/reg-fx + :wc-2-pair + (fn [[client uri]] + (.pair client (clj->js {:uri uri})))) + +(re-frame/reg-fx + :wc-2-respond + (fn [[client response]] + (.respond client (clj->js response)))) + +(fx/defn approve-proposal + {:events [:wallet-connect/approve-proposal]} + [{:keys [db]} account] + (let [client (get db :wallet-connect/client) + proposal (get db :wallet-connect/proposal) + topic (:topic proposal) + permissions (:permissions proposal) + blockchain (:blockchain permissions) + proposal-chain-ids (map #(last (string/split % #":")) (:chains blockchain)) + available-chain-ids (map #(get-in % [:config :NetworkId]) (vals (get db :networks/networks))) + supported-chain-ids (filter (fn [chain-id] #(boolean (some #{chain-id} available-chain-ids))) proposal-chain-ids) + address (:address account) + accounts (map #(str "eip155:" % ":" (ethereum/normalized-hex address)) supported-chain-ids) + ;; TODO: Check for unsupported + metadata (get db :wallet-connect/proposal-metadata) + response {:state {:accounts accounts} + :metadata config/default-wallet-connect-metadata}] + {:hide-wallet-connect-sheet nil + :wc-2-client-approve-proposal [client proposal response]})) + +(fx/defn reject-proposal + {:events [:wallet-connect/reject-proposal]} + [{:keys [db]} account] + (let [client (get db :wallet-connect/client) + proposal (get db :wallet-connect/proposal)] + {:hide-wallet-connect-sheet nil + :wc-2-client-reject-proposal client})) + +(fx/defn change-session-account + {:events [:wallet-connect/change-session-account]} + [{:keys [db]} topic account] + (let [client (get db :wallet-connect/client) + sessions (get db :wallet-connect/sessions) + session (first (filter #(= (:topic %) topic) sessions)) + permissions (:permissions session) + blockchain (:blockchain permissions) + proposal-chain-ids (map #(last (string/split % #":")) (:chains blockchain)) + address (:address account) + available-chain-ids (map #(get-in % [:config :NetworkId]) (vals (get db :networks/networks))) + supported-chain-ids (filter (fn [chain-id] #(boolean (some #{chain-id} available-chain-ids))) proposal-chain-ids) + accounts (map #(str "eip155:" % ":" (ethereum/normalized-hex address)) supported-chain-ids)] + {:db (assoc db :wallet-connect/showing-app-management-sheet? false) + :hide-wallet-connect-app-management-sheet nil + :wc-2-change-session [client topic accounts]})) + +(fx/defn disconnect-session + {:events [:wallet-connect/disconnect]} + [{:keys [db]} topic] + (let [client (get db :wallet-connect/client)] + {:hide-wallet-connect-app-management-sheet nil + :hide-wallet-connect-success-sheet nil + :wc-2-client-disconnect [client topic] + :db (-> db + (assoc :wallet-connect/sessions (types/js->clj (.-values (.-session client)))) + (dissoc :wallet-connect/session-managed))})) + +(fx/defn pair-session + {:events [:wallet-connect/pair]} + [{:keys [db]} {:keys [data]}] + (let [client (get db :wallet-connect/client) + wallet-connect-enabled? (get db :wallet-connect/enabled?)] + (merge + {:dispatch [:navigate-back]} + (when wallet-connect-enabled? + {:db (assoc db :wallet-connect/scanned-uri data) + :wc-2-pair [client data]})))) + +(fx/defn wallet-connect-client-initate + {:events [:wallet-connect/client-init]} + [{:keys [db] :as cofx} client] + {:db (assoc db :wallet-connect/client client :wallet-connect/sessions (types/js->clj (.-values (.-session client)))) + :wc-2-subscribe-to-events client}) + +(fx/defn update-sessions + {:events [:wallet-connect/update-sessions]} + [{:keys [db] :as cofx}] + (let [client (get db :wallet-connect/client)] + {:db (-> db + (assoc :wallet-connect/sessions (types/js->clj (.-values (.-session client)))) + (dissoc :wallet-connect/session-managed))})) + +(fx/defn wallet-connect-complete-transaction + {:events [:wallet-connect.dapp/transaction-on-result]} + [{:keys [db]} message-id topic result] + (let [client (get db :wallet-connect/client) + response {:topic topic + :response {:jsonrpc "2.0" + :id message-id + :result result}}] + {:db (assoc db :wallet-connect/response response) + :wc-2-respond [client response]})) + +(fx/defn wallet-connect-send-async + [cofx {:keys [method params id] :as payload} message-id topic] + (let [message? (browser/web3-sign-message? method) + dapps-address (get-in cofx [:db :multiaccount :dapps-address]) + accounts (get-in cofx [:db :multiaccount/visible-accounts]) + typed? (and (not= constants/web3-personal-sign method) (not= constants/web3-eth-sign method))] + (if (or message? (= constants/web3-send-transaction method)) + (let [[address data] (cond (and (= method constants/web3-keycard-sign-typed-data) + (not (vector? params))) + ;; We don't use signer argument for keycard sign-typed-data + ["0x0" params] + message? (browser/normalize-sign-message-params params typed?) + :else [nil nil])] + (when (or (not message?) (and address data)) + (signing/sign cofx (merge + (if message? + {:message {:address address + :data data + :v4 (= constants/web3-sign-typed-data-v4 method) + :typed? typed? + :pinless? (= method constants/web3-keycard-sign-typed-data) + :from address}} + {:tx-obj (-> params + first + (update :from #(or % dapps-address)) + (dissoc :gasPrice))}) + {:on-result [:wallet-connect.dapp/transaction-on-result message-id topic] + :on-error [:wallet-connect.dapp/transaction-on-error message-id topic]})))) + (when (#{"eth_accounts" "eth_coinbase"} method) + (wallet-connect-complete-transaction cofx message-id topic (if (= method "eth_coinbase") dapps-address [dapps-address])))))) + +(fx/defn wallet-connect-send-async-read-only + [{:keys [db] :as cofx} {:keys [method] :as payload} message-id topic] + (wallet-connect-send-async cofx payload message-id topic)) + +(fx/defn process-request + {:events [:wallet-connect/request-received]} + [{:keys [db] :as cofx} session-request] + (let [pending-requests (get db :wallet-connect/pending-requests) + {:keys [topic request]} session-request + {:keys [id]} request] + (wallet-connect-send-async-read-only cofx request id topic))) diff --git a/translations/en.json b/translations/en.json index 417c651f69..90beb2176b 100644 --- a/translations/en.json +++ b/translations/en.json @@ -1738,5 +1738,15 @@ "current-average": "Current average", "current-base": "Current base", "maximum-fee-desc": "Maximum overall price for the transaction. If the current block base fee exceeds this, your transaction will be included in a following block with a lower base fee.", - "insufficient-balance-to-cover-fee": "not enough balance to cover transaction fee" + "insufficient-balance-to-cover-fee": "not enough balance to cover transaction fee", + "wallet-connect-proposal-title": "Would like to connect with your wallet", + "wallet-connect-proposal-description": "By connecting you allow {{name}} to retrieve your account address and enable Web3", + "wallet-connect-app-connected": "is connected", + "wallet-connect-go-back": "Go back to your browser or dapp", + "wallet-connect-2.0": "Wallet Connect 2.0", + "reject": "Reject", + "manage-connections": "Manage connections from within Application Connections", + "wallet-manage-app-connections": "Manage app connections", + "connection-request": "Connection Request", + "disconnect": "Disconnect" } diff --git a/yarn.lock b/yarn.lock index b54dd709b5..f06203e004 100644 --- a/yarn.lock +++ b/yarn.lock @@ -982,6 +982,11 @@ resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-1.3.2.tgz#0a7095adea067243ce3283e1b56b8a8f453b242a" integrity sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA== +"@hapi/bourne@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.0.0.tgz#5bb2193eb685c0007540ca61d166d4e1edaf918d" + integrity sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg== + "@hapi/hoek@8.x.x", "@hapi/hoek@^8.3.0": version "8.5.1" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-8.5.1.tgz#fde96064ca446dec8c55a8c2f130957b070c6e06" @@ -1246,6 +1251,13 @@ eventemitter3 "^1.2.0" lodash "^4.17.15" +"@react-native-community/blur@^3.6.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/@react-native-community/blur/-/blur-3.6.0.tgz#31c9e0f2770519c9b5c4f99418f192246f0d4db8" + integrity sha512-GtDBhpX2pQcjl4VopOC8FktrVufrEfYRwVeMQ2WWckqKIv2BdwvlvWvj88L1WmEdBr9UNcm3rtgz+d+YXkmirA== + dependencies: + prop-types "^15.5.10" + "@react-native-community/cameraroll@git+https://github.com/status-im/react-native-cameraroll.git#v4.0.4-status.0": version "4.0.4" resolved "git+https://github.com/status-im/react-native-cameraroll.git#337c5a515e9b0f0728882f73568075553415f523" @@ -1409,6 +1421,52 @@ dependencies: type-detect "4.0.8" +"@stablelib/binary@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/binary/-/binary-1.0.1.tgz#c5900b94368baf00f811da5bdb1610963dfddf7f" + integrity sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q== + dependencies: + "@stablelib/int" "^1.0.1" + +"@stablelib/bytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/bytes/-/bytes-1.0.1.tgz#0f4aa7b03df3080b878c7dea927d01f42d6a20d8" + integrity sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ== + +"@stablelib/int@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/int/-/int-1.0.1.tgz#75928cc25d59d73d75ae361f02128588c15fd008" + integrity sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w== + +"@stablelib/keyagreement@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/keyagreement/-/keyagreement-1.0.1.tgz#4612efb0a30989deb437cd352cee637ca41fc50f" + integrity sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg== + dependencies: + "@stablelib/bytes" "^1.0.1" + +"@stablelib/random@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/random/-/random-1.0.1.tgz#4357a00cb1249d484a9a71e6054bc7b8324a7009" + integrity sha512-zOh+JHX3XG9MSfIB0LZl/YwPP9w3o6WBiJkZvjPoKKu5LKFW4OLV71vMxWp9qG5T43NaWyn0QQTWgqCdO+yOBQ== + dependencies: + "@stablelib/binary" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + +"@stablelib/wipe@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/wipe/-/wipe-1.0.1.tgz#d21401f1d59ade56a62e139462a97f104ed19a36" + integrity sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg== + +"@stablelib/x25519@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@stablelib/x25519/-/x25519-1.0.1.tgz#bcd6132ac4dd94f28f1479e228c85b3468d6ed27" + integrity sha512-nmyUI2ZArxYDh1PhdoSCPEtlTYE0DYugp2qqx8OtjrX3Hmh7boIlDsD0X71ihAxzxqJf3TyQqN/p58ToWhnp+Q== + dependencies: + "@stablelib/keyagreement" "^1.0.1" + "@stablelib/random" "^1.0.1" + "@stablelib/wipe" "^1.0.1" + "@types/babel__core@^7.1.7": version "7.1.7" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" @@ -1506,6 +1564,154 @@ dependencies: "@types/yargs-parser" "*" +"@walletconnect/client@^2.0.0-beta.23": + version "2.0.0-beta.23" + resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-2.0.0-beta.23.tgz#934f91beb66ec7bb1a79afc1973fcd48481ccbc5" + integrity sha512-ATKrYpCiGkhy1ukmEgYtOPX9WJXBoyBcXSfRH7MJKibDbPkNf9eUfp4ZeGadn7YLy40qxHEdZtK2zGGikn84pQ== + dependencies: + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/jsonrpc-provider" "^1.0.0" + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/jsonrpc-ws-connection" "^1.0.0" + "@walletconnect/logger" "^1.0.0" + "@walletconnect/relay-api" "^1.0.2" + "@walletconnect/safe-json" "^1.0.0" + "@walletconnect/types" "^2.0.0-beta.23" + "@walletconnect/utils" "^2.0.0-beta.23" + ws "^8.3.0" + +"@walletconnect/crypto@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.1.tgz#d4c1b1cd5dd1be88fe9a82dfc54cadbbb3f9d325" + integrity sha512-IgUReNrycIFxkGgq8YT9HsosCkhutakWD9Q411PR0aJfxpEa/VKJeaLRtoz6DvJpztWStwhIHnAbBoOVR72a6g== + dependencies: + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/environment" "^1.0.0" + "@walletconnect/randombytes" "^1.0.1" + aes-js "^3.1.2" + hash.js "^1.1.7" + +"@walletconnect/ecies-25519@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/ecies-25519/-/ecies-25519-1.0.1.tgz#33d548d259aa2cd60f251167eba239ee0c0658ea" + integrity sha512-IK3bYxmYbnFicO69qehPuacwfa3dU1Lw20YdvfLg3IH/WCCmo5EKZu5puaQCXep42uReYE4CQ5gcVSC4PCOLcw== + dependencies: + "@stablelib/x25519" "^1.0.1" + "@walletconnect/crypto" "^1.0.1" + "@walletconnect/encoding" "^1.0.0" + +"@walletconnect/encoding@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/encoding/-/encoding-1.0.0.tgz#e24190cb5e803526f9dfd7191fb0e4dc53c6d864" + integrity sha512-4nkJFnS0QF5JdieG/3VPD1/iEWkLSZ14EBInLZ00RWxmC6EMZrzAeHNAWIgm+xP3NK0lqz+7lEsmWGtcl5gYnQ== + dependencies: + is-typedarray "1.0.0" + typedarray-to-buffer "3.1.5" + +"@walletconnect/environment@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/environment/-/environment-1.0.0.tgz#c4545869fa9c389ec88c364e1a5f8178e8ab5034" + integrity sha512-4BwqyWy6KpSvkocSaV7WR3BlZfrxLbJSLkg+j7Gl6pTDE+U55lLhJvQaMuDVazXYxcjBsG09k7UlH7cGiUI5vQ== + +"@walletconnect/jsonrpc-provider@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.0.tgz#066ee5a8a8554c55ea68f9ebf6fe8f96cdb66e7e" + integrity sha512-ZVe23tYT0LdykZ/denBdkKCjBC13fnpj8MiKFuvUl0idBv1PiYKYJR3LVJHy8+7zk0lBbDH3hBNrbMt/K4kjcw== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/safe-json" "^1.0.0" + +"@walletconnect/jsonrpc-types@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.0.tgz#fa75ad5e8f106a2e33287b1e6833e22ed0225055" + integrity sha512-11QXNq5H1PKZk7bP8SxgmCw3HRaDuPOVE+wObqEvmhc7OWYUZqfuaaMb+OXGRSOHL3sbC+XHfdeCxFTMXSFyng== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@walletconnect/jsonrpc-utils@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-utils/-/jsonrpc-utils-1.0.0.tgz#1a2f668d606e8f0b6e7d8fdebae86001bd037a3f" + integrity sha512-qUHbKUK6sHeHn67qtHZoLoYk5hS6x1arTPjKDRkY93/6Fx+ZmNIpdm1owX3l6aYueyegJ7mz43FpvYHUqJ8xcw== + dependencies: + "@walletconnect/environment" "^1.0.0" + "@walletconnect/jsonrpc-types" "^1.0.0" + +"@walletconnect/jsonrpc-ws-connection@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/jsonrpc-ws-connection/-/jsonrpc-ws-connection-1.0.0.tgz#e0248542b30971338a84884ecea49ae9c0837f3e" + integrity sha512-ITeDZo08Jr2AdftksAJNSoB/IQdpmxwJBhHsa9z9rp95V6S88zSqc6EB+BSYMVJZPjLYW8Xi+gZD9YPwxMRY0w== + dependencies: + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/safe-json" "^1.0.0" + ws "^7.5.1" + +"@walletconnect/logger@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/logger/-/logger-1.0.0.tgz#f00b7a49a9a72f0187696b4c382970272323d147" + integrity sha512-micLp42wwwDogbN+lKZjhk2t9oc7A6IvA2UR/3T+Xeh12eewZKfgrvZSu6CYijYLgiodjBxAwn0dC4a3ywXv/w== + dependencies: + pino "^6.7.0" + +"@walletconnect/randombytes@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.1.tgz#87f0f02d9206704ce1c9e23f07d3b28898c48385" + integrity sha512-YJTyq69i0PtxVg7osEpKfvjTaWuAsR49QEcqGKZRKVQWMbGXBZ65fovemK/SRgtiFRv0V8PwsrlKSheqzfPNcg== + dependencies: + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/environment" "^1.0.0" + randombytes "^2.1.0" + +"@walletconnect/relay-api@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@walletconnect/relay-api/-/relay-api-1.0.2.tgz#a6d93c5292c2f9f9424f86de09854e4f0bd2fbae" + integrity sha512-6FZP6pAQwQttncuWAKC0lGvNm0SCiBEfpkdzURMoGIk4H3u5PpiUHNt9wekPzDl5CYIdVhN2RheH6uS8SuDAZw== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.0" + +"@walletconnect/safe-json@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/safe-json/-/safe-json-1.0.0.tgz#12eeb11d43795199c045fafde97e3c91646683b2" + integrity sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg== + +"@walletconnect/types@^2.0.0-beta.23": + version "2.0.0-beta.23" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-2.0.0-beta.23.tgz#3adf5c8329b7807d8c8d4aa1419e470eab72445c" + integrity sha512-zYn26dvp/HsZJMUCFsJoK255yLp+Z9tGIomVO4outiZM1wa0tAUwma2QzoGyKDSgK4EbsYHFcWjSUX2kqh8quQ== + dependencies: + "@walletconnect/jsonrpc-types" "^1.0.0" + keyvaluestorage "^0.7.1" + pino "^6.7.0" + pino-pretty "^4.3.0" + +"@walletconnect/utils@^2.0.0-beta.23": + version "2.0.0-beta.23" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-2.0.0-beta.23.tgz#005e4409a7014a66dda30389e4b1f31d186ebd0e" + integrity sha512-AH38tD5P6wWo5+D+pMJYePHdu0008fI6bE8NlFy0/o7qxzCVs7GAGWnyDNSHFUg7zgu+N120jsq2mBg2bNFxLQ== + dependencies: + "@walletconnect/ecies-25519" "^1.0.1" + "@walletconnect/encoding" "^1.0.0" + "@walletconnect/jsonrpc-utils" "^1.0.0" + "@walletconnect/logger" "^1.0.0" + "@walletconnect/relay-api" "^1.0.2" + "@walletconnect/safe-json" "^1.0.0" + "@walletconnect/types" "^2.0.0-beta.23" + "@walletconnect/window-getters" "^1.0.0" + "@walletconnect/window-metadata" "^1.0.0" + lodash.union "^4.6.0" + query-string "^6.13.5" + +"@walletconnect/window-getters@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-getters/-/window-getters-1.0.0.tgz#1053224f77e725dfd611c83931b5f6c98c32bfc8" + integrity sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA== + +"@walletconnect/window-metadata@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@walletconnect/window-metadata/-/window-metadata-1.0.0.tgz#93b1cc685e6b9b202f29c26be550fde97800c4e5" + integrity sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA== + dependencies: + "@walletconnect/window-getters" "^1.0.0" + abab@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" @@ -1559,6 +1765,11 @@ acorn@^7.1.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + ajv@^6.5.5: version "6.12.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" @@ -1623,6 +1834,11 @@ ansi-red@^0.1.1: dependencies: ansi-wrap "0.1.0" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + ansi-regex@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" @@ -1681,11 +1897,24 @@ append-transform@^1.0.0: dependencies: default-require-extensions "^2.0.0" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1693,6 +1922,16 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +args@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" + integrity sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ== + dependencies: + camelcase "5.0.0" + chalk "2.4.2" + leven "2.1.0" + mri "1.1.4" + aria-query@^0.7.0: version "0.7.1" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-0.7.1.tgz#26cbb5aff64144b0a825be1846e0b16cfa00b11e" @@ -1795,7 +2034,7 @@ assert-plus@1.0.0, assert-plus@^1.0.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -assert@^1.1.1: +assert@^1.1.1, assert@^1.4.1: version "1.5.0" resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== @@ -1840,6 +2079,11 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1972,6 +2216,11 @@ base64-js@^1.0.2, base64-js@^1.1.2, base64-js@^1.2.3: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1992,6 +2241,15 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" +better-sqlite3@^7.1.2: + version "7.4.3" + resolved "https://registry.yarnpkg.com/better-sqlite3/-/better-sqlite3-7.4.3.tgz#8e45a4164bf4b4e128d97375023550f780550997" + integrity sha512-07bKjClZg/f4KMVRkzWtoIvazVPcF1gsvVKVIXlxwleC2DxuIhnra3KCMlUT1rFeRYXXckot2a46UciF2d9KLw== + dependencies: + bindings "^1.5.0" + prebuild-install "^6.0.1" + tar "^6.1.0" + big-integer@^1.6.44: version "1.6.48" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" @@ -2032,6 +2290,15 @@ binwrap@^0.2.2: tar "^4.4.10" unzip-stream "^0.3.0" +bl@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + bluebird@^3.5.0: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" @@ -2163,7 +2430,7 @@ browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: bn.js "^4.1.0" randombytes "^2.0.1" -browserify-sign@^4.0.0: +browserify-sign@^4.0.0, browserify-sign@^4.0.4: version "4.2.1" resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== @@ -2240,7 +2507,7 @@ buffer-xor@^1.0.3: resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= -buffer@^4.3.0: +buffer@^4.3.0, buffer@^4.9.1: version "4.9.2" resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== @@ -2257,6 +2524,22 @@ buffer@^5.4.2, buffer@^5.4.3: base64-js "^1.0.2" ieee754 "^1.1.4" +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + buffers@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" @@ -2321,6 +2604,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -2350,7 +2638,7 @@ chainsaw@~0.1.0: dependencies: traverse ">=0.3.0 <0.4" -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -2367,6 +2655,14 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chance@^1.1.0: version "1.1.4" resolved "https://registry.yarnpkg.com/chance/-/chance-1.1.4.tgz#d8743bf8e40bb05e024c305ca1ff441195eb23db" @@ -2382,6 +2678,11 @@ chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -2458,6 +2759,11 @@ co@^4.6.0: resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -2587,6 +2893,11 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -2675,7 +2986,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: +create-hmac@^1.1.0, create-hmac@^1.1.2, 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== @@ -2818,6 +3129,11 @@ data-urls@^1.1.0: whatwg-mimetype "^2.2.0" whatwg-url "^7.0.0" +dateformat@^4.5.1: + version "4.6.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== + dayjs@^1.8.15: version "1.8.25" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.8.25.tgz#d09a8696cee7191bc1289e739f96626391b9c73c" @@ -2854,6 +3170,13 @@ decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +decompress-response@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-4.2.1.tgz#414023cc7a302da25ce2ec82d0d5238ccafd8986" + integrity sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw== + dependencies: + mimic-response "^2.0.0" + deep-assign@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-3.0.0.tgz#c8e4c4d401cba25550a2f0f486a2e75bc5f219a2" @@ -2861,6 +3184,11 @@ deep-assign@^3.0.0: dependencies: is-obj "^1.0.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -2924,6 +3252,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -2947,6 +3280,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3090,7 +3428,7 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.1: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3259,6 +3597,11 @@ eventemitter3@^3.0.0: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +events@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" + integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ= + events@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" @@ -3324,6 +3667,11 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-template@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c" + integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg== + expect@^25.4.0: version "25.4.0" resolved "https://registry.yarnpkg.com/expect/-/expect-25.4.0.tgz#0b16c17401906d1679d173e59f0d4580b22f8dc8" @@ -3421,6 +3769,21 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-redact@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.0.2.tgz#c940ba7162dde3aeeefc522926ae8c5231412904" + integrity sha512-YN+CYfCVRVMUZOUPeinHNKgytM1wPI/C/UCLEi56EsY2dwwvI00kIJHJoI7pMVqGoMew8SMZ2SSfHKHULHXDsg== + +fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastify-warning@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/fastify-warning/-/fastify-warning-0.2.0.tgz#e717776026a4493dc9a2befa44db6d17f618008f" + integrity sha512-s1EQguBw/9qtc1p/WTY4eq9WMRIACkj+HTcOIK1in4MV5aFaQC9ZCIt0dJ7pr5bIf4lPpHvAtP2ywpTNgs7hqw== + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -3518,6 +3881,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= + finalhandler@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -3571,6 +3939,11 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +flatstr@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" + integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -3610,6 +3983,11 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" @@ -3635,6 +4013,13 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3663,6 +4048,20 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3699,6 +4098,11 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +github-from-package@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" + integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= + glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -3779,6 +4183,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3826,7 +4235,7 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash.js@^1.0.0, hash.js@^1.0.3: +hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== @@ -3950,6 +4359,11 @@ iconv-lite@^0.6.2: dependencies: safer-buffer ">= 2.1.2 < 3.0.0" +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ieee754@^1.1.4: version "1.1.13" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" @@ -4004,6 +4418,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + inquirer@^3.0.6: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" @@ -4131,6 +4550,13 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" @@ -4214,7 +4640,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +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 sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -4817,6 +5243,16 @@ jetifier@^1.6.2: resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.5.tgz#ea87324a4230bef20a9651178ecab978ee54a8cb" integrity sha512-T7yzBSu9PR+DqjYt+I0KVO1XTb1QhAfHnXV5Nd3xpbXM6Xg4e3vP60Q4qkNU8Fh6PHC2PivPUNN3rY7G2MxcDQ== +jmespath@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" + integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= + +joycon@^2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-2.2.5.tgz#8d4cf4cbb2544d7b7583c216fcdfec19f6be1615" + integrity sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ== + js-levenshtein@^1.1.3: version "1.1.6" resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" @@ -4960,6 +5396,21 @@ jsx-ast-utils@^1.4.0: resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz#3867213e8dd79bf1e8f2300c0cfc1efb182c0df1" integrity sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE= +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + +keyvaluestorage@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/keyvaluestorage/-/keyvaluestorage-0.7.1.tgz#be2f9f742d759d5442cdf9d49af6bdacc964c1eb" + integrity sha512-7AHq8bZE4WRWy+BltiuPwQo5aKuj7CguhwGdW7NUUOEImY2Tq/lJaBjHdOf0MYzeu+Y4oxQWhkZEZcrDc9KnxA== + dependencies: + better-sqlite3 "^7.1.2" + keyvaluestorage-interface "^1.0.0" + localStorage "^1.0.4" + safe-json-utils "^1.1.1" + kind-of@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" @@ -5006,6 +5457,11 @@ lcov-parse@^1.0.0: resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= +leven@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -5034,6 +5490,11 @@ load-json-file@^4.0.0: pify "^3.0.0" strip-bom "^3.0.0" +localStorage@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/localStorage/-/localStorage-1.0.4.tgz#57dfa28084385f81431accb8ae24b196398223f7" + integrity sha512-r35zrihcDiX+dqWlJSeIwS9nrF95OQTgqMFm3FB2D/+XgdmZtcutZOb7t0xXkhOEM8a9kpuu7cc28g1g36I5DQ== + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -5072,6 +5533,11 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= +lodash.union@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.union/-/lodash.union-4.6.0.tgz#48bb5088409f16f1821666641c44dd1aaae3cd88" + integrity sha1-SLtQiECfFvGCFmZkHETdGqrjzYg= + lodash@4.17.x: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -5615,6 +6081,11 @@ mimic-response@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-response@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43" + integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -5639,7 +6110,7 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -5652,6 +6123,13 @@ minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: safe-buffer "^5.1.2" yallist "^3.0.0" +minipass@^3.0.0: + version "3.1.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.5.tgz#71f6251b0a33a49c01b3cf97ff77eda030dff732" + integrity sha512-+8NzxD82XQoNKNrl1d/FSi+X8wAEWR+sbYAfIvub4Nz0d22plFG72CEVVaufV8PNf4qSslFTD8VMOxNVhHCjTw== + dependencies: + yallist "^4.0.0" + minizlib@^1.2.1: version "1.3.3" resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" @@ -5659,6 +6137,14 @@ minizlib@^1.2.1: dependencies: minipass "^2.9.0" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -5667,6 +6153,11 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" +mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" + integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== + mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -5674,11 +6165,21 @@ mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "^1.2.5" +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + mockdate@^3.0.2: version "3.0.5" resolved "https://registry.yarnpkg.com/mockdate/-/mockdate-3.0.5.tgz#789be686deb3149e7df2b663d2bc4392bc3284fb" integrity sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ== +mri@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -5726,6 +6227,11 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +napi-build-utils@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/napi-build-utils/-/napi-build-utils-1.0.2.tgz#b1fddc0b2c46e380a0b7a76f984dd47c41a13806" + integrity sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5751,6 +6257,13 @@ nocache@^2.1.0: resolved "https://registry.yarnpkg.com/nocache/-/nocache-2.1.0.tgz#120c9ffec43b5729b1d5de88cd71aa75a0ba491f" integrity sha512-0L9FvHG3nfnnmaEQPjT9xhfN4ISk0A8/2j4M37Np4mcDesJjHgEUfgPhdCyZuFI954tjokaIj/A3NdpFNdEh4Q== +node-abi@^2.21.0: + version "2.30.1" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" + integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== + dependencies: + semver "^5.4.1" + node-fetch@2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" @@ -5803,6 +6316,35 @@ node-libs-browser@^2.2.1: util "^0.11.0" vm-browserify "^1.0.1" +node-libs-react-native@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/node-libs-react-native/-/node-libs-react-native-1.2.1.tgz#c9fd1d1b2cd2573d3e75633cea8bccd53b334f24" + integrity sha512-2LkPntNVa5MInMxtP7fW9F/uGo7KZCURI5/YoNn9/qOGIQpxEqnsndQWAPipsw8+ZVrIxPGkKEgJ2sSdvz0NKQ== + dependencies: + assert "^1.4.1" + base-64 "^0.1.0" + browserify-zlib "^0.2.0" + buffer "^6.0.3" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + domain-browser "^1.1.1" + events "^1.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.0" + process "^0.11.0" + punycode "^2.1.0" + querystring-es3 "^0.2.0" + react-native-crypto "^2.0.1" + react-native-randombytes "^3.5.1" + readable-stream "^2.2.9" + stream-http "^2.3.1" + string_decoder "^1.0.3" + timers-browserify "^2.0.2" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.10.3" + node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" @@ -5872,6 +6414,16 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" +npmlog@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + nth-check@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -5884,6 +6436,11 @@ nullthrows@^1.1.1: resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + number-to-bn@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" @@ -6209,6 +6766,11 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +path-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" + integrity sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo= + path-browserify@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" @@ -6251,6 +6813,13 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" +pbkdf2@3.0.8: + version "3.0.8" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.8.tgz#2f8abf16ebecc82277945d748aba1d78761f61e2" + integrity sha1-L4q/FuvsyCJ3lF10irodeHYfYeI= + dependencies: + create-hmac "^1.1.2" + pbkdf2@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" @@ -6282,6 +6851,42 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pino-pretty@^4.3.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-4.8.0.tgz#f2f3055bf222456217b14ffb04d8be0a0cc17fce" + integrity sha512-mhQfHG4rw5ZFpWL44m0Utjo4GC2+HMfdNvxyA8lLw0sIqn6fCf7uQe6dPckUcW/obly+OQHD7B/MTso6LNizYw== + dependencies: + "@hapi/bourne" "^2.0.0" + args "^5.0.1" + chalk "^4.0.0" + dateformat "^4.5.1" + fast-safe-stringify "^2.0.7" + jmespath "^0.15.0" + joycon "^2.2.5" + pump "^3.0.0" + readable-stream "^3.6.0" + rfdc "^1.3.0" + split2 "^3.1.1" + strip-json-comments "^3.1.1" + +pino-std-serializers@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" + integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== + +pino@^6.7.0: + version "6.13.3" + resolved "https://registry.yarnpkg.com/pino/-/pino-6.13.3.tgz#60b93bcda1541f92fb37b3f2be0a25cf1d05b6fe" + integrity sha512-tJy6qVgkh9MwNgqX1/oYi3ehfl2Y9H0uHyEEMsBe74KinESIjdMrMQDWpcZPpPicg3VV35d/GLQZmo4QgU2Xkg== + dependencies: + fast-redact "^3.0.0" + fast-safe-stringify "^2.0.8" + fastify-warning "^0.2.0" + flatstr "^1.0.12" + pino-std-serializers "^3.1.0" + quick-format-unescaped "^4.0.3" + sonic-boom "^1.0.2" + pirates@^4.0.0, pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" @@ -6352,6 +6957,25 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prebuild-install@^6.0.1: + version "6.1.4" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-6.1.4.tgz#ae3c0142ad611d58570b89af4986088a4937e00f" + integrity sha512-Z4vpywnK1lBg+zdPCVCsKq0xO66eEV9rWo2zrROGGiRS4JtueBOdlB1FnY8lcy7JsUud/Q3ijUxyWN26Ika0vQ== + dependencies: + detect-libc "^1.0.3" + expand-template "^2.0.3" + github-from-package "0.0.0" + minimist "^1.2.3" + mkdirp-classic "^0.5.3" + napi-build-utils "^1.0.1" + node-abi "^2.21.0" + npmlog "^4.0.1" + pump "^3.0.0" + rc "^1.2.7" + simple-get "^3.0.3" + tar-fs "^2.0.0" + tunnel-agent "^0.6.0" + prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -6397,7 +7021,7 @@ process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@0.11.10, process@^0.11.10: +process@0.11.10, process@^0.11.0, process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= @@ -6438,6 +7062,15 @@ prop-types@15.x.x, prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +prop-types@^15.5.10: + version "15.8.0" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.0.tgz#d237e624c45a9846e469f5f31117f970017ff588" + integrity sha512-fDGekdaHh65eI3lMi5OnErU6a8Ighg2KjcjQxO7m8VHyWjcPyj5kiOgV1LQDOOOgVy3+5FgjXvdSSX7B8/5/4g== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + pseudomap@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" @@ -6510,6 +7143,16 @@ query-string@^5.0.1: object-assign "^4.1.0" strict-uri-encode "^1.0.0" +query-string@^6.13.5: + version "6.14.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== + dependencies: + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -6520,6 +7163,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" @@ -6540,6 +7188,16 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + react-devtools-core@^4.6.0: version "4.10.1" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.10.1.tgz#6d57db291aeac9cc45ef9fb4636dd2ab97490daf" @@ -6558,7 +7216,7 @@ react-dom@^16.4.2: prop-types "^15.6.2" scheduler "^0.19.1" -react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: +react-is@^16.12.0, react-is@^16.13.1, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -6592,6 +7250,22 @@ react-native-camera-kit@^8.0.4: version "1.4.2" resolved "git+https://github.com/status-im/react-native-config.git#c3e58d76fed923aaf88eadc5073099fab5ecb346" +react-native-crypto@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-native-crypto/-/react-native-crypto-2.2.0.tgz#c999ed7c96064f830e1f958687f53d0c44025770" + integrity sha512-eZu9Y8pa8BN9FU2pIex7MLRAi+Cd1Y6bsxfiufKh7sfraAACJvjQTeW7/zcQAT93WMfM+D0OVk+bubvkrbrUkw== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.4" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "3.0.8" + public-encrypt "^4.0.0" + randomfill "^1.0.3" + react-native-device-info@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/react-native-device-info/-/react-native-device-info-7.4.0.tgz#694deddfc6de0ff7268ff463d84693ee980c683c" @@ -6693,6 +7367,14 @@ react-native-permissions@^2.1.5: resolved "https://registry.yarnpkg.com/react-native-permissions/-/react-native-permissions-2.1.5.tgz#6cfc4f1ab1590f4952299b7cdc9698525ad540e0" integrity sha512-b9KO/4UEV9qddl+kcSybmdk8nlAifclSDBR2rSvc5KZM06vIaJWJNIzK2ZwPXqDQ5yD3CJLuKTRj7Fz+jM9qyQ== +react-native-randombytes@^3.5.1, react-native-randombytes@^3.6.1: + version "3.6.1" + resolved "https://registry.yarnpkg.com/react-native-randombytes/-/react-native-randombytes-3.6.1.tgz#cac578093b5ca38e3e085becffdc6cbcf6f0d654" + integrity sha512-qxkwMbOZ0Hff1V7VqpaWrR6ItkA+oF6bnI79Qp9F3Tk8WBsdKDi6m1mi3dEdFWePoRLrhJ2L03rU0yabst1tVw== + dependencies: + buffer "^4.9.1" + sjcl "^1.0.3" + react-native-reanimated@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-2.1.0.tgz#b9ad04aee490e1e030d0a6cdaa43a14895d9a54d" @@ -6841,7 +7523,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6854,7 +7536,7 @@ 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: +readable-stream@^3.0.0, readable-stream@^3.1.1, readable-stream@^3.4.0, 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== @@ -7066,6 +7748,11 @@ ret@~0.1.10: resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -7153,6 +7840,11 @@ safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-json-utils@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.1.1.tgz#0e883874467d95ab914c3f511096b89bfb3e63b1" + integrity sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -7244,7 +7936,7 @@ serve-static@^1.13.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7357,6 +8049,15 @@ simple-get@^2.7.0: once "^1.3.1" simple-concat "^1.0.0" +simple-get@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-3.1.0.tgz#b45be062435e50d159540b576202ceec40b9c6b3" + integrity sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA== + dependencies: + decompress-response "^4.2.0" + once "^1.3.1" + simple-concat "^1.0.0" + simple-plist@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.1.0.tgz#8354ab63eb3922a054c78ce96c209c532e907a23" @@ -7371,6 +8072,11 @@ sisteransi@^1.0.4: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== +sjcl@^1.0.3: + version "1.0.8" + resolved "https://registry.yarnpkg.com/sjcl/-/sjcl-1.0.8.tgz#f2ec8d7dc1f0f21b069b8914a41a8f236b0e252a" + integrity sha512-LzIjEQ0S0DpIgnxMEayM1rq9aGwGRG4OnZhCdjx7glTaJtf4zRfpg87ImfjSJjoW9vKpagd82McDOwbRT5kQKQ== + slash@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -7425,6 +8131,14 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +sonic-boom@^1.0.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e" + integrity sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg== + dependencies: + atomic-sleep "^1.0.0" + flatstr "^1.0.12" + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -7509,6 +8223,11 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -7516,6 +8235,13 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -7579,7 +8305,7 @@ stream-buffers@~2.2.0: resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= -stream-http@^2.7.2: +stream-http@^2.3.1, stream-http@^2.7.2: version "2.8.3" resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== @@ -7595,6 +8321,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + string-hash-64@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string-hash-64/-/string-hash-64-1.0.3.tgz#0deb56df58678640db5c479ccbbb597aaa0de322" @@ -7608,7 +8339,16 @@ string-length@^3.1.0: astral-regex "^1.0.0" strip-ansi "^5.2.0" -string-width@^2.1.0: +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7668,7 +8408,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.1.1: +string_decoder@^1.0.0, string_decoder@^1.0.3, 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== @@ -7682,6 +8422,13 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" @@ -7730,6 +8477,16 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + sudo-prompt@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0" @@ -7784,6 +8541,27 @@ symbol-tree@^3.2.2: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +tar-fs@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" + integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== + dependencies: + chownr "^1.1.1" + mkdirp-classic "^0.5.2" + pump "^3.0.0" + tar-stream "^2.1.4" + +tar-stream@^2.1.4: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" + integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== + dependencies: + bl "^4.0.3" + end-of-stream "^1.4.1" + fs-constants "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.1.1" + tar@^4.4.10: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -7797,6 +8575,18 @@ tar@^4.4.10: safe-buffer "^5.1.2" yallist "^3.0.3" +tar@^6.1.0: + version "6.1.11" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^3.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + tdigest@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.1.tgz#2e3cb2c39ea449e55d1e6cd91117accca4588021" @@ -7872,6 +8662,13 @@ timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= +timers-browserify@^2.0.2: + version "2.0.12" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.12.tgz#44a45c11fbf407f34f97bccd1577c652361b00ee" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + timers-browserify@^2.0.4: version "2.0.11" resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" @@ -8026,7 +8823,7 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -8179,6 +8976,13 @@ util@0.10.3: dependencies: inherits "2.0.1" +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + util@^0.11.0: version "0.11.1" resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" @@ -8336,6 +9140,13 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -8424,6 +9235,16 @@ ws@^7.0.0: resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== +ws@^7.5.1: + version "7.5.5" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.5.tgz#8b4bc4af518cfabd0473ae4f99144287b33eb881" + integrity sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w== + +ws@^8.3.0: + version "8.4.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" + integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== + xcode@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/xcode/-/xcode-2.1.0.tgz#bab64a7e954bb50ca8d19da7e09531c65a43ecfe" @@ -8514,6 +9335,11 @@ yallist@^3.0.0, yallist@^3.0.3: 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== + yargs-parser@^13.0.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38"