Skip to content

Commit 0f445ea

Browse files
fix(rndemos): update metro config to support eciesjs crypto imports (#1147)
* feat: update metro.config.js with custom resolvers Added custom resolvers for '@ecies/ciphers/aes' and '@ecies/ciphers/chacha' in metro.config.js. * chore: update rn initialization setup to match latest eciesjs * docs: deprecate base64icon * fix: react native demo example --------- Co-authored-by: Christopher Ferreira <[email protected]>
1 parent 2551701 commit 0f445ea

File tree

9 files changed

+166
-20
lines changed

9 files changed

+166
-20
lines changed

packages/devreactnative/App.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ const WithSDKConfig = ({children}: {children: React.ReactNode}) => {
7878
},
7979
dappMetadata: {
8080
name: 'devreactnative',
81+
url: 'https://demornativesdk.metamask.io',
8182
},
8283
i18nOptions: {
8384
enabled: true,

packages/devreactnative/metro.config.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ const config = {
7878
extraNodeModules: {
7979
...extraNodeModules,
8080
...require('node-libs-react-native'),
81+
'node:crypto': require.resolve('react-native-crypto'),
8182
// crypto: require.resolve('react-native-quick-crypto'),
8283
// url: require.resolve('whatwg-url'),
8384
},
@@ -128,6 +129,25 @@ const config = {
128129
filePath: monorepoRootPath + '/packages/sdk-ui/src/index.ts',
129130
type: 'sourceFile',
130131
};
132+
}
133+
else if (moduleName === '@ecies/ciphers/aes') {
134+
console.debug(`CUSTOM RESOLVER ${moduleName}`);
135+
// Logic to resolve the module name to a file path...
136+
// NOTE: Throw an error if there is no resolution.
137+
return {
138+
filePath:
139+
sdkPath + '/node_modules/@ecies/ciphers/dist/aes/node.js',
140+
type: 'sourceFile',
141+
};
142+
} else if (moduleName === '@ecies/ciphers/chacha') {
143+
console.debug(`CUSTOM RESOLVER ${moduleName}`);
144+
// Logic to resolve the module name to a file path...
145+
// NOTE: Throw an error if there is no resolution.
146+
return {
147+
filePath:
148+
sdkPath + '/node_modules/@ecies/ciphers/dist/chacha/node.js',
149+
type: 'sourceFile',
150+
};
131151
}
132152
// // Optionally, chain to the standard Metro resolver.
133153
return context.resolveRequest(context, moduleName, platform);

packages/devreactnative/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"@react-navigation/bottom-tabs": "^6.5.11",
2222
"@react-navigation/native": "^6.1.9",
2323
"@react-navigation/native-stack": "^6.9.17",
24-
"eciesjs": "^0.4.4",
24+
"eciesjs": "^0.4.12",
2525
"ethers": "5.7.2",
2626
"intl-pluralrules": "^2.0.1",
2727
"node-libs-react-native": "^1.2.1",

packages/examples/reactNativeDemo/App.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ const WithSDKConfig = ({children}: {children: React.ReactNode}) => {
7676
},
7777
dappMetadata: {
7878
name: 'devreactnative',
79+
url: 'https://demornativesdk.metamask.io',
7980
},
8081
i18nOptions: {
8182
enabled: true,

packages/examples/reactNativeDemo/metro.config.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const config = {
2121
resolver: {
2222
extraNodeModules: {
2323
...require('node-libs-react-native'),
24+
'node:crypto': require.resolve('react-native-crypto'),
2425
},
2526
sourceExts: ['jsx', 'js', 'ts', 'tsx', 'cjs', 'json'], //add here
2627
},

packages/examples/reactNativeDemo/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"allow-scripts": ""
1414
},
1515
"dependencies": {
16-
"@metamask/sdk": "^0.30.0",
16+
"@metamask/sdk": "^0.31.0",
1717
"@metamask/sdk-react": "^0.30.0",
1818
"@react-native-async-storage/async-storage": "^2.0.0",
1919
"@react-navigation/bottom-tabs": "^6.5.11",

packages/examples/reactNativeDemo/yarn.lock

Lines changed: 131 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2538,6 +2538,15 @@ __metadata:
25382538
languageName: node
25392539
linkType: hard
25402540

2541+
"@babel/runtime@npm:^7.26.0":
2542+
version: 7.26.0
2543+
resolution: "@babel/runtime@npm:7.26.0"
2544+
dependencies:
2545+
regenerator-runtime: ^0.14.0
2546+
checksum: c8e2c0504ab271b3467a261a8f119bf2603eb857a0d71e37791f4e3fae00f681365073cc79f141ddaa90c6077c60ba56448004ad5429d07ac73532be9f7cf28a
2547+
languageName: node
2548+
linkType: hard
2549+
25412550
"@babel/template@npm:^7.0.0, @babel/template@npm:^7.22.5, @babel/template@npm:^7.3.3":
25422551
version: 7.22.5
25432552
resolution: "@babel/template@npm:7.22.5"
@@ -2670,6 +2679,15 @@ __metadata:
26702679
languageName: node
26712680
linkType: hard
26722681

2682+
"@ecies/ciphers@npm:^0.2.1":
2683+
version: 0.2.1
2684+
resolution: "@ecies/ciphers@npm:0.2.1"
2685+
peerDependencies:
2686+
"@noble/ciphers": ^1.0.0
2687+
checksum: 4a2012358f79ef842c6a9fdcf3d4e1f7d3d59ad3d025cca52b3e7135f62d5c35d394882cbfe8ad5aa17f707663921bf466707d20712b5027a0af5813a6ad7b08
2688+
languageName: node
2689+
linkType: hard
2690+
26732691
"@egjs/hammerjs@npm:^2.0.17":
26742692
version: 2.0.17
26752693
resolution: "@egjs/hammerjs@npm:2.0.17"
@@ -3697,6 +3715,25 @@ __metadata:
36973715
languageName: node
36983716
linkType: hard
36993717

3718+
"@metamask/sdk-communication-layer@npm:0.31.0":
3719+
version: 0.31.0
3720+
resolution: "@metamask/sdk-communication-layer@npm:0.31.0"
3721+
dependencies:
3722+
bufferutil: ^4.0.8
3723+
date-fns: ^2.29.3
3724+
debug: ^4.3.4
3725+
utf-8-validate: ^5.0.2
3726+
uuid: ^8.3.2
3727+
peerDependencies:
3728+
cross-fetch: ^4.0.0
3729+
eciesjs: "*"
3730+
eventemitter2: ^6.4.9
3731+
readable-stream: ^3.6.2
3732+
socket.io-client: ^4.5.1
3733+
checksum: 3f9283d828d736f331154bfa0e1368b7c7c18e00eff66ccd20e97fb86618433cef3c60ed4168e2565bda825303562eb00bb9ca101d1abdcdc3f3848f807e614e
3734+
languageName: node
3735+
linkType: hard
3736+
37003737
"@metamask/sdk-install-modal-web@npm:0.30.0":
37013738
version: 0.30.0
37023739
resolution: "@metamask/sdk-install-modal-web@npm:0.30.0"
@@ -3718,6 +3755,15 @@ __metadata:
37183755
languageName: node
37193756
linkType: hard
37203757

3758+
"@metamask/sdk-install-modal-web@npm:0.31.0":
3759+
version: 0.31.0
3760+
resolution: "@metamask/sdk-install-modal-web@npm:0.31.0"
3761+
dependencies:
3762+
"@paulmillr/qr": ^0.2.1
3763+
checksum: 4ef7bf111d058ea3e3900ae9d913a3fd0d3b2b30ac3fb293dda52a386822d2a1bec2e2edd7e6b4679d9fedaeb456d3141435abd11fe4eb593222582280787dcc
3764+
languageName: node
3765+
linkType: hard
3766+
37213767
"@metamask/sdk-react@npm:^0.30.0":
37223768
version: 0.30.0
37233769
resolution: "@metamask/sdk-react@npm:0.30.0"
@@ -3784,6 +3830,33 @@ __metadata:
37843830
languageName: node
37853831
linkType: hard
37863832

3833+
"@metamask/sdk@npm:^0.31.0":
3834+
version: 0.31.0
3835+
resolution: "@metamask/sdk@npm:0.31.0"
3836+
dependencies:
3837+
"@babel/runtime": ^7.26.0
3838+
"@metamask/onboarding": ^1.0.1
3839+
"@metamask/providers": 16.1.0
3840+
"@metamask/sdk-communication-layer": 0.31.0
3841+
"@metamask/sdk-install-modal-web": 0.31.0
3842+
"@paulmillr/qr": ^0.2.1
3843+
bowser: ^2.9.0
3844+
cross-fetch: ^4.0.0
3845+
debug: ^4.3.4
3846+
eciesjs: ^0.4.11
3847+
eth-rpc-errors: ^4.0.3
3848+
eventemitter2: ^6.4.9
3849+
obj-multiplex: ^1.0.0
3850+
pump: ^3.0.0
3851+
readable-stream: ^3.6.2
3852+
socket.io-client: ^4.5.1
3853+
tslib: ^2.6.0
3854+
util: ^0.12.4
3855+
uuid: ^8.3.2
3856+
checksum: 5c79480ed2bc7db708b5c3b9bd23f53e5d5e0673baa43ef8d1f20599e66efa6a4527948a3c9260510854e6fc5b213edc17005519ae8aa2c36a4074b5806ba7be
3857+
languageName: node
3858+
linkType: hard
3859+
37873860
"@metamask/utils@npm:^8.3.0":
37883861
version: 8.3.0
37893862
resolution: "@metamask/utils@npm:8.3.0"
@@ -3816,6 +3889,13 @@ __metadata:
38163889
languageName: node
38173890
linkType: hard
38183891

3892+
"@noble/ciphers@npm:^1.0.0":
3893+
version: 1.1.1
3894+
resolution: "@noble/ciphers@npm:1.1.1"
3895+
checksum: 1264234506c6d87cdef060bb5cbdfb098ee2b853c34dc377ce51aa34790013d00cc4fc44fc921c52002e4a4f92310b56f3d6965d3f0a4c2d1ec912a20494b981
3896+
languageName: node
3897+
linkType: hard
3898+
38193899
"@noble/curves@npm:1.1.0, @noble/curves@npm:~1.1.0":
38203900
version: 1.1.0
38213901
resolution: "@noble/curves@npm:1.1.0"
@@ -3834,6 +3914,15 @@ __metadata:
38343914
languageName: node
38353915
linkType: hard
38363916

3917+
"@noble/curves@npm:^1.6.0":
3918+
version: 1.7.0
3919+
resolution: "@noble/curves@npm:1.7.0"
3920+
dependencies:
3921+
"@noble/hashes": 1.6.0
3922+
checksum: e220b704f1e516f326fff985e794e840a267f5542e1388737142b08177672ebc41b460b5a5bf636d7622c68e8ae719bc042ccd8aed16dc14311450a94b5f2a05
3923+
languageName: node
3924+
linkType: hard
3925+
38373926
"@noble/hashes@npm:1.3.1":
38383927
version: 1.3.1
38393928
resolution: "@noble/hashes@npm:1.3.1"
@@ -3848,13 +3937,27 @@ __metadata:
38483937
languageName: node
38493938
linkType: hard
38503939

3940+
"@noble/hashes@npm:1.6.0":
3941+
version: 1.6.0
3942+
resolution: "@noble/hashes@npm:1.6.0"
3943+
checksum: 07729b80108d2a9b862eb4e070d4f78ca7ee86b9a9c13a4f7c338ba47a15d4386dd283235da71f21ad515fa9f0b9429fc3da39d2f2b4a50e2442212d14cfd4a9
3944+
languageName: node
3945+
linkType: hard
3946+
38513947
"@noble/hashes@npm:^1.3.1":
38523948
version: 1.4.0
38533949
resolution: "@noble/hashes@npm:1.4.0"
38543950
checksum: 8ba816ae26c90764b8c42493eea383716396096c5f7ba6bea559993194f49d80a73c081f315f4c367e51bd2d5891700bcdfa816b421d24ab45b41cb03e4f3342
38553951
languageName: node
38563952
linkType: hard
38573953

3954+
"@noble/hashes@npm:^1.5.0":
3955+
version: 1.6.1
3956+
resolution: "@noble/hashes@npm:1.6.1"
3957+
checksum: 57c62f65ee217c0293b4321b547792aa6d79812bfe70a7d62dc83e0f936cc677b14ed981b4e88cf8fdad37cd6d3a0cbd3bd0908b0728adc9daf066e678be8901
3958+
languageName: node
3959+
linkType: hard
3960+
38583961
"@nodelib/fs.scandir@npm:2.1.5":
38593962
version: 2.1.5
38603963
resolution: "@nodelib/fs.scandir@npm:2.1.5"
@@ -3891,6 +3994,13 @@ __metadata:
38913994
languageName: node
38923995
linkType: hard
38933996

3997+
"@paulmillr/qr@npm:^0.2.1":
3998+
version: 0.2.1
3999+
resolution: "@paulmillr/qr@npm:0.2.1"
4000+
checksum: 8a7b882f74f472759b0e5911c9c902a29c5232609373af4c5775625d9aad4ebda635d84c25be27e694144ba73d8e4204e72c3b9b59e9a375ec1d19f034a2d2ad
4001+
languageName: node
4002+
linkType: hard
4003+
38944004
"@pkgjs/parseargs@npm:^0.11.0":
38954005
version: 0.11.0
38964006
resolution: "@pkgjs/parseargs@npm:0.11.0"
@@ -7008,6 +7118,18 @@ __metadata:
70087118
languageName: node
70097119
linkType: hard
70107120

7121+
"eciesjs@npm:^0.4.11":
7122+
version: 0.4.12
7123+
resolution: "eciesjs@npm:0.4.12"
7124+
dependencies:
7125+
"@ecies/ciphers": ^0.2.1
7126+
"@noble/ciphers": ^1.0.0
7127+
"@noble/curves": ^1.6.0
7128+
"@noble/hashes": ^1.5.0
7129+
checksum: ef98528b8af23b013dd432b43cc1a378d58621f887a7db234ebc997006e16ab9ffa0ea973bf2195aa63dbfa996afa9e3a8f8410b6e3d5c3808365a3d02b1141a
7130+
languageName: node
7131+
linkType: hard
7132+
70117133
"eciesjs@npm:^0.4.4":
70127134
version: 0.4.5
70137135
resolution: "eciesjs@npm:0.4.5"
@@ -7709,7 +7831,7 @@ __metadata:
77097831
languageName: node
77107832
linkType: hard
77117833

7712-
"eventemitter2@npm:^6.4.7":
7834+
"eventemitter2@npm:^6.4.7, eventemitter2@npm:^6.4.9":
77137835
version: 6.4.9
77147836
resolution: "eventemitter2@npm:6.4.9"
77157837
checksum: be59577c1e1c35509c7ba0e2624335c35bbcfd9485b8a977384c6cc6759341ea1a98d3cb9dbaa5cea4fff9b687e504504e3f9c2cc1674cf3bd8a43a7c74ea3eb
@@ -12191,7 +12313,7 @@ __metadata:
1219112313
"@babel/core": ^7.23.6
1219212314
"@babel/preset-env": ^7.23.6
1219312315
"@babel/runtime": ^7.23.6
12194-
"@metamask/sdk": ^0.30.0
12316+
"@metamask/sdk": ^0.31.0
1219512317
"@metamask/sdk-react": ^0.30.0
1219612318
"@react-native-async-storage/async-storage": ^2.0.0
1219712319
"@react-native-community/eslint-config": ^3.2.0
@@ -13506,6 +13628,13 @@ __metadata:
1350613628
languageName: node
1350713629
linkType: hard
1350813630

13631+
"tslib@npm:^2.6.0":
13632+
version: 2.8.1
13633+
resolution: "tslib@npm:2.8.1"
13634+
checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a
13635+
languageName: node
13636+
linkType: hard
13637+
1350913638
"tsutils@npm:^3.21.0":
1351013639
version: 3.21.0
1351113640
resolution: "tsutils@npm:3.21.0"

packages/sdk-communication-layer/src/types/DappMetadata.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export interface DappMetadata {
33
name?: string;
44
iconUrl?: string;
55
scheme?: string;
6-
base64Icon?: string;
6+
base64Icon?: string; // @deprecated use iconUrl instead - backwards compatibility
77
connector?: string;
88
}
99

yarn.lock

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12514,13 +12514,6 @@ __metadata:
1251412514
languageName: node
1251512515
linkType: hard
1251612516

12517-
"@noble/ciphers@npm:^0.5.3":
12518-
version: 0.5.3
12519-
resolution: "@noble/ciphers@npm:0.5.3"
12520-
checksum: c5ed5d7d43b054c2051b3e0e220353cc9d31fa8d17b82cfb753d87f922e4e1e69b73ca5273a9cc457023f83d96d1d9a51678d2f6d4e58ca039d1111a62856d19
12521-
languageName: node
12522-
linkType: hard
12523-
1252412517
"@noble/ciphers@npm:^1.0.0":
1252512518
version: 1.0.0
1252612519
resolution: "@noble/ciphers@npm:1.0.0"
@@ -27831,7 +27824,7 @@ __metadata:
2783127824
"@typescript-eslint/eslint-plugin": ^6.10.0
2783227825
"@typescript-eslint/parser": ^6.10.0
2783327826
babel-jest: ^29.2.1
27834-
eciesjs: ^0.4.4
27827+
eciesjs: ^0.4.12
2783527828
eslint: ^8.53.0
2783627829
eslint-config-prettier: ^9.0.0
2783727830
ethers: 5.7.2
@@ -28371,14 +28364,15 @@ __metadata:
2837128364
languageName: node
2837228365
linkType: hard
2837328366

28374-
"eciesjs@npm:^0.4.4":
28375-
version: 0.4.7
28376-
resolution: "eciesjs@npm:0.4.7"
28367+
"eciesjs@npm:^0.4.12":
28368+
version: 0.4.12
28369+
resolution: "eciesjs@npm:0.4.12"
2837728370
dependencies:
28378-
"@noble/ciphers": ^0.5.3
28379-
"@noble/curves": ^1.4.0
28380-
"@noble/hashes": ^1.4.0
28381-
checksum: 222505d6135fe75e7f9c4bd76d4ce184cdd112f9047ace2b345763a343255c67bb304c60067a867c911b9feb078d2809f11d1786216fb3ff1ea0215a94becd0f
28371+
"@ecies/ciphers": ^0.2.1
28372+
"@noble/ciphers": ^1.0.0
28373+
"@noble/curves": ^1.6.0
28374+
"@noble/hashes": ^1.5.0
28375+
checksum: ef98528b8af23b013dd432b43cc1a378d58621f887a7db234ebc997006e16ab9ffa0ea973bf2195aa63dbfa996afa9e3a8f8410b6e3d5c3808365a3d02b1141a
2838228376
languageName: node
2838328377
linkType: hard
2838428378

0 commit comments

Comments
 (0)