@novastera-oss/nitro-metamask 0.6.3 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/NitroMetamask.podspec +12 -3
  2. package/README.md +3 -1
  3. package/android/build.gradle +14 -32
  4. package/android/cargo-ecies.gradle +60 -88
  5. package/android/src/main/aidl/io/metamask/nativesdk/IMessegeService.aidl +8 -0
  6. package/android/src/main/aidl/io/metamask/nativesdk/IMessegeServiceCallback.aidl +8 -0
  7. package/android/src/main/java/com/margelo/nitro/nitrometamask/HybridNitroMetamask.kt +101 -3
  8. package/android/src/main/java/io/metamask/androidsdk/AnyRequest.kt +8 -0
  9. package/android/src/main/java/io/metamask/androidsdk/ClientMessageServiceCallback.kt +12 -0
  10. package/android/src/main/java/io/metamask/androidsdk/ClientServiceConnection.kt +42 -0
  11. package/android/src/main/java/io/metamask/androidsdk/CommunicationClient.kt +525 -0
  12. package/android/src/main/java/io/metamask/androidsdk/CommunicationClientModule.kt +47 -0
  13. package/android/src/main/java/io/metamask/androidsdk/CommunicationClientModuleInterface.kt +11 -0
  14. package/android/src/main/java/io/metamask/androidsdk/Constants.kt +5 -0
  15. package/android/src/main/java/io/metamask/androidsdk/Crypto.kt +35 -0
  16. package/android/src/main/java/io/metamask/androidsdk/DappMetadata.kt +36 -0
  17. package/android/src/main/java/io/metamask/androidsdk/Encryption.kt +9 -0
  18. package/android/src/main/java/io/metamask/androidsdk/ErrorType.kt +41 -0
  19. package/android/src/main/java/io/metamask/androidsdk/Ethereum.kt +328 -0
  20. package/android/src/main/java/io/metamask/androidsdk/EthereumEventCallback.kt +6 -0
  21. package/android/src/main/java/io/metamask/androidsdk/EthereumMethod.kt +80 -0
  22. package/android/src/main/java/io/metamask/androidsdk/EthereumRequest.kt +7 -0
  23. package/android/src/main/java/io/metamask/androidsdk/EthereumState.kt +7 -0
  24. package/android/src/main/java/io/metamask/androidsdk/KeyExchange.kt +77 -0
  25. package/android/src/main/java/io/metamask/androidsdk/KeyExchangeMessageType.kt +20 -0
  26. package/android/src/main/java/io/metamask/androidsdk/KeyStorage.kt +122 -0
  27. package/android/src/main/java/io/metamask/androidsdk/Logger.kt +18 -0
  28. package/android/src/main/java/io/metamask/androidsdk/Message.kt +3 -0
  29. package/android/src/main/java/io/metamask/androidsdk/MessageType.kt +11 -0
  30. package/android/src/main/java/io/metamask/androidsdk/OriginatorInfo.kt +12 -0
  31. package/android/src/main/java/io/metamask/androidsdk/RequestError.kt +8 -0
  32. package/android/src/main/java/io/metamask/androidsdk/RequestInfo.kt +9 -0
  33. package/android/src/main/java/io/metamask/androidsdk/Result.kt +11 -0
  34. package/android/src/main/java/io/metamask/androidsdk/RpcRequest.kt +7 -0
  35. package/android/src/main/java/io/metamask/androidsdk/SDKInfo.kt +6 -0
  36. package/android/src/main/java/io/metamask/androidsdk/SDKOptions.kt +6 -0
  37. package/android/src/main/java/io/metamask/androidsdk/SecureStorage.kt +9 -0
  38. package/android/src/main/java/io/metamask/androidsdk/SessionConfig.kt +10 -0
  39. package/android/src/main/java/io/metamask/androidsdk/SessionManager.kt +92 -0
  40. package/android/src/main/java/io/metamask/androidsdk/SubmittedRequest.kt +8 -0
  41. package/android/src/main/java/io/metamask/androidsdk/TimeStampGenerator.kt +7 -0
  42. package/android/src/main/jniLibs/arm64-v8a/libecies.so +0 -0
  43. package/android/src/main/jniLibs/armeabi-v7a/libecies.so +0 -0
  44. package/android/src/main/jniLibs/x86/libecies.so +0 -0
  45. package/android/src/main/jniLibs/x86_64/libecies.so +0 -0
  46. package/android/src/test/java/com/margelo/nitro/nitrometamask/CancellationStateMachineTest.kt +128 -0
  47. package/android/src/test/java/com/margelo/nitro/nitrometamask/ChainIdParsingTest.kt +65 -0
  48. package/android/src/test/java/com/margelo/nitro/nitrometamask/ConfigureStateMachineTest.kt +140 -0
  49. package/android/src/test/java/com/margelo/nitro/nitrometamask/ConnectSignJsonTest.kt +76 -0
  50. package/android/src/test/java/com/margelo/nitro/nitrometamask/MetaMaskInstallationCheckTest.kt +42 -0
  51. package/android/src/test/java/com/margelo/nitro/nitrometamask/PersonalSignParamsTest.kt +75 -0
  52. package/ios/Frameworks/Ecies.xcframework/Info.plist +47 -0
  53. package/ios/Frameworks/Ecies.xcframework/ios-arm64/Headers/ecies.h +20 -0
  54. package/ios/Frameworks/Ecies.xcframework/ios-arm64/Headers/module.modulemap +4 -0
  55. package/ios/Frameworks/Ecies.xcframework/ios-arm64/libecies.a +0 -0
  56. package/ios/Frameworks/Ecies.xcframework/ios-arm64-simulator/Headers/ecies.h +20 -0
  57. package/ios/Frameworks/Ecies.xcframework/ios-arm64-simulator/Headers/module.modulemap +4 -0
  58. package/ios/Frameworks/Ecies.xcframework/ios-arm64-simulator/libecies.a +0 -0
  59. package/ios/HybridNitroMetamask.swift +119 -54
  60. package/ios/NitroMetamaskTests/CancellationStateMachineTests.swift +150 -0
  61. package/ios/NitroMetamaskTests/ChainIdParsingTests.swift +117 -0
  62. package/ios/NitroMetamaskTests/ConfigureStateMachineTests.swift +174 -0
  63. package/ios/NitroMetamaskTests/ConnectSignJsonTests.swift +168 -0
  64. package/ios/NitroMetamaskTests/DefaultDappUrlTests.swift +80 -0
  65. package/ios/NitroMetamaskTests/PersonalSignParamsTests.swift +101 -0
  66. package/ios/metamask-ios-sdk/CommunicationLayer/CommClient.swift +43 -0
  67. package/ios/metamask-ios-sdk/CommunicationLayer/CommClientFactory.swift +17 -0
  68. package/ios/metamask-ios-sdk/CommunicationLayer/CommLayer.swift +36 -0
  69. package/ios/metamask-ios-sdk/CommunicationLayer/DeeplinkCommLayer/Deeplink.swift +26 -0
  70. package/ios/metamask-ios-sdk/CommunicationLayer/DeeplinkCommLayer/DeeplinkClient.swift +199 -0
  71. package/ios/metamask-ios-sdk/CommunicationLayer/DeeplinkCommLayer/DeeplinkManager.swift +83 -0
  72. package/ios/metamask-ios-sdk/CommunicationLayer/DeeplinkCommLayer/String.swift +48 -0
  73. package/ios/metamask-ios-sdk/CommunicationLayer/DeeplinkCommLayer/URLOpener.swift +19 -0
  74. package/ios/metamask-ios-sdk/CommunicationLayer/SocketClient.swift +27 -0
  75. package/ios/metamask-ios-sdk/Crypto/Crypto.swift +72 -0
  76. package/ios/metamask-ios-sdk/Crypto/Encoding.swift +15 -0
  77. package/ios/metamask-ios-sdk/Crypto/KeyExchange.swift +236 -0
  78. package/ios/metamask-ios-sdk/DeviceInfo/DeviceInfo.swift +11 -0
  79. package/ios/metamask-ios-sdk/Ethereum/AppMetadata.swift +28 -0
  80. package/ios/metamask-ios-sdk/Ethereum/ErrorType.swift +62 -0
  81. package/ios/metamask-ios-sdk/Ethereum/Ethereum.swift +810 -0
  82. package/ios/metamask-ios-sdk/Ethereum/EthereumMethod.swift +111 -0
  83. package/ios/metamask-ios-sdk/Ethereum/EthereumRequest.swift +40 -0
  84. package/ios/metamask-ios-sdk/Ethereum/EthereumWrapper.swift +10 -0
  85. package/ios/metamask-ios-sdk/Ethereum/RPCRequest.swift +14 -0
  86. package/ios/metamask-ios-sdk/Ethereum/RequestError.swift +88 -0
  87. package/ios/metamask-ios-sdk/Ethereum/ResponseMethod.swift +22 -0
  88. package/ios/metamask-ios-sdk/Ethereum/SubmitRequest.swift +26 -0
  89. package/ios/metamask-ios-sdk/Ethereum/TimestampGenerator.swift +16 -0
  90. package/ios/metamask-ios-sdk/Extensions/NSRecursiveLock.swift +14 -0
  91. package/ios/metamask-ios-sdk/Extensions/Notification.swift +10 -0
  92. package/ios/metamask-ios-sdk/Logger/Logging.swift +27 -0
  93. package/ios/metamask-ios-sdk/Models/AddChainParameters.swift +35 -0
  94. package/ios/metamask-ios-sdk/Models/Event.swift +19 -0
  95. package/ios/metamask-ios-sdk/Models/Mappable.swift +40 -0
  96. package/ios/metamask-ios-sdk/Models/NativeCurrency.swift +25 -0
  97. package/ios/metamask-ios-sdk/Models/OriginatorInfo.swift +26 -0
  98. package/ios/metamask-ios-sdk/Models/RequestInfo.swift +18 -0
  99. package/ios/metamask-ios-sdk/Models/SignContract.swift +48 -0
  100. package/ios/metamask-ios-sdk/Models/Typealiases.swift +9 -0
  101. package/ios/metamask-ios-sdk/Persistence/SecureStore.swift +134 -0
  102. package/ios/metamask-ios-sdk/Persistence/SessionConfig.swift +24 -0
  103. package/ios/metamask-ios-sdk/Persistence/SessionManager.swift +56 -0
  104. package/ios/metamask-ios-sdk/SDK/Dependencies.swift +35 -0
  105. package/ios/metamask-ios-sdk/SDK/MetaMaskSDK.swift +215 -0
  106. package/ios/metamask-ios-sdk/SDK/SDKInfo.swift +37 -0
  107. package/ios/metamask-ios-sdk/SDK/SDKOptions.swift +16 -0
  108. package/lib/commonjs/index.js +50 -3
  109. package/lib/commonjs/index.js.map +1 -1
  110. package/lib/module/index.js +49 -3
  111. package/lib/module/index.js.map +1 -1
  112. package/lib/typescript/src/__tests__/parseNitroError.test.d.ts +2 -0
  113. package/lib/typescript/src/__tests__/parseNitroError.test.d.ts.map +1 -0
  114. package/lib/typescript/src/index.d.ts +43 -3
  115. package/lib/typescript/src/index.d.ts.map +1 -1
  116. package/lib/typescript/src/specs/nitro-metamask.nitro.d.ts +29 -1
  117. package/lib/typescript/src/specs/nitro-metamask.nitro.d.ts.map +1 -1
  118. package/package.json +21 -12
  119. package/react-native.config.js +5 -0
  120. package/rust/ecies-jni/Cargo.lock +50 -86
  121. package/rust/ecies-jni/Cargo.toml +1 -1
  122. package/rust/ecies-jni/src/lib.rs +164 -100
  123. package/src/__tests__/parseNitroError.test.ts +35 -0
  124. package/src/index.ts +53 -5
  125. package/src/specs/nitro-metamask.nitro.ts +29 -1
  126. package/scripts/verify-16k-page-alignment.py +0 -117
  127. package/scripts/verify-16k-page-alignment.sh +0 -5
@@ -1,15 +1,55 @@
1
- import type { NitroMetamask as NitroMetamaskSpec, ConnectResult } from './specs/nitro-metamask.nitro';
1
+ import type { NitroMetamask as NitroMetamaskSpec, ConnectResult, ConnectSignResult } from './specs/nitro-metamask.nitro';
2
2
  /**
3
3
  * NitroMetamask - MetaMask connector for React Native
4
4
  *
5
+ * Provides native MetaMask wallet integration via Nitro modules.
6
+ *
5
7
  * @example
6
8
  * ```ts
7
9
  * import { NitroMetamask } from '@novastera-oss/nitro-metamask'
8
10
  *
9
- * const result = await NitroMetamask.connect()
11
+ * // Optional: configure before use
12
+ * NitroMetamask.configure('https://yourdomain.com', 'yourscheme')
13
+ *
14
+ * // Connect wallet
15
+ * const { address, chainId } = await NitroMetamask.connect()
16
+ *
17
+ * // Sign a message
10
18
  * const signature = await NitroMetamask.signMessage('Hello')
19
+ *
20
+ * // Connect and sign in one step (SIWE)
21
+ * const result = await NitroMetamask.connectSign('my-nonce', BigInt(Date.now()))
11
22
  * ```
12
23
  */
13
24
  export declare const NitroMetamask: NitroMetamaskSpec;
14
- export type { ConnectResult, NitroMetamaskSpec };
25
+ export type { ConnectResult, ConnectSignResult, NitroMetamaskSpec };
26
+ /**
27
+ * Parses a structured Nitro error message that contains a numeric error code prefix.
28
+ *
29
+ * Nitro errors from the native layer are formatted as `"[<code>] <message>"`.
30
+ * This utility extracts the code and message so the JS layer can handle them
31
+ * programmatically (e.g., detecting `code: 2` for MetaMask not installed).
32
+ *
33
+ * @param e - The error to parse. Can be an `Error`, a string, or any value.
34
+ * @returns An object `{ code: number; message: string }` if the error message
35
+ * matches the `[code] message` pattern, or `null` if it does not.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import { parseNitroError } from '@novastera-oss/nitro-metamask'
40
+ *
41
+ * try {
42
+ * await NitroMetamask.connect()
43
+ * } catch (e) {
44
+ * const parsed = parseNitroError(e)
45
+ * if (parsed?.code === 2) {
46
+ * // MetaMask is not installed — redirect user to App Store / Play Store
47
+ * }
48
+ * }
49
+ * ```
50
+ */
51
+ export declare function parseNitroError(e: unknown): {
52
+ code: number;
53
+ message: string;
54
+ } | null;
15
55
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,IAAI,iBAAiB,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAErG;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,mBAAsE,CAAA;AAEhG,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,IAAI,iBAAiB,EAClC,aAAa,EACb,iBAAiB,EAClB,MAAM,8BAA8B,CAAA;AAErC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,mBAAsE,CAAA;AAEhG,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAA;AAEnE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMpF"}
@@ -23,14 +23,42 @@ export interface NitroMetamask extends HybridObject<{
23
23
  * This is used to return to your app after MetaMask operations.
24
24
  */
25
25
  configure(dappUrl?: string, deepLinkScheme?: string): void;
26
+ /**
27
+ * Connect to the user's MetaMask wallet.
28
+ *
29
+ * Opens the MetaMask app via deep link to request wallet connection.
30
+ * If MetaMask is not installed, the promise rejects with `code: 2`.
31
+ *
32
+ * @returns Promise resolving to a `ConnectResult` containing the wallet
33
+ * `address` and `chainId`.
34
+ *
35
+ * @example
36
+ * ```ts
37
+ * const { address, chainId } = await NitroMetamask.connect()
38
+ * ```
39
+ */
26
40
  connect(): Promise<ConnectResult>;
41
+ /**
42
+ * Request a `personal_sign` signature from the connected wallet.
43
+ *
44
+ * Must be called after a successful `connect()`. Opens MetaMask to prompt
45
+ * the user to sign the provided message.
46
+ *
47
+ * @param message - The plain-text message to sign.
48
+ * @returns Promise resolving to the hex-encoded signature string.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const signature = await NitroMetamask.signMessage('Sign in to MyApp')
53
+ * ```
54
+ */
27
55
  signMessage(message: string): Promise<string>;
28
56
  /**
29
57
  * Connect to MetaMask (if not already connected) and sign a message containing nonce and expiration.
30
58
  * Returns the signature along with the address and chainId that were used to sign.
31
59
  *
32
60
  * @param nonce - A unique nonce for this signing request
33
- * @param exp - Expiration timestamp (as bigint)
61
+ * @param exp - Expiration timestamp (as Int64)
34
62
  * @returns Promise resolving to ConnectSignResult containing signature, address, and chainId
35
63
  */
36
64
  connectSign(nonce: string, exp: Int64): Promise<ConnectSignResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"nitro-metamask.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/nitro-metamask.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAE1E,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAA;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACtF;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAA;IACjC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAClE;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACpC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;CACpC"}
1
+ {"version":3,"file":"nitro-metamask.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/nitro-metamask.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAE1E,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAA;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,KAAK,CAAA;CACf;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACtF;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1D;;;;;;;;;;;;;OAaG;IACH,OAAO,IAAI,OAAO,CAAC,aAAa,CAAC,CAAA;IACjC;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7C;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAClE;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACpC;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;CACpC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@novastera-oss/nitro-metamask",
3
- "version": "0.6.3",
3
+ "version": "0.7.2",
4
4
  "description": "Native mobile MetaMask wallet integration for React Native. Part of Novastera CRM/ERP platform ecosystem. Provides secure authentication and message signing for Web3 mobile applications.",
5
5
  "main": "./lib/commonjs/index.js",
6
6
  "module": "./lib/module/index.js",
@@ -10,9 +10,9 @@
10
10
  "scripts": {
11
11
  "typecheck": "tsc --noEmit",
12
12
  "clean": "git clean -dfX",
13
+ "release": "semantic-release",
13
14
  "build": "npm run typecheck && bob build",
14
- "codegen": "nitrogen --logLevel=\"debug\" && npm run build",
15
- "build:ecies:all-abis": "cd example/android && ./gradlew :app:assembleRelease -PreactNativeArchitectures=arm64-v8a,armeabi-v7a,x86_64,x86 -PNitroMetamask_buildEciesFromSource=true --no-daemon --stacktrace"
15
+ "codegen": "nitrogen --logLevel=\"debug\" && npm run build"
16
16
  },
17
17
  "keywords": [
18
18
  "react-native",
@@ -48,6 +48,10 @@
48
48
  "android/proguard-rules.pro",
49
49
  "android/src",
50
50
  "android/src/main/jniLibs",
51
+ "android/src/main/java/io/metamask/**",
52
+ "android/src/main/aidl/**",
53
+ "ios/metamask-ios-sdk/**",
54
+ "ios/Frameworks/**",
51
55
  "ios/**/*.h",
52
56
  "ios/**/*.m",
53
57
  "ios/**/*.mm",
@@ -58,9 +62,7 @@
58
62
  "README.md",
59
63
  "rust/ecies-jni/Cargo.toml",
60
64
  "rust/ecies-jni/src",
61
- "rust/ecies-jni/Cargo.lock",
62
- "scripts/verify-16k-page-alignment.sh",
63
- "scripts/verify-16k-page-alignment.py"
65
+ "rust/ecies-jni/Cargo.lock"
64
66
  ],
65
67
  "workspaces": [
66
68
  "example"
@@ -78,22 +80,29 @@
78
80
  "registry": "https://registry.npmjs.org/"
79
81
  },
80
82
  "devDependencies": {
81
- "@jamesacarr/eslint-formatter-github-actions": "^0.2.0",
83
+ "@babel/core": "^7.29.0",
84
+ "@babel/preset-env": "^7.29.2",
85
+ "@babel/preset-typescript": "^7.28.5",
86
+ "@semantic-release/changelog": "^6.0.3",
87
+ "@semantic-release/git": "^10.0.1",
82
88
  "@types/jest": "^29.5.12",
83
89
  "@types/react": "19.2.0",
84
- "nitrogen": "0.35.5",
90
+ "babel-jest": "^30.3.0",
91
+ "conventional-changelog-conventionalcommits": "^9.1.0",
92
+ "jest": "^30.3.0",
93
+ "nitrogen": "^0.35.5",
85
94
  "react": "19.2.0",
86
95
  "react-native": "0.83",
87
- "react-native-builder-bob": "^0.40.17",
96
+ "react-native-builder-bob": "^0.40.18",
88
97
  "react-native-nitro-modules": "0.35.5",
89
- "conventional-changelog-conventionalcommits": "^9.1.0",
98
+ "semantic-release": "^25.0.2",
90
99
  "typescript": "^5.8.3"
91
100
  },
92
101
  "peerDependencies": {
102
+ "@expo/config-plugins": "*",
93
103
  "react": "*",
94
104
  "react-native": "*",
95
- "react-native-nitro-modules": "*",
96
- "@expo/config-plugins": "*"
105
+ "react-native-nitro-modules": "*"
97
106
  },
98
107
  "eslintConfig": {
99
108
  "root": true,
@@ -13,6 +13,11 @@ module.exports = {
13
13
  android: {
14
14
  packageImportPath: 'import com.margelo.nitro.nitrometamask.NitroMetamaskPackage;',
15
15
  packageInstance: 'new NitroMetamaskPackage()',
16
+ // New Arch: do not register RN Codegen + app CMake `react_codegen_*` for this dep.
17
+ // Native code is built via this library’s Gradle+CMake+JNI (Nitrogen), packaged in the AAR;
18
+ // autolink is only for Java Package / Gradle project inclusion.
19
+ libraryName: null,
20
+ cmakeListsPath: null,
16
21
  },
17
22
  },
18
23
  },
@@ -82,12 +82,6 @@ version = "1.11.1"
82
82
  source = "registry+https://github.com/rust-lang/crates.io-index"
83
83
  checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
84
84
 
85
- [[package]]
86
- name = "cesu8"
87
- version = "1.1.0"
88
- source = "registry+https://github.com/rust-lang/crates.io-index"
89
- checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
90
-
91
85
  [[package]]
92
86
  name = "cfg-if"
93
87
  version = "1.0.4"
@@ -270,27 +264,32 @@ dependencies = [
270
264
 
271
265
  [[package]]
272
266
  name = "jni"
273
- version = "0.21.1"
267
+ version = "0.22.4"
274
268
  source = "registry+https://github.com/rust-lang/crates.io-index"
275
- checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
269
+ checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498"
276
270
  dependencies = [
277
- "cesu8",
278
271
  "cfg-if",
279
272
  "combine",
280
- "jni-sys 0.3.1",
273
+ "jni-macros",
274
+ "jni-sys",
281
275
  "log",
276
+ "simd_cesu8",
282
277
  "thiserror",
283
278
  "walkdir",
284
- "windows-sys 0.45.0",
279
+ "windows-link",
285
280
  ]
286
281
 
287
282
  [[package]]
288
- name = "jni-sys"
289
- version = "0.3.1"
283
+ name = "jni-macros"
284
+ version = "0.22.4"
290
285
  source = "registry+https://github.com/rust-lang/crates.io-index"
291
- checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
286
+ checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"
292
287
  dependencies = [
293
- "jni-sys 0.4.1",
288
+ "proc-macro2",
289
+ "quote",
290
+ "rustc_version",
291
+ "simd_cesu8",
292
+ "syn",
294
293
  ]
295
294
 
296
295
  [[package]]
@@ -497,6 +496,15 @@ dependencies = [
497
496
  "bitflags",
498
497
  ]
499
498
 
499
+ [[package]]
500
+ name = "rustc_version"
501
+ version = "0.4.1"
502
+ source = "registry+https://github.com/rust-lang/crates.io-index"
503
+ checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
504
+ dependencies = [
505
+ "semver",
506
+ ]
507
+
500
508
  [[package]]
501
509
  name = "rustversion"
502
510
  version = "1.0.22"
@@ -518,6 +526,12 @@ version = "1.2.0"
518
526
  source = "registry+https://github.com/rust-lang/crates.io-index"
519
527
  checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
520
528
 
529
+ [[package]]
530
+ name = "semver"
531
+ version = "1.0.28"
532
+ source = "registry+https://github.com/rust-lang/crates.io-index"
533
+ checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
534
+
521
535
  [[package]]
522
536
  name = "serde"
523
537
  version = "1.0.228"
@@ -559,6 +573,22 @@ dependencies = [
559
573
  "digest 0.10.7",
560
574
  ]
561
575
 
576
+ [[package]]
577
+ name = "simd_cesu8"
578
+ version = "1.1.1"
579
+ source = "registry+https://github.com/rust-lang/crates.io-index"
580
+ checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
581
+ dependencies = [
582
+ "rustc_version",
583
+ "simdutf8",
584
+ ]
585
+
586
+ [[package]]
587
+ name = "simdutf8"
588
+ version = "0.1.5"
589
+ source = "registry+https://github.com/rust-lang/crates.io-index"
590
+ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
591
+
562
592
  [[package]]
563
593
  name = "smallvec"
564
594
  version = "1.15.1"
@@ -584,18 +614,18 @@ dependencies = [
584
614
 
585
615
  [[package]]
586
616
  name = "thiserror"
587
- version = "1.0.69"
617
+ version = "2.0.18"
588
618
  source = "registry+https://github.com/rust-lang/crates.io-index"
589
- checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
619
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
590
620
  dependencies = [
591
621
  "thiserror-impl",
592
622
  ]
593
623
 
594
624
  [[package]]
595
625
  name = "thiserror-impl"
596
- version = "1.0.69"
626
+ version = "2.0.18"
597
627
  source = "registry+https://github.com/rust-lang/crates.io-index"
598
- checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
628
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
599
629
  dependencies = [
600
630
  "proc-macro2",
601
631
  "quote",
@@ -697,7 +727,7 @@ version = "0.1.11"
697
727
  source = "registry+https://github.com/rust-lang/crates.io-index"
698
728
  checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
699
729
  dependencies = [
700
- "windows-sys 0.61.2",
730
+ "windows-sys",
701
731
  ]
702
732
 
703
733
  [[package]]
@@ -706,15 +736,6 @@ version = "0.2.1"
706
736
  source = "registry+https://github.com/rust-lang/crates.io-index"
707
737
  checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
708
738
 
709
- [[package]]
710
- name = "windows-sys"
711
- version = "0.45.0"
712
- source = "registry+https://github.com/rust-lang/crates.io-index"
713
- checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
714
- dependencies = [
715
- "windows-targets",
716
- ]
717
-
718
739
  [[package]]
719
740
  name = "windows-sys"
720
741
  version = "0.61.2"
@@ -723,60 +744,3 @@ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
723
744
  dependencies = [
724
745
  "windows-link",
725
746
  ]
726
-
727
- [[package]]
728
- name = "windows-targets"
729
- version = "0.42.2"
730
- source = "registry+https://github.com/rust-lang/crates.io-index"
731
- checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
732
- dependencies = [
733
- "windows_aarch64_gnullvm",
734
- "windows_aarch64_msvc",
735
- "windows_i686_gnu",
736
- "windows_i686_msvc",
737
- "windows_x86_64_gnu",
738
- "windows_x86_64_gnullvm",
739
- "windows_x86_64_msvc",
740
- ]
741
-
742
- [[package]]
743
- name = "windows_aarch64_gnullvm"
744
- version = "0.42.2"
745
- source = "registry+https://github.com/rust-lang/crates.io-index"
746
- checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
747
-
748
- [[package]]
749
- name = "windows_aarch64_msvc"
750
- version = "0.42.2"
751
- source = "registry+https://github.com/rust-lang/crates.io-index"
752
- checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
753
-
754
- [[package]]
755
- name = "windows_i686_gnu"
756
- version = "0.42.2"
757
- source = "registry+https://github.com/rust-lang/crates.io-index"
758
- checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
759
-
760
- [[package]]
761
- name = "windows_i686_msvc"
762
- version = "0.42.2"
763
- source = "registry+https://github.com/rust-lang/crates.io-index"
764
- checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
765
-
766
- [[package]]
767
- name = "windows_x86_64_gnu"
768
- version = "0.42.2"
769
- source = "registry+https://github.com/rust-lang/crates.io-index"
770
- checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
771
-
772
- [[package]]
773
- name = "windows_x86_64_gnullvm"
774
- version = "0.42.2"
775
- source = "registry+https://github.com/rust-lang/crates.io-index"
776
- checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
777
-
778
- [[package]]
779
- name = "windows_x86_64_msvc"
780
- version = "0.42.2"
781
- source = "registry+https://github.com/rust-lang/crates.io-index"
782
- checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
@@ -10,7 +10,7 @@ crate-type = ["cdylib"]
10
10
  name = "ecies"
11
11
 
12
12
  [dependencies]
13
- jni = "0.21"
13
+ jni = "0.22"
14
14
  # Match ecies.org / MetaMask stack (secp256k1, AES-256-GCM); pure Rust AES for simpler Android linking
15
15
  ecies = { version = "0.2.10", default-features = false, features = ["std", "aes-rust"] }
16
16
  hex = "0.4"