Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: CAIP Multichain #25665

Draft
wants to merge 230 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
230 commits
Select commit Hold shift + click to select a range
9aec336
WIP
jiexi Apr 12, 2024
39238c4
WIP
jiexi Apr 12, 2024
49efc7e
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 12, 2024
21cb495
WIP caip-25 interface
jiexi Apr 12, 2024
fd9c48e
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 12, 2024
d2614d3
WIP
jiexi Apr 15, 2024
43db71a
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 15, 2024
ef59eba
handle unexpected properties
jiexi Apr 15, 2024
0f3582c
initial dummy provider-authorize
jiexi Apr 15, 2024
4f81ce2
Fix validation logic
jiexi Apr 16, 2024
76c51a9
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 16, 2024
995aa8f
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 17, 2024
2f98712
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 18, 2024
85592db
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 22, 2024
7d9e611
WIP errors
jiexi Apr 22, 2024
dedae26
Add notification support check
jiexi Apr 22, 2024
ff801b5
lint
jiexi Apr 22, 2024
0f8f0ae
Fix errors
jiexi Apr 23, 2024
c90efeb
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Apr 23, 2024
21c154f
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi May 1, 2024
2ce37ee
add api-specs
jiexi May 1, 2024
a0dee99
validate methods
jiexi May 1, 2024
e0c7edb
WIP
jiexi Jun 3, 2024
370dc06
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 3, 2024
c1ae3db
WIP
jiexi Jun 5, 2024
61e9697
WIP PortStream bypass sanity check (working)
jiexi Jun 5, 2024
1f8cfd2
WIP wrapped stream (working)
jiexi Jun 5, 2024
5db9a97
cleanup inpage
jiexi Jun 5, 2024
6ef86a4
DRY caip stream
jiexi Jun 5, 2024
97469f9
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 5, 2024
1f58e7e
Rename. WIP spec
jiexi Jun 5, 2024
a9b741f
add SplitStream specs
jiexi Jun 5, 2024
7df64f3
add CaipToMultiplexStream, MultiplexToCaipStream specs
jiexi Jun 5, 2024
7db9d75
lint
jiexi Jun 5, 2024
65c9d68
WIP createCaipStream spec
jiexi Jun 5, 2024
c8b66b5
add createCaipStream specs
jiexi Jun 6, 2024
bbb33ae
lint
jiexi Jun 6, 2024
edab0fe
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 6, 2024
040d300
add BARAD_DUR flag
jiexi Jun 6, 2024
2acb719
dry background trackDappView
jiexi Jun 6, 2024
9792594
move externally_connectable manifest wildcard behind BARAD_DUR
jiexi Jun 6, 2024
7372604
jsdoc
jiexi Jun 6, 2024
b82888b
restore inpage
jiexi Jun 11, 2024
64ca655
Move caip stream closer to provider. Replace caip<->multiplex transfo…
jiexi Jun 11, 2024
714d044
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 11, 2024
29ea68c
Rename connectExternalDapp to connectExternalCaip
jiexi Jun 11, 2024
64ba990
actually restore inpage
jiexi Jun 11, 2024
46bfee7
Fix createCaipStream specs
jiexi Jun 11, 2024
e24ef63
use createDeferredPromise instead
jiexi Jun 11, 2024
379ce8a
rename onData to readFromStream
jiexi Jun 12, 2024
98ff148
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 12, 2024
cd3dd02
fix method names. add setupUntrustedCommunicationCaip
jiexi Jun 12, 2024
7f1eb8a
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 12, 2024
cbfd014
lint
jiexi Jun 12, 2024
5d65634
Merge remote-tracking branch 'origin/jl/mmp-2528/externally_connectab…
jiexi Jun 12, 2024
3652ab3
lint
jiexi Jun 12, 2024
a239e64
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 13, 2024
4f4f999
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 14, 2024
5b667f2
Rename connectExternalLegacy to connectExternalExtension
jiexi Jun 14, 2024
0c3f000
rename _subjectType to inputSubjectType
jiexi Jun 14, 2024
ab7767b
use messenger where possible
jiexi Jun 18, 2024
7fc0b23
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 18, 2024
ccd10ab
Rename setupUntrustedCommunicationLegacy to setupUntrustedCommunicati…
jiexi Jun 18, 2024
2eeac73
lint
jiexi Jun 18, 2024
600daed
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 21, 2024
ee4dec5
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 21, 2024
dc6c189
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 21, 2024
d27526a
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 24, 2024
571cf9e
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 25, 2024
801f246
Separate rpc pipeline
jiexi Jun 25, 2024
1ced8f3
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 25, 2024
436f26e
Merge branch 'jl/mmp-2528/externally_connectable-caip-enveloping' int…
jiexi Jun 25, 2024
55dc491
WIP mocked working
jiexi Jun 26, 2024
487b9ca
Merge branch 'develop' into jl/mmp-2528/externally_connectable-caip-e…
jiexi Jun 26, 2024
b836f7a
Merge branch 'jl/mmp-2528/externally_connectable-caip-enveloping' int…
jiexi Jun 26, 2024
48d69c6
throw error if not provider_authorize or provider_request
jiexi Jun 26, 2024
f364b48
feat: added initial caip-25 permission spec
shanejonas Jun 27, 2024
130d505
fix: update
shanejonas Jun 27, 2024
2dea008
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jun 27, 2024
4b34413
Working initial endowment:caip25
jiexi Jun 27, 2024
0f16184
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jun 27, 2024
d671a52
Merge branch 'jl/mmp-2360/caip-25-poc' into jl/mmp-2527/separate-rpc-…
jiexi Jun 27, 2024
63e1370
Draft: Separate RPC Pipelines + CAIP-27 (#25516)
jiexi Jun 27, 2024
c5363f2
Move provider_authorize into multichain-api folder. Hookup with CAIP …
jiexi Jun 27, 2024
5eb46ab
Merge remote-tracking branch 'origin/jl/mmp-2360/caip-25-poc' into jl…
jiexi Jun 27, 2024
7ed07db
remove MMC init grantPermissions
jiexi Jun 27, 2024
b31dce0
move provider_request into multichain-api folder
jiexi Jun 27, 2024
e3353f9
get rid of internal rpc method middleware wrapping objects
jiexi Jun 27, 2024
ec5c727
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jun 28, 2024
e855f07
use findNetworkClientIdByChainId hook to get the networkClientId for …
shanejonas Jun 28, 2024
819fde5
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jun 28, 2024
8be9eae
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jun 28, 2024
afa3153
Jl/caip multichain/verify scope method (#25589)
jiexi Jun 29, 2024
5ac3b1c
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jul 1, 2024
7971eac
Jl/caip multichain/scopes merger (#25617)
jiexi Jul 2, 2024
9456ef7
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jul 2, 2024
5b0c0b0
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jul 2, 2024
af260a5
Sj/caip 25 poc mutator (#25643)
shanejonas Jul 3, 2024
f4a8763
fix: rename some types
shanejonas Jul 3, 2024
630377a
Merge branch 'develop' into jl/mmp-2360/caip-25-poc
jiexi Jul 3, 2024
5c0cd15
Jl/caip multichain/permission validation (#25647)
jiexi Jul 3, 2024
4f10189
Restore develop yarn.lock
jiexi Jul 3, 2024
46727b5
lint
jiexi Jul 3, 2024
de8aaeb
lint and spec
jiexi Jul 3, 2024
faa7f69
lint
jiexi Jul 3, 2024
d2d7d40
Merge branch 'develop' into caip-multichain
jiexi Jul 3, 2024
e42ae8f
Merge branch 'develop' into caip-multichain
jiexi Jul 3, 2024
62c4775
Merge branch 'develop' into caip-multichain
jiexi Jul 3, 2024
7fc6ada
Merge branch 'develop' into caip-multichain
jiexi Jul 4, 2024
696a726
Merge branch 'develop' into caip-multichain
jiexi Jul 4, 2024
96a7b67
Merge branch 'develop' into caip-multichain
jiexi Jul 5, 2024
b65d545
Merge branch 'develop' into caip-multichain
jiexi Jul 9, 2024
c137544
Jl/caip multichain/scope helper specs (#25668)
jiexi Jul 9, 2024
f78bfe2
Sj/caip 25 poc add method call validator (#25712)
shanejonas Jul 9, 2024
4376ef6
Merge branch 'develop' into caip-multichain
jiexi Jul 9, 2024
1cc01a9
yarn dedupe
jiexi Jul 9, 2024
74360e7
Update LavaMoat policies
metamaskbot Jul 9, 2024
62d8904
Jl/caip multichain/provider request spec (#25709)
jiexi Jul 10, 2024
161352d
Jl/caip multichain/handle accounts provider authorize (#25708)
jiexi Jul 11, 2024
e72a44a
fix: add caip25 caveat mutator for removeAccounts (#25784)
shanejonas Jul 12, 2024
c787255
Merge branch 'develop' into caip-multichain
jiexi Jul 15, 2024
e0c7961
Sj/caip multichain getinternal (#25836)
shanejonas Jul 15, 2024
dbf562a
remove methods from multichain API (#25841)
adonesky1 Jul 16, 2024
7921a31
Merge branch 'develop' into caip-multichain
jiexi Jul 16, 2024
8990171
Merge branch 'develop' into caip-multichain
jiexi Jul 17, 2024
c9c03ad
Jl/caip multichain/lifecycle methods (#25842)
jiexi Jul 17, 2024
5352f11
Merge branch 'develop' into caip-multichain
jiexi Jul 17, 2024
9b765e6
Merge branch 'develop' into caip-multichain
jiexi Jul 17, 2024
1c97f86
Merge branch 'develop' into caip-multichain
jiexi Jul 17, 2024
6c24aa8
Merge branch 'develop' into caip-multichain
jiexi Jul 18, 2024
a1b1707
Merge branch 'develop' into caip-multichain
jiexi Jul 18, 2024
249c79d
Update LavaMoat policies
metamaskbot Jul 18, 2024
c8dad3d
Allow empty ScopesObject (#25956)
jiexi Jul 18, 2024
a2d6660
Jl/caip multichain/fix provider request scope object check (#25957)
jiexi Jul 18, 2024
66c4785
Merge branch 'develop' into caip-multichain
jiexi Jul 19, 2024
b40039b
Merge branch 'develop' into caip-multichain
jiexi Jul 19, 2024
b78d54b
Merge branch 'develop' into caip-multichain
jiexi Jul 22, 2024
1ce1cd0
Merge branch 'develop' into caip-multichain
jiexi Jul 22, 2024
90ce686
Merge branch 'develop' into caip-multichain
jiexi Jul 23, 2024
7dce004
Merge branch 'develop' into caip-multichain
jiexi Jul 23, 2024
d094982
Merge branch 'develop' into caip-multichain
jiexi Jul 23, 2024
01ae68d
Merge branch 'develop' into caip-multichain
jiexi Jul 23, 2024
65cbc45
Merge branch 'develop' into caip-multichain
jiexi Jul 23, 2024
5c0d59b
Merge branch 'develop' into caip-multichain
jiexi Jul 24, 2024
fea21ac
Merge branch 'develop' into caip-multichain
jiexi Jul 24, 2024
4e0e372
Merge branch 'develop' into caip-multichain
jiexi Jul 24, 2024
1fe52e8
Merge branch 'develop' into caip-multichain
jiexi Jul 25, 2024
4a6b810
Merge branch 'develop' into caip-multichain
jiexi Jul 25, 2024
0f721bf
Merge branch 'develop' into caip-multichain
jiexi Jul 25, 2024
bdf7d8c
Jl/caip multichain/permission adapter (#26054)
jiexi Jul 26, 2024
8241e50
Merge branch 'develop' into caip-multichain
jiexi Jul 26, 2024
51eb1a5
Merge branch 'develop' into caip-multichain
jiexi Jul 26, 2024
cf3a472
Merge branch 'develop' into caip-multichain
jiexi Jul 29, 2024
d50ded1
Jl/caip multichain/scoped properties eip3085 (#25873)
jiexi Jul 29, 2024
8fd734e
Jl/caip multichain/fix camel case naming (#26199)
jiexi Jul 29, 2024
0918a06
Merge branch 'develop' into caip-multichain
jiexi Jul 30, 2024
225a220
Merge branch 'develop' into caip-multichain
jiexi Jul 30, 2024
8027888
Merge branch 'develop' into caip-multichain
jiexi Jul 30, 2024
0a1c1b0
Merge branch 'develop' into caip-multichain
jiexi Jul 30, 2024
604f716
Merge branch 'develop' into caip-multichain
jiexi Jul 30, 2024
b38272b
Jl/caip multichain/fix e2e (#26237)
jiexi Jul 31, 2024
49d8d66
Merge branch 'develop' into caip-multichain
jiexi Jul 31, 2024
1d2d8a0
Merge branch 'develop' into caip-multichain
jiexi Aug 1, 2024
61f6fc3
Update LavaMoat policies
metamaskbot Aug 1, 2024
b8d9baa
Merge branch 'develop' into caip-multichain
jiexi Aug 2, 2024
dbd1a60
Merge branch 'develop' into caip-multichain
jiexi Aug 2, 2024
9b4192e
Jl/caip multichain/caip 25 permission origin (#26296)
jiexi Aug 2, 2024
db99e33
Merge branch 'develop' into caip-multichain
jiexi Aug 12, 2024
9774d0e
Update LavaMoat policies
metamaskbot Aug 13, 2024
47f95db
Merge branch 'develop' into caip-multichain
jiexi Aug 13, 2024
18e331d
Merge branch 'develop' into caip-multichain
jiexi Aug 14, 2024
bedb6d8
Merge branch 'develop' into caip-multichain
jiexi Aug 16, 2024
2d05d3c
Added multichain api notifications (#25869)
shanejonas Aug 19, 2024
d293acf
Merge branch 'develop' into caip-multichain
jiexi Aug 20, 2024
8b3a37c
Merge branch 'develop' into caip-multichain
jiexi Aug 20, 2024
3017965
Merge branch 'develop' into caip-multichain
jiexi Aug 20, 2024
9df3320
Merge branch 'develop' into caip-multichain
jiexi Aug 20, 2024
d6d8f2d
Merge branch 'develop' into caip-multichain
jiexi Aug 21, 2024
07f83d5
Merge branch 'develop' into caip-multichain
jiexi Aug 21, 2024
684f45e
Merge branch 'develop' into caip-multichain
jiexi Aug 22, 2024
4887166
Merge branch 'develop' into caip-multichain
jiexi Aug 22, 2024
ba828e6
Merge branch 'develop' into caip-multichain
jiexi Aug 22, 2024
2ba1522
Merge branch 'develop' into caip-multichain
jiexi Aug 23, 2024
1fda368
Merge branch 'develop' into caip-multichain
jiexi Aug 26, 2024
773e11c
Merge branch 'develop' into caip-multichain
jiexi Aug 26, 2024
d46d3bb
Fix caip25 permission spec type
jiexi Aug 26, 2024
bbbf8e5
WIP
jiexi Aug 26, 2024
f323cb4
Merge branch 'develop' into caip-multichain
jiexi Aug 27, 2024
b575fb4
lavamoat
jiexi Aug 27, 2024
db362d9
Merge remote-tracking branch 'origin/jl/caip-multichain/type-cleanups…
jiexi Aug 27, 2024
4bd882c
Merge branch 'develop' into caip-multichain
jiexi Aug 27, 2024
a71c617
Revert "Fix caip25 permission spec type"
jiexi Aug 27, 2024
dcb3094
Revert "WIP"
jiexi Aug 27, 2024
d893751
Merge branch 'develop' into caip-multichain
jiexi Aug 27, 2024
f3692d9
Merge branch 'develop' into caip-multichain
jiexi Aug 28, 2024
958f864
Update LavaMoat policies
metamaskbot Aug 28, 2024
a260e5e
Merge branch 'develop' into caip-multichain
jiexi Aug 28, 2024
9fb5fed
Jl/caip multichain/misc cleanup (#26724)
jiexi Aug 28, 2024
a9e92c5
Jl/caip multichain/provider authorize metrics (#26699)
jiexi Aug 28, 2024
9eef5fe
Merge branch 'develop' into caip-multichain
jiexi Aug 29, 2024
8baf1a5
Merge branch 'develop' into caip-multichain
jiexi Aug 29, 2024
26b4aa2
Jl/caip multichain/test cleanups (#26698)
jiexi Aug 29, 2024
2d6ccff
Merge branch 'develop' into caip-multichain
jiexi Aug 29, 2024
704e52e
Merge branch 'develop' into caip-multichain
jiexi Aug 29, 2024
3b16fbd
Merge branch 'develop' into caip-multichain
jiexi Aug 30, 2024
7ddc677
Merge branch 'develop' into caip-multichain
jiexi Aug 30, 2024
f838a96
Merge branch 'develop' into caip-multichain
jiexi Aug 30, 2024
f9e30ff
Merge branch 'develop' into caip-multichain
jiexi Sep 3, 2024
aa92005
Jl/caip multichain/replace known caip namespace with metamask utils (…
jiexi Sep 3, 2024
58106a5
Jl/caip multichain/migrate permission eth accounts to caip25 (#26483)
jiexi Sep 3, 2024
e7a9d2d
Sj/caip multichain api specs test (#26643)
shanejonas Sep 3, 2024
7331f50
Jl/caip multichain/namespaced methods (#26732)
jiexi Sep 3, 2024
41ea73b
Remove prepopulated methods and notifications (#26877)
jiexi Sep 3, 2024
bea1e18
Merge branch 'develop' into caip-multichain
jiexi Sep 4, 2024
bca508e
Merge branch 'develop' into caip-multichain
jiexi Sep 4, 2024
191b717
Merge branch 'develop' into caip-multichain
jiexi Sep 4, 2024
93ed08e
Jl/mmp 3048/caip multichain error handling cleanup (#26825)
jiexi Sep 4, 2024
5c048ff
Merge branch 'develop' into caip-multichain
jiexi Sep 4, 2024
995b386
Fix provider_authorize missing hooks (#26926)
jiexi Sep 4, 2024
577f337
Jl/mmp 3037/caip multichain rename methods (#26928)
jiexi Sep 5, 2024
e54be4b
Merge branch 'develop' into caip-multichain
jiexi Sep 5, 2024
370dfd1
yarn dedupe
jiexi Sep 5, 2024
70a2cdc
Jl/caip multichain/remove 5301 error (#26915)
jiexi Sep 5, 2024
781aeb8
Merge branch 'develop' into caip-multichain
jiexi Sep 5, 2024
dfacc49
remove wallet_watchAsset from wallet:eip155 (#26954)
jiexi Sep 6, 2024
c5370c7
Merge branch 'develop' into caip-multichain
jiexi Sep 6, 2024
2dfdbc3
Jl/caip multichain/type cleanups (#26690)
jiexi Sep 6, 2024
615da54
fix: added initial provider authorize error rule (#26828)
shanejonas Sep 11, 2024
76cd526
Merge branch 'develop' into caip-multichain
jiexi Sep 17, 2024
d24fc2a
Jl/caip multichain/fix wallet namespace validation and invoke (#27223)
jiexi Sep 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,10 @@ lavamoat/**/policy-debug.json
# Attributions
licenseInfos.json

# Branding
/app/images/branding

# API Spec tests
html-report/

/app/images/branding
html-report-multichain/

26 changes: 19 additions & 7 deletions .storybook/test-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -1375,17 +1375,29 @@ const state = {
subjects: {
'https://app.uniswap.org': {
permissions: {
eth_accounts: {
invoker: 'https://app.uniswap.org',
parentCapability: 'eth_accounts',
id: 'a7342e4b-beae-4525-a36c-c0635fd03359',
date: 1620710693178,
'endowment:caip25': {
caveats: [
{
type: 'restrictReturnedAccounts',
value: ['0x64a845a5b02460acf8a3d84503b0d68d028b4bb4'],
type: 'authorizedScopes',
value: {
requiredScopes: {},
optionalScopes: {
'eip155:1': {
methods: [],
notifications: [],
accounts: [
'eip155:1:0x64a845a5b02460acf8a3d84503b0d68d028b4bb4',
],
},
},
isMultichainOrigin: false,
},
},
],
invoker: 'https://app.uniswap.org',
id: 'a7342e4b-beae-4525-a36c-c0635fd03359',
date: 1620710693178,
parentCapability: 'endowment:caip25',
},
},
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/lib/index.js b/lib/index.js
index f5795884311124b221d91f488ed45750eb6e9c80..e030d6f8d8e85e6d1350c565d36ad48bc49af881 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -25,7 +25,7 @@ class Ptr {
});
return `/${tokens.join("/")}`;
}
- eval(instance) {
+ shmeval(instance) {
for (const token of this.tokens) {
if (instance.hasOwnProperty(token)) {
instance = instance[token];
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/build/resolve-pointer.js b/build/resolve-pointer.js
index d5a8ec7486250cd17572eb0e0449725643fc9842..044e74bb51a46e9bf3547f6d7a84763b93260613 100644
--- a/build/resolve-pointer.js
+++ b/build/resolve-pointer.js
@@ -27,7 +27,7 @@ exports.default = (function (ref, root) {
try {
var withoutHash = ref.replace("#", "");
var pointer = json_pointer_1.default.parse(withoutHash);
- return pointer.eval(root);
+ return pointer.shmeval(root);
}
catch (e) {
throw new InvalidJsonPointerRefError(ref, e.message);
9 changes: 2 additions & 7 deletions app/scripts/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -635,13 +635,8 @@ function emitDappViewedMetricEvent(origin) {
return;
}

const permissions = controller.controllerMessenger.call(
'PermissionController:getPermissions',
origin,
);
const numberOfConnectedAccounts =
permissions?.eth_accounts?.caveats[0]?.value.length;
if (!numberOfConnectedAccounts) {
const numberOfConnectedAccounts = controller.getPermittedAccounts(origin);
if (numberOfConnectedAccounts.length === 0) {
return;
}

Expand Down
167 changes: 139 additions & 28 deletions app/scripts/controllers/permissions/background-api.js
Original file line number Diff line number Diff line change
@@ -1,38 +1,90 @@
import nanoid from 'nanoid';
import { MethodNames } from '@metamask/permission-controller';
import {
Caip25CaveatType,
Caip25EndowmentPermissionName,
} from '../../lib/multichain-api/caip25permissions';
import {
getEthAccounts,
setEthAccounts,
} from '../../lib/multichain-api/adapters/caip-permission-adapter-eth-accounts';
import { setPermittedEthChainIds } from '../../lib/multichain-api/adapters/caip-permission-adapter-permittedChains';
import {
CaveatTypes,
RestrictedMethods,
} from '../../../../shared/constants/permissions';
import { CaveatFactories } from './specifications';
import { PermissionNames } from './specifications';

export function getPermissionBackgroundApiMethods(permissionController) {
export function getPermissionBackgroundApiMethods({
permissionController,
approvalController,
networkController,
}) {
// To add more than one account when already connected to the dapp
const addMoreAccounts = (origin, accountOrAccounts) => {
const accounts = Array.isArray(accountOrAccounts)
? accountOrAccounts
: [accountOrAccounts];
const caveat = CaveatFactories.restrictReturnedAccounts(accounts);

permissionController.grantPermissionsIncremental({
subject: { origin },
approvedPermissions: {
[RestrictedMethods.eth_accounts]: { caveats: [caveat] },
},
});

let caip25Caveat;
try {
caip25Caveat = permissionController.getCaveat(
origin,
Caip25EndowmentPermissionName,
Caip25CaveatType,
);
} catch (err) {
// noop
}

if (!caip25Caveat) {
throw new Error('tried to add accounts when none have been permissioned'); // TODO: better error
}

const ethAccounts = getEthAccounts(caip25Caveat.value);

const updatedEthAccounts = Array.from(
new Set([...ethAccounts, ...accounts]),
);

const updatedCaveatValue = setEthAccounts(
caip25Caveat.value,
updatedEthAccounts,
);

permissionController.updateCaveat(
origin,
Caip25EndowmentPermissionName,
Caip25CaveatType,
updatedCaveatValue,
);
};

return {
addPermittedAccount: (origin, account) => addMoreAccounts(origin, account),

// To add more than one account when already connected to the dapp
addMorePermittedAccounts: (origin, accounts) =>
addMoreAccounts(origin, accounts),

removePermittedAccount: (origin, account) => {
const { value: existingAccounts } = permissionController.getCaveat(
origin,
RestrictedMethods.eth_accounts,
CaveatTypes.restrictReturnedAccounts,
);
let caip25Caveat;
try {
caip25Caveat = permissionController.getCaveat(
origin,
Caip25EndowmentPermissionName,
Caip25CaveatType,
);
} catch (err) {
// noop
}

if (!caip25Caveat) {
throw new Error(
'tried to remove accounts when none have been permissioned',
); // TODO: better error
}

const existingAccounts = getEthAccounts(caip25Caveat.value);

const remainingAccounts = existingAccounts.filter(
(existingAccount) => existingAccount !== account,
Expand All @@ -45,27 +97,86 @@ export function getPermissionBackgroundApiMethods(permissionController) {
if (remainingAccounts.length === 0) {
permissionController.revokePermission(
origin,
RestrictedMethods.eth_accounts,
Caip25EndowmentPermissionName,
);
} else {
const updatedCaveatValue = setEthAccounts(
caip25Caveat.value,
remainingAccounts,
);
permissionController.updateCaveat(
origin,
RestrictedMethods.eth_accounts,
CaveatTypes.restrictReturnedAccounts,
remainingAccounts,
Caip25EndowmentPermissionName,
Caip25CaveatType,
updatedCaveatValue,
);
}
},

requestAccountsPermissionWithId: async (origin) => {
requestAccountsPermissionWithId: (origin) => {
const { chainId } =
networkController.getNetworkConfigurationByNetworkClientId(
networkController.state.selectedNetworkClientId,
);

const id = nanoid();
permissionController.requestPermissions(
{ origin },
{
eth_accounts: {},
},
{ id },
);
// NOTE: the eth_accounts/permittedChains approvals will be combined in the future.
// Until they are actually combined, when testing, you must request both
// eth_accounts and permittedChains together.
approvalController
.addAndShowApprovalRequest({
id,
origin,
requestData: {
metadata: {
id,
origin,
},
permissions: {
[RestrictedMethods.eth_accounts]: {},
[PermissionNames.permittedChains]: {
caveats: [
{
type: CaveatTypes.restrictNetworkSwitching,
value: [chainId],
},
],
},
},
},
type: MethodNames.requestPermissions,
})
.then((legacyApproval) => {
let caveatValue = {
requiredScopes: {},
optionalScopes: {},
isMultichainOrigin: false,
};
caveatValue = setPermittedEthChainIds(
caveatValue,
legacyApproval.approvedChainIds,
);

caveatValue = setEthAccounts(
caveatValue,
legacyApproval.approvedAccounts,
);

permissionController.grantPermissions({
subject: { origin },
approvedPermissions: {
[Caip25EndowmentPermissionName]: {
caveats: [
{
type: Caip25CaveatType,
value: caveatValue,
},
],
},
},
});
});

return id;
},
};
Expand Down
Loading
Loading