From 447fe53c4140405fe647748a293884efc51ee3d5 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 12:49:13 +0000 Subject: [PATCH 01/27] bump: snaps rpc & utils, adds sdk --- package.json | 7 +- yarn.lock | 187 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 187 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 2bb63cf6966..0c0cc0e4a00 100644 --- a/package.json +++ b/package.json @@ -200,8 +200,9 @@ "@metamask/signature-controller": "4.0.1", "@metamask/slip44": "3.1.0", "@metamask/snaps-controllers": "^3.2.0", - "@metamask/snaps-rpc-methods": "^3.2.1", - "@metamask/snaps-utils": "^3.2.0", + "@metamask/snaps-rpc-methods": "^6.0.0", + "@metamask/snaps-sdk": "^2.0.0", + "@metamask/snaps-utils": "^6.0.0", "@metamask/swappable-obj-proxy": "^2.1.0", "@metamask/swaps-controller": "^6.9.3", "@metamask/transaction-controller": "^5.0.0", @@ -293,8 +294,8 @@ "react-native-animatable": "^1.3.3", "react-native-animated-fox": "git+https://github.com/MetaMask/react-native-animated-fox.git#16e38d54d829709e497f196e31fa8ff00cdf2aa9", "react-native-background-timer": "2.1.1", - "react-native-blob-jsi-helper": "^0.3.1", "react-native-ble-plx": "3.1.1", + "react-native-blob-jsi-helper": "^0.3.1", "react-native-branch": "^5.6.2", "react-native-browser-polyfill": "0.1.2", "react-native-camera": "^3.36.0", diff --git a/yarn.lock b/yarn.lock index de2ae97cd33..74f5edcd0e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1653,6 +1653,11 @@ resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-0.1.4.tgz#e516bc3864f00b154944e444fb8996a9a0c23a45" integrity sha512-Ol8ct0aW8VK1ZaqntnUJfrYT59P6Xn36XPbHzkqQhsYkpudKDn5ILYEwGmSO/Ff+XJjv/pReNI0lhOyyrDa9mg== +"@endo/env-options@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.1.tgz#eee630f8eff01580ec49e0dedcb1b6cef05d89a4" + integrity sha512-uCwlJ8Vkndx/VBBo36BdYHdxSoQPy7ZZpwyJNfv86Rh4B1IZfqzCRPf0u0mPgJdzOr7lShQey60SuYwoMSZ9Xg== + "@es-joy/jsdoccomment@~0.36.1": version "0.36.1" resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz#c37db40da36e4b848da5fd427a74bae3b004a30f" @@ -3656,6 +3661,14 @@ "@metamask/utils" "^8.2.0" immer "^9.0.6" +"@metamask/base-controller@^4.1.0", "@metamask/base-controller@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-4.1.1.tgz#9b411adf4822de7382fe69d07bb6b3fc3e738923" + integrity sha512-sJdsd/XlyOa0kRJ16qbM+xeQ8peV1yZcYumJmHCClPK09MkAlxq7EzsrahVZXUCFwcxtSucf244pbttnVqNthw== + dependencies: + "@metamask/utils" "^8.3.0" + immer "^9.0.6" + "@metamask/browser-passworder@^4.1.0": version "4.3.0" resolved "https://registry.yarnpkg.com/@metamask/browser-passworder/-/browser-passworder-4.3.0.tgz#62c200750efcea864bd31d685120331859e1ab1e" @@ -3683,7 +3696,7 @@ resolved "https://registry.yarnpkg.com/@metamask/contract-metadata/-/contract-metadata-2.2.0.tgz#277764d0d56e37180ae7644a9d11eb96295b36fc" integrity sha512-SM6A4C7vXNbVpgMTX67kfW8QWvu3eSXxMZlY5PqZBTkvri1s9zgQ0uwRkK5r2VXNEoVmXCDnnEX/tX5EzzgNUQ== -"@metamask/controller-utils@^3.0.0", "@metamask/controller-utils@^3.4.0", "@metamask/controller-utils@^4.0.0", "@metamask/controller-utils@^4.3.2", "@metamask/controller-utils@^5.0.1", "@metamask/controller-utils@^5.0.2", "@metamask/controller-utils@^6.0.0", "@metamask/controller-utils@^8.0.1": +"@metamask/controller-utils@^3.0.0", "@metamask/controller-utils@^3.4.0", "@metamask/controller-utils@^4.0.0", "@metamask/controller-utils@^4.3.2", "@metamask/controller-utils@^5.0.1", "@metamask/controller-utils@^5.0.2", "@metamask/controller-utils@^6.0.0", "@metamask/controller-utils@^8.0.1", "@metamask/controller-utils@^8.0.2": version "3.4.0" resolved "https://registry.yarnpkg.com/@metamask/controller-utils/-/controller-utils-3.4.0.tgz#3714799a3e2648cd758272612578238749e3e11b" integrity sha512-/++y7qXUd9+aRzOklypfzmehO87QVKndlJXsbLRk36W5L5DJo4lrR2pd/IBbwbWEhFJWHhlfbMD+T+gEBvIftw== @@ -3914,6 +3927,15 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^8.2.0" +"@metamask/json-rpc-engine@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz#e8f0695811619eef7b7c894ba5cf782db9f1c2cb" + integrity sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg== + dependencies: + "@metamask/rpc-errors" "^6.1.0" + "@metamask/safe-event-emitter" "^3.0.0" + "@metamask/utils" "^8.3.0" + "@metamask/key-tree@^9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@metamask/key-tree/-/key-tree-9.0.0.tgz#ce880a79f35af5b3b540b44be16ff98cc77be4c1" @@ -4022,6 +4044,14 @@ once "^1.4.0" readable-stream "^2.3.3" +"@metamask/object-multiplex@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-2.0.0.tgz#aa6e4aa7b4e2f457ea4bb51cd7281d931e0aa35d" + integrity sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA== + dependencies: + once "^1.4.0" + readable-stream "^3.6.2" + "@metamask/obs-store@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@metamask/obs-store/-/obs-store-7.0.0.tgz#6cae5f28306bb3e83a381bc9ae22682316095bd3" @@ -4080,6 +4110,21 @@ immer "^9.0.6" nanoid "^3.1.31" +"@metamask/permission-controller@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-8.0.0.tgz#2f358e9793cab5f047cb536906b6b0a71c93d107" + integrity sha512-VwrkxKnvUSrpQeqljC/okrJG47tuLKkNrfmaj1SJ9S6/TUQjeRpsE0abKRt6pprTCbDpzJdyspexZq2aWykGLQ== + dependencies: + "@metamask/base-controller" "^4.1.1" + "@metamask/controller-utils" "^8.0.2" + "@metamask/json-rpc-engine" "^7.3.2" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/utils" "^8.3.0" + "@types/deep-freeze-strict" "^1.1.0" + deep-freeze-strict "^1.1.1" + immer "^9.0.6" + nanoid "^3.1.31" + "@metamask/phishing-controller@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-5.0.0.tgz#f2d1006c4063d13f62f1926d2d3c7ffac5736fec" @@ -4149,6 +4194,24 @@ json-rpc-middleware-stream "^4.2.1" webextension-polyfill "^0.10.0" +"@metamask/providers@^14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-14.0.2.tgz#683c43ed1f58075b8238b85e7c585ecefe484f0b" + integrity sha512-6KuCLQVzE/8IA1r8LkTo0FbG4fgm7ryjzleda0lMsz5XMxinNGuXAoh7Y08bX5OHVpDEjkHREPhuLw4dFK9wIQ== + dependencies: + "@metamask/json-rpc-engine" "^7.1.1" + "@metamask/object-multiplex" "^2.0.0" + "@metamask/rpc-errors" "^6.0.0" + "@metamask/safe-event-emitter" "^3.0.0" + "@metamask/utils" "^8.1.0" + detect-browser "^5.2.0" + extension-port-stream "^3.0.0" + fast-deep-equal "^3.1.3" + is-stream "^2.0.0" + json-rpc-middleware-stream "^5.0.1" + readable-stream "^3.6.2" + webextension-polyfill "^0.10.0" + "@metamask/react-native-button@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@metamask/react-native-button/-/react-native-button-3.0.0.tgz#4af8affd11e2b285cfc1b1752280797e1b33e62b" @@ -4209,7 +4272,7 @@ immer "^9.0.6" lodash "^4.17.21" -"@metamask/slip44@3.1.0": +"@metamask/slip44@3.1.0", "@metamask/slip44@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@metamask/slip44/-/slip44-3.1.0.tgz#f8067796f89fbbd6eaa594660bd6a1fbd6837a51" integrity sha512-bFlJ8jhTYJ4iQ0zgh2WMO2615UJ4Ne5J831EjsqKYaZs3qd6UTw/cy76hAmSxhnBluNAH5S6zZzxESLrTitCmQ== @@ -4251,7 +4314,17 @@ "@noble/secp256k1" "^1.7.1" superstruct "^1.0.3" -"@metamask/snaps-rpc-methods@^3.2.0", "@metamask/snaps-rpc-methods@^3.2.1": +"@metamask/snaps-registry@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-registry/-/snaps-registry-3.0.0.tgz#aced797608e4b415e4b9d6b6673f2bc42a02eadb" + integrity sha512-ECanoG//3H3cYGAxKx8yOUibcd4woIopzaqJqIsb7HPNYCeBtW9MoOT5C50u1eEK6mZyNIZVylb+nBboLG1HNA== + dependencies: + "@metamask/utils" "^8.1.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + superstruct "^1.0.3" + +"@metamask/snaps-rpc-methods@^3.2.0": version "3.2.1" resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-3.2.1.tgz#6e18903241aed03d997da3934da8aeaec963f513" integrity sha512-vSlCXA0NYNeYi5zNfgPwsOeDKZ7NjB1SUUYZtFODRxs81cYwXzaqTc7EGlsXVuCL6hFePsPKcoZIVWC7+4Qyfg== @@ -4265,6 +4338,32 @@ "@noble/hashes" "^1.3.1" superstruct "^1.0.3" +"@metamask/snaps-rpc-methods@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-6.0.0.tgz#ba51260f5755ee0b2afa73bdb70f2dd4ced820bb" + integrity sha512-jwr8Uordq2FsRzglwWg4H0qsGu5BQdnSY3iCZbiQzR87fUkLyJrWDIw+ATb7xO+0Xk8eIsxsvrlYLFEUI+UouQ== + dependencies: + "@metamask/key-tree" "^9.0.0" + "@metamask/permission-controller" "^8.0.0" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/snaps-sdk" "^2.0.0" + "@metamask/snaps-utils" "^6.0.0" + "@metamask/utils" "^8.3.0" + "@noble/hashes" "^1.3.1" + superstruct "^1.0.3" + +"@metamask/snaps-sdk@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-2.0.0.tgz#dfdc25543449e66375cfab2bd79d0ba74c6148d3" + integrity sha512-NwRSlgxVpqFEVnTe4zst3/2uMqbltvw8BdCyW7dX+aIZ9jNQXAC7ZDeJQm3WDxvSTLnv65nBJv0AaDVZK21q+w== + dependencies: + "@metamask/key-tree" "^9.0.0" + "@metamask/providers" "^14.0.2" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/utils" "^8.3.0" + is-svg "^4.4.0" + superstruct "^1.0.3" + "@metamask/snaps-ui@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-ui/-/snaps-ui-3.1.0.tgz#3011240f9a91c2113ac1a67b972ede6ab7910364" @@ -4301,6 +4400,34 @@ superstruct "^1.0.3" validate-npm-package-name "^5.0.0" +"@metamask/snaps-utils@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-6.0.0.tgz#ec9f31288e94a7a700cec6e788a2724f2b4c499a" + integrity sha512-YO8U1eTmJoRsJfFpJIOEC9cBK6JDFg+Q+xbXRDpwl5/4G40D5q1MFjgwYUN8odyeq0vUcNlc09S2/2PsZLMbRw== + dependencies: + "@babel/core" "^7.23.2" + "@babel/types" "^7.23.0" + "@metamask/base-controller" "^4.1.0" + "@metamask/key-tree" "^9.0.0" + "@metamask/permission-controller" "^8.0.0" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/slip44" "^3.1.0" + "@metamask/snaps-registry" "^3.0.0" + "@metamask/snaps-sdk" "^2.0.0" + "@metamask/utils" "^8.3.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.1" + chalk "^4.1.2" + cron-parser "^4.5.0" + fast-deep-equal "^3.1.3" + fast-json-stable-stringify "^2.1.0" + is-svg "^4.4.0" + rfdc "^1.3.0" + semver "^7.5.4" + ses "^1.1.0" + superstruct "^1.0.3" + validate-npm-package-name "^5.0.0" + "@metamask/swappable-obj-proxy@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@metamask/swappable-obj-proxy/-/swappable-obj-proxy-2.1.0.tgz#7558cd5c51d60b64207d2219cba61702aa44de52" @@ -4396,6 +4523,20 @@ semver "^7.5.4" superstruct "^1.0.3" +"@metamask/utils@^8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.3.0.tgz#a20de447aeb9ffb75924d822a186a597033984b6" + integrity sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw== + dependencies: + "@ethereumjs/tx" "^4.2.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.3" + "@types/debug" "^4.1.7" + debug "^4.3.4" + pony-cause "^2.1.10" + semver "^7.5.4" + superstruct "^1.0.3" + "@ngraveio/bc-ur@^1.1.5", "@ngraveio/bc-ur@^1.1.6": version "1.1.6" resolved "https://registry.yarnpkg.com/@ngraveio/bc-ur/-/bc-ur-1.1.6.tgz#8f8c75fff22f6a5e4dfbc5a6b540d7fe8f42cd39" @@ -4416,6 +4557,13 @@ dependencies: "@noble/hashes" "1.3.1" +"@noble/curves@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + "@noble/ed25519@^1.6.0": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" @@ -4431,6 +4579,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== +"@noble/hashes@1.3.3", "@noble/hashes@^1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + "@noble/hashes@^1.0.0", "@noble/hashes@^1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": version "1.3.2" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" @@ -15111,6 +15264,14 @@ extension-port-stream@^2.1.1: dependencies: webextension-polyfill ">=0.10.0 <1.0" +extension-port-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-3.0.0.tgz#00a7185fe2322708a36ed24843c81bd754925fef" + integrity sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw== + dependencies: + readable-stream "^3.6.2 || ^4.4.2" + webextension-polyfill ">=0.10.0 <1.0" + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -18239,7 +18400,7 @@ json-rpc-middleware-stream@^4.2.1: json-rpc-engine "^6.1.0" readable-stream "^2.3.3" -json-rpc-middleware-stream@^5.0.0: +json-rpc-middleware-stream@^5.0.0, json-rpc-middleware-stream@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-rpc-middleware-stream/-/json-rpc-middleware-stream-5.0.1.tgz#9a5984b4dfe6ccf4f51c648e9327dbe3abf88860" integrity sha512-PMrzifccjdilqU0xftUkusJq0J9O73q66YdVduEmu6vkiTh3V1akliYJGWBAbhg+vhFPC8btUSANa5FNo7a6bg== @@ -23332,6 +23493,17 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" +"readable-stream@^3.6.2 || ^4.4.2": + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== + dependencies: + abort-controller "^3.0.0" + buffer "^6.0.3" + events "^3.3.0" + process "^0.11.10" + string_decoder "^1.3.0" + readable-stream@^4.1.0: version "4.4.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" @@ -24247,6 +24419,13 @@ ses@^0.18.8: dependencies: "@endo/env-options" "^0.1.4" +ses@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ses/-/ses-1.2.0.tgz#88cea67bec9c6538bcc740baa939711622457c52" + integrity sha512-+klZ2zjFPbHAkf9owGeih+ZB1lqUqvVoCeL5IpNXmIZPhI5rGE1tR729EZmfBzmPh8j+CrsLr/+cTZUmHGFr9g== + dependencies: + "@endo/env-options" "^1.1.1" + 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" From 89c1cb2b4e6fa411bb38174d42adf8300cc25431 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 12:49:43 +0000 Subject: [PATCH 02/27] chore: refactor methods usages due bumped packages --- app/core/Engine.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 3e91452a80b..de1ee4e1b1e 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -108,8 +108,9 @@ import { buildSnapRestrictedMethodSpecifications, PersistedSnapControllerState, } from '@metamask/snaps-controllers'; -import { EnumToUnion, Snap } from '@metamask/snaps-utils'; -import { DialogType, NotificationArgs } from '@metamask/snaps-rpc-methods'; +import { Snap } from '@metamask/snaps-utils'; +import { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/types/restricted/notify'; +import { EnumToUnion, DialogType } from '@metamask/snaps-sdk'; // eslint-disable-next-line import/no-nodejs-modules import { Duplex } from 'stream'; ///: END:ONLY_INCLUDE_IF From ed4ba93a77f6cd204e03555dfac20e8328e09000 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 19:45:23 +0000 Subject: [PATCH 03/27] chore: bump snaps-controller package --- package.json | 2 +- yarn.lock | 242 ++++++++++++--------------------------------------- 2 files changed, 56 insertions(+), 188 deletions(-) diff --git a/package.json b/package.json index 0c0cc0e4a00..92fac92eed8 100644 --- a/package.json +++ b/package.json @@ -199,7 +199,7 @@ "@metamask/sdk-communication-layer": "^0.12.0", "@metamask/signature-controller": "4.0.1", "@metamask/slip44": "3.1.0", - "@metamask/snaps-controllers": "^3.2.0", + "@metamask/snaps-controllers": "^5.0.0", "@metamask/snaps-rpc-methods": "^6.0.0", "@metamask/snaps-sdk": "^2.0.0", "@metamask/snaps-utils": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 74f5edcd0e2..ec92406036f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1648,11 +1648,6 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@endo/env-options@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-0.1.4.tgz#e516bc3864f00b154944e444fb8996a9a0c23a45" - integrity sha512-Ol8ct0aW8VK1ZaqntnUJfrYT59P6Xn36XPbHzkqQhsYkpudKDn5ILYEwGmSO/Ff+XJjv/pReNI0lhOyyrDa9mg== - "@endo/env-options@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.1.tgz#eee630f8eff01580ec49e0dedcb1b6cef05d89a4" @@ -3597,7 +3592,7 @@ "@metamask/base-controller" "^2.0.0" "@metamask/controller-utils" "^3.0.0" -"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^2.1.1", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^4.0.0": +"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^2.1.1", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^5.1.2": version "3.4.0" resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-3.4.0.tgz#282900361d42f785578728b45014ff8cb5e557ea" integrity sha512-DjqrhiX9+W/Fh6Crr7FPJ87Y/uhPWzBvfXGtekv1LHZNmEtUxkrA7aelddUM0fpTdURIGT4aNGBoQudFidc+Lw== @@ -3645,7 +3640,7 @@ "@metamask/controller-utils" "^3.0.0" immer "^9.0.6" -"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.2.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.2", "@metamask/base-controller@^3.2.3": +"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.2", "@metamask/base-controller@^3.2.3": version "3.2.3" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-3.2.3.tgz#7436a14f6789acf0814952dabaa70ee4fb7d473c" integrity sha512-k66oZe7BOEx0D5N5X8feE/32QlrUTmiEHHAZU/yCac2+VHllJOCEQV/cTeaAtgepnEf8O7SskvYZN+eIjgS99w== @@ -4035,7 +4030,7 @@ uuid "^8.3.2" web3-provider-engine "^16.0.5" -"@metamask/object-multiplex@^1.1.0", "@metamask/object-multiplex@^1.2.0": +"@metamask/object-multiplex@^1.1.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-1.2.0.tgz#38fc15c142f61939391e1b9a8eed679696c7e4f4" integrity sha512-hksV602d3NWE2Q30Mf2Np1WfVKaGqfJRy9vpHAmelbaD0OkDt06/0KQkRR6UVYdMbTbkuEu8xN5JDUU80inGwQ== @@ -4094,22 +4089,6 @@ json-rpc-engine "^6.1.0" nanoid "^3.1.31" -"@metamask/permission-controller@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-5.0.0.tgz#d7f8d70085f43ac676a458cec6a7eaa95814ade7" - integrity sha512-l9+oPn09qoAFdwrI2nlbgLmXI9HDXLR4ef+kLXhIYff4ISTqxxD160vueH8Ip6woBgQ8Qa0q3sdERAN7nd4FfA== - dependencies: - "@metamask/approval-controller" "^4.0.0" - "@metamask/base-controller" "^3.2.3" - "@metamask/controller-utils" "^5.0.2" - "@metamask/json-rpc-engine" "^7.1.1" - "@metamask/rpc-errors" "^6.0.0" - "@metamask/utils" "^8.1.0" - "@types/deep-freeze-strict" "^1.1.0" - deep-freeze-strict "^1.1.1" - immer "^9.0.6" - nanoid "^3.1.31" - "@metamask/permission-controller@^8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-8.0.0.tgz#2f358e9793cab5f047cb536906b6b0a71c93d107" @@ -4136,18 +4115,18 @@ eth-phishing-detect "^1.2.0" punycode "^2.1.1" -"@metamask/phishing-controller@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-7.0.1.tgz#1544aef4d86a684bf171c76e3b1bfe13b2350b44" - integrity sha512-ONHE8EQsd2zehaOJN9UoVaZ4tMAGeOdCQkngUtcY+kO5W8gzaOS2W3EhthJ2TAS19WoJWS47004gFLtnerLmiQ== +"@metamask/phishing-controller@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-8.0.2.tgz#612d2d2d0d5e8746289fda036b0382a63ea82ffb" + integrity sha512-aRnpv+AtjqffT7hnwF1XZahWs8K99dOd8DcAAaVJyWsdt0cT3o6ryZXHMcFTUGP8Fl88LmkLm1970zfUO8AxFg== dependencies: - "@metamask/base-controller" "^3.2.3" - "@metamask/controller-utils" "^5.0.2" + "@metamask/base-controller" "^4.1.1" + "@metamask/controller-utils" "^8.0.2" "@types/punycode" "^2.1.0" eth-phishing-detect "^1.2.0" punycode "^2.1.1" -"@metamask/post-message-stream@7.0.0", "@metamask/post-message-stream@^7.0.0": +"@metamask/post-message-stream@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-7.0.0.tgz#b7698909ec54923b6a6990b8d46cc15c2810d840" integrity sha512-+dTUNtuNY9o4ooPiXEOqSkqQWQ9APkVx3dAkBvAsJLetAGXvmoBeIMN1DL2QU+9BTbQ9JyJ6NycQnhvwRRc1HQ== @@ -4155,6 +4134,14 @@ "@metamask/utils" "^5.0.0" readable-stream "3.6.2" +"@metamask/post-message-stream@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-8.0.0.tgz#101a54c2a4029879691ce83065638493d7822f48" + integrity sha512-Bk5LQRxD2IJMJWKY8Yuy+86gracExv2jpjHVWm5Ek7njtdzS0Z10ABpC+yekc8vsRaJ6+xgr64wLHWbYNUqEyg== + dependencies: + "@metamask/utils" "^8.1.0" + readable-stream "3.6.2" + "@metamask/ppom-validator@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@metamask/ppom-validator/-/ppom-validator-0.24.0.tgz#86ee0146a51984f6c39fe4830e37270d734d8b83" @@ -4277,42 +4264,34 @@ resolved "https://registry.yarnpkg.com/@metamask/slip44/-/slip44-3.1.0.tgz#f8067796f89fbbd6eaa594660bd6a1fbd6837a51" integrity sha512-bFlJ8jhTYJ4iQ0zgh2WMO2615UJ4Ne5J831EjsqKYaZs3qd6UTw/cy76hAmSxhnBluNAH5S6zZzxESLrTitCmQ== -"@metamask/snaps-controllers@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-3.2.0.tgz#33924bda4e7c5395e6a573d306b786c99161f6e1" - integrity sha512-TGxqzsZ3rkzJjxaFHS1ntqaDHCBSVoTUYWRxjkKzFCcMcbX2Quzm9Coong1QlQ7fQjhcCCy4NsHEZPCl8tBB7g== +"@metamask/snaps-controllers@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-5.0.0.tgz#007811ab7a7f7d9dd772e94a142c9bb8f7697c4d" + integrity sha512-LZeRFJ3alhR+yjfsoMQvX/f3w0V2eePXjEwOiB95LxhhS93aai+F1jEkM2he9lSOV+pBI6jsBEaXFotspBgudw== dependencies: - "@metamask/approval-controller" "^4.0.0" - "@metamask/base-controller" "^3.2.0" - "@metamask/json-rpc-engine" "^7.1.1" - "@metamask/object-multiplex" "^1.2.0" - "@metamask/permission-controller" "^5.0.0" - "@metamask/phishing-controller" "^7.0.0" - "@metamask/post-message-stream" "^7.0.0" + "@metamask/approval-controller" "^5.1.2" + "@metamask/base-controller" "^4.1.0" + "@metamask/json-rpc-engine" "^7.3.2" + "@metamask/object-multiplex" "^2.0.0" + "@metamask/permission-controller" "^8.0.0" + "@metamask/phishing-controller" "^8.0.2" + "@metamask/post-message-stream" "^8.0.0" "@metamask/rpc-errors" "^6.1.0" - "@metamask/snaps-registry" "^2.1.0" - "@metamask/snaps-rpc-methods" "^3.2.0" - "@metamask/snaps-ui" "^3.1.0" - "@metamask/snaps-utils" "^3.2.0" - "@metamask/utils" "^8.1.0" + "@metamask/snaps-registry" "^3.0.0" + "@metamask/snaps-rpc-methods" "^6.0.0" + "@metamask/snaps-sdk" "^2.0.0" + "@metamask/snaps-utils" "^6.0.0" + "@metamask/utils" "^8.3.0" "@xstate/fsm" "^2.0.0" + browserify-zlib "^0.2.0" concat-stream "^2.0.0" get-npm-tarball-url "^2.0.3" - gunzip-maybe "^1.4.2" immer "^9.0.6" json-rpc-middleware-stream "^5.0.0" nanoid "^3.1.31" + readable-stream "^3.6.2" readable-web-to-node-stream "^3.0.2" - tar-stream "^3.1.6" - -"@metamask/snaps-registry@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-registry/-/snaps-registry-2.1.0.tgz#cbcb238d108993d0d78cdb9ee97e99fe74c1284c" - integrity sha512-gypNopoqgTaiOgRdJoqKAZyQSbsIHENRQmTBikZGcKAWhyBv81mA2IcVT8Qr9FgtFVrKG/0Wj+LbWQCC7HrHCw== - dependencies: - "@metamask/utils" "^8.1.0" - "@noble/secp256k1" "^1.7.1" - superstruct "^1.0.3" + tar-stream "^3.1.7" "@metamask/snaps-registry@^3.0.0": version "3.0.0" @@ -4324,20 +4303,6 @@ "@noble/hashes" "^1.3.2" superstruct "^1.0.3" -"@metamask/snaps-rpc-methods@^3.2.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-3.2.1.tgz#6e18903241aed03d997da3934da8aeaec963f513" - integrity sha512-vSlCXA0NYNeYi5zNfgPwsOeDKZ7NjB1SUUYZtFODRxs81cYwXzaqTc7EGlsXVuCL6hFePsPKcoZIVWC7+4Qyfg== - dependencies: - "@metamask/key-tree" "^9.0.0" - "@metamask/permission-controller" "^5.0.0" - "@metamask/rpc-errors" "^6.1.0" - "@metamask/snaps-ui" "^3.1.0" - "@metamask/snaps-utils" "^3.2.0" - "@metamask/utils" "^8.1.0" - "@noble/hashes" "^1.3.1" - superstruct "^1.0.3" - "@metamask/snaps-rpc-methods@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-6.0.0.tgz#ba51260f5755ee0b2afa73bdb70f2dd4ced820bb" @@ -4364,42 +4329,6 @@ is-svg "^4.4.0" superstruct "^1.0.3" -"@metamask/snaps-ui@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-ui/-/snaps-ui-3.1.0.tgz#3011240f9a91c2113ac1a67b972ede6ab7910364" - integrity sha512-31+GstgOMIuXRc8L5xhTEl4o4ZmdSmssepKmbs3NZED4tCjce9d99ZvN/iHReqSGWulkAX26SJsoonT3+EnMiQ== - dependencies: - "@metamask/utils" "^8.1.0" - is-svg "^4.4.0" - superstruct "^1.0.3" - -"@metamask/snaps-utils@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-3.2.0.tgz#d594d735647fd6743410d65e9bd4adfe51b1c0e0" - integrity sha512-nEOJgvj4RoUUeTumwVX0dLfFk06uCJy2hPHymKcupxu1eyKqjfSWNyfp49H9zNK/TqeHi4pKcOC/Zzx8WE8RMA== - dependencies: - "@babel/core" "^7.23.2" - "@babel/types" "^7.23.0" - "@metamask/base-controller" "^3.2.0" - "@metamask/key-tree" "^9.0.0" - "@metamask/permission-controller" "^5.0.0" - "@metamask/rpc-errors" "^6.1.0" - "@metamask/snaps-registry" "^2.1.0" - "@metamask/snaps-ui" "^3.1.0" - "@metamask/utils" "^8.1.0" - "@noble/hashes" "^1.3.1" - "@scure/base" "^1.1.1" - chalk "^4.1.2" - cron-parser "^4.5.0" - fast-deep-equal "^3.1.3" - fast-json-stable-stringify "^2.1.0" - is-svg "^4.4.0" - rfdc "^1.3.0" - semver "^7.5.4" - ses "^0.18.8" - superstruct "^1.0.3" - validate-npm-package-name "^5.0.0" - "@metamask/snaps-utils@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-6.0.0.tgz#ec9f31288e94a7a700cec6e788a2724f2b4c499a" @@ -4594,7 +4523,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== -"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.5", "@noble/secp256k1@^1.7.1", "@noble/secp256k1@~1.7.0": +"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.5", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== @@ -11125,12 +11054,12 @@ browserify-unibabel@^3.0.0: resolved "https://registry.yarnpkg.com/browserify-unibabel/-/browserify-unibabel-3.0.0.tgz#5a6b8f0f704ce388d3927df47337e25830f71dda" integrity sha1-WmuPD3BM44jTkn30czfiWDD3Hdo= -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: - pako "~0.2.0" + pako "~1.0.5" browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.22.1: version "4.22.1" @@ -13533,16 +13462,6 @@ duplexer@~0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.5.0, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - duplexify@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" @@ -13693,7 +13612,7 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: +end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: 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== @@ -16352,18 +16271,6 @@ gud@^1.0.0: resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== -gunzip-maybe@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" - integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== - dependencies: - browserify-zlib "^0.1.4" - is-deflate "^1.0.0" - is-gzip "^1.0.0" - peek-stream "^1.1.0" - pumpify "^1.3.3" - through2 "^2.0.3" - h3@^1.8.1, h3@^1.8.2: version "1.9.0" resolved "https://registry.yarnpkg.com/h3/-/h3-1.9.0.tgz#c5f512a93026df9837db6f30c9ef51135dd46752" @@ -17216,11 +17123,6 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-deflate@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" - integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== - is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" @@ -17280,11 +17182,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-gzip@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" - integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== - is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" @@ -21165,16 +21062,11 @@ pad-right@^0.2.2: dependencies: repeat-string "^1.5.2" -pako@^1.0.5, pako@~1.0.2: +pako@^1.0.5, pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== - param-case@^3.0.0, param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -21452,15 +21344,6 @@ pbkdf2@3.1.2, pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -peek-stream@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" - integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== - dependencies: - buffer-from "^1.0.0" - duplexify "^3.5.0" - through2 "^2.0.3" - pegjs@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" @@ -22159,23 +22042,6 @@ pump@3.0.0, pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -24412,13 +24278,6 @@ serve-static@1.15.0, serve-static@^1.13.1: parseurl "~1.3.3" send "0.18.0" -ses@^0.18.8: - version "0.18.8" - resolved "https://registry.yarnpkg.com/ses/-/ses-0.18.8.tgz#88036511ac3b3c07e4d82dd8cfc6e5f3788205b6" - integrity sha512-kOH1AhJc6gWDXKURKeU1w7iFUdImAegAljVvBg5EUBgNqjH4bxcEsGVUadVEPtA2PVRMyQp1fiSMDwEZkQNj1g== - dependencies: - "@endo/env-options" "^0.1.4" - ses@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/ses/-/ses-1.2.0.tgz#88cea67bec9c6538bcc740baa939711622457c52" @@ -25434,7 +25293,7 @@ tar-stream@^2.1.0, tar-stream@^2.1.4, tar-stream@^2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar-stream@^3.1.5, tar-stream@^3.1.6: +tar-stream@^3.1.5: version "3.1.6" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab" integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== @@ -25443,6 +25302,15 @@ tar-stream@^3.1.5, tar-stream@^3.1.6: fast-fifo "^1.2.0" streamx "^2.15.0" +tar-stream@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" + integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== + dependencies: + b4a "^1.6.4" + fast-fifo "^1.2.0" + streamx "^2.15.0" + tar@^6.1.11, tar@^6.1.2: version "6.2.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" From dd2ebe03d5f63e6be00d6a623f4081d4c52e29e7 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 19:45:45 +0000 Subject: [PATCH 04/27] chore: changing methods imports --- app/core/Engine.ts | 7 ++++--- app/core/Permissions/specifications.js | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index de1ee4e1b1e..b0edf85ff1e 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -104,12 +104,14 @@ import { SnapsRegistryState, SnapControllerEvents, SnapControllerActions, - buildSnapEndowmentSpecifications, - buildSnapRestrictedMethodSpecifications, PersistedSnapControllerState, } from '@metamask/snaps-controllers'; import { Snap } from '@metamask/snaps-utils'; import { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/types/restricted/notify'; +import { + buildSnapEndowmentSpecifications, + buildSnapRestrictedMethodSpecifications, +} from '@metamask/snaps-rpc-methods'; import { EnumToUnion, DialogType } from '@metamask/snaps-sdk'; // eslint-disable-next-line import/no-nodejs-modules import { Duplex } from 'stream'; @@ -948,7 +950,6 @@ class Engine { }, updateTransactions: true, }, - // @ts-expect-error Error might be caused by base controller version mismatch messenger: this.controllerMessenger.getRestricted({ name: 'TransactionController', allowedActions: [`${approvalController.name}:addRequest`], diff --git a/app/core/Permissions/specifications.js b/app/core/Permissions/specifications.js index c525c3a4a7a..d4443768c27 100644 --- a/app/core/Permissions/specifications.js +++ b/app/core/Permissions/specifications.js @@ -1,6 +1,8 @@ ///: BEGIN:ONLY_INCLUDE_IF(snaps) -import { endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications } from '@metamask/snaps-controllers'; -import { caveatSpecifications as snapsCaveatsSpecifications } from '@metamask/snaps-rpc-methods'; +import { + caveatSpecifications as snapsCaveatsSpecifications, + endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications, +} from '@metamask/snaps-rpc-methods'; ///: END:ONLY_INCLUDE_IF import { constructPermission, From 6e531318897d81dab89c121d07aa6148058f4549 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Fri, 16 Feb 2024 12:45:51 +0000 Subject: [PATCH 05/27] chore: bump post-message-stream package + patching --- package.json | 2 +- .../@metamask+post-message-stream+8.0.0.patch | 30 +++++++++++++++++++ yarn.lock | 12 ++------ 3 files changed, 33 insertions(+), 11 deletions(-) create mode 100644 patches/@metamask+post-message-stream+8.0.0.patch diff --git a/package.json b/package.json index 92fac92eed8..f72bc36f427 100644 --- a/package.json +++ b/package.json @@ -191,7 +191,7 @@ "@metamask/network-controller": "^8.0.0", "@metamask/permission-controller": "^4.0.1", "@metamask/phishing-controller": "^5.0.0", - "@metamask/post-message-stream": "7.0.0", + "@metamask/post-message-stream": "8.0.0", "@metamask/ppom-validator": "0.24.0", "@metamask/preferences-controller": "^4.0.0", "@metamask/react-native-button": "^3.0.0", diff --git a/patches/@metamask+post-message-stream+8.0.0.patch b/patches/@metamask+post-message-stream+8.0.0.patch new file mode 100644 index 00000000000..22d35a8aee5 --- /dev/null +++ b/patches/@metamask+post-message-stream+8.0.0.patch @@ -0,0 +1,30 @@ +diff --git a/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js b/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js +index cead325..a319ed7 100644 +--- a/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js ++++ b/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js +@@ -6,11 +6,21 @@ const utils_1 = require("@metamask/utils"); + const BasePostMessageStream_1 = require("../BasePostMessageStream"); + const utils_2 = require("../utils"); + /* istanbul ignore next */ +-const getSource = (_a = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'source')) === null || _a === void 0 ? void 0 : _a.get; +-(0, utils_1.assert)(getSource, 'MessageEvent.prototype.source getter is not defined.'); ++/** +++ * ============================== PATCH INFORMATION ============================== +++ * This patch was added for snaps controller integration. The MessageEvent is not +++ * available in react native so we can simply return undefined here and handle the +++ * origin and source elsewhere. +++ * =============================================================================== +++ */ ++/** ++// const getSource = (_a = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'source')) === null || _a === void 0 ? void 0 : _a.get; ++// (0, utils_1.assert)(getSource, 'MessageEvent.prototype.source getter is not defined.'); ++const getSource = () => undefined; + /* istanbul ignore next */ +-const getOrigin = (_b = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'origin')) === null || _b === void 0 ? void 0 : _b.get; +-(0, utils_1.assert)(getOrigin, 'MessageEvent.prototype.origin getter is not defined.'); ++// const getOrigin = (_b = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'origin')) === null || _b === void 0 ? void 0 : _b.get; ++// (0, utils_1.assert)(getOrigin, 'MessageEvent.prototype.origin getter is not defined.'); ++const getOrigin = () => undefined; + /** + * A {@link Window.postMessage} stream. + */ diff --git a/yarn.lock b/yarn.lock index ec92406036f..205bfe3aacf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4126,15 +4126,7 @@ eth-phishing-detect "^1.2.0" punycode "^2.1.1" -"@metamask/post-message-stream@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-7.0.0.tgz#b7698909ec54923b6a6990b8d46cc15c2810d840" - integrity sha512-+dTUNtuNY9o4ooPiXEOqSkqQWQ9APkVx3dAkBvAsJLetAGXvmoBeIMN1DL2QU+9BTbQ9JyJ6NycQnhvwRRc1HQ== - dependencies: - "@metamask/utils" "^5.0.0" - readable-stream "3.6.2" - -"@metamask/post-message-stream@^8.0.0": +"@metamask/post-message-stream@8.0.0", "@metamask/post-message-stream@^8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-8.0.0.tgz#101a54c2a4029879691ce83065638493d7822f48" integrity sha512-Bk5LQRxD2IJMJWKY8Yuy+86gracExv2jpjHVWm5Ek7njtdzS0Z10ABpC+yekc8vsRaJ6+xgr64wLHWbYNUqEyg== @@ -4415,7 +4407,7 @@ semver "^7.3.8" superstruct "^1.0.3" -"@metamask/utils@^5.0.0", "@metamask/utils@^5.0.1", "@metamask/utils@^5.0.2": +"@metamask/utils@^5.0.1", "@metamask/utils@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" integrity sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g== From 689874e2821121bd50193e08ada56320677abc3a Mon Sep 17 00:00:00 2001 From: JSoufer Date: Fri, 16 Feb 2024 13:34:05 +0000 Subject: [PATCH 06/27] chore: bump @metamask/base-controller --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f72bc36f427..5ab81d074d7 100644 --- a/package.json +++ b/package.json @@ -177,7 +177,7 @@ "@metamask/address-book-controller": "^2.0.0", "@metamask/approval-controller": "^3.4.0", "@metamask/assets-controllers": "^7.0.0", - "@metamask/base-controller": "^3.0.0", + "@metamask/base-controller": "^4.1.1", "@metamask/composable-controller": "^3.0.0", "@metamask/contract-metadata": "^2.1.0", "@metamask/controller-utils": "^3.4.0", From 2d16f567a074e50370618e597114f75be1449367 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 12:49:13 +0000 Subject: [PATCH 07/27] bump: snaps rpc & utils, adds sdk --- package.json | 7 +- yarn.lock | 221 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 189 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index de85eb1f742..49a33295cc8 100644 --- a/package.json +++ b/package.json @@ -199,8 +199,9 @@ "@metamask/signature-controller": "4.0.1", "@metamask/slip44": "3.1.0", "@metamask/snaps-controllers": "^3.2.0", - "@metamask/snaps-rpc-methods": "^3.2.1", - "@metamask/snaps-utils": "^3.2.0", + "@metamask/snaps-rpc-methods": "^6.0.0", + "@metamask/snaps-sdk": "^2.0.0", + "@metamask/snaps-utils": "^6.0.0", "@metamask/swappable-obj-proxy": "^2.1.0", "@metamask/swaps-controller": "^6.9.3", "@metamask/transaction-controller": "^6.1.0", @@ -292,8 +293,8 @@ "react-native-animatable": "^1.3.3", "react-native-animated-fox": "git+https://github.com/MetaMask/react-native-animated-fox.git#16e38d54d829709e497f196e31fa8ff00cdf2aa9", "react-native-background-timer": "2.1.1", - "react-native-blob-jsi-helper": "^0.3.1", "react-native-ble-plx": "3.1.1", + "react-native-blob-jsi-helper": "^0.3.1", "react-native-branch": "^5.6.2", "react-native-browser-polyfill": "0.1.2", "react-native-camera": "^3.36.0", diff --git a/yarn.lock b/yarn.lock index 1a0a03af7a6..75922f1367e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1653,6 +1653,11 @@ resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-0.1.4.tgz#e516bc3864f00b154944e444fb8996a9a0c23a45" integrity sha512-Ol8ct0aW8VK1ZaqntnUJfrYT59P6Xn36XPbHzkqQhsYkpudKDn5ILYEwGmSO/Ff+XJjv/pReNI0lhOyyrDa9mg== +"@endo/env-options@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.1.tgz#eee630f8eff01580ec49e0dedcb1b6cef05d89a4" + integrity sha512-uCwlJ8Vkndx/VBBo36BdYHdxSoQPy7ZZpwyJNfv86Rh4B1IZfqzCRPf0u0mPgJdzOr7lShQey60SuYwoMSZ9Xg== + "@es-joy/jsdoccomment@~0.36.1": version "0.36.1" resolved "https://registry.yarnpkg.com/@es-joy/jsdoccomment/-/jsdoccomment-0.36.1.tgz#c37db40da36e4b848da5fd427a74bae3b004a30f" @@ -3642,12 +3647,12 @@ "@metamask/utils" "^8.1.0" immer "^9.0.6" -"@metamask/base-controller@^4.0.0", "@metamask/base-controller@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-4.0.1.tgz#3bb3117bdfdfcf8fa5058f13c7dcb10ac6fe7436" - integrity sha512-t1DXcDHaFmx23XSMcz3nHP+ru4vvZmc07eVGYBC5o/4lzKdKq2PZy6XFw5noLtm7XOf3KO1ItXWikUAy1cEe5w== +"@metamask/base-controller@^4.0.0", "@metamask/base-controller@^4.0.1", "@metamask/base-controller@^4.1.0", "@metamask/base-controller@^4.1.1": + version "4.1.1" + resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-4.1.1.tgz#9b411adf4822de7382fe69d07bb6b3fc3e738923" + integrity sha512-sJdsd/XlyOa0kRJ16qbM+xeQ8peV1yZcYumJmHCClPK09MkAlxq7EzsrahVZXUCFwcxtSucf244pbttnVqNthw== dependencies: - "@metamask/utils" "^8.2.0" + "@metamask/utils" "^8.3.0" immer "^9.0.6" "@metamask/browser-passworder@^4.1.0": @@ -3717,14 +3722,14 @@ ethereumjs-util "^7.0.10" fast-deep-equal "^3.1.3" -"@metamask/controller-utils@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@metamask/controller-utils/-/controller-utils-8.0.1.tgz#c6404b9df7ad995a89b0becb7a7b421f82478789" - integrity sha512-RjkaMGxe5JbNcW3d3lGE2YM3hFEWtp3iedyP36y9Ea5eskYjmBvd3uxhAnIzocwwyru1V8CPXXQyckIepN3dYA== +"@metamask/controller-utils@^8.0.1", "@metamask/controller-utils@^8.0.2": + version "8.0.3" + resolved "https://registry.yarnpkg.com/@metamask/controller-utils/-/controller-utils-8.0.3.tgz#b27e4ba5f579ab59bf49174aae652fec41652337" + integrity sha512-a1rxrBcu4rSqeSuH3vUIYA7fK8ZLnogxMOTk19Q86fOhuYN/p2CDwgxdr3RrZtDgyVEe5RJ38TSXiPI8Nh5g6A== dependencies: "@metamask/eth-query" "^4.0.0" - "@metamask/ethjs-unit" "^0.2.1" - "@metamask/utils" "^8.2.0" + "@metamask/ethjs-unit" "^0.3.0" + "@metamask/utils" "^8.3.0" "@spruceid/siwe-parser" "1.1.3" eth-ens-namehash "^2.0.8" ethereumjs-util "^7.0.10" @@ -3965,6 +3970,14 @@ bn.js "4.11.6" number-to-bn "1.7.0" +"@metamask/ethjs-unit@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@metamask/ethjs-unit/-/ethjs-unit-0.3.0.tgz#d44d21d3b4ad443fb0cdd0362ea07c6f51e68ec4" + integrity sha512-HZtg69ODXYS9+ovKUYofZuIAwq4fc2/MGazD4vBQRKWMhPu4ySdmgR0EuzbxEK4uhr18KA4pbL+mCYjyjGxY7w== + dependencies: + "@metamask/number-to-bn" "^1.7.1" + bn.js "^5.2.1" + "@metamask/gas-fee-controller@6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@metamask/gas-fee-controller/-/gas-fee-controller-6.0.0.tgz#a0fc8233284708cd7924517ca7b4a7624dfe5c42" @@ -3982,14 +3995,14 @@ immer "^9.0.6" uuid "^8.3.2" -"@metamask/json-rpc-engine@^7.0.0", "@metamask/json-rpc-engine@^7.1.1", "@metamask/json-rpc-engine@^7.3.0": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.0.tgz#eec5505f0ea41bd46c785c8722c5a10a3afd9850" - integrity sha512-93cOdqnpt0P9uU/aC65GZulaDh6qNFEm8IFXHbI4lisK7oebU2SLarJUBZPebjko7hzwmfV1M1h7FQAlyRkVLg== +"@metamask/json-rpc-engine@^7.0.0", "@metamask/json-rpc-engine@^7.1.1", "@metamask/json-rpc-engine@^7.3.0", "@metamask/json-rpc-engine@^7.3.2": + version "7.3.2" + resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz#e8f0695811619eef7b7c894ba5cf782db9f1c2cb" + integrity sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg== dependencies: "@metamask/rpc-errors" "^6.1.0" "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^8.2.0" + "@metamask/utils" "^8.3.0" "@metamask/key-tree@^9.0.0": version "9.0.0" @@ -4114,6 +4127,14 @@ json-rpc-engine "^6.1.0" uuid "^8.3.2" +"@metamask/number-to-bn@^1.7.1": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@metamask/number-to-bn/-/number-to-bn-1.7.1.tgz#a449ec8b2edba211e0dc3e1e0428ff2cc2bf7ab4" + integrity sha512-qCN+Au4amvcVii2LdOJNndYhdmk5Lk9tlStJhKpZ8tGeYQDJTghqYXJuSUVPHvfl6FUfKY1i1Or2j2EbnEerSQ== + dependencies: + bn.js "5.2.1" + strip-hex-prefix "1.0.0" + "@metamask/object-multiplex@^1.1.0", "@metamask/object-multiplex@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-1.2.0.tgz#38fc15c142f61939391e1b9a8eed679696c7e4f4" @@ -4123,6 +4144,14 @@ once "^1.4.0" readable-stream "^2.3.3" +"@metamask/object-multiplex@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-2.0.0.tgz#aa6e4aa7b4e2f457ea4bb51cd7281d931e0aa35d" + integrity sha512-+ItrieVZie3j2LfYE0QkdW3dsEMfMEp419IGx1zyeLqjRZ14iQUPRO0H6CGgfAAoC0x6k2PfCAGRwJUA9BMrqA== + dependencies: + once "^1.4.0" + readable-stream "^3.6.2" + "@metamask/obs-store@^7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@metamask/obs-store/-/obs-store-7.0.0.tgz#6cae5f28306bb3e83a381bc9ae22682316095bd3" @@ -4181,6 +4210,21 @@ immer "^9.0.6" nanoid "^3.1.31" +"@metamask/permission-controller@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-8.0.0.tgz#2f358e9793cab5f047cb536906b6b0a71c93d107" + integrity sha512-VwrkxKnvUSrpQeqljC/okrJG47tuLKkNrfmaj1SJ9S6/TUQjeRpsE0abKRt6pprTCbDpzJdyspexZq2aWykGLQ== + dependencies: + "@metamask/base-controller" "^4.1.1" + "@metamask/controller-utils" "^8.0.2" + "@metamask/json-rpc-engine" "^7.3.2" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/utils" "^8.3.0" + "@types/deep-freeze-strict" "^1.1.0" + deep-freeze-strict "^1.1.1" + immer "^9.0.6" + nanoid "^3.1.31" + "@metamask/phishing-controller@^5.0.0": version "5.0.0" resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-5.0.0.tgz#f2d1006c4063d13f62f1926d2d3c7ffac5736fec" @@ -4250,6 +4294,24 @@ json-rpc-middleware-stream "^4.2.1" webextension-polyfill "^0.10.0" +"@metamask/providers@^14.0.2": + version "14.0.2" + resolved "https://registry.yarnpkg.com/@metamask/providers/-/providers-14.0.2.tgz#683c43ed1f58075b8238b85e7c585ecefe484f0b" + integrity sha512-6KuCLQVzE/8IA1r8LkTo0FbG4fgm7ryjzleda0lMsz5XMxinNGuXAoh7Y08bX5OHVpDEjkHREPhuLw4dFK9wIQ== + dependencies: + "@metamask/json-rpc-engine" "^7.1.1" + "@metamask/object-multiplex" "^2.0.0" + "@metamask/rpc-errors" "^6.0.0" + "@metamask/safe-event-emitter" "^3.0.0" + "@metamask/utils" "^8.1.0" + detect-browser "^5.2.0" + extension-port-stream "^3.0.0" + fast-deep-equal "^3.1.3" + is-stream "^2.0.0" + json-rpc-middleware-stream "^5.0.1" + readable-stream "^3.6.2" + webextension-polyfill "^0.10.0" + "@metamask/react-native-button@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@metamask/react-native-button/-/react-native-button-3.0.0.tgz#4af8affd11e2b285cfc1b1752280797e1b33e62b" @@ -4318,7 +4380,7 @@ immer "^9.0.6" lodash "^4.17.21" -"@metamask/slip44@3.1.0": +"@metamask/slip44@3.1.0", "@metamask/slip44@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@metamask/slip44/-/slip44-3.1.0.tgz#f8067796f89fbbd6eaa594660bd6a1fbd6837a51" integrity sha512-bFlJ8jhTYJ4iQ0zgh2WMO2615UJ4Ne5J831EjsqKYaZs3qd6UTw/cy76hAmSxhnBluNAH5S6zZzxESLrTitCmQ== @@ -4360,7 +4422,17 @@ "@noble/secp256k1" "^1.7.1" superstruct "^1.0.3" -"@metamask/snaps-rpc-methods@^3.2.0", "@metamask/snaps-rpc-methods@^3.2.1": +"@metamask/snaps-registry@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-registry/-/snaps-registry-3.0.0.tgz#aced797608e4b415e4b9d6b6673f2bc42a02eadb" + integrity sha512-ECanoG//3H3cYGAxKx8yOUibcd4woIopzaqJqIsb7HPNYCeBtW9MoOT5C50u1eEK6mZyNIZVylb+nBboLG1HNA== + dependencies: + "@metamask/utils" "^8.1.0" + "@noble/curves" "^1.2.0" + "@noble/hashes" "^1.3.2" + superstruct "^1.0.3" + +"@metamask/snaps-rpc-methods@^3.2.0": version "3.2.1" resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-3.2.1.tgz#6e18903241aed03d997da3934da8aeaec963f513" integrity sha512-vSlCXA0NYNeYi5zNfgPwsOeDKZ7NjB1SUUYZtFODRxs81cYwXzaqTc7EGlsXVuCL6hFePsPKcoZIVWC7+4Qyfg== @@ -4374,6 +4446,32 @@ "@noble/hashes" "^1.3.1" superstruct "^1.0.3" +"@metamask/snaps-rpc-methods@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-6.0.0.tgz#ba51260f5755ee0b2afa73bdb70f2dd4ced820bb" + integrity sha512-jwr8Uordq2FsRzglwWg4H0qsGu5BQdnSY3iCZbiQzR87fUkLyJrWDIw+ATb7xO+0Xk8eIsxsvrlYLFEUI+UouQ== + dependencies: + "@metamask/key-tree" "^9.0.0" + "@metamask/permission-controller" "^8.0.0" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/snaps-sdk" "^2.0.0" + "@metamask/snaps-utils" "^6.0.0" + "@metamask/utils" "^8.3.0" + "@noble/hashes" "^1.3.1" + superstruct "^1.0.3" + +"@metamask/snaps-sdk@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-sdk/-/snaps-sdk-2.0.0.tgz#dfdc25543449e66375cfab2bd79d0ba74c6148d3" + integrity sha512-NwRSlgxVpqFEVnTe4zst3/2uMqbltvw8BdCyW7dX+aIZ9jNQXAC7ZDeJQm3WDxvSTLnv65nBJv0AaDVZK21q+w== + dependencies: + "@metamask/key-tree" "^9.0.0" + "@metamask/providers" "^14.0.2" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/utils" "^8.3.0" + is-svg "^4.4.0" + superstruct "^1.0.3" + "@metamask/snaps-ui@^3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-ui/-/snaps-ui-3.1.0.tgz#3011240f9a91c2113ac1a67b972ede6ab7910364" @@ -4410,6 +4508,34 @@ superstruct "^1.0.3" validate-npm-package-name "^5.0.0" +"@metamask/snaps-utils@^6.0.0": + version "6.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-6.0.0.tgz#ec9f31288e94a7a700cec6e788a2724f2b4c499a" + integrity sha512-YO8U1eTmJoRsJfFpJIOEC9cBK6JDFg+Q+xbXRDpwl5/4G40D5q1MFjgwYUN8odyeq0vUcNlc09S2/2PsZLMbRw== + dependencies: + "@babel/core" "^7.23.2" + "@babel/types" "^7.23.0" + "@metamask/base-controller" "^4.1.0" + "@metamask/key-tree" "^9.0.0" + "@metamask/permission-controller" "^8.0.0" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/slip44" "^3.1.0" + "@metamask/snaps-registry" "^3.0.0" + "@metamask/snaps-sdk" "^2.0.0" + "@metamask/utils" "^8.3.0" + "@noble/hashes" "^1.3.1" + "@scure/base" "^1.1.1" + chalk "^4.1.2" + cron-parser "^4.5.0" + fast-deep-equal "^3.1.3" + fast-json-stable-stringify "^2.1.0" + is-svg "^4.4.0" + rfdc "^1.3.0" + semver "^7.5.4" + ses "^1.1.0" + superstruct "^1.0.3" + validate-npm-package-name "^5.0.0" + "@metamask/swappable-obj-proxy@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@metamask/swappable-obj-proxy/-/swappable-obj-proxy-2.1.0.tgz#7558cd5c51d60b64207d2219cba61702aa44de52" @@ -4503,10 +4629,10 @@ semver "^7.3.8" superstruct "^1.0.3" -"@metamask/utils@^8.0.0", "@metamask/utils@^8.1.0", "@metamask/utils@^8.2.0": - version "8.2.1" - resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.2.1.tgz#2f8b60c3b3c49423ca9d15061bb797464440e385" - integrity sha512-dlnpow8r0YHDDL1xKCEwUoTGOAo9icdv+gaJG0EbgDnkD/BDqW2eH1XMtm9i7rPaiHWo/aLtcrh9WBhkCq/viw== +"@metamask/utils@^8.0.0", "@metamask/utils@^8.1.0", "@metamask/utils@^8.2.0", "@metamask/utils@^8.3.0": + version "8.3.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.3.0.tgz#a20de447aeb9ffb75924d822a186a597033984b6" + integrity sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw== dependencies: "@ethereumjs/tx" "^4.2.0" "@noble/hashes" "^1.3.1" @@ -4537,6 +4663,13 @@ dependencies: "@noble/hashes" "1.3.1" +"@noble/curves@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + "@noble/ed25519@^1.6.0": version "1.7.3" resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-1.7.3.tgz#57e1677bf6885354b466c38e2b620c62f45a7123" @@ -4552,10 +4685,10 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== -"@noble/hashes@^1.0.0", "@noble/hashes@^1.3.1", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": - version "1.3.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" - integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@1.3.3", "@noble/hashes@^1.0.0", "@noble/hashes@^1.3.1", "@noble/hashes@^1.3.2", "@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== "@noble/hashes@~1.1.1": version "1.1.5" @@ -10930,16 +11063,16 @@ bn.js@4.11.8: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@5.2.1, bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.12.0: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - body-parser@1.20.1, body-parser@^1.18.2: version "1.20.1" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668" @@ -15225,6 +15358,14 @@ extension-port-stream@^2.1.1: dependencies: webextension-polyfill ">=0.10.0 <1.0" +extension-port-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/extension-port-stream/-/extension-port-stream-3.0.0.tgz#00a7185fe2322708a36ed24843c81bd754925fef" + integrity sha512-an2S5quJMiy5bnZKEf6AkfH/7r8CzHvhchU40gxN+OM6HPhe7Z9T1FUychcf2M9PpPOO0Hf7BAEfJkw2TDIBDw== + dependencies: + readable-stream "^3.6.2 || ^4.4.2" + webextension-polyfill ">=0.10.0 <1.0" + external-editor@^3.0.3: version "3.1.0" resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" @@ -18348,7 +18489,7 @@ json-rpc-middleware-stream@^4.2.1: json-rpc-engine "^6.1.0" readable-stream "^2.3.3" -json-rpc-middleware-stream@^5.0.0: +json-rpc-middleware-stream@^5.0.0, json-rpc-middleware-stream@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-rpc-middleware-stream/-/json-rpc-middleware-stream-5.0.1.tgz#9a5984b4dfe6ccf4f51c648e9327dbe3abf88860" integrity sha512-PMrzifccjdilqU0xftUkusJq0J9O73q66YdVduEmu6vkiTh3V1akliYJGWBAbhg+vhFPC8btUSANa5FNo7a6bg== @@ -23441,15 +23582,16 @@ readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.5, readable string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^4.1.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.4.0.tgz#55ce132d60a988c460d75c631e9ccf6a7229b468" - integrity sha512-kDMOq0qLtxV9f/SQv522h8cxZBqNZXuXNyjyezmfAAuribMyVXziljpQ/uQhfE1XLg2/TLTW2DsnoE4VAi/krg== +"readable-stream@^3.6.2 || ^4.4.2", readable-stream@^4.1.0: + version "4.5.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-4.5.2.tgz#9e7fc4c45099baeed934bff6eb97ba6cf2729e09" + integrity sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g== dependencies: abort-controller "^3.0.0" buffer "^6.0.3" events "^3.3.0" process "^0.11.10" + string_decoder "^1.3.0" readable-stream@~1.0.15, readable-stream@~1.0.26, readable-stream@~1.0.26-4, readable-stream@~1.0.31: version "1.0.34" @@ -24356,6 +24498,13 @@ ses@^0.18.8: dependencies: "@endo/env-options" "^0.1.4" +ses@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ses/-/ses-1.2.0.tgz#88cea67bec9c6538bcc740baa939711622457c52" + integrity sha512-+klZ2zjFPbHAkf9owGeih+ZB1lqUqvVoCeL5IpNXmIZPhI5rGE1tR729EZmfBzmPh8j+CrsLr/+cTZUmHGFr9g== + dependencies: + "@endo/env-options" "^1.1.1" + 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" From 50f9ac6eabfe0c9b6bd2944f14df5eac6a1aac3b Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 12:49:43 +0000 Subject: [PATCH 08/27] chore: refactor methods usages due bumped packages --- app/core/Engine.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 5e4426887a7..802ce750318 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -108,8 +108,9 @@ import { buildSnapRestrictedMethodSpecifications, PersistedSnapControllerState, } from '@metamask/snaps-controllers'; -import { EnumToUnion, Snap } from '@metamask/snaps-utils'; -import { DialogType, NotificationArgs } from '@metamask/snaps-rpc-methods'; +import { Snap } from '@metamask/snaps-utils'; +import { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/types/restricted/notify'; +import { EnumToUnion, DialogType } from '@metamask/snaps-sdk'; // eslint-disable-next-line import/no-nodejs-modules import { Duplex } from 'stream'; ///: END:ONLY_INCLUDE_IF From ae042aec407030fbc656983a9b2daf2842c81c07 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 19:45:23 +0000 Subject: [PATCH 09/27] chore: bump snaps-controller package --- package.json | 2 +- yarn.lock | 242 ++++++++++++--------------------------------------- 2 files changed, 56 insertions(+), 188 deletions(-) diff --git a/package.json b/package.json index 49a33295cc8..a83afdbbbdd 100644 --- a/package.json +++ b/package.json @@ -198,7 +198,7 @@ "@metamask/sdk-communication-layer": "^0.12.0", "@metamask/signature-controller": "4.0.1", "@metamask/slip44": "3.1.0", - "@metamask/snaps-controllers": "^3.2.0", + "@metamask/snaps-controllers": "^5.0.0", "@metamask/snaps-rpc-methods": "^6.0.0", "@metamask/snaps-sdk": "^2.0.0", "@metamask/snaps-utils": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index 75922f1367e..827ccd97333 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1648,11 +1648,6 @@ resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== -"@endo/env-options@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-0.1.4.tgz#e516bc3864f00b154944e444fb8996a9a0c23a45" - integrity sha512-Ol8ct0aW8VK1ZaqntnUJfrYT59P6Xn36XPbHzkqQhsYkpudKDn5ILYEwGmSO/Ff+XJjv/pReNI0lhOyyrDa9mg== - "@endo/env-options@^1.1.1": version "1.1.1" resolved "https://registry.yarnpkg.com/@endo/env-options/-/env-options-1.1.1.tgz#eee630f8eff01580ec49e0dedcb1b6cef05d89a4" @@ -3598,7 +3593,7 @@ "@metamask/controller-utils" "^6.0.0" "@metamask/utils" "^8.2.0" -"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^4.0.0": +"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^5.1.2": version "3.4.0" resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-3.4.0.tgz#282900361d42f785578728b45014ff8cb5e557ea" integrity sha512-DjqrhiX9+W/Fh6Crr7FPJ87Y/uhPWzBvfXGtekv1LHZNmEtUxkrA7aelddUM0fpTdURIGT4aNGBoQudFidc+Lw== @@ -3639,7 +3634,7 @@ single-call-balance-checker-abi "^1.0.0" uuid "^8.3.2" -"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.1.0", "@metamask/base-controller@^3.2.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.2", "@metamask/base-controller@^3.2.3": +"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.1.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.2", "@metamask/base-controller@^3.2.3": version "3.2.3" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-3.2.3.tgz#7436a14f6789acf0814952dabaa70ee4fb7d473c" integrity sha512-k66oZe7BOEx0D5N5X8feE/32QlrUTmiEHHAZU/yCac2+VHllJOCEQV/cTeaAtgepnEf8O7SskvYZN+eIjgS99w== @@ -4135,7 +4130,7 @@ bn.js "5.2.1" strip-hex-prefix "1.0.0" -"@metamask/object-multiplex@^1.1.0", "@metamask/object-multiplex@^1.2.0": +"@metamask/object-multiplex@^1.1.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@metamask/object-multiplex/-/object-multiplex-1.2.0.tgz#38fc15c142f61939391e1b9a8eed679696c7e4f4" integrity sha512-hksV602d3NWE2Q30Mf2Np1WfVKaGqfJRy9vpHAmelbaD0OkDt06/0KQkRR6UVYdMbTbkuEu8xN5JDUU80inGwQ== @@ -4194,22 +4189,6 @@ json-rpc-engine "^6.1.0" nanoid "^3.1.31" -"@metamask/permission-controller@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-5.0.0.tgz#d7f8d70085f43ac676a458cec6a7eaa95814ade7" - integrity sha512-l9+oPn09qoAFdwrI2nlbgLmXI9HDXLR4ef+kLXhIYff4ISTqxxD160vueH8Ip6woBgQ8Qa0q3sdERAN7nd4FfA== - dependencies: - "@metamask/approval-controller" "^4.0.0" - "@metamask/base-controller" "^3.2.3" - "@metamask/controller-utils" "^5.0.2" - "@metamask/json-rpc-engine" "^7.1.1" - "@metamask/rpc-errors" "^6.0.0" - "@metamask/utils" "^8.1.0" - "@types/deep-freeze-strict" "^1.1.0" - deep-freeze-strict "^1.1.1" - immer "^9.0.6" - nanoid "^3.1.31" - "@metamask/permission-controller@^8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-8.0.0.tgz#2f358e9793cab5f047cb536906b6b0a71c93d107" @@ -4236,18 +4215,18 @@ eth-phishing-detect "^1.2.0" punycode "^2.1.1" -"@metamask/phishing-controller@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-7.0.1.tgz#1544aef4d86a684bf171c76e3b1bfe13b2350b44" - integrity sha512-ONHE8EQsd2zehaOJN9UoVaZ4tMAGeOdCQkngUtcY+kO5W8gzaOS2W3EhthJ2TAS19WoJWS47004gFLtnerLmiQ== +"@metamask/phishing-controller@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@metamask/phishing-controller/-/phishing-controller-8.0.2.tgz#612d2d2d0d5e8746289fda036b0382a63ea82ffb" + integrity sha512-aRnpv+AtjqffT7hnwF1XZahWs8K99dOd8DcAAaVJyWsdt0cT3o6ryZXHMcFTUGP8Fl88LmkLm1970zfUO8AxFg== dependencies: - "@metamask/base-controller" "^3.2.3" - "@metamask/controller-utils" "^5.0.2" + "@metamask/base-controller" "^4.1.1" + "@metamask/controller-utils" "^8.0.2" "@types/punycode" "^2.1.0" eth-phishing-detect "^1.2.0" punycode "^2.1.1" -"@metamask/post-message-stream@7.0.0", "@metamask/post-message-stream@^7.0.0": +"@metamask/post-message-stream@7.0.0": version "7.0.0" resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-7.0.0.tgz#b7698909ec54923b6a6990b8d46cc15c2810d840" integrity sha512-+dTUNtuNY9o4ooPiXEOqSkqQWQ9APkVx3dAkBvAsJLetAGXvmoBeIMN1DL2QU+9BTbQ9JyJ6NycQnhvwRRc1HQ== @@ -4255,6 +4234,14 @@ "@metamask/utils" "^5.0.0" readable-stream "3.6.2" +"@metamask/post-message-stream@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-8.0.0.tgz#101a54c2a4029879691ce83065638493d7822f48" + integrity sha512-Bk5LQRxD2IJMJWKY8Yuy+86gracExv2jpjHVWm5Ek7njtdzS0Z10ABpC+yekc8vsRaJ6+xgr64wLHWbYNUqEyg== + dependencies: + "@metamask/utils" "^8.1.0" + readable-stream "3.6.2" + "@metamask/ppom-validator@0.24.0": version "0.24.0" resolved "https://registry.yarnpkg.com/@metamask/ppom-validator/-/ppom-validator-0.24.0.tgz#86ee0146a51984f6c39fe4830e37270d734d8b83" @@ -4385,42 +4372,34 @@ resolved "https://registry.yarnpkg.com/@metamask/slip44/-/slip44-3.1.0.tgz#f8067796f89fbbd6eaa594660bd6a1fbd6837a51" integrity sha512-bFlJ8jhTYJ4iQ0zgh2WMO2615UJ4Ne5J831EjsqKYaZs3qd6UTw/cy76hAmSxhnBluNAH5S6zZzxESLrTitCmQ== -"@metamask/snaps-controllers@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-3.2.0.tgz#33924bda4e7c5395e6a573d306b786c99161f6e1" - integrity sha512-TGxqzsZ3rkzJjxaFHS1ntqaDHCBSVoTUYWRxjkKzFCcMcbX2Quzm9Coong1QlQ7fQjhcCCy4NsHEZPCl8tBB7g== +"@metamask/snaps-controllers@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@metamask/snaps-controllers/-/snaps-controllers-5.0.0.tgz#007811ab7a7f7d9dd772e94a142c9bb8f7697c4d" + integrity sha512-LZeRFJ3alhR+yjfsoMQvX/f3w0V2eePXjEwOiB95LxhhS93aai+F1jEkM2he9lSOV+pBI6jsBEaXFotspBgudw== dependencies: - "@metamask/approval-controller" "^4.0.0" - "@metamask/base-controller" "^3.2.0" - "@metamask/json-rpc-engine" "^7.1.1" - "@metamask/object-multiplex" "^1.2.0" - "@metamask/permission-controller" "^5.0.0" - "@metamask/phishing-controller" "^7.0.0" - "@metamask/post-message-stream" "^7.0.0" + "@metamask/approval-controller" "^5.1.2" + "@metamask/base-controller" "^4.1.0" + "@metamask/json-rpc-engine" "^7.3.2" + "@metamask/object-multiplex" "^2.0.0" + "@metamask/permission-controller" "^8.0.0" + "@metamask/phishing-controller" "^8.0.2" + "@metamask/post-message-stream" "^8.0.0" "@metamask/rpc-errors" "^6.1.0" - "@metamask/snaps-registry" "^2.1.0" - "@metamask/snaps-rpc-methods" "^3.2.0" - "@metamask/snaps-ui" "^3.1.0" - "@metamask/snaps-utils" "^3.2.0" - "@metamask/utils" "^8.1.0" + "@metamask/snaps-registry" "^3.0.0" + "@metamask/snaps-rpc-methods" "^6.0.0" + "@metamask/snaps-sdk" "^2.0.0" + "@metamask/snaps-utils" "^6.0.0" + "@metamask/utils" "^8.3.0" "@xstate/fsm" "^2.0.0" + browserify-zlib "^0.2.0" concat-stream "^2.0.0" get-npm-tarball-url "^2.0.3" - gunzip-maybe "^1.4.2" immer "^9.0.6" json-rpc-middleware-stream "^5.0.0" nanoid "^3.1.31" + readable-stream "^3.6.2" readable-web-to-node-stream "^3.0.2" - tar-stream "^3.1.6" - -"@metamask/snaps-registry@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-registry/-/snaps-registry-2.1.0.tgz#cbcb238d108993d0d78cdb9ee97e99fe74c1284c" - integrity sha512-gypNopoqgTaiOgRdJoqKAZyQSbsIHENRQmTBikZGcKAWhyBv81mA2IcVT8Qr9FgtFVrKG/0Wj+LbWQCC7HrHCw== - dependencies: - "@metamask/utils" "^8.1.0" - "@noble/secp256k1" "^1.7.1" - superstruct "^1.0.3" + tar-stream "^3.1.7" "@metamask/snaps-registry@^3.0.0": version "3.0.0" @@ -4432,20 +4411,6 @@ "@noble/hashes" "^1.3.2" superstruct "^1.0.3" -"@metamask/snaps-rpc-methods@^3.2.0": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-3.2.1.tgz#6e18903241aed03d997da3934da8aeaec963f513" - integrity sha512-vSlCXA0NYNeYi5zNfgPwsOeDKZ7NjB1SUUYZtFODRxs81cYwXzaqTc7EGlsXVuCL6hFePsPKcoZIVWC7+4Qyfg== - dependencies: - "@metamask/key-tree" "^9.0.0" - "@metamask/permission-controller" "^5.0.0" - "@metamask/rpc-errors" "^6.1.0" - "@metamask/snaps-ui" "^3.1.0" - "@metamask/snaps-utils" "^3.2.0" - "@metamask/utils" "^8.1.0" - "@noble/hashes" "^1.3.1" - superstruct "^1.0.3" - "@metamask/snaps-rpc-methods@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-rpc-methods/-/snaps-rpc-methods-6.0.0.tgz#ba51260f5755ee0b2afa73bdb70f2dd4ced820bb" @@ -4472,42 +4437,6 @@ is-svg "^4.4.0" superstruct "^1.0.3" -"@metamask/snaps-ui@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-ui/-/snaps-ui-3.1.0.tgz#3011240f9a91c2113ac1a67b972ede6ab7910364" - integrity sha512-31+GstgOMIuXRc8L5xhTEl4o4ZmdSmssepKmbs3NZED4tCjce9d99ZvN/iHReqSGWulkAX26SJsoonT3+EnMiQ== - dependencies: - "@metamask/utils" "^8.1.0" - is-svg "^4.4.0" - superstruct "^1.0.3" - -"@metamask/snaps-utils@^3.2.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-3.2.0.tgz#d594d735647fd6743410d65e9bd4adfe51b1c0e0" - integrity sha512-nEOJgvj4RoUUeTumwVX0dLfFk06uCJy2hPHymKcupxu1eyKqjfSWNyfp49H9zNK/TqeHi4pKcOC/Zzx8WE8RMA== - dependencies: - "@babel/core" "^7.23.2" - "@babel/types" "^7.23.0" - "@metamask/base-controller" "^3.2.0" - "@metamask/key-tree" "^9.0.0" - "@metamask/permission-controller" "^5.0.0" - "@metamask/rpc-errors" "^6.1.0" - "@metamask/snaps-registry" "^2.1.0" - "@metamask/snaps-ui" "^3.1.0" - "@metamask/utils" "^8.1.0" - "@noble/hashes" "^1.3.1" - "@scure/base" "^1.1.1" - chalk "^4.1.2" - cron-parser "^4.5.0" - fast-deep-equal "^3.1.3" - fast-json-stable-stringify "^2.1.0" - is-svg "^4.4.0" - rfdc "^1.3.0" - semver "^7.5.4" - ses "^0.18.8" - superstruct "^1.0.3" - validate-npm-package-name "^5.0.0" - "@metamask/snaps-utils@^6.0.0": version "6.0.0" resolved "https://registry.yarnpkg.com/@metamask/snaps-utils/-/snaps-utils-6.0.0.tgz#ec9f31288e94a7a700cec6e788a2724f2b4c499a" @@ -4695,7 +4624,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.5.tgz#1a0377f3b9020efe2fae03290bd2a12140c95c11" integrity sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ== -"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.5", "@noble/secp256k1@^1.7.1", "@noble/secp256k1@~1.7.0": +"@noble/secp256k1@1.7.1", "@noble/secp256k1@^1.5.5", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== @@ -11219,12 +11148,12 @@ browserify-unibabel@^3.0.0: resolved "https://registry.yarnpkg.com/browserify-unibabel/-/browserify-unibabel-3.0.0.tgz#5a6b8f0f704ce388d3927df47337e25830f71dda" integrity sha1-WmuPD3BM44jTkn30czfiWDD3Hdo= -browserify-zlib@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" - integrity sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ== +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== dependencies: - pako "~0.2.0" + pako "~1.0.5" browserslist@^4.14.5, browserslist@^4.21.9, browserslist@^4.22.1: version "4.22.1" @@ -13627,16 +13556,6 @@ duplexer@~0.1.1: resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -duplexify@^3.5.0, duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - duplexify@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.2.tgz#18b4f8d28289132fa0b9573c898d9f903f81c7b0" @@ -13787,7 +13706,7 @@ encoding@^0.1.13: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: +end-of-stream@^1.1.0, end-of-stream@^1.4.1, end-of-stream@^1.4.4: 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== @@ -16446,18 +16365,6 @@ gud@^1.0.0: resolved "https://registry.yarnpkg.com/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" integrity sha512-zGEOVKFM5sVPPrYs7J5/hYEw2Pof8KCyOwyhG8sAF26mCAeUFAcYPu1mwB7hhpIP29zOIBaDqwuHdLp0jvZXjw== -gunzip-maybe@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz#b913564ae3be0eda6f3de36464837a9cd94b98ac" - integrity sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw== - dependencies: - browserify-zlib "^0.1.4" - is-deflate "^1.0.0" - is-gzip "^1.0.0" - peek-stream "^1.1.0" - pumpify "^1.3.3" - through2 "^2.0.3" - h3@^1.8.1, h3@^1.8.2: version "1.9.0" resolved "https://registry.yarnpkg.com/h3/-/h3-1.9.0.tgz#c5f512a93026df9837db6f30c9ef51135dd46752" @@ -17305,11 +17212,6 @@ is-decimal@^1.0.0: resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== -is-deflate@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" - integrity sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ== - is-directory@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" @@ -17369,11 +17271,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-gzip@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" - integrity sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ== - is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" @@ -21254,16 +21151,11 @@ pad-right@^0.2.2: dependencies: repeat-string "^1.5.2" -pako@^1.0.5, pako@~1.0.2: +pako@^1.0.5, pako@~1.0.2, pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== -pako@~0.2.0: - version "0.2.9" - resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" - integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA== - param-case@^3.0.0, param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -21541,15 +21433,6 @@ pbkdf2@3.1.2, pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -peek-stream@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" - integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== - dependencies: - buffer-from "^1.0.0" - duplexify "^3.5.0" - through2 "^2.0.3" - pegjs@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/pegjs/-/pegjs-0.10.0.tgz#cf8bafae6eddff4b5a7efb185269eaaf4610ddbd" @@ -22248,23 +22131,6 @@ pump@3.0.0, pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -pumpify@^1.3.3: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -24491,13 +24357,6 @@ serve-static@1.15.0, serve-static@^1.13.1: parseurl "~1.3.3" send "0.18.0" -ses@^0.18.8: - version "0.18.8" - resolved "https://registry.yarnpkg.com/ses/-/ses-0.18.8.tgz#88036511ac3b3c07e4d82dd8cfc6e5f3788205b6" - integrity sha512-kOH1AhJc6gWDXKURKeU1w7iFUdImAegAljVvBg5EUBgNqjH4bxcEsGVUadVEPtA2PVRMyQp1fiSMDwEZkQNj1g== - dependencies: - "@endo/env-options" "^0.1.4" - ses@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/ses/-/ses-1.2.0.tgz#88cea67bec9c6538bcc740baa939711622457c52" @@ -25513,7 +25372,7 @@ tar-stream@^2.1.0, tar-stream@^2.1.4, tar-stream@^2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar-stream@^3.1.5, tar-stream@^3.1.6: +tar-stream@^3.1.5: version "3.1.6" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab" integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== @@ -25522,6 +25381,15 @@ tar-stream@^3.1.5, tar-stream@^3.1.6: fast-fifo "^1.2.0" streamx "^2.15.0" +tar-stream@^3.1.7: + version "3.1.7" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" + integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== + dependencies: + b4a "^1.6.4" + fast-fifo "^1.2.0" + streamx "^2.15.0" + tar@^6.1.11, tar@^6.1.2: version "6.2.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" From e9725530fe7b813ae4b5411c010010370f3ba62b Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 15 Feb 2024 19:45:45 +0000 Subject: [PATCH 10/27] chore: changing methods imports --- app/core/Engine.ts | 6 ++++-- app/core/Permissions/specifications.js | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 802ce750318..86341bee8bf 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -104,12 +104,14 @@ import { SnapsRegistryState, SnapControllerEvents, SnapControllerActions, - buildSnapEndowmentSpecifications, - buildSnapRestrictedMethodSpecifications, PersistedSnapControllerState, } from '@metamask/snaps-controllers'; import { Snap } from '@metamask/snaps-utils'; import { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/types/restricted/notify'; +import { + buildSnapEndowmentSpecifications, + buildSnapRestrictedMethodSpecifications, +} from '@metamask/snaps-rpc-methods'; import { EnumToUnion, DialogType } from '@metamask/snaps-sdk'; // eslint-disable-next-line import/no-nodejs-modules import { Duplex } from 'stream'; diff --git a/app/core/Permissions/specifications.js b/app/core/Permissions/specifications.js index c525c3a4a7a..d4443768c27 100644 --- a/app/core/Permissions/specifications.js +++ b/app/core/Permissions/specifications.js @@ -1,6 +1,8 @@ ///: BEGIN:ONLY_INCLUDE_IF(snaps) -import { endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications } from '@metamask/snaps-controllers'; -import { caveatSpecifications as snapsCaveatsSpecifications } from '@metamask/snaps-rpc-methods'; +import { + caveatSpecifications as snapsCaveatsSpecifications, + endowmentCaveatSpecifications as snapsEndowmentCaveatSpecifications, +} from '@metamask/snaps-rpc-methods'; ///: END:ONLY_INCLUDE_IF import { constructPermission, From 1792a18478bc0dcf1eb65a811a4fc54bec239bc1 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Fri, 16 Feb 2024 12:45:51 +0000 Subject: [PATCH 11/27] chore: bump post-message-stream package + patching --- package.json | 2 +- .../@metamask+post-message-stream+8.0.0.patch | 30 +++++++++++++++++++ yarn.lock | 10 +------ 3 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 patches/@metamask+post-message-stream+8.0.0.patch diff --git a/package.json b/package.json index a83afdbbbdd..ee4f25759a7 100644 --- a/package.json +++ b/package.json @@ -190,7 +190,7 @@ "@metamask/network-controller": "^10.0.0", "@metamask/permission-controller": "^4.0.1", "@metamask/phishing-controller": "^5.0.0", - "@metamask/post-message-stream": "7.0.0", + "@metamask/post-message-stream": "8.0.0", "@metamask/ppom-validator": "0.24.0", "@metamask/preferences-controller": "^4.0.0", "@metamask/react-native-button": "^3.0.0", diff --git a/patches/@metamask+post-message-stream+8.0.0.patch b/patches/@metamask+post-message-stream+8.0.0.patch new file mode 100644 index 00000000000..22d35a8aee5 --- /dev/null +++ b/patches/@metamask+post-message-stream+8.0.0.patch @@ -0,0 +1,30 @@ +diff --git a/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js b/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js +index cead325..a319ed7 100644 +--- a/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js ++++ b/node_modules/@metamask/post-message-stream/dist/window/WindowPostMessageStream.js +@@ -6,11 +6,21 @@ const utils_1 = require("@metamask/utils"); + const BasePostMessageStream_1 = require("../BasePostMessageStream"); + const utils_2 = require("../utils"); + /* istanbul ignore next */ +-const getSource = (_a = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'source')) === null || _a === void 0 ? void 0 : _a.get; +-(0, utils_1.assert)(getSource, 'MessageEvent.prototype.source getter is not defined.'); ++/** +++ * ============================== PATCH INFORMATION ============================== +++ * This patch was added for snaps controller integration. The MessageEvent is not +++ * available in react native so we can simply return undefined here and handle the +++ * origin and source elsewhere. +++ * =============================================================================== +++ */ ++/** ++// const getSource = (_a = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'source')) === null || _a === void 0 ? void 0 : _a.get; ++// (0, utils_1.assert)(getSource, 'MessageEvent.prototype.source getter is not defined.'); ++const getSource = () => undefined; + /* istanbul ignore next */ +-const getOrigin = (_b = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'origin')) === null || _b === void 0 ? void 0 : _b.get; +-(0, utils_1.assert)(getOrigin, 'MessageEvent.prototype.origin getter is not defined.'); ++// const getOrigin = (_b = Object.getOwnPropertyDescriptor(MessageEvent.prototype, 'origin')) === null || _b === void 0 ? void 0 : _b.get; ++// (0, utils_1.assert)(getOrigin, 'MessageEvent.prototype.origin getter is not defined.'); ++const getOrigin = () => undefined; + /** + * A {@link Window.postMessage} stream. + */ diff --git a/yarn.lock b/yarn.lock index 827ccd97333..364b021ed81 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4226,15 +4226,7 @@ eth-phishing-detect "^1.2.0" punycode "^2.1.1" -"@metamask/post-message-stream@7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-7.0.0.tgz#b7698909ec54923b6a6990b8d46cc15c2810d840" - integrity sha512-+dTUNtuNY9o4ooPiXEOqSkqQWQ9APkVx3dAkBvAsJLetAGXvmoBeIMN1DL2QU+9BTbQ9JyJ6NycQnhvwRRc1HQ== - dependencies: - "@metamask/utils" "^5.0.0" - readable-stream "3.6.2" - -"@metamask/post-message-stream@^8.0.0": +"@metamask/post-message-stream@8.0.0", "@metamask/post-message-stream@^8.0.0": version "8.0.0" resolved "https://registry.yarnpkg.com/@metamask/post-message-stream/-/post-message-stream-8.0.0.tgz#101a54c2a4029879691ce83065638493d7822f48" integrity sha512-Bk5LQRxD2IJMJWKY8Yuy+86gracExv2jpjHVWm5Ek7njtdzS0Z10ABpC+yekc8vsRaJ6+xgr64wLHWbYNUqEyg== From 42761315656288eb81843b2dd7d43fb99564329d Mon Sep 17 00:00:00 2001 From: JSoufer Date: Fri, 16 Feb 2024 13:34:05 +0000 Subject: [PATCH 12/27] chore: bump @metamask/base-controller --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ee4f25759a7..bc18bb586d0 100644 --- a/package.json +++ b/package.json @@ -176,7 +176,7 @@ "@metamask/address-book-controller": "^3.0.0", "@metamask/approval-controller": "^3.4.0", "@metamask/assets-controllers": "^9.0.0", - "@metamask/base-controller": "^3.0.0", + "@metamask/base-controller": "^4.1.1", "@metamask/composable-controller": "^3.0.0", "@metamask/contract-metadata": "^2.1.0", "@metamask/controller-utils": "^4.0.0", From 9f2260b3c5fb9e504be2ea95ff272f54956af626 Mon Sep 17 00:00:00 2001 From: Owen Craston Date: Fri, 16 Feb 2024 13:51:58 -0800 Subject: [PATCH 13/27] yarn dedupe --- yarn.lock | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index 364b021ed81..b71c37d29e2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25364,16 +25364,7 @@ tar-stream@^2.1.0, tar-stream@^2.1.4, tar-stream@^2.2.0: inherits "^2.0.3" readable-stream "^3.1.1" -tar-stream@^3.1.5: - version "3.1.6" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab" - integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg== - dependencies: - b4a "^1.6.4" - fast-fifo "^1.2.0" - streamx "^2.15.0" - -tar-stream@^3.1.7: +tar-stream@^3.1.5, tar-stream@^3.1.7: version "3.1.7" resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== From 00ab85f412e2b328a82401c512b64481cb5bc550 Mon Sep 17 00:00:00 2001 From: Owen Craston Date: Fri, 16 Feb 2024 14:50:52 -0800 Subject: [PATCH 14/27] fix specifications.test.js --- app/core/Permissions/specifications.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/core/Permissions/specifications.test.js b/app/core/Permissions/specifications.test.js index 60bfb34ec51..b10f2f778f5 100644 --- a/app/core/Permissions/specifications.test.js +++ b/app/core/Permissions/specifications.test.js @@ -9,7 +9,7 @@ describe('PermissionController specifications', () => { describe('caveat specifications', () => { it('getCaveatSpecifications returns the expected specifications object', () => { const caveatSpecifications = getCaveatSpecifications({}); - expect(Object.keys(caveatSpecifications)).toHaveLength(9); + expect(Object.keys(caveatSpecifications)).toHaveLength(12); expect( caveatSpecifications[CaveatTypes.restrictReturnedAccounts].type, ).toStrictEqual(CaveatTypes.restrictReturnedAccounts); From 55ada1b253daf60d54e02e467937ea8c267cab83 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Mon, 19 Feb 2024 11:34:49 +0000 Subject: [PATCH 15/27] chore: fix test match with snaps codefence --- app/util/test/initial-background-state.json | 4 -- yarn.lock | 50 ++++++--------------- 2 files changed, 14 insertions(+), 40 deletions(-) diff --git a/app/util/test/initial-background-state.json b/app/util/test/initial-background-state.json index bd624b0b052..0c8b4d4250e 100644 --- a/app/util/test/initial-background-state.json +++ b/app/util/test/initial-background-state.json @@ -142,10 +142,6 @@ "submitHistory": [], "transactions": [] }, - "SnapController": { - "snapStates": {}, - "snaps": {} - }, "SubjectMetadataController": { "subjectMetadata": {} }, diff --git a/yarn.lock b/yarn.lock index 235b1c76ede..073f6cd902c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3593,7 +3593,7 @@ "@metamask/controller-utils" "^6.0.0" "@metamask/utils" "^8.2.0" -"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^5.1.2": +"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^5.1.2": version "3.4.0" resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-3.4.0.tgz#282900361d42f785578728b45014ff8cb5e557ea" integrity sha512-DjqrhiX9+W/Fh6Crr7FPJ87Y/uhPWzBvfXGtekv1LHZNmEtUxkrA7aelddUM0fpTdURIGT4aNGBoQudFidc+Lw== @@ -3634,7 +3634,7 @@ single-call-balance-checker-abi "^1.0.0" uuid "^8.3.2" -"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.1.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.2", "@metamask/base-controller@^3.2.3": +"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.1.0", "@metamask/base-controller@^3.2.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.2", "@metamask/base-controller@^3.2.3": version "3.2.3" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-3.2.3.tgz#7436a14f6789acf0814952dabaa70ee4fb7d473c" integrity sha512-k66oZe7BOEx0D5N5X8feE/32QlrUTmiEHHAZU/yCac2+VHllJOCEQV/cTeaAtgepnEf8O7SskvYZN+eIjgS99w== @@ -3642,7 +3642,7 @@ "@metamask/utils" "^8.1.0" immer "^9.0.6" -"@metamask/base-controller@^4.0.0", "@metamask/base-controller@^4.1.1": +"@metamask/base-controller@^4.0.0", "@metamask/base-controller@^4.1.0", "@metamask/base-controller@^4.1.1": version "4.1.1" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-4.1.1.tgz#9b411adf4822de7382fe69d07bb6b3fc3e738923" integrity sha512-sJdsd/XlyOa0kRJ16qbM+xeQ8peV1yZcYumJmHCClPK09MkAlxq7EzsrahVZXUCFwcxtSucf244pbttnVqNthw== @@ -3999,15 +3999,6 @@ "@metamask/safe-event-emitter" "^3.0.0" "@metamask/utils" "^8.3.0" -"@metamask/json-rpc-engine@^7.3.2": - version "7.3.2" - resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz#e8f0695811619eef7b7c894ba5cf782db9f1c2cb" - integrity sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg== - dependencies: - "@metamask/rpc-errors" "^6.1.0" - "@metamask/safe-event-emitter" "^3.0.0" - "@metamask/utils" "^8.3.0" - "@metamask/key-tree@^9.0.0": version "9.0.0" resolved "https://registry.yarnpkg.com/@metamask/key-tree/-/key-tree-9.0.0.tgz#ce880a79f35af5b3b540b44be16ff98cc77be4c1" @@ -4526,7 +4517,17 @@ semver "^7.3.8" superstruct "^1.0.3" -"@metamask/utils@^5.0.1", "@metamask/utils@^5.0.2": +"@metamask/utils@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-4.0.0.tgz#9fe302aba111c68168ab088ea2a069247fb2380d" + integrity sha512-BqLx6UWkzTn33ICbzssC4gI7N++dPJAEy/oXJD8LFY02MP0ORwulXMdHT9fQO1i8r/oi0wSMCPxAaT/IYiy8YA== + dependencies: + "@types/debug" "^4.1.7" + debug "^4.3.4" + semver "^7.3.8" + superstruct "^1.0.3" + +"@metamask/utils@^5.0.0", "@metamask/utils@^5.0.1", "@metamask/utils@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-5.0.2.tgz#140ba5061d90d9dac0280c19cab101bc18c8857c" integrity sha512-yfmE79bRQtnMzarnKfX7AEJBwFTxvTyw3nBQlu/5rmGXrjAeAMltoGxO62TFurxrQAFMNa/fEjIHNvungZp0+g== @@ -4563,20 +4564,6 @@ semver "^7.5.4" superstruct "^1.0.3" -"@metamask/utils@^8.3.0": - version "8.3.0" - resolved "https://registry.yarnpkg.com/@metamask/utils/-/utils-8.3.0.tgz#a20de447aeb9ffb75924d822a186a597033984b6" - integrity sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw== - dependencies: - "@ethereumjs/tx" "^4.2.0" - "@noble/hashes" "^1.3.1" - "@scure/base" "^1.1.3" - "@types/debug" "^4.1.7" - debug "^4.3.4" - pony-cause "^2.1.10" - semver "^7.5.4" - superstruct "^1.0.3" - "@ngraveio/bc-ur@^1.1.5", "@ngraveio/bc-ur@^1.1.6": version "1.1.6" resolved "https://registry.yarnpkg.com/@ngraveio/bc-ur/-/bc-ur-1.1.6.tgz#8f8c75fff22f6a5e4dfbc5a6b540d7fe8f42cd39" @@ -25386,15 +25373,6 @@ tar-stream@^3.1.5, tar-stream@^3.1.7: fast-fifo "^1.2.0" streamx "^2.15.0" -tar-stream@^3.1.7: - version "3.1.7" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.7.tgz#24b3fb5eabada19fe7338ed6d26e5f7c482e792b" - integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== - dependencies: - b4a "^1.6.4" - fast-fifo "^1.2.0" - streamx "^2.15.0" - tar@^6.1.11, tar@^6.1.2: version "6.2.0" resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73" From 939e1f3f3f09648c93b609b9f319c778f6291d70 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Mon, 19 Feb 2024 12:27:45 +0000 Subject: [PATCH 16/27] chore: adds unencryptedSnapStates state --- app/util/test/initial-background-state.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/util/test/initial-background-state.json b/app/util/test/initial-background-state.json index 0c8b4d4250e..3411e941c18 100644 --- a/app/util/test/initial-background-state.json +++ b/app/util/test/initial-background-state.json @@ -142,6 +142,11 @@ "submitHistory": [], "transactions": [] }, + "SnapController": { + "snapStates": {}, + "snaps": {}, + "unencryptedSnapStates": {} + }, "SubjectMetadataController": { "subjectMetadata": {} }, From f34423db72b40d57f1a000af92528830eb43ab36 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Mon, 19 Feb 2024 23:19:12 +0000 Subject: [PATCH 17/27] chore: fix lint problems on Engine mod --- app/core/Engine.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 86341bee8bf..de433846575 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -109,10 +109,11 @@ import { import { Snap } from '@metamask/snaps-utils'; import { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/types/restricted/notify'; import { + EnumToUnion, + DialogType, buildSnapEndowmentSpecifications, buildSnapRestrictedMethodSpecifications, -} from '@metamask/snaps-rpc-methods'; -import { EnumToUnion, DialogType } from '@metamask/snaps-sdk'; +} from '@metamask/snaps-sdk'; // eslint-disable-next-line import/no-nodejs-modules import { Duplex } from 'stream'; ///: END:ONLY_INCLUDE_IF @@ -672,7 +673,6 @@ class Engine { }), state: initialState.PermissionController, caveatSpecifications: getCaveatSpecifications({ getIdentities }), - // @ts-expect-error Inferred permission specification type is incorrect, fix after migrating to TypeScript permissionSpecifications: { ...getPermissionSpecifications({ getAllAccounts: () => keyringController.getAccounts(), From cccda4864b068bd04ec3665e788d01af8c4cbce8 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Tue, 20 Feb 2024 10:08:14 +0000 Subject: [PATCH 18/27] fix: endownments imports --- app/core/Engine.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index de433846575..41376645c28 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -109,11 +109,10 @@ import { import { Snap } from '@metamask/snaps-utils'; import { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/types/restricted/notify'; import { - EnumToUnion, - DialogType, buildSnapEndowmentSpecifications, buildSnapRestrictedMethodSpecifications, -} from '@metamask/snaps-sdk'; +} from '@metamask/snaps-rpc-methods'; +import { EnumToUnion, DialogType } from '@metamask/snaps-sdk'; // eslint-disable-next-line import/no-nodejs-modules import { Duplex } from 'stream'; ///: END:ONLY_INCLUDE_IF From 81e2d18d07ad2ef025e5ba088c3fff39a9a8e692 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Tue, 20 Feb 2024 14:58:31 +0000 Subject: [PATCH 19/27] chore: handle type mismatching due base-controller type change --- app/core/Engine.ts | 45 +++++++++++++------ patches/@metamask+base-controller+4.1.1.patch | 13 ++++++ 2 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 patches/@metamask+base-controller+4.1.1.patch diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 41376645c28..45d82a37f08 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -345,6 +345,7 @@ class Engine { this.controllerMessenger = new ControllerMessenger(); const approvalController = new ApprovalController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'ApprovalController', }), @@ -377,7 +378,7 @@ class Engine { state: initialState.NetworkController, messenger: this.controllerMessenger.getRestricted({ name: 'NetworkController', - allowedEvents: ['NetworkController:networkDidChange'], + allowedEvents: [], allowedActions: [], }), // Metrics event tracking is handled in this repository instead @@ -386,6 +387,7 @@ class Engine { // noop }, }; + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers const networkController = new NetworkController(networkControllerOpts); networkController.initializeProvider(); @@ -410,6 +412,7 @@ class Engine { AppConstants.NETWORK_STATE_CHANGE_EVENT, listener, ), + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'NftController', allowedActions: [`${approvalController.name}:addRequest`], @@ -437,7 +440,6 @@ class Engine { ), }, { - // @ts-expect-error NftController constructor config type is wrong useIPFSSubdomains: false, chainId: networkController.state.providerConfig.chainId, }, @@ -455,6 +457,7 @@ class Engine { provider: networkController.getProviderAndBlockTracker().provider, chainId: networkController.state.providerConfig.chainId, }, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'TokensController', allowedActions: [`${approvalController.name}:addRequest`], @@ -471,12 +474,14 @@ class Engine { AppConstants.NETWORK_STATE_CHANGE_EVENT, listener, ), + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'TokenListController', allowedEvents: ['NetworkController:stateChange'], }), }); const currencyRateController = new CurrencyRateController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'CurrencyRateController', }), @@ -485,6 +490,7 @@ class Engine { currencyRateController.start(); const gasFeeController = new GasFeeController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'GasFeeController', allowedEvents: ['NetworkController:stateChange'], @@ -504,8 +510,8 @@ class Engine { const chainId = networkController.state.providerConfig.chainId; return ( isMainnetByChainId(chainId) || - chainId === swapsUtils.BSC_CHAIN_ID || - chainId === swapsUtils.POLYGON_CHAIN_ID + chainId === `0x${swapsUtils.BSC_CHAIN_ID}` || + chainId === `0x${swapsUtils.POLYGON_CHAIN_ID}` ); }, clientId: AppConstants.SWAPS.CLIENT_ID, @@ -550,15 +556,9 @@ class Engine { preferencesController, ), encryptor, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'KeyringController', - allowedEvents: [ - 'KeyringController:lock', - 'KeyringController:unlock', - 'KeyringController:stateChange', - 'KeyringController:accountRemoved', - ], - allowedActions: ['KeyringController:getState'], }), state: initialKeyringState || initialState.KeyringController, // @ts-expect-error To Do: Update the type of QRHardwareKeyring to Keyring @@ -622,6 +622,8 @@ class Engine { this.controllerMessenger, 'SnapController:updateSnapState', ), + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore maybeUpdatePhishingList: this.controllerMessenger.call.bind( this.controllerMessenger, 'PhishingController:maybeUpdateState', @@ -629,7 +631,9 @@ class Engine { isOnPhishingList: (origin: string) => this.controllerMessenger.call( 'PhishingController:testOrigin', + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers origin, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers ).result, showDialog: ( origin: string, @@ -656,6 +660,7 @@ class Engine { ///: END:ONLY_INCLUDE_IF const permissionController = new PermissionController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'PermissionController', allowedActions: [ @@ -672,6 +677,8 @@ class Engine { }), state: initialState.PermissionController, caveatSpecifications: getCaveatSpecifications({ getIdentities }), + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore permissionSpecifications: { ...getPermissionSpecifications({ getAllAccounts: () => keyringController.getAccounts(), @@ -685,6 +692,7 @@ class Engine { ///: BEGIN:ONLY_INCLUDE_IF(snaps) const subjectMetadataController = new SubjectMetadataController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'SubjectMetadataController', allowedActions: [`${permissionController.name}:hasPermissions`], @@ -764,8 +772,6 @@ class Engine { 'ExecutionService:unhandledError', 'ExecutionService:outboundRequest', 'ExecutionService:outboundResponse', - 'SnapController:snapInstalled', - 'SnapController:snapUpdated', ], allowedActions: [ `${approvalController.name}:addRequest`, @@ -792,6 +798,10 @@ class Engine { 'ExecutionService:terminateSnap', 'ExecutionService:terminateAllSnaps', 'ExecutionService:handleRpcRequest', + 'SnapsRegistry:get', + 'SnapsRegistry:getMetadata', + 'SnapsRegistry:update', + 'SnapsRegistry:resolveVersion', ], }); @@ -816,7 +826,9 @@ class Engine { }); this.controllerMessenger.subscribe( - 'SnapController:snapAdded', + 'SnapController:snapInstalled', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore (snap: Snap, svgIcon: any = null) => { const { manifest: { proposedName }, @@ -951,6 +963,7 @@ class Engine { }, updateTransactions: true, }, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'TransactionController', allowedActions: [`${approvalController.name}:addRequest`], @@ -994,6 +1007,7 @@ class Engine { approvalController, permissionController, new SignatureController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'SignatureController', allowedActions: [`${approvalController.name}:addRequest`], @@ -1025,6 +1039,7 @@ class Engine { }, }), new LoggingController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers. messenger: this.controllerMessenger.getRestricted({ name: 'LoggingController', }), @@ -1042,9 +1057,11 @@ class Engine { chainId: networkController.state.providerConfig.chainId, blockaidPublicKey: process.env.BLOCKAID_PUBLIC_KEY as string, cdnBaseUrl: process.env.BLOCKAID_FILE_CDN as string, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'PPOMController', allowedEvents: ['NetworkController:stateChange'], + allowedActions: [], }), onPreferencesChange: (listener) => preferencesController.subscribe(listener), diff --git a/patches/@metamask+base-controller+4.1.1.patch b/patches/@metamask+base-controller+4.1.1.patch new file mode 100644 index 00000000000..72680b2b9b6 --- /dev/null +++ b/patches/@metamask+base-controller+4.1.1.patch @@ -0,0 +1,13 @@ +diff --git a/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts b/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts +index 423c1a9..5c62cb3 100644 +--- a/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts ++++ b/node_modules/@metamask/base-controller/dist/RestrictedControllerMessenger.d.ts +@@ -15,7 +15,7 @@ import type { ActionConstraint, ActionHandler, ControllerMessenger, EventConstra + * @template AllowedEvent - A type union of the 'type' string for any allowed events. + * This must not include internal events that are in the messenger's namespace. + */ +-export declare class RestrictedControllerMessenger { ++export declare class RestrictedControllerMessenger { + #private; + /** + * Constructs a restricted controller messenger From d3a1dc7fdbcbd6c239eafa21d10720953207c24f Mon Sep 17 00:00:00 2001 From: JSoufer Date: Tue, 20 Feb 2024 20:01:33 +0000 Subject: [PATCH 20/27] chore: adds explicity on getRestricted type due issue core/issues/3648 --- app/core/Engine.ts | 100 ++++++++++++++++++++++++++++++--------------- 1 file changed, 68 insertions(+), 32 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 45d82a37f08..27ce7b4c8e5 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -345,8 +345,11 @@ class Engine { this.controllerMessenger = new ControllerMessenger(); const approvalController = new ApprovalController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'ApprovalController', + never, + never + >({ name: 'ApprovalController', }), showApprovalRequest: () => undefined, @@ -376,9 +379,13 @@ class Engine { const networkControllerOpts = { infuraProjectId: process.env.MM_INFURA_PROJECT_ID || NON_EMPTY, state: initialState.NetworkController, - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'NetworkController', + never, + 'NetworkController:networkDidChange' + >({ name: 'NetworkController', - allowedEvents: [], + allowedEvents: ['NetworkController:networkDidChange'], allowedActions: [], }), // Metrics event tracking is handled in this repository instead @@ -387,7 +394,6 @@ class Engine { // noop }, }; - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers const networkController = new NetworkController(networkControllerOpts); networkController.initializeProvider(); @@ -412,8 +418,11 @@ class Engine { AppConstants.NETWORK_STATE_CHANGE_EVENT, listener, ), - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'NftController', + 'ApprovalController:addRequest', + never + >({ name: 'NftController', allowedActions: [`${approvalController.name}:addRequest`], }), @@ -440,6 +449,7 @@ class Engine { ), }, { + // @ts-expect-error NftController constructor config type is wrong useIPFSSubdomains: false, chainId: networkController.state.providerConfig.chainId, }, @@ -457,8 +467,11 @@ class Engine { provider: networkController.getProviderAndBlockTracker().provider, chainId: networkController.state.providerConfig.chainId, }, - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'TokensController', + 'ApprovalController:addRequest', + never + >({ name: 'TokensController', allowedActions: [`${approvalController.name}:addRequest`], }), @@ -474,15 +487,21 @@ class Engine { AppConstants.NETWORK_STATE_CHANGE_EVENT, listener, ), - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'TokenListController', + never, + 'NetworkController:stateChange' + >({ name: 'TokenListController', allowedEvents: ['NetworkController:stateChange'], }), }); const currencyRateController = new CurrencyRateController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'CurrencyRateController', + never, + never + >({ name: 'CurrencyRateController', }), state: initialState.CurrencyRateController, @@ -490,8 +509,11 @@ class Engine { currencyRateController.start(); const gasFeeController = new GasFeeController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'GasFeeController', + never, + 'NetworkController:stateChange' + >({ name: 'GasFeeController', allowedEvents: ['NetworkController:stateChange'], }), @@ -556,8 +578,11 @@ class Engine { preferencesController, ), encryptor, - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'KeyringController', + never, + never + >({ name: 'KeyringController', }), state: initialKeyringState || initialState.KeyringController, @@ -629,11 +654,9 @@ class Engine { 'PhishingController:maybeUpdateState', ), isOnPhishingList: (origin: string) => - this.controllerMessenger.call( + this.controllerMessenger.call<'PhishingController:testOrigin'>( 'PhishingController:testOrigin', - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers origin, - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers ).result, showDialog: ( origin: string, @@ -660,7 +683,6 @@ class Engine { ///: END:ONLY_INCLUDE_IF const permissionController = new PermissionController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'PermissionController', allowedActions: [ @@ -692,8 +714,11 @@ class Engine { ///: BEGIN:ONLY_INCLUDE_IF(snaps) const subjectMetadataController = new SubjectMetadataController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'SubjectMetadataController', + 'PermissionController:hasPermissions', + never + >({ name: 'SubjectMetadataController', allowedActions: [`${permissionController.name}:hasPermissions`], }), @@ -963,8 +988,11 @@ class Engine { }, updateTransactions: true, }, - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'TransactionController', + 'ApprovalController:addRequest', + never + >({ name: 'TransactionController', allowedActions: [`${approvalController.name}:addRequest`], }), @@ -1007,8 +1035,11 @@ class Engine { approvalController, permissionController, new SignatureController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'SignatureController', + 'ApprovalController:addRequest', + never + >({ name: 'SignatureController', allowedActions: [`${approvalController.name}:addRequest`], }), @@ -1039,8 +1070,11 @@ class Engine { }, }), new LoggingController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers. - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'LoggingController', + never, + never + >({ name: 'LoggingController', }), state: initialState.LoggingController, @@ -1057,11 +1091,13 @@ class Engine { chainId: networkController.state.providerConfig.chainId, blockaidPublicKey: process.env.BLOCKAID_PUBLIC_KEY as string, cdnBaseUrl: process.env.BLOCKAID_FILE_CDN as string, - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers - messenger: this.controllerMessenger.getRestricted({ + messenger: this.controllerMessenger.getRestricted< + 'PPOMController', + never, + 'NetworkController:stateChange' + >({ name: 'PPOMController', allowedEvents: ['NetworkController:stateChange'], - allowedActions: [], }), onPreferencesChange: (listener) => preferencesController.subscribe(listener), From 2ca518b4fdef37916d8b59ff70d292a50e5b9607 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Wed, 21 Feb 2024 13:28:22 +0000 Subject: [PATCH 21/27] chore: replicates 8369 PR from branched 8607 PR --- app/components/Nav/Main/index.js | 2 +- .../SnapsExecutionWebView.tsx | 64 ------------ .../UI/SnapsExecutionWebView/index.ts | 6 -- app/core/Engine.ts | 34 ++++++- app/core/Snaps/SnapDuplex.ts | 73 -------------- .../Snaps/SnapWebviewPostMessageStream.ts | 55 ----------- app/core/Snaps/SnapsState.ts | 8 -- app/core/Snaps/WebviewExecutionService.ts | 51 ---------- app/core/Snaps/WebviewPostMessageStream.ts | 80 --------------- app/core/Snaps/index.ts | 10 -- app/lib/snaps/SnapsExecutionWebView.tsx | 99 +++++++++++++++++++ app/lib/snaps/index.ts | 3 + .../snaps}/styles.ts | 0 ios/MetaMask.xcodeproj/project.pbxproj | 2 + ios/Podfile.lock | 10 +- 15 files changed, 140 insertions(+), 357 deletions(-) delete mode 100644 app/components/UI/SnapsExecutionWebView/SnapsExecutionWebView.tsx delete mode 100644 app/components/UI/SnapsExecutionWebView/index.ts delete mode 100644 app/core/Snaps/SnapDuplex.ts delete mode 100644 app/core/Snaps/SnapWebviewPostMessageStream.ts delete mode 100644 app/core/Snaps/SnapsState.ts delete mode 100644 app/core/Snaps/WebviewExecutionService.ts delete mode 100644 app/core/Snaps/WebviewPostMessageStream.ts create mode 100644 app/lib/snaps/SnapsExecutionWebView.tsx create mode 100644 app/lib/snaps/index.ts rename app/{components/UI/SnapsExecutionWebView => lib/snaps}/styles.ts (100%) diff --git a/app/components/Nav/Main/index.js b/app/components/Nav/Main/index.js index 4263be90aa4..c9a5d0d3155 100644 --- a/app/components/Nav/Main/index.js +++ b/app/components/Nav/Main/index.js @@ -73,7 +73,7 @@ import { NETWORKS_CHAIN_ID } from '../../../constants/network'; import WarningAlert from '../../../components/UI/WarningAlert'; import { GOERLI_DEPRECATED_ARTICLE } from '../../../constants/urls'; ///: BEGIN:ONLY_INCLUDE_IF(snaps) -import { SnapsExecutionWebView } from '../../UI/SnapsExecutionWebView'; +import { SnapsExecutionWebView } from '../../../lib/snaps'; ///: END:ONLY_INCLUDE_IF const Stack = createStackNavigator(); diff --git a/app/components/UI/SnapsExecutionWebView/SnapsExecutionWebView.tsx b/app/components/UI/SnapsExecutionWebView/SnapsExecutionWebView.tsx deleted file mode 100644 index 560e88c46f5..00000000000 --- a/app/components/UI/SnapsExecutionWebView/SnapsExecutionWebView.tsx +++ /dev/null @@ -1,64 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(snaps) -import React, { useRef } from 'react'; -import { View, ScrollView } from 'react-native'; -import WebView from 'react-native-webview'; -import { snapsState, WebviewPostMessageStream } from '../../../core/Snaps'; -import { createStyles } from './styles'; - -let stream: any; - -const SnapsExecutionWebView = () => { - const styles = createStyles(); - - const webviewRef = useRef(); - - const setWebviewPostMessage = () => { - stream = new WebviewPostMessageStream({ - name: 'rnside', - target: 'webview', - targetOrigin: '*', - targetWindow: webviewRef.current, - }); - - // eslint-disable-next-line no-console - stream.on('data', (data: any) => - // eslint-disable-next-line no-console - console.log( - '[APP LOG] setWebviewPostMessage: Message from Webview ' + data, - ), - ); - - snapsState.stream = stream; - snapsState.webview = webviewRef.current; - }; - - const messageFromWebview = (data: any) => { - stream?._onMessage(data); - }; - - const envURI = { - prod: 'https://gantunesr.github.io/mobile-execution-environment/', - //localIOS: 'http://localhost:3001/mobile-execution-environment', - // localAndroid: 'http://10.0.2.2:3001/mobile-execution-environment', - }; - - return ( - - - - - - ); -}; - -export default SnapsExecutionWebView; -///: END:ONLY_INCLUDE_IF diff --git a/app/components/UI/SnapsExecutionWebView/index.ts b/app/components/UI/SnapsExecutionWebView/index.ts deleted file mode 100644 index 738fad34bbb..00000000000 --- a/app/components/UI/SnapsExecutionWebView/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(snaps) -import SnapsExecutionWebView from './SnapsExecutionWebView'; - -// eslint-disable-next-line import/prefer-default-export -export { SnapsExecutionWebView }; -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 27ce7b4c8e5..6b646f22568 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -105,9 +105,11 @@ import { SnapControllerEvents, SnapControllerActions, PersistedSnapControllerState, + WebViewExecutionService, } from '@metamask/snaps-controllers'; import { Snap } from '@metamask/snaps-utils'; import { NotificationArgs } from '@metamask/snaps-rpc-methods/dist/types/restricted/notify'; +import { getSnapsWebViewPromise } from '../lib/snaps'; import { buildSnapEndowmentSpecifications, buildSnapRestrictedMethodSpecifications, @@ -148,7 +150,6 @@ import AnalyticsV2 from '../util/analyticsV2'; ///: BEGIN:ONLY_INCLUDE_IF(snaps) import { SnapBridge, - WebviewExecutionService, ExcludedSnapEndowments, ExcludedSnapPermissions, detectSnapLocation, @@ -331,7 +332,7 @@ class Engine { /** * Object that runs and manages the execution of Snaps */ - snapExecutionService: WebviewExecutionService; + snapExecutionService: WebViewExecutionService; ///: END:ONLY_INCLUDE_IF /** @@ -345,12 +346,15 @@ class Engine { this.controllerMessenger = new ControllerMessenger(); const approvalController = new ApprovalController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'ApprovalController', never, never >({ name: 'ApprovalController', + allowedEvents: [], + allowedActions: [], }), showApprovalRequest: () => undefined, typesExcludedFromRateLimiting: [ @@ -382,6 +386,8 @@ class Engine { messenger: this.controllerMessenger.getRestricted< 'NetworkController', never, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore // TODO: fix this type mismatch after the base-controller version is updated 'NetworkController:networkDidChange' >({ name: 'NetworkController', @@ -394,6 +400,8 @@ class Engine { // noop }, }; + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore const networkController = new NetworkController(networkControllerOpts); networkController.initializeProvider(); @@ -418,6 +426,7 @@ class Engine { AppConstants.NETWORK_STATE_CHANGE_EVENT, listener, ), + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'NftController', 'ApprovalController:addRequest', @@ -449,7 +458,6 @@ class Engine { ), }, { - // @ts-expect-error NftController constructor config type is wrong useIPFSSubdomains: false, chainId: networkController.state.providerConfig.chainId, }, @@ -467,6 +475,7 @@ class Engine { provider: networkController.getProviderAndBlockTracker().provider, chainId: networkController.state.providerConfig.chainId, }, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'TokensController', 'ApprovalController:addRequest', @@ -487,6 +496,7 @@ class Engine { AppConstants.NETWORK_STATE_CHANGE_EVENT, listener, ), + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'TokenListController', never, @@ -497,6 +507,7 @@ class Engine { }), }); const currencyRateController = new CurrencyRateController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'CurrencyRateController', never, @@ -509,6 +520,7 @@ class Engine { currencyRateController.start(); const gasFeeController = new GasFeeController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'GasFeeController', never, @@ -578,6 +590,7 @@ class Engine { preferencesController, ), encryptor, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'KeyringController', never, @@ -656,7 +669,11 @@ class Engine { isOnPhishingList: (origin: string) => this.controllerMessenger.call<'PhishingController:testOrigin'>( 'PhishingController:testOrigin', + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore origin, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore ).result, showDialog: ( origin: string, @@ -683,6 +700,7 @@ class Engine { ///: END:ONLY_INCLUDE_IF const permissionController = new PermissionController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'PermissionController', allowedActions: [ @@ -694,6 +712,7 @@ class Engine { `SnapController:getPermitted`, `SnapController:install`, `SubjectMetadataController:getSubjectMetadata`, + `SubjectMetadataController:addSubjectMetadata`, ///: END:ONLY_INCLUDE_IF ], }), @@ -714,6 +733,7 @@ class Engine { ///: BEGIN:ONLY_INCLUDE_IF(snaps) const subjectMetadataController = new SubjectMetadataController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'SubjectMetadataController', 'PermissionController:hasPermissions', @@ -784,11 +804,12 @@ class Engine { '0x025b65308f0f0fb8bc7f7ff87bfc296e0330eee5d3c1d1ee4a048b2fd6a86fa0a6', }); - this.snapExecutionService = new WebviewExecutionService({ + this.snapExecutionService = new WebViewExecutionService({ messenger: this.controllerMessenger.getRestricted({ name: 'ExecutionService', }), setupSnapProvider: setupSnapProvider.bind(this), + getWebView: () => getSnapsWebViewPromise, }); const snapControllerMessenger = this.controllerMessenger.getRestricted({ @@ -814,6 +835,7 @@ class Engine { `${approvalController.name}:updateRequestState`, `${permissionController.name}:grantPermissions`, `${subjectMetadataController.name}:getSubjectMetadata`, + `${subjectMetadataController.name}:addSubjectMetadata`, `${phishingController.name}:maybeUpdateState`, `${phishingController.name}:testOrigin`, `${snapsRegistry.name}:get`, @@ -988,6 +1010,7 @@ class Engine { }, updateTransactions: true, }, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'TransactionController', 'ApprovalController:addRequest', @@ -1035,6 +1058,7 @@ class Engine { approvalController, permissionController, new SignatureController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'SignatureController', 'ApprovalController:addRequest', @@ -1070,6 +1094,7 @@ class Engine { }, }), new LoggingController({ + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'LoggingController', never, @@ -1091,6 +1116,7 @@ class Engine { chainId: networkController.state.providerConfig.chainId, blockaidPublicKey: process.env.BLOCKAID_PUBLIC_KEY as string, cdnBaseUrl: process.env.BLOCKAID_FILE_CDN as string, + // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'PPOMController', never, diff --git a/app/core/Snaps/SnapDuplex.ts b/app/core/Snaps/SnapDuplex.ts deleted file mode 100644 index 314209b2ee6..00000000000 --- a/app/core/Snaps/SnapDuplex.ts +++ /dev/null @@ -1,73 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(snaps) -import { Duplex } from 'readable-stream'; -import Logger from '../../util/Logger'; - -type StreamData = number | string | Record | unknown[]; - -export interface PostMessageEvent { - origin: string; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore This type is used inside the browser, so it's not available in react native - source: typeof window; -} - -/** - * Abstract base class for postMessage streams. - */ -export default abstract class SnapDuplex extends Duplex { - private _stream: any; - private _jobId: string; - - constructor({ stream, jobId }: { stream: any; jobId: string }) { - super({ - objectMode: true, - }); - - this._stream = stream; - this._jobId = jobId; - - this._stream.on('data', (data: any) => this._onData(data)); - } - - protected _onData(data: StreamData): void { - Logger.log( - '[SNAP DUPLEX LOG] SnapDuplex+_onData: Job', - this._jobId, - 'read data', - data, - ); - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - if (data.jobId !== this._jobId) { - return; - } - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - this.push(data.data); - } - - /** - * Child classes must implement this function. - */ - protected abstract _postMessage(_data?: unknown): void; - - _read(): void { - return undefined; - } - - _write(data: StreamData, _encoding: string | null, cb: () => void): void { - Logger.log('[SNAP DUPLEX LOG] SnapDuplex+_write: Job', this._jobId); - this._stream.write({ data, jobId: this._jobId }); - cb(); - } - - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - destroy() { - Logger.log( - '[SNAP DUPLEX LOG] SnapDuplex+destroy: Destroy stream from SnapDuplex', - ); - this._stream.destroy(); - } -} -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Snaps/SnapWebviewPostMessageStream.ts b/app/core/Snaps/SnapWebviewPostMessageStream.ts deleted file mode 100644 index b7b78b701f2..00000000000 --- a/app/core/Snaps/SnapWebviewPostMessageStream.ts +++ /dev/null @@ -1,55 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(snaps) -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck -import { BasePostMessageStream } from '@metamask/post-message-stream'; - -interface WebViewPostMessageStreamArgs { - name: string; - stream: any; - jobId: string; -} - -/** - * A {@link Window.postMessage} stream. - */ -export default class SnapWebviewPostMessageStream extends BasePostMessageStream { - private _name: string; - - private _stream: string; - private _jobId: string; - /** - * Creates a stream for communicating with other streams across the same or - * different `window` objects. - * - * @param args - Options bag. - * @param args.name - The name of the stream. Used to differentiate between - * multiple streams sharing the same window object. - * @param args.target - The name of the stream to exchange messages with. - * @param args.targetOrigin - The origin of the target. Defaults to - * `location.origin`, '*' is permitted. - * @param args.targetWindow - The window object of the target stream. Defaults - * to `window`. - */ - constructor({ name, stream, jobId }: WebViewPostMessageStreamArgs) { - super(); - - this._name = name; - this._stream = stream; - this._jobId = jobId; - this._onMessage = this._onMessage.bind(this); - this._stream.on('data', (data) => this._onMessage(data)); - } - - protected _postMessage(data: unknown): void { - this._stream.write(data); - } - - private _onMessage(data: any): void { - this._onData(data); - } - - destroy(): void { - this.destroyed = true; - } -} -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Snaps/SnapsState.ts b/app/core/Snaps/SnapsState.ts deleted file mode 100644 index cd1bfadbf4a..00000000000 --- a/app/core/Snaps/SnapsState.ts +++ /dev/null @@ -1,8 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(snaps) -const snapsState = { - stream: undefined, - webview: undefined, -}; - -export default snapsState; -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Snaps/WebviewExecutionService.ts b/app/core/Snaps/WebviewExecutionService.ts deleted file mode 100644 index 1b5e4657167..00000000000 --- a/app/core/Snaps/WebviewExecutionService.ts +++ /dev/null @@ -1,51 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(snaps) -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck -import { - Job, - AbstractExecutionService, - ExecutionServiceArgs, -} from '@metamask/snaps-controllers'; -import snapsState from './SnapsState'; -import SnapDuplex from './SnapDuplex'; - -import { BasePostMessageStream } from '@metamask/post-message-stream'; -export default class WebviewExecutionService extends AbstractExecutionService { - #snapDuplexMap: Map; - - constructor({ messenger, setupSnapProvider }: ExecutionServiceArgs) { - super({ - messenger, - setupSnapProvider, - }); - this.#snapDuplexMap = new Map(); - } - - protected async initEnvStream(jobId: string): Promise<{ - worker: any; - stream: BasePostMessageStream; - }> { - const iframeWindow = snapsState.webview; - const stream = snapsState.stream; - - // The WebviewExecutionService wraps the stream into a Duplex - // to pass the jobId to the Proxy Service - const snapStream = new SnapDuplex({ - stream, - jobId, - }); - - this.#snapDuplexMap.set(jobId, snapStream); - - return { worker: iframeWindow, stream: snapStream }; - } - - protected terminateJob(jobWrapper: Job): void { - const snapDuplex = this.#snapDuplexMap.get(jobWrapper.id); - if (snapDuplex) { - snapDuplex.destroy(); - this.#snapDuplexMap.delete(jobWrapper.id); - } - } -} -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Snaps/WebviewPostMessageStream.ts b/app/core/Snaps/WebviewPostMessageStream.ts deleted file mode 100644 index 52d180e38f1..00000000000 --- a/app/core/Snaps/WebviewPostMessageStream.ts +++ /dev/null @@ -1,80 +0,0 @@ -///: BEGIN:ONLY_INCLUDE_IF(snaps) -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck -import { - BasePostMessageStream, - PostMessageEvent, -} from '@metamask/post-message-stream'; - -interface WebViewPostMessageStreamArgs { - name: string; - target: string; - targetOrigin?: string; - targetWindow?: Window; -} - -/** - * A {@link Window.postMessage} stream. - */ -export default class WebviewPostMessageStream extends BasePostMessageStream { - private _name: string; - - private _target: string; - - private _targetOrigin: string; - - private _targetWindow: Window; - - /** - * Creates a stream for communicating with other streams across the same or - * different `window` objects. - * - * @param args - Options bag. - * @param args.name - The name of the stream. Used to differentiate between - * multiple streams sharing the same window object. - * @param args.target - The name of the stream to exchange messages with. - * @param args.targetOrigin - The origin of the target. Defaults to - * `location.origin`, '*' is permitted. - * @param args.targetWindow - The window object of the target stream. Defaults - * to `window`. - */ - constructor({ - name, - target, - targetOrigin, - targetWindow, - }: WebViewPostMessageStreamArgs) { - super(); - - this._name = name; - this._target = target; - this._targetOrigin = targetOrigin; - this._targetWindow = targetWindow; - this._onMessage = this._onMessage.bind(this); - - setTimeout(() => this._handshake(), 0); - } - - protected _postMessage(data: unknown): void { - const message = { - target: this._target, - data, - }; - this._targetWindow.injectJavaScript( - `window.postMessage(${JSON.stringify(message)})`, - ); - } - - private _onMessage(event: PostMessageEvent): void { - const message = event.nativeEvent; - const data = JSON.parse(message.data); - - this._onData(data.data); - } - - destroy(): void { - // Do nothing - // we do not want to kill the stream that communicates with the execution environment - } -} -///: END:ONLY_INCLUDE_IF diff --git a/app/core/Snaps/index.ts b/app/core/Snaps/index.ts index 8488be1e3a5..7a0b8d65356 100644 --- a/app/core/Snaps/index.ts +++ b/app/core/Snaps/index.ts @@ -1,10 +1,5 @@ ///: BEGIN:ONLY_INCLUDE_IF(snaps) import SnapBridge from './SnapBridge'; -import SnapDuplex from './SnapDuplex'; -import WebviewExecutionService from './WebviewExecutionService'; -import WebviewPostMessageStream from './WebviewPostMessageStream'; -import SnapWebviewPostMessageStream from './SnapWebviewPostMessageStream'; -import snapsState from './SnapsState'; import { ExcludedSnapPermissions, ExcludedSnapEndowments, @@ -16,12 +11,7 @@ import { } from './location'; export { - snapsState, - SnapDuplex, SnapBridge, - WebviewExecutionService, - WebviewPostMessageStream, - SnapWebviewPostMessageStream, ExcludedSnapPermissions, ExcludedSnapEndowments, fetchFunction, diff --git a/app/lib/snaps/SnapsExecutionWebView.tsx b/app/lib/snaps/SnapsExecutionWebView.tsx new file mode 100644 index 00000000000..4847ebd6614 --- /dev/null +++ b/app/lib/snaps/SnapsExecutionWebView.tsx @@ -0,0 +1,99 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-require-imports */ +/* eslint-disable import/no-commonjs */ +///: BEGIN:ONLY_INCLUDE_IF(snaps) +import React, { Component, RefObject } from 'react'; +import { View, ScrollView, NativeSyntheticEvent } from 'react-native'; +import WebView, { WebViewMessageEvent } from 'react-native-webview'; +import { createStyles } from './styles'; +import { WebViewInterface } from '@metamask/snaps-controllers/dist/types/services/webview/WebViewMessageStream'; +import { WebViewError } from 'react-native-webview/lib/WebViewTypes'; +import { PostMessageEvent } from '@metamask/post-message-stream'; + +const styles = createStyles(); + +interface SnapsExecutionWebViewProps { + injectJavaScript(js: string): void; + registerMessageListener(listener: (event: PostMessageEvent) => void): void; + unregisterMessageListener(listener: (event: PostMessageEvent) => void): void; +} +// This is a hack to allow us to asynchronously await the creation of the WebView. +let resolveGetWebView: (arg0: SnapsExecutionWebViewProps) => void; +let rejectGetWebView: (error: NativeSyntheticEvent) => void; + +const SNAPS_EE_URL = 'https://execution.metamask.io/webview/4.0.0/index.html'; + +export const getSnapsWebViewPromise = new Promise( + (resolve, reject) => { + resolveGetWebView = resolve; + rejectGetWebView = reject; + }, +); + +// This is a class component because storing the references we are don't work in functional components. +export class SnapsExecutionWebView extends Component { + webViewRef: RefObject | any = null; + listener: any = null; + + // eslint-disable-next-line @typescript-eslint/no-useless-constructor + constructor(props: any) { + super(props); + } + + setWebViewRef(ref: React.RefObject> | null) { + this.webViewRef = ref; + } + + onWebViewLoad() { + const api = { + injectJavaScript: (js: string) => { + this.webViewRef?.injectJavaScript(js); + }, + registerMessageListener: ( + listener: (event: PostMessageEvent) => void, + ) => { + this.listener = listener; + }, + unregisterMessageListener: ( + _listener: (event: PostMessageEvent) => void, + ) => { + this.listener = null; + }, + }; + + resolveGetWebView(api); + } + + onWebViewError(error: NativeSyntheticEvent) { + rejectGetWebView(error); + } + + onWebViewMessage(data: WebViewMessageEvent) { + if (this.listener) { + this.listener(data.nativeEvent); + } + } + + render() { + return ( + + + | null + } + source={{ uri: SNAPS_EE_URL }} + onMessage={this.onWebViewMessage} + onError={this.onWebViewError} + onLoadEnd={this.onWebViewLoad} + // TODO: This should probably change + originWhitelist={['*']} + javaScriptEnabled + /> + + + ); + } +} + +///: END:ONLY_INCLUDE_IF diff --git a/app/lib/snaps/index.ts b/app/lib/snaps/index.ts new file mode 100644 index 00000000000..e6450e80762 --- /dev/null +++ b/app/lib/snaps/index.ts @@ -0,0 +1,3 @@ +///: BEGIN:ONLY_INCLUDE_IF(snaps) +export * from './SnapsExecutionWebView'; +///: END:ONLY_INCLUDE_IF diff --git a/app/components/UI/SnapsExecutionWebView/styles.ts b/app/lib/snaps/styles.ts similarity index 100% rename from app/components/UI/SnapsExecutionWebView/styles.ts rename to app/lib/snaps/styles.ts diff --git a/ios/MetaMask.xcodeproj/project.pbxproj b/ios/MetaMask.xcodeproj/project.pbxproj index 4dcbea8c513..ae293082d99 100644 --- a/ios/MetaMask.xcodeproj/project.pbxproj +++ b/ios/MetaMask.xcodeproj/project.pbxproj @@ -1373,6 +1373,7 @@ "@executable_path/Frameworks", ); LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", "$(SDKROOT)/usr/lib/swift$(inherited)", "${inherited}", ); @@ -1438,6 +1439,7 @@ "@executable_path/Frameworks", ); LIBRARY_SEARCH_PATHS = ( + "$(SDKROOT)/usr/lib/swift", "$(SDKROOT)/usr/lib/swift$(inherited)", "${inherited}", ); diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 3a8e757e02d..5c58ea3c3b5 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -556,14 +556,14 @@ PODS: - React - RNVectorIcons (6.4.2): - React - - segment-analytics-react-native (2.13.0): + - segment-analytics-react-native (2.17.0): - React-Core - sovran-react-native - Sentry/HybridSDK (8.13.0): - SentryPrivate (= 8.13.0) - SentryPrivate (8.13.0) - SocketRocket (0.6.1) - - sovran-react-native (0.4.5): + - sovran-react-native (1.0.4): - React-Core - TcpSockets (4.0.0): - CocoaAsyncSocket @@ -926,7 +926,7 @@ SPEC CHECKSUMS: lottie-react-native: 3e722c63015fdb9c27638b0a77969fc412067c18 MMKV: f902fb6719da13c2ab0965233d8963a59416f911 MMKVCore: d26e4d3edd5cb8588c2569222cbd8be4231374e9 - MultiplatformBleAdapter: ea8bac405ec200d0ca9de0f89afef6f06fb2abbc + MultiplatformBleAdapter: b1fddd0d499b96b607e00f0faa8e60648343dc1d OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c Permission-BluetoothPeripheral: 247e379c9ecb4b1af2b87f73e4a15a00a5bc0c1f RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 @@ -1006,11 +1006,11 @@ SPEC CHECKSUMS: RNShare: f116bbb04f310c665ca483d0bd1e88cf59b3b334 RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f RNVectorIcons: 6607bd3a30291d0edb56f9bbe7ae411ee2b928b0 - segment-analytics-react-native: bd1f13ea95bad2313a9c7130da032af0e9a6da60 + segment-analytics-react-native: dbdd08d96fec78132e96bda092562e41c2ce0ce0 Sentry: a067ca1db308066097314d8478e9682f3b575dee SentryPrivate: 917c91aeb0f199cd079404fab2b50c83e4bad25c SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 - sovran-react-native: fd3dc8f1a4b14acdc4ad25fc6b4ac4f52a2a2a15 + sovran-react-native: 791f2f726b4d57ece59676eda58d6da9dc95ad4e TcpSockets: a8eb6b5867fe643e6cfed5db2e4de62f4d1e8fd0 Yoga: 68c9c592c3e80ec37ff28db20eedb13d84aae5df YogaKit: f782866e155069a2cca2517aafea43200b01fd5a From 54234d2bd1945230c4e2b0461cd65f4a42a8bf12 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Thu, 22 Feb 2024 17:32:37 +0000 Subject: [PATCH 22/27] chore: adds addSubjectMetadata action --- app/core/Engine.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 6b646f22568..ffa44e32fdf 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -638,6 +638,11 @@ class Engine { ), getMnemonic: getPrimaryKeyringMnemonic.bind(this), getUnlockPromise: getAppState.bind(this), + addSubjectMetadata: (params: any) => + this.controllerMessenger.call<'SubjectMetadataController:addSubjectMetadata'>( + 'SubjectMetadataController:addSubjectMetadata', + params, + )?.result ?? undefined, getSnap: this.controllerMessenger.call.bind( this.controllerMessenger, 'SnapController:get', @@ -712,7 +717,6 @@ class Engine { `SnapController:getPermitted`, `SnapController:install`, `SubjectMetadataController:getSubjectMetadata`, - `SubjectMetadataController:addSubjectMetadata`, ///: END:ONLY_INCLUDE_IF ], }), From b9566beed75f5e8eca71e2cec6f859bf1d0c046b Mon Sep 17 00:00:00 2001 From: Owen Craston Date: Thu, 22 Feb 2024 17:16:57 -0800 Subject: [PATCH 23/27] update permission controller to enable addSubjectMetaData controller --- ios/Podfile.lock | 2 +- package.json | 2 +- yarn.lock | 29 ++++++++++++++--------------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 5c58ea3c3b5..bdac91aacf7 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -901,7 +901,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Base64: cecfb41a004124895a7bcee567a89bae5a89d49b - boost: 7dcd2de282d72e344012f7d6564d024930a6a440 + boost: 57d2868c099736d80fcd648bf211b4431e51a558 Branch: 4ac024cb3c29b0ef628048694db3c4cfa679beb0 BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 diff --git a/package.json b/package.json index 63603f1734d..557c8eac46a 100644 --- a/package.json +++ b/package.json @@ -188,7 +188,7 @@ "@metamask/keyring-controller": "^8.1.0", "@metamask/logging-controller": "^1.0.1", "@metamask/network-controller": "^10.0.0", - "@metamask/permission-controller": "^4.0.1", + "@metamask/permission-controller": "7.1.0", "@metamask/phishing-controller": "^5.0.0", "@metamask/post-message-stream": "8.0.0", "@metamask/ppom-validator": "0.24.0", diff --git a/yarn.lock b/yarn.lock index 0eebb95a378..c20d5965689 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3593,7 +3593,7 @@ "@metamask/controller-utils" "^6.0.0" "@metamask/utils" "^8.2.0" -"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^5.1.2": +"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.0", "@metamask/approval-controller@^5.1.2": version "3.4.0" resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-3.4.0.tgz#282900361d42f785578728b45014ff8cb5e557ea" integrity sha512-DjqrhiX9+W/Fh6Crr7FPJ87Y/uhPWzBvfXGtekv1LHZNmEtUxkrA7aelddUM0fpTdURIGT4aNGBoQudFidc+Lw== @@ -3634,7 +3634,7 @@ single-call-balance-checker-abi "^1.0.0" uuid "^8.3.2" -"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.1.0", "@metamask/base-controller@^3.2.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.2", "@metamask/base-controller@^3.2.3": +"@metamask/base-controller@^3.0.0", "@metamask/base-controller@^3.1.0", "@metamask/base-controller@^3.2.0", "@metamask/base-controller@^3.2.1", "@metamask/base-controller@^3.2.3": version "3.2.3" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-3.2.3.tgz#7436a14f6789acf0814952dabaa70ee4fb7d473c" integrity sha512-k66oZe7BOEx0D5N5X8feE/32QlrUTmiEHHAZU/yCac2+VHllJOCEQV/cTeaAtgepnEf8O7SskvYZN+eIjgS99w== @@ -3642,7 +3642,7 @@ "@metamask/utils" "^8.1.0" immer "^9.0.6" -"@metamask/base-controller@^4.0.0", "@metamask/base-controller@^4.1.0", "@metamask/base-controller@^4.1.1": +"@metamask/base-controller@^4.0.0", "@metamask/base-controller@^4.0.1", "@metamask/base-controller@^4.1.0", "@metamask/base-controller@^4.1.1": version "4.1.1" resolved "https://registry.yarnpkg.com/@metamask/base-controller/-/base-controller-4.1.1.tgz#9b411adf4822de7382fe69d07bb6b3fc3e738923" integrity sha512-sJdsd/XlyOa0kRJ16qbM+xeQ8peV1yZcYumJmHCClPK09MkAlxq7EzsrahVZXUCFwcxtSucf244pbttnVqNthw== @@ -3691,7 +3691,7 @@ ethjs-unit "^0.1.6" fast-deep-equal "^3.1.3" -"@metamask/controller-utils@^5.0.1", "@metamask/controller-utils@^5.0.2": +"@metamask/controller-utils@^5.0.2": version "5.0.2" resolved "https://registry.yarnpkg.com/@metamask/controller-utils/-/controller-utils-5.0.2.tgz#f6e848d9b80aca7943e1edae927324982305d1f8" integrity sha512-bHgyPL+Ah6OBOkjWykA1NpTZdpRhoJjCrvuFf8mFxBJLvXE9m/rw9DYp2Rw9WXonMWK17NxwQv/7bKzsGZnjVQ== @@ -3990,7 +3990,7 @@ immer "^9.0.6" uuid "^8.3.2" -"@metamask/json-rpc-engine@^7.0.0", "@metamask/json-rpc-engine@^7.1.1", "@metamask/json-rpc-engine@^7.3.0", "@metamask/json-rpc-engine@^7.3.2": +"@metamask/json-rpc-engine@^7.0.0", "@metamask/json-rpc-engine@^7.1.1", "@metamask/json-rpc-engine@^7.3.0", "@metamask/json-rpc-engine@^7.3.1", "@metamask/json-rpc-engine@^7.3.2": version "7.3.2" resolved "https://registry.yarnpkg.com/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz#e8f0695811619eef7b7c894ba5cf782db9f1c2cb" integrity sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg== @@ -4173,20 +4173,19 @@ taim "^1.1.0" yargs "^7.1.2" -"@metamask/permission-controller@^4.0.1": - version "4.1.2" - resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-4.1.2.tgz#e4e8f45d97f9420244f3dde879eda9ad9a591c26" - integrity sha512-t9QSMeArXnfsowf4BENnJXh2dGgqWMC4QpYe0muHnFSmMUiVxvb3x/WKoWfzzKsfErHRRDigV9OIejSDz3EqOA== +"@metamask/permission-controller@7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@metamask/permission-controller/-/permission-controller-7.1.0.tgz#e6a2e6c66e8b1c4a46a59eac6fdbdc20d0d7d19d" + integrity sha512-CrE+TU1MQSMgQJ3PDV3KsDD+mhRr+KQ40/XNL/Vk3ShKHqOkCpZLskIm5cawcqgwkTSoRgRY4DYgipIr1ISgpw== dependencies: - "@metamask/approval-controller" "^3.5.2" - "@metamask/base-controller" "^3.2.2" - "@metamask/controller-utils" "^5.0.1" - "@metamask/utils" "^6.2.0" + "@metamask/base-controller" "^4.0.1" + "@metamask/controller-utils" "^8.0.1" + "@metamask/json-rpc-engine" "^7.3.1" + "@metamask/rpc-errors" "^6.1.0" + "@metamask/utils" "^8.2.0" "@types/deep-freeze-strict" "^1.1.0" deep-freeze-strict "^1.1.1" - eth-rpc-errors "^4.0.2" immer "^9.0.6" - json-rpc-engine "^6.1.0" nanoid "^3.1.31" "@metamask/permission-controller@^8.0.0": From ad48683d72ffd2c0033224a58c137ae280077c23 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Fri, 23 Feb 2024 14:55:40 +0000 Subject: [PATCH 24/27] chore: fix addSubjectMetadata name requir --- app/core/Engine.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index ffa44e32fdf..92636262a76 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -881,15 +881,12 @@ class Engine { // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore (snap: Snap, svgIcon: any = null) => { - const { - manifest: { proposedName }, - version, - } = snap; + const parts = snap.id.split(/[:/]/); subjectMetadataController.addSubjectMetadata({ subjectType: SubjectType.Snap, - name: proposedName, + name: parts[parts.length - 1] || snap.id, origin: snap.id, - version, + version: snap.version, svgIcon, }); }, From 6d0f22092cb8d1085c9475beb3c6de1947eab044 Mon Sep 17 00:00:00 2001 From: JSoufer Date: Fri, 23 Feb 2024 15:17:06 +0000 Subject: [PATCH 25/27] chore: fix lint issue --- app/core/Engine.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/core/Engine.ts b/app/core/Engine.ts index 92636262a76..759a27cdbf7 100644 --- a/app/core/Engine.ts +++ b/app/core/Engine.ts @@ -642,7 +642,7 @@ class Engine { this.controllerMessenger.call<'SubjectMetadataController:addSubjectMetadata'>( 'SubjectMetadataController:addSubjectMetadata', params, - )?.result ?? undefined, + ), getSnap: this.controllerMessenger.call.bind( this.controllerMessenger, 'SnapController:get', @@ -705,7 +705,6 @@ class Engine { ///: END:ONLY_INCLUDE_IF const permissionController = new PermissionController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted({ name: 'PermissionController', allowedActions: [ @@ -737,7 +736,6 @@ class Engine { ///: BEGIN:ONLY_INCLUDE_IF(snaps) const subjectMetadataController = new SubjectMetadataController({ - // @ts-expect-error TODO: Resolve/patch mismatch between base-controller versions. Before: never, never. Now: string, string, which expects 3rd and 4th args to be informed for restrictedControllerMessengers messenger: this.controllerMessenger.getRestricted< 'SubjectMetadataController', 'PermissionController:hasPermissions', From df5f6d9d28028aacbe2ac856223758a7263602de Mon Sep 17 00:00:00 2001 From: JSoufer Date: Fri, 23 Feb 2024 15:26:14 +0000 Subject: [PATCH 26/27] chore: fix depcheck unused devDependencies --- package.json | 3 +-- yarn.lock | 8 -------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/package.json b/package.json index 557c8eac46a..b7360bd1c1b 100644 --- a/package.json +++ b/package.json @@ -175,8 +175,8 @@ "@ledgerhq/react-native-hw-transport-ble": "^6.29.5", "@metamask/address-book-controller": "^3.0.0", "@metamask/approval-controller": "^3.4.0", - "@metamask/base-controller": "^4.1.1", "@metamask/assets-controllers": "^9.0.0", + "@metamask/base-controller": "^4.1.1", "@metamask/composable-controller": "^3.0.0", "@metamask/contract-metadata": "^2.1.0", "@metamask/controller-utils": "^4.0.0", @@ -429,7 +429,6 @@ "@types/react-native-svg-charts": "^5.0.12", "@types/react-native-vector-icons": "^6.4.13", "@types/react-native-video": "^5.0.14", - "@types/readable-stream": "^4.0.9", "@types/redux-mock-store": "^1.0.3", "@types/url-parse": "^1.4.8", "@types/valid-url": "^1.0.4", diff --git a/yarn.lock b/yarn.lock index c20d5965689..4f353a5d7dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8625,14 +8625,6 @@ dependencies: "@types/react" "*" -"@types/readable-stream@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-4.0.9.tgz#b7f84343801107b9bcf3dca01934d30dc8df0360" - integrity sha512-4cwuvrmNF96M4Nrx0Eep37RwPB1Mth+nCSezsGRv5+PsFyRvDdLd0pil6gVLcWD/bh69INNdwZ98dJwfHpLohA== - dependencies: - "@types/node" "*" - safe-buffer "~5.1.1" - "@types/readdir-glob@*": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/readdir-glob/-/readdir-glob-1.1.1.tgz#27ac2db283e6aa3d110b14ff9da44fcd1a5c38b1" From 0aa92f5fa2115f7ef70b33253196deaee9afa9eb Mon Sep 17 00:00:00 2001 From: JSoufer Date: Tue, 27 Feb 2024 00:36:56 +0000 Subject: [PATCH 27/27] chore: fix dedup --- yarn.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index ef682349f9c..4f353a5d7dc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3593,7 +3593,7 @@ "@metamask/controller-utils" "^6.0.0" "@metamask/utils" "^8.2.0" -"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.0", "@metamask/approval-controller@^3.5.2", "@metamask/approval-controller@^5.1.2": +"@metamask/approval-controller@3.4.0", "@metamask/approval-controller@^3.3.0", "@metamask/approval-controller@^3.4.0", "@metamask/approval-controller@^3.5.0", "@metamask/approval-controller@^5.1.2": version "3.4.0" resolved "https://registry.yarnpkg.com/@metamask/approval-controller/-/approval-controller-3.4.0.tgz#282900361d42f785578728b45014ff8cb5e557ea" integrity sha512-DjqrhiX9+W/Fh6Crr7FPJ87Y/uhPWzBvfXGtekv1LHZNmEtUxkrA7aelddUM0fpTdURIGT4aNGBoQudFidc+Lw==