dop-wallet-v6 1.3.2 → 1.3.32
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.
- package/.eslintrc.js +5 -0
- package/dist/services/dop/crypto/react-native-crypto-provider.js +4 -2
- package/dist/services/dop/crypto/react-native-crypto-provider.js.map +1 -1
- package/dist/services/dop/wallets/wallets.js +12 -17
- package/dist/services/dop/wallets/wallets.js.map +1 -1
- package/dist/services/transactions/tx-encrypt-relayer.d.ts +6 -0
- package/dist/services/transactions/tx-encrypt-relayer.js +80 -0
- package/dist/services/transactions/tx-encrypt-relayer.js.map +1 -0
- package/package.json +6 -1
- package/dist/__tests__/index.test.d.ts +0 -1
- package/dist/__tests__/index.test.js +0 -13
- package/dist/__tests__/index.test.js.map +0 -1
- package/dist/services/artifacts/__tests__/artifact-downloader.test.d.ts +0 -1
- package/dist/services/artifacts/__tests__/artifact-downloader.test.js +0 -70
- package/dist/services/artifacts/__tests__/artifact-downloader.test.js.map +0 -1
- package/dist/services/dop/__tests__/integration.test.d.ts +0 -1
- package/dist/services/dop/__tests__/integration.test.js +0 -378
- package/dist/services/dop/__tests__/integration.test.js.map +0 -1
- package/dist/services/dop/core/__tests__/engine.test.d.ts +0 -1
- package/dist/services/dop/core/__tests__/engine.test.js +0 -30
- package/dist/services/dop/core/__tests__/engine.test.js.map +0 -1
- package/dist/services/dop/core/__tests__/providers.test.d.ts +0 -1
- package/dist/services/dop/core/__tests__/providers.test.js +0 -69
- package/dist/services/dop/core/__tests__/providers.test.js.map +0 -1
- package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.d.ts +0 -1
- package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js +0 -168
- package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js.map +0 -1
- package/dist/services/dop/history/__tests__/transaction-history.test.d.ts +0 -0
- package/dist/services/dop/history/__tests__/transaction-history.test.js +0 -2
- package/dist/services/dop/history/__tests__/transaction-history.test.js.map +0 -1
- package/dist/services/dop/profile/__tests__/profile-manager.test.d.ts +0 -1
- package/dist/services/dop/profile/__tests__/profile-manager.test.js +0 -170
- package/dist/services/dop/profile/__tests__/profile-manager.test.js.map +0 -1
- package/dist/services/dop/profile/__tests__/selective-transparency.test.d.ts +0 -1
- package/dist/services/dop/profile/__tests__/selective-transparency.test.js +0 -256
- package/dist/services/dop/profile/__tests__/selective-transparency.test.js.map +0 -1
- package/dist/services/dop/profile/__tests__/storage.test.d.ts +0 -1
- package/dist/services/dop/profile/__tests__/storage.test.js +0 -174
- package/dist/services/dop/profile/__tests__/storage.test.js.map +0 -1
- package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.d.ts +0 -1
- package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js +0 -126
- package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js.map +0 -1
- package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.d.ts +0 -1
- package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js +0 -63
- package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +0 -1
- package/dist/services/dop/util/__tests__/bytes-util.test.d.ts +0 -1
- package/dist/services/dop/util/__tests__/bytes-util.test.js +0 -23
- package/dist/services/dop/util/__tests__/bytes-util.test.js.map +0 -1
- package/dist/services/dop/util/__tests__/crypto-util.test.d.ts +0 -1
- package/dist/services/dop/util/__tests__/crypto-util.test.js +0 -62
- package/dist/services/dop/util/__tests__/crypto-util.test.js.map +0 -1
- package/dist/services/dop/wallets/__tests__/balances-live.test.d.ts +0 -1
- package/dist/services/dop/wallets/__tests__/balances-live.test.js +0 -58
- package/dist/services/dop/wallets/__tests__/balances-live.test.js.map +0 -1
- package/dist/services/dop/wallets/__tests__/balances-update.test.d.ts +0 -1
- package/dist/services/dop/wallets/__tests__/balances-update.test.js +0 -90
- package/dist/services/dop/wallets/__tests__/balances-update.test.js.map +0 -1
- package/dist/services/dop/wallets/__tests__/balances.test.d.ts +0 -1
- package/dist/services/dop/wallets/__tests__/balances.test.js +0 -59
- package/dist/services/dop/wallets/__tests__/balances.test.js.map +0 -1
- package/dist/services/dop/wallets/__tests__/wallets.test.d.ts +0 -1
- package/dist/services/dop/wallets/__tests__/wallets.test.js +0 -80
- package/dist/services/dop/wallets/__tests__/wallets.test.js.map +0 -1
- package/dist/services/ethers/__tests__/ethers-util.test.d.ts +0 -1
- package/dist/services/ethers/__tests__/ethers-util.test.js +0 -19
- package/dist/services/ethers/__tests__/ethers-util.test.js.map +0 -1
- package/dist/services/transactions/__tests__/json/formatted-relay-adapt-error-logs.json +0 -216
- package/dist/services/transactions/__tests__/proof-cache.test.d.ts +0 -1
- package/dist/services/transactions/__tests__/proof-cache.test.js +0 -128
- package/dist/services/transactions/__tests__/proof-cache.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.d.ts +0 -1
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +0 -385
- package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-decrypt.test.d.ts +0 -0
- package/dist/services/transactions/__tests__/tx-decrypt.test.js +0 -2
- package/dist/services/transactions/__tests__/tx-decrypt.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.d.ts +0 -1
- package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js +0 -101
- package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-encrypt.test.d.ts +0 -0
- package/dist/services/transactions/__tests__/tx-encrypt.test.js +0 -2
- package/dist/services/transactions/__tests__/tx-encrypt.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-gas-details.test.d.ts +0 -1
- package/dist/services/transactions/__tests__/tx-gas-details.test.js +0 -112
- package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-notes.test.d.ts +0 -1
- package/dist/services/transactions/__tests__/tx-notes.test.js +0 -193
- package/dist/services/transactions/__tests__/tx-notes.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.d.ts +0 -1
- package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js +0 -50
- package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js.map +0 -1
- package/dist/services/transactions/__tests__/tx-transfer.test.d.ts +0 -1
- package/dist/services/transactions/__tests__/tx-transfer.test.js +0 -280
- package/dist/services/transactions/__tests__/tx-transfer.test.js.map +0 -1
- package/dist/tests/balances.test.d.ts +0 -1
- package/dist/tests/balances.test.js +0 -419
- package/dist/tests/balances.test.js.map +0 -1
- package/dist/tests/helper.test.d.ts +0 -3
- package/dist/tests/helper.test.js +0 -16
- package/dist/tests/helper.test.js.map +0 -1
- package/dist/tests/mocks.test.d.ts +0 -50
- package/dist/tests/mocks.test.js +0 -202
- package/dist/tests/mocks.test.js.map +0 -1
- package/dist/tests/poi/test-wallet-poi-requester.test.d.ts +0 -10
- package/dist/tests/poi/test-wallet-poi-requester.test.js +0 -15
- package/dist/tests/poi/test-wallet-poi-requester.test.js.map +0 -1
- package/dist/tests/setup.test.d.ts +0 -9
- package/dist/tests/setup.test.js +0 -110
- package/dist/tests/setup.test.js.map +0 -1
- package/dist/tests/stubs/engine-stubs.test.d.ts +0 -7
- package/dist/tests/stubs/engine-stubs.test.js +0 -75
- package/dist/tests/stubs/engine-stubs.test.js.map +0 -1
- package/dist/utils/__tests__/blocked-address.test.d.ts +0 -1
- package/dist/utils/__tests__/blocked-address.test.js +0 -23
- package/dist/utils/__tests__/blocked-address.test.js.map +0 -1
- package/dist/utils/__tests__/logger.test.d.ts +0 -1
- package/dist/utils/__tests__/logger.test.js +0 -28
- package/dist/utils/__tests__/logger.test.js.map +0 -1
- package/dist/utils/__tests__/utils.test.d.ts +0 -1
- package/dist/utils/__tests__/utils.test.js +0 -21
- package/dist/utils/__tests__/utils.test.js.map +0 -1
package/.eslintrc.js
CHANGED
|
@@ -67,6 +67,11 @@ module.exports = {
|
|
|
67
67
|
rules: {
|
|
68
68
|
'@typescript-eslint/no-explicit-any': 0,
|
|
69
69
|
'@typescript-eslint/no-unsafe-member-access': 0,
|
|
70
|
+
'import/no-extraneous-dependencies': 0,
|
|
71
|
+
'no-console': 0,
|
|
72
|
+
'@typescript-eslint/no-unused-vars': 0,
|
|
73
|
+
'no-useless-concat': 0,
|
|
74
|
+
'@typescript-eslint/await-thenable': 0,
|
|
70
75
|
},
|
|
71
76
|
},
|
|
72
77
|
],
|
|
@@ -156,8 +156,10 @@ const getCryptoProvider = async () => {
|
|
|
156
156
|
// Use React Native crypto provider in React Native environment
|
|
157
157
|
return exports.reactNativeCryptoProvider;
|
|
158
158
|
}
|
|
159
|
-
// Import circomlibjs for non-React Native environments
|
|
160
|
-
const
|
|
159
|
+
// Import and build circomlibjs for non-React Native environments
|
|
160
|
+
const circomlibjs = await Promise.resolve().then(() => __importStar(require('circomlibjs')));
|
|
161
|
+
const poseidon = await circomlibjs.buildPoseidon();
|
|
162
|
+
const eddsa = await circomlibjs.buildEddsa();
|
|
161
163
|
return { poseidon, eddsa };
|
|
162
164
|
};
|
|
163
165
|
exports.getCryptoProvider = getCryptoProvider;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native-crypto-provider.js","sourceRoot":"","sources":["../../../../src/services/dop/crypto/react-native-crypto-provider.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"react-native-crypto-provider.js","sourceRoot":"","sources":["../../../../src/services/dop/crypto/react-native-crypto-provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * React Native Crypto Provider\n * \n * Provides lightweight alternatives to circomlibjs for React Native environments.\n * Uses poseidon-lite and @zk-kit/eddsa-poseidon for better mobile compatibility.\n */\n\nimport { poseidon2, poseidon3, poseidon4, poseidon5, poseidon6 } from 'poseidon-lite';\nimport {\n derivePublicKey,\n signMessage,\n verifySignature,\n deriveSecretScalar,\n packPublicKey,\n unpackPublicKey\n} from '@zk-kit/eddsa-poseidon';\nimport { isReactNative } from '../util/runtime';\n\n// Allow manual override for testing (handle cases where process might not be available)\nconst FORCE_REACT_NATIVE = (() => {\n try {\n return typeof process !== 'undefined' && process.env?.FORCE_REACT_NATIVE_CRYPTO === 'true';\n } catch {\n return false;\n }\n})();\n\nexport interface ReactNativeCryptoProvider {\n poseidon: (inputs: bigint[]) => bigint;\n eddsa: {\n signPoseidon: (privateKey: Uint8Array, message: bigint) => unknown;\n prv2pub: (privateKey: Buffer | Uint8Array) => unknown;\n verifyPoseidon: (message: bigint, signature: unknown, publicKey: unknown) => boolean;\n };\n}\n\n/**\n * Poseidon hash function that automatically selects the right variant based on input length\n */\nconst poseidonHash = (inputs: bigint[]): bigint => {\n const length = inputs.length;\n \n // Convert inputs to string format that poseidon-lite expects\n const stringInputs = inputs.map(input => `0x${input.toString(16)}`);\n \n let result: bigint;\n \n switch (length) {\n case 2:\n result = poseidon2(stringInputs);\n break;\n case 3:\n result = poseidon3(stringInputs);\n break;\n case 4:\n result = poseidon4(stringInputs);\n break;\n case 5:\n result = poseidon5(stringInputs);\n break;\n case 6:\n result = poseidon6(stringInputs);\n break;\n default: {\n // For other lengths, use poseidon2 in a recursive manner\n if (length === 1) {\n result = poseidon2([stringInputs[0], '0x0']);\n } else {\n // For lengths > 6, hash in chunks of 2\n let tempResult = inputs[0];\n for (let i = 1; i < length; i += 1) {\n tempResult = poseidon2([`0x${tempResult.toString(16)}`, `0x${inputs[i].toString(16)}`]);\n }\n result = tempResult;\n }\n break;\n }\n }\n \n return result;\n};\n\n/**\n * Helper function to convert Uint8Array to hex string without Buffer\n */\nconst uint8ArrayToHex = (uint8Array: Uint8Array): string => {\n return Array.from(uint8Array)\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('');\n};\n\n/**\n * EdDSA operations compatible with circomlibjs interface\n */\nconst eddsaOperations = {\n signPoseidon: (privateKey: Uint8Array, message: bigint): unknown => {\n // Convert Uint8Array to string for @zk-kit/eddsa-poseidon\n // Use direct conversion instead of Buffer.from to avoid React Native issues\n const privateKeyHex = uint8ArrayToHex(privateKey);\n const messageStr = message.toString();\n \n const signature = signMessage(privateKeyHex, messageStr);\n return signature;\n },\n \n prv2pub: (privateKey: Buffer | Uint8Array): unknown => {\n // Handle both Buffer and Uint8Array\n let privateKeyHex: string;\n if (privateKey instanceof Uint8Array && !(privateKey instanceof Buffer)) {\n // Pure Uint8Array (not Buffer which extends Uint8Array)\n privateKeyHex = uint8ArrayToHex(privateKey);\n } else {\n // Buffer has toString method\n privateKeyHex = (privateKey ).toString('hex');\n }\n const publicKey = derivePublicKey(privateKeyHex);\n return publicKey;\n },\n \n verifyPoseidon: (message: bigint, signature: unknown, publicKey: unknown): boolean => {\n const messageStr = message.toString();\n const result = verifySignature(messageStr, signature as Parameters<typeof verifySignature>[1], publicKey as Parameters<typeof verifySignature>[2]);\n return result;\n }\n};\n\n/**\n * React Native crypto provider that replaces circomlibjs\n */\nexport const reactNativeCryptoProvider: ReactNativeCryptoProvider = {\n poseidon: poseidonHash,\n eddsa: eddsaOperations\n};\n\n/**\n * Utility functions for React Native crypto operations\n */\nexport const reactNativeCryptoUtils = {\n derivePublicKey,\n signMessage,\n verifySignature,\n deriveSecretScalar,\n packPublicKey,\n unpackPublicKey,\n poseidon2,\n poseidon3,\n poseidon4,\n poseidon5,\n poseidon6\n};\n\n/**\n * Get the appropriate crypto provider based on environment\n */\nexport const getCryptoProvider = async (): Promise<ReactNativeCryptoProvider | any> => {\n const useReactNative = isReactNative || FORCE_REACT_NATIVE;\n \n if (useReactNative) {\n // Use React Native crypto provider in React Native environment\n return reactNativeCryptoProvider;\n } \n \n // Import and build circomlibjs for non-React Native environments\n const circomlibjs = await import('circomlibjs');\n const poseidon = await circomlibjs.buildPoseidon();\n const eddsa = await circomlibjs.buildEddsa();\n return { poseidon, eddsa };\n};"]}
|
|
@@ -33,25 +33,20 @@ const testCircomlibjs = async () => {
|
|
|
33
33
|
const testResult = (cryptoProvider).poseidon([1n, 2n]);
|
|
34
34
|
// eslint-disable-next-line no-console
|
|
35
35
|
console.log('✅ Poseidon test result:', testResult.toString());
|
|
36
|
-
// Test eddsa operations
|
|
36
|
+
// Test eddsa operations availability
|
|
37
37
|
// eslint-disable-next-line no-console
|
|
38
|
-
console.log('🔑 Testing EdDSA operations...');
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
// eslint-disable-next-line no-console
|
|
42
|
-
console.log('🔑 Testing EdDSA signing...');
|
|
43
|
-
const signature = (cryptoProvider).eddsa.signPoseidon(testPrivateKey, testMessage);
|
|
44
|
-
// eslint-disable-next-line no-console
|
|
45
|
-
console.log('🔑 Testing EdDSA public key derivation...');
|
|
46
|
-
const publicKey = (cryptoProvider).eddsa.prv2pub(Buffer.from(testPrivateKey));
|
|
47
|
-
// eslint-disable-next-line no-console
|
|
48
|
-
console.log('🔍 Testing EdDSA verification...');
|
|
49
|
-
const isValid = (cryptoProvider).eddsa.verifyPoseidon(testMessage, signature, publicKey);
|
|
50
|
-
// eslint-disable-next-line no-console
|
|
51
|
-
console.log('✅ EdDSA test result:', isValid);
|
|
52
|
-
if (typeof isValid !== 'boolean' || !isValid) {
|
|
53
|
-
throw new Error('EdDSA verification failed');
|
|
38
|
+
console.log('🔑 Testing EdDSA operations availability...');
|
|
39
|
+
if (typeof (cryptoProvider).eddsa.signPoseidon !== 'function') {
|
|
40
|
+
throw new Error('EdDSA signPoseidon function missing');
|
|
54
41
|
}
|
|
42
|
+
if (typeof (cryptoProvider).eddsa.prv2pub !== 'function') {
|
|
43
|
+
throw new Error('EdDSA prv2pub function missing');
|
|
44
|
+
}
|
|
45
|
+
if (typeof (cryptoProvider).eddsa.verifyPoseidon !== 'function') {
|
|
46
|
+
throw new Error('EdDSA verifyPoseidon function missing');
|
|
47
|
+
}
|
|
48
|
+
// eslint-disable-next-line no-console
|
|
49
|
+
console.log('✅ EdDSA functions available');
|
|
55
50
|
// eslint-disable-next-line no-console
|
|
56
51
|
console.log('🎉 crypto provider initialization successful');
|
|
57
52
|
return true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/wallets.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopWallet,\n EngineEvent,\n AbstractWallet,\n WalletData,\n AddressData,\n DopEngine,\n ByteUtils,\n ViewOnlyWallet,\n Commitment,\n Mnemonic,\n} from 'dop-engine-v3';\nimport {\n DopWalletInfo,\n NetworkName,\n NETWORK_CONFIG,\n isDefined,\n Chain,\n} from 'dop-sharedmodels-v3';\nimport { onBalancesUpdate } from './balance-update';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { getAddress } from 'ethers';\nimport { getEngine } from '../core/engine';\nimport { getCryptoProvider } from '../crypto/react-native-crypto-provider';\n\n// CRITICAL: Test crypto provider initialization for React Native compatibility\nexport const testCircomlibjs = async (): Promise<boolean> => {\n try {\n // eslint-disable-next-line no-console\n console.log('🧪 Testing crypto provider initialization...');\n \n // Use the new crypto provider that automatically selects the right implementation\n const cryptoProvider = await getCryptoProvider();\n // eslint-disable-next-line no-console\n console.log('✅ Crypto provider loaded successfully');\n \n // Check if the provider has the required functions\n if (cryptoProvider == null || typeof cryptoProvider !== 'object') {\n throw new Error('Crypto provider is invalid');\n }\n \n if (typeof cryptoProvider.poseidon !== 'function') {\n throw new Error('Crypto provider missing poseidon function');\n }\n \n if (typeof cryptoProvider.eddsa !== 'object') {\n throw new Error('Crypto provider missing eddsa object');\n }\n \n // Test basic poseidon hash operation\n // eslint-disable-next-line no-console\n console.log('🔢 Testing poseidon hash...');\n const testResult = (cryptoProvider ).poseidon([1n, 2n]);\n // eslint-disable-next-line no-console\n console.log('✅ Poseidon test result:', testResult.toString());\n \n // Test eddsa operations\n // eslint-disable-next-line no-console\n console.log('🔑 Testing EdDSA operations...');\n const testPrivateKey = new Uint8Array(32).fill(1);\n const testMessage = 12345n;\n \n // eslint-disable-next-line no-console\n console.log('🔑 Testing EdDSA signing...');\n const signature: unknown = (cryptoProvider ).eddsa.signPoseidon(testPrivateKey, testMessage);\n \n // eslint-disable-next-line no-console\n console.log('🔑 Testing EdDSA public key derivation...');\n const publicKey: unknown = (cryptoProvider ).eddsa.prv2pub(Buffer.from(testPrivateKey));\n \n // eslint-disable-next-line no-console\n console.log('🔍 Testing EdDSA verification...');\n const isValid: unknown = (cryptoProvider ).eddsa.verifyPoseidon(testMessage, signature, publicKey);\n // eslint-disable-next-line no-console\n console.log('✅ EdDSA test result:', isValid);\n\n if (typeof isValid !== 'boolean' || !isValid) {\n throw new Error('EdDSA verification failed');\n }\n \n // eslint-disable-next-line no-console\n console.log('🎉 crypto provider initialization successful');\n return true;\n \n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('❌ crypto provider initialization failed:', error);\n // eslint-disable-next-line no-console\n console.error('Error details:', String(error));\n throw new Error(`Crypto provider initialization failed: ${String(error)}`);\n }\n};\n\n// Enhanced wallet creation with crypto provider testing\nexport const createDopWalletSafe = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n dopWalletDerivationIndex?: number,\n timeout = 60000\n): Promise<DopWalletInfo> => {\n // First test crypto provider\n await testCircomlibjs();\n \n // Create wallet with timeout\n return new Promise<DopWalletInfo>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new Error('Wallet creation timed out. This usually indicates crypto provider hanging. Try restarting the app.'));\n }, timeout);\n\n const createWallet = async (): Promise<void> => {\n try {\n console.log('Starting safe wallet creation...');\n const result = await createDopWallet(encryptionKey, mnemonic, creationBlockNumbers, dopWalletDerivationIndex);\n clearTimeout(timeoutId);\n console.log('✅ Wallet creation successful');\n resolve(result);\n } catch (error) {\n clearTimeout(timeoutId);\n console.error('❌ Wallet creation failed:', error);\n reject(error);\n }\n };\n \n // Start wallet creation\n createWallet().catch((error) => {\n clearTimeout(timeoutId);\n reject(error);\n });\n });\n};\n\n/**\n * Create a new DOP wallet with automatic mnemonic generation or import existing mnemonic\n * \n * @param encryptionKey - 32-byte Buffer or Uint8Array for wallet encryption\n * @param options - Wallet creation options\n * @returns Promise<{walletInfo: DopWalletInfo, mnemonic: string}>\n */\nexport const createOrImportDopWallet = async (\n encryptionKey: string | Buffer | Uint8Array,\n options: {\n mnemonic?: string; // If provided, import this mnemonic; if undefined, generate new\n creationBlockNumbers?: Optional<MapType<number>>;\n dopWalletDerivationIndex?: number;\n timeout?: number;\n mnemonicStrength?: 128 | 192 | 256; // For generation only (default: 128 = 12 words)\n } = {}\n): Promise<{walletInfo: DopWalletInfo, mnemonic: string}> => {\n const {\n mnemonic: inputMnemonic,\n creationBlockNumbers,\n dopWalletDerivationIndex = 0,\n timeout = 60000,\n mnemonicStrength = 128\n } = options;\n\n // Convert encryptionKey to string if needed\n const encryptionKeyString = typeof encryptionKey === 'string' \n ? encryptionKey \n : Buffer.from(encryptionKey).toString('hex');\n\n let finalMnemonic: string;\n\n if (typeof inputMnemonic === 'string' && inputMnemonic.length > 0) {\n // Validate provided mnemonic\n if (!Mnemonic.validate(inputMnemonic)) {\n throw new Error('Invalid mnemonic phrase provided');\n }\n finalMnemonic = inputMnemonic;\n console.log('✅ Importing wallet from provided mnemonic');\n } else {\n // Generate new mnemonic\n finalMnemonic = Mnemonic.generate(mnemonicStrength);\n let wordCount: string;\n if (mnemonicStrength === 128) {\n wordCount = '12';\n } else if (mnemonicStrength === 192) {\n wordCount = '18';\n } else {\n wordCount = '24';\n }\n console.log(`✅ Generated new ${wordCount}-word mnemonic`);\n }\n\n // Create wallet using the safe creation method\n const walletInfo = await createDopWalletSafe(\n encryptionKeyString,\n finalMnemonic,\n creationBlockNumbers,\n dopWalletDerivationIndex,\n timeout\n );\n\n return {\n walletInfo,\n mnemonic: finalMnemonic\n };\n};\n\nexport const awaitWalletScan = (walletID: string, chain: Chain) => {\n const wallet = walletForID(walletID);\n return new Promise((resolve, reject) =>\n wallet.once(\n EngineEvent.WalletDecryptBalancesComplete,\n ({ chain: returnedChain }: any) =>\n returnedChain.type === chain.type && returnedChain.id === chain.id\n ? resolve(returnedChain)\n : reject(),\n ),\n );\n};\n\nexport const awaitMultipleWalletScans = async (\n walletID: string,\n chain: Chain,\n numScans: number,\n) => {\n let i = 0;\n while (i < numScans) {\n // eslint-disable-next-line no-await-in-loop\n await awaitWalletScan(walletID, chain);\n i += 1;\n }\n return Promise.resolve();\n};\n\nexport const walletForID = (id: string): AbstractWallet => {\n const engine = getEngine();\n const wallet = engine.wallets[id];\n if (!isDefined(wallet)) {\n throw new Error('No DOP wallet for ID');\n }\n return wallet;\n};\n\nexport const fullWalletForID = (id: string): DopWallet => {\n const wallet = walletForID(id);\n if (!(wallet instanceof DopWallet)) {\n throw new Error('Can not load View-Only wallet.');\n }\n return wallet;\n};\n\nexport const viewOnlyWalletForID = (id: string): DopWallet => {\n const wallet = walletForID(id);\n if (!(wallet instanceof ViewOnlyWallet)) {\n throw new Error('Can only load View-Only wallet.');\n }\n return wallet as DopWallet;\n};\n\nconst subscribeToEvents = (wallet: AbstractWallet) => {\n wallet.on(\n EngineEvent.WalletDecryptBalancesComplete,\n ({ txidVersion, chain }: any) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n onBalancesUpdate(txidVersion, wallet, chain);\n },\n );\n};\n\nconst addressForWallet = (wallet: AbstractWallet): string => {\n return wallet.getAddress();\n};\n\nconst infoForWallet = (wallet: AbstractWallet): DopWalletInfo => {\n const dopAddress = addressForWallet(wallet);\n return {\n id: wallet.id,\n dopAddress,\n };\n};\n\nconst getExistingWallet = (\n dopWalletID: string,\n): Optional<AbstractWallet> => {\n try {\n const existingWallet = walletForID(dopWalletID);\n return existingWallet;\n } catch (_err) {\n return undefined;\n }\n};\n\nconst loadExistingWallet = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n const existingWallet = getExistingWallet(dopWalletID);\n if (existingWallet) {\n return infoForWallet(existingWallet);\n }\n const engine = getEngine();\n let wallet: AbstractWallet;\n\n if (isViewOnlyWallet) {\n wallet = await engine.loadExistingViewOnlyWallet(\n encryptionKey,\n dopWalletID,\n );\n } else {\n wallet = await engine.loadExistingWallet(encryptionKey, dopWalletID);\n }\n\n subscribeToEvents(wallet);\n return infoForWallet(wallet);\n};\n// here\nexport const createWalletFromTransaction = async (\n leaf: Commitment,\n viewingPrivateKey: Uint8Array,\n chain: Chain,\n encryptionKey: string,\n mnemonic: string,\n index = 0,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> => {\n\n const engine = getEngine();\n const res = engine.createUserWalletFromTransaction(leaf, viewingPrivateKey, chain, encryptionKey, mnemonic, index);\n return res;\n};\n\nconst createWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n dopWalletDerivationIndex?: number,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n const wallet = await engine.createWalletFromMnemonic(\n encryptionKey,\n mnemonic,\n dopWalletDerivationIndex ?? 0,\n formattedCreationBlockNumbers,\n );\n subscribeToEvents(wallet);\n return infoForWallet(wallet);\n};\n\nconst createViewOnlyWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n const wallet = await engine.createViewOnlyWalletFromShareableViewingKey(\n encryptionKey,\n shareableViewingKey,\n formattedCreationBlockNumbers,\n );\n subscribeToEvents(wallet);\n return infoForWallet(wallet);\n};\n\nexport const createDopWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n dopWalletDerivationIndex?: number,\n): Promise<DopWalletInfo> => {\n try {\n return await createWallet(\n encryptionKey,\n mnemonic,\n creationBlockNumbers,\n dopWalletDerivationIndex,\n );\n } catch (err) {\n throw reportAndSanitizeError(createDopWallet.name, err);\n }\n};\n\nexport const createViewOnlyDopWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n try {\n return await createViewOnlyWallet(\n encryptionKey,\n shareableViewingKey,\n creationBlockNumbers,\n );\n } catch (err) {\n throw reportAndSanitizeError(createViewOnlyDopWallet.name, err);\n }\n};\n\nexport const loadWalletByID = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n try {\n return await loadExistingWallet(\n encryptionKey,\n dopWalletID,\n isViewOnlyWallet,\n );\n } catch (err) {\n const sanitizedError = reportAndSanitizeError(loadWalletByID.name, err);\n throw new Error(`Could not load DOP wallet`, { cause: sanitizedError });\n }\n};\n\nexport const unloadWalletByID = (dopWalletID: string): void => {\n try {\n const engine = getEngine();\n engine.unloadWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not unload DOP wallet.', { cause: err });\n }\n};\n\nexport const deleteWalletByID = async (\n dopWalletID: string,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.deleteWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not delete DOP wallet.', { cause: err });\n }\n};\n\nexport const getWalletMnemonic = async (\n encryptionKey: string,\n dopWalletID: string,\n) => {\n const { db } = getEngine();\n // Reload wallet to ensure that encryption key is valid.\n const walletData = (await DopWallet.getEncryptedData(\n db,\n encryptionKey,\n dopWalletID,\n )) as WalletData;\n\n if (!walletData.mnemonic) {\n throw new Error('No mnemonic for wallet.');\n }\n return walletData.mnemonic;\n};\n\nexport const getDopWalletAddressData = (address: string): AddressData => {\n assertValidDopAddress(address);\n return DopEngine.decodeAddress(address);\n};\n\nexport const getDopWalletPrivateViewingKey = (\n dopWalletID: string,\n): Uint8Array => {\n const wallet = walletForID(dopWalletID);\n return wallet.getViewingKeyPair().privateKey;\n};\n\nexport const signWithWalletViewingKey = async (\n dopWalletID: string,\n message: string,\n): Promise<string> => {\n const wallet = walletForID(dopWalletID);\n const signature = await wallet.signWithViewingKey(\n ByteUtils.hexStringToBytes(message),\n );\n return ByteUtils.hexlify(signature);\n};\n\nexport const assertValidDopAddress = (address: string): void => {\n if (!validateDopAddress(address)) {\n throw new Error('Invalid DOP address.');\n }\n};\n\nexport const validateDopAddress = (address: string): boolean => {\n try {\n return DopEngine.decodeAddress(address) != null;\n } catch (err) {\n return false;\n }\n};\n\nexport const assertValidEthAddress = (address: string) => {\n if (!validateEthAddress(address)) {\n throw new Error('Invalid wallet address.');\n }\n};\n\nexport const validateEthAddress = (address: string): boolean => {\n try {\n getAddress(address);\n return true;\n } catch (err) {\n return false;\n }\n};\n\nexport const getDopAddress = (\n dopWalletID: string,\n): Optional<string> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.getAddress();\n } catch (err) {\n reportAndSanitizeError(getDopAddress.name, err);\n return undefined;\n }\n};\n\nexport const getWalletShareableViewingKey = async (\n dopWalletID: string,\n): Promise<Optional<string>> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.generateShareableViewingKey();\n } catch (err) {\n reportAndSanitizeError(getWalletShareableViewingKey.name, err);\n return undefined;\n }\n};\n\nconst formatCreationBlockNumbers = (\n creationBlockNumbers: Optional<MapType<number>>,\n): Optional<number[][]> => {\n // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine-v3's number[][] type\n if (!creationBlockNumbers) return;\n\n const formattedCreationBlockNumbers: number[][] = [];\n const networksNames = Object.keys(creationBlockNumbers) as NetworkName[];\n\n for (const networkName of networksNames) {\n const network = NETWORK_CONFIG[networkName];\n\n const blockNumber = creationBlockNumbers[networkName];\n if (!isDefined(blockNumber)) {\n continue;\n }\n\n formattedCreationBlockNumbers[network.chain.type] ??= [];\n formattedCreationBlockNumbers[network.chain.type][network.chain.id] =\n blockNumber;\n }\n\n return formattedCreationBlockNumbers;\n};\n"]}
|
|
1
|
+
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/wallets.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopWallet,\n EngineEvent,\n AbstractWallet,\n WalletData,\n AddressData,\n DopEngine,\n ByteUtils,\n ViewOnlyWallet,\n Commitment,\n Mnemonic,\n} from 'dop-engine-v3';\nimport {\n DopWalletInfo,\n NetworkName,\n NETWORK_CONFIG,\n isDefined,\n Chain,\n} from 'dop-sharedmodels-v3';\nimport { onBalancesUpdate } from './balance-update';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { getAddress } from 'ethers';\nimport { getEngine } from '../core/engine';\nimport { getCryptoProvider } from '../crypto/react-native-crypto-provider';\n\n// CRITICAL: Test crypto provider initialization for React Native compatibility\nexport const testCircomlibjs = async (): Promise<boolean> => {\n try {\n // eslint-disable-next-line no-console\n console.log('🧪 Testing crypto provider initialization...');\n \n // Use the new crypto provider that automatically selects the right implementation\n const cryptoProvider = await getCryptoProvider();\n // eslint-disable-next-line no-console\n console.log('✅ Crypto provider loaded successfully');\n \n // Check if the provider has the required functions\n if (cryptoProvider == null || typeof cryptoProvider !== 'object') {\n throw new Error('Crypto provider is invalid');\n }\n \n if (typeof cryptoProvider.poseidon !== 'function') {\n throw new Error('Crypto provider missing poseidon function');\n }\n \n if (typeof cryptoProvider.eddsa !== 'object') {\n throw new Error('Crypto provider missing eddsa object');\n }\n \n // Test basic poseidon hash operation\n // eslint-disable-next-line no-console\n console.log('🔢 Testing poseidon hash...');\n const testResult = (cryptoProvider ).poseidon([1n, 2n]);\n // eslint-disable-next-line no-console\n console.log('✅ Poseidon test result:', testResult.toString());\n \n // Test eddsa operations availability\n // eslint-disable-next-line no-console\n console.log('🔑 Testing EdDSA operations availability...');\n \n if (typeof (cryptoProvider ).eddsa.signPoseidon !== 'function') {\n throw new Error('EdDSA signPoseidon function missing');\n }\n if (typeof (cryptoProvider ).eddsa.prv2pub !== 'function') {\n throw new Error('EdDSA prv2pub function missing');\n }\n if (typeof (cryptoProvider ).eddsa.verifyPoseidon !== 'function') {\n throw new Error('EdDSA verifyPoseidon function missing');\n }\n \n // eslint-disable-next-line no-console\n console.log('✅ EdDSA functions available');\n \n // eslint-disable-next-line no-console\n console.log('🎉 crypto provider initialization successful');\n return true;\n \n } catch (error: unknown) {\n // eslint-disable-next-line no-console\n console.error('❌ crypto provider initialization failed:', error);\n // eslint-disable-next-line no-console\n console.error('Error details:', String(error));\n throw new Error(`Crypto provider initialization failed: ${String(error)}`);\n }\n};\n\n// Enhanced wallet creation with crypto provider testing\nexport const createDopWalletSafe = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n dopWalletDerivationIndex?: number,\n timeout = 60000\n): Promise<DopWalletInfo> => {\n // First test crypto provider\n await testCircomlibjs();\n \n // Create wallet with timeout\n return new Promise<DopWalletInfo>((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new Error('Wallet creation timed out. This usually indicates crypto provider hanging. Try restarting the app.'));\n }, timeout);\n\n const createWallet = async (): Promise<void> => {\n try {\n console.log('Starting safe wallet creation...');\n const result = await createDopWallet(encryptionKey, mnemonic, creationBlockNumbers, dopWalletDerivationIndex);\n clearTimeout(timeoutId);\n console.log('✅ Wallet creation successful');\n resolve(result);\n } catch (error) {\n clearTimeout(timeoutId);\n console.error('❌ Wallet creation failed:', error);\n reject(error);\n }\n };\n \n // Start wallet creation\n createWallet().catch((error) => {\n clearTimeout(timeoutId);\n reject(error);\n });\n });\n};\n\n/**\n * Create a new DOP wallet with automatic mnemonic generation or import existing mnemonic\n * \n * @param encryptionKey - 32-byte Buffer or Uint8Array for wallet encryption\n * @param options - Wallet creation options\n * @returns Promise<{walletInfo: DopWalletInfo, mnemonic: string}>\n */\nexport const createOrImportDopWallet = async (\n encryptionKey: string | Buffer | Uint8Array,\n options: {\n mnemonic?: string; // If provided, import this mnemonic; if undefined, generate new\n creationBlockNumbers?: Optional<MapType<number>>;\n dopWalletDerivationIndex?: number;\n timeout?: number;\n mnemonicStrength?: 128 | 192 | 256; // For generation only (default: 128 = 12 words)\n } = {}\n): Promise<{walletInfo: DopWalletInfo, mnemonic: string}> => {\n const {\n mnemonic: inputMnemonic,\n creationBlockNumbers,\n dopWalletDerivationIndex = 0,\n timeout = 60000,\n mnemonicStrength = 128\n } = options;\n\n // Convert encryptionKey to string if needed\n const encryptionKeyString = typeof encryptionKey === 'string' \n ? encryptionKey \n : Buffer.from(encryptionKey).toString('hex');\n\n let finalMnemonic: string;\n\n if (typeof inputMnemonic === 'string' && inputMnemonic.length > 0) {\n // Validate provided mnemonic\n if (!Mnemonic.validate(inputMnemonic)) {\n throw new Error('Invalid mnemonic phrase provided');\n }\n finalMnemonic = inputMnemonic;\n console.log('✅ Importing wallet from provided mnemonic');\n } else {\n // Generate new mnemonic\n finalMnemonic = Mnemonic.generate(mnemonicStrength);\n let wordCount: string;\n if (mnemonicStrength === 128) {\n wordCount = '12';\n } else if (mnemonicStrength === 192) {\n wordCount = '18';\n } else {\n wordCount = '24';\n }\n console.log(`✅ Generated new ${wordCount}-word mnemonic`);\n }\n\n // Create wallet using the safe creation method\n const walletInfo = await createDopWalletSafe(\n encryptionKeyString,\n finalMnemonic,\n creationBlockNumbers,\n dopWalletDerivationIndex,\n timeout\n );\n\n return {\n walletInfo,\n mnemonic: finalMnemonic\n };\n};\n\nexport const awaitWalletScan = (walletID: string, chain: Chain) => {\n const wallet = walletForID(walletID);\n return new Promise((resolve, reject) =>\n wallet.once(\n EngineEvent.WalletDecryptBalancesComplete,\n ({ chain: returnedChain }: any) =>\n returnedChain.type === chain.type && returnedChain.id === chain.id\n ? resolve(returnedChain)\n : reject(),\n ),\n );\n};\n\nexport const awaitMultipleWalletScans = async (\n walletID: string,\n chain: Chain,\n numScans: number,\n) => {\n let i = 0;\n while (i < numScans) {\n // eslint-disable-next-line no-await-in-loop\n await awaitWalletScan(walletID, chain);\n i += 1;\n }\n return Promise.resolve();\n};\n\nexport const walletForID = (id: string): AbstractWallet => {\n const engine = getEngine();\n const wallet = engine.wallets[id];\n if (!isDefined(wallet)) {\n throw new Error('No DOP wallet for ID');\n }\n return wallet;\n};\n\nexport const fullWalletForID = (id: string): DopWallet => {\n const wallet = walletForID(id);\n if (!(wallet instanceof DopWallet)) {\n throw new Error('Can not load View-Only wallet.');\n }\n return wallet;\n};\n\nexport const viewOnlyWalletForID = (id: string): DopWallet => {\n const wallet = walletForID(id);\n if (!(wallet instanceof ViewOnlyWallet)) {\n throw new Error('Can only load View-Only wallet.');\n }\n return wallet as DopWallet;\n};\n\nconst subscribeToEvents = (wallet: AbstractWallet) => {\n wallet.on(\n EngineEvent.WalletDecryptBalancesComplete,\n ({ txidVersion, chain }: any) => {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n onBalancesUpdate(txidVersion, wallet, chain);\n },\n );\n};\n\nconst addressForWallet = (wallet: AbstractWallet): string => {\n return wallet.getAddress();\n};\n\nconst infoForWallet = (wallet: AbstractWallet): DopWalletInfo => {\n const dopAddress = addressForWallet(wallet);\n return {\n id: wallet.id,\n dopAddress,\n };\n};\n\nconst getExistingWallet = (\n dopWalletID: string,\n): Optional<AbstractWallet> => {\n try {\n const existingWallet = walletForID(dopWalletID);\n return existingWallet;\n } catch (_err) {\n return undefined;\n }\n};\n\nconst loadExistingWallet = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n const existingWallet = getExistingWallet(dopWalletID);\n if (existingWallet) {\n return infoForWallet(existingWallet);\n }\n const engine = getEngine();\n let wallet: AbstractWallet;\n\n if (isViewOnlyWallet) {\n wallet = await engine.loadExistingViewOnlyWallet(\n encryptionKey,\n dopWalletID,\n );\n } else {\n wallet = await engine.loadExistingWallet(encryptionKey, dopWalletID);\n }\n\n subscribeToEvents(wallet);\n return infoForWallet(wallet);\n};\n// here\nexport const createWalletFromTransaction = async (\n leaf: Commitment,\n viewingPrivateKey: Uint8Array,\n chain: Chain,\n encryptionKey: string,\n mnemonic: string,\n index = 0,\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n): Promise<any> => {\n\n const engine = getEngine();\n const res = engine.createUserWalletFromTransaction(leaf, viewingPrivateKey, chain, encryptionKey, mnemonic, index);\n return res;\n};\n\nconst createWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n dopWalletDerivationIndex?: number,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n const wallet = await engine.createWalletFromMnemonic(\n encryptionKey,\n mnemonic,\n dopWalletDerivationIndex ?? 0,\n formattedCreationBlockNumbers,\n );\n subscribeToEvents(wallet);\n return infoForWallet(wallet);\n};\n\nconst createViewOnlyWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n const formattedCreationBlockNumbers =\n formatCreationBlockNumbers(creationBlockNumbers);\n\n const engine = getEngine();\n const wallet = await engine.createViewOnlyWalletFromShareableViewingKey(\n encryptionKey,\n shareableViewingKey,\n formattedCreationBlockNumbers,\n );\n subscribeToEvents(wallet);\n return infoForWallet(wallet);\n};\n\nexport const createDopWallet = async (\n encryptionKey: string,\n mnemonic: string,\n creationBlockNumbers: Optional<MapType<number>>,\n dopWalletDerivationIndex?: number,\n): Promise<DopWalletInfo> => {\n try {\n return await createWallet(\n encryptionKey,\n mnemonic,\n creationBlockNumbers,\n dopWalletDerivationIndex,\n );\n } catch (err) {\n throw reportAndSanitizeError(createDopWallet.name, err);\n }\n};\n\nexport const createViewOnlyDopWallet = async (\n encryptionKey: string,\n shareableViewingKey: string,\n creationBlockNumbers: Optional<MapType<number>>,\n): Promise<DopWalletInfo> => {\n try {\n return await createViewOnlyWallet(\n encryptionKey,\n shareableViewingKey,\n creationBlockNumbers,\n );\n } catch (err) {\n throw reportAndSanitizeError(createViewOnlyDopWallet.name, err);\n }\n};\n\nexport const loadWalletByID = async (\n encryptionKey: string,\n dopWalletID: string,\n isViewOnlyWallet: boolean,\n): Promise<DopWalletInfo> => {\n try {\n return await loadExistingWallet(\n encryptionKey,\n dopWalletID,\n isViewOnlyWallet,\n );\n } catch (err) {\n const sanitizedError = reportAndSanitizeError(loadWalletByID.name, err);\n throw new Error(`Could not load DOP wallet`, { cause: sanitizedError });\n }\n};\n\nexport const unloadWalletByID = (dopWalletID: string): void => {\n try {\n const engine = getEngine();\n engine.unloadWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not unload DOP wallet.', { cause: err });\n }\n};\n\nexport const deleteWalletByID = async (\n dopWalletID: string,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.deleteWallet(dopWalletID);\n } catch (err) {\n throw new Error('Could not delete DOP wallet.', { cause: err });\n }\n};\n\nexport const getWalletMnemonic = async (\n encryptionKey: string,\n dopWalletID: string,\n) => {\n const { db } = getEngine();\n // Reload wallet to ensure that encryption key is valid.\n const walletData = (await DopWallet.getEncryptedData(\n db,\n encryptionKey,\n dopWalletID,\n )) as WalletData;\n\n if (!walletData.mnemonic) {\n throw new Error('No mnemonic for wallet.');\n }\n return walletData.mnemonic;\n};\n\nexport const getDopWalletAddressData = (address: string): AddressData => {\n assertValidDopAddress(address);\n return DopEngine.decodeAddress(address);\n};\n\nexport const getDopWalletPrivateViewingKey = (\n dopWalletID: string,\n): Uint8Array => {\n const wallet = walletForID(dopWalletID);\n return wallet.getViewingKeyPair().privateKey;\n};\n\nexport const signWithWalletViewingKey = async (\n dopWalletID: string,\n message: string,\n): Promise<string> => {\n const wallet = walletForID(dopWalletID);\n const signature = await wallet.signWithViewingKey(\n ByteUtils.hexStringToBytes(message),\n );\n return ByteUtils.hexlify(signature);\n};\n\nexport const assertValidDopAddress = (address: string): void => {\n if (!validateDopAddress(address)) {\n throw new Error('Invalid DOP address.');\n }\n};\n\nexport const validateDopAddress = (address: string): boolean => {\n try {\n return DopEngine.decodeAddress(address) != null;\n } catch (err) {\n return false;\n }\n};\n\nexport const assertValidEthAddress = (address: string) => {\n if (!validateEthAddress(address)) {\n throw new Error('Invalid wallet address.');\n }\n};\n\nexport const validateEthAddress = (address: string): boolean => {\n try {\n getAddress(address);\n return true;\n } catch (err) {\n return false;\n }\n};\n\nexport const getDopAddress = (\n dopWalletID: string,\n): Optional<string> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.getAddress();\n } catch (err) {\n reportAndSanitizeError(getDopAddress.name, err);\n return undefined;\n }\n};\n\nexport const getWalletShareableViewingKey = async (\n dopWalletID: string,\n): Promise<Optional<string>> => {\n try {\n const wallet = walletForID(dopWalletID);\n return wallet.generateShareableViewingKey();\n } catch (err) {\n reportAndSanitizeError(getWalletShareableViewingKey.name, err);\n return undefined;\n }\n};\n\nconst formatCreationBlockNumbers = (\n creationBlockNumbers: Optional<MapType<number>>,\n): Optional<number[][]> => {\n // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine-v3's number[][] type\n if (!creationBlockNumbers) return;\n\n const formattedCreationBlockNumbers: number[][] = [];\n const networksNames = Object.keys(creationBlockNumbers) as NetworkName[];\n\n for (const networkName of networksNames) {\n const network = NETWORK_CONFIG[networkName];\n\n const blockNumber = creationBlockNumbers[networkName];\n if (!isDefined(blockNumber)) {\n continue;\n }\n\n formattedCreationBlockNumbers[network.chain.type] ??= [];\n formattedCreationBlockNumbers[network.chain.type][network.chain.id] =\n blockNumber;\n }\n\n return formattedCreationBlockNumbers;\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DopPopulateTransactionResponse, DopTransactionGasEstimateResponse, NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TransactionGasDetails, TXIDVersion } from 'dop-sharedmodels-v3';
|
|
2
|
+
import { ContractTransaction } from 'ethers';
|
|
3
|
+
export declare const getEncryptPrivateKeySignatureMessage: () => string;
|
|
4
|
+
export declare const generateEncryptTransactionWithRelayer: (txidVersion: TXIDVersion, networkName: NetworkName, encryptPrivateKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], fromWalletAddress: string) => Promise<ContractTransaction>;
|
|
5
|
+
export declare const populateEncryptWithRelayer: (txidVersion: TXIDVersion, networkName: NetworkName, encryptPrivateKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], fromWalletAddress: string, gasDetails?: TransactionGasDetails) => Promise<DopPopulateTransactionResponse>;
|
|
6
|
+
export declare const gasEstimateForEncryptWithRelayer: (txidVersion: TXIDVersion, networkName: NetworkName, encryptPrivateKey: string, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], fromWalletAddress: string) => Promise<DopTransactionGasEstimateResponse>;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.gasEstimateForEncryptWithRelayer = exports.populateEncryptWithRelayer = exports.generateEncryptTransactionWithRelayer = exports.getEncryptPrivateKeySignatureMessage = void 0;
|
|
4
|
+
const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
|
|
5
|
+
const dop_engine_v3_1 = require("dop-engine-v3");
|
|
6
|
+
const tx_gas_details_1 = require("./tx-gas-details");
|
|
7
|
+
const blocked_address_1 = require("../../utils/blocked-address");
|
|
8
|
+
const tx_cross_contract_calls_1 = require("./tx-cross-contract-calls");
|
|
9
|
+
const error_1 = require("../../utils/error");
|
|
10
|
+
const wallets_1 = require("../dop/wallets");
|
|
11
|
+
const getEncryptPrivateKeySignatureMessage = () => {
|
|
12
|
+
return dop_engine_v3_1.EncryptNote.getEncryptPrivateKeySignatureMessage();
|
|
13
|
+
};
|
|
14
|
+
exports.getEncryptPrivateKeySignatureMessage = getEncryptPrivateKeySignatureMessage;
|
|
15
|
+
const generateERC20EncryptRequests = async (erc20AmountRecipient, random, encryptPrivateKey) => {
|
|
16
|
+
const dopAddress = erc20AmountRecipient.recipientAddress;
|
|
17
|
+
(0, wallets_1.assertValidDopAddress)(dopAddress);
|
|
18
|
+
const { masterPublicKey, viewingPublicKey } = dop_engine_v3_1.DopEngine.decodeAddress(dopAddress);
|
|
19
|
+
const encrypt = new dop_engine_v3_1.EncryptNoteERC20(masterPublicKey, random, erc20AmountRecipient.amount, erc20AmountRecipient.tokenAddress);
|
|
20
|
+
return encrypt.serialize(dop_engine_v3_1.ByteUtils.hexToBytes(encryptPrivateKey), viewingPublicKey);
|
|
21
|
+
};
|
|
22
|
+
const generateNFTEncryptRequests = async (nftAmountRecipient, random, encryptPrivateKey) => {
|
|
23
|
+
const dopAddress = nftAmountRecipient.recipientAddress;
|
|
24
|
+
(0, wallets_1.assertValidDopAddress)(dopAddress);
|
|
25
|
+
const { masterPublicKey, viewingPublicKey } = dop_engine_v3_1.DopEngine.decodeAddress(dopAddress);
|
|
26
|
+
const value = nftAmountRecipient.nftTokenType === dop_sharedmodels_v3_1.NFTTokenType.ERC721
|
|
27
|
+
? dop_engine_v3_1.ERC721_NOTE_VALUE
|
|
28
|
+
: nftAmountRecipient.amount;
|
|
29
|
+
const nftTokenData = (0, tx_cross_contract_calls_1.createNFTTokenDataFromDopNFTAmount)(nftAmountRecipient);
|
|
30
|
+
const encrypt = new dop_engine_v3_1.EncryptNoteNFT(masterPublicKey, random, value, nftTokenData);
|
|
31
|
+
return encrypt.serialize(dop_engine_v3_1.ByteUtils.hexToBytes(encryptPrivateKey), viewingPublicKey);
|
|
32
|
+
};
|
|
33
|
+
const generateEncryptTransactionWithRelayer = async (txidVersion, networkName, encryptPrivateKey, erc20AmountRecipients, nftAmountRecipients, fromWalletAddress) => {
|
|
34
|
+
try {
|
|
35
|
+
const random = dop_engine_v3_1.ByteUtils.randomHex(16);
|
|
36
|
+
const encryptInputs = await Promise.all([
|
|
37
|
+
...erc20AmountRecipients.map(erc20AmountRecipient => generateERC20EncryptRequests(erc20AmountRecipient, random, encryptPrivateKey)),
|
|
38
|
+
...nftAmountRecipients.map(nftAmountRecipient => generateNFTEncryptRequests(nftAmountRecipient, random, encryptPrivateKey)),
|
|
39
|
+
]);
|
|
40
|
+
const chain = dop_sharedmodels_v3_1.NETWORK_CONFIG[networkName].chain;
|
|
41
|
+
const relayAdaptContract = dop_engine_v3_1.DopVersionedSmartContracts.getRelayAdaptContract(txidVersion, chain);
|
|
42
|
+
const transaction = await relayAdaptContract.populateRelayEncrypts(encryptInputs, fromWalletAddress);
|
|
43
|
+
return transaction;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
throw (0, error_1.reportAndSanitizeError)(exports.generateEncryptTransactionWithRelayer.name, err);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
exports.generateEncryptTransactionWithRelayer = generateEncryptTransactionWithRelayer;
|
|
50
|
+
const populateEncryptWithRelayer = async (txidVersion, networkName, encryptPrivateKey, erc20AmountRecipients, nftAmountRecipients, fromWalletAddress, gasDetails) => {
|
|
51
|
+
try {
|
|
52
|
+
const transaction = await (0, exports.generateEncryptTransactionWithRelayer)(txidVersion, networkName, encryptPrivateKey, erc20AmountRecipients, nftAmountRecipients, fromWalletAddress);
|
|
53
|
+
if (gasDetails) {
|
|
54
|
+
const sendWithPublicWallet = true;
|
|
55
|
+
(0, tx_gas_details_1.setGasDetailsForTransaction)(networkName, transaction, gasDetails, sendWithPublicWallet);
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
transaction,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
throw (0, error_1.reportAndSanitizeError)(exports.populateEncryptWithRelayer.name, err);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
exports.populateEncryptWithRelayer = populateEncryptWithRelayer;
|
|
66
|
+
const gasEstimateForEncryptWithRelayer = async (txidVersion, networkName, encryptPrivateKey, erc20AmountRecipients, nftAmountRecipients, fromWalletAddress) => {
|
|
67
|
+
try {
|
|
68
|
+
(0, blocked_address_1.assertNotBlockedAddress)(fromWalletAddress);
|
|
69
|
+
const transaction = await (0, exports.generateEncryptTransactionWithRelayer)(txidVersion, networkName, encryptPrivateKey, erc20AmountRecipients, nftAmountRecipients, fromWalletAddress);
|
|
70
|
+
const sendWithPublicWallet = true;
|
|
71
|
+
const isGasEstimateWithDummyProof = false;
|
|
72
|
+
return (0, tx_gas_details_1.gasEstimateResponse)(await (0, tx_gas_details_1.getGasEstimate)(txidVersion, networkName, transaction, fromWalletAddress, sendWithPublicWallet, true), undefined, // broadcasterFeeCommitment
|
|
73
|
+
isGasEstimateWithDummyProof);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
throw (0, error_1.reportAndSanitizeError)(exports.gasEstimateForEncryptWithRelayer.name, err);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
exports.gasEstimateForEncryptWithRelayer = gasEstimateForEncryptWithRelayer;
|
|
80
|
+
//# sourceMappingURL=tx-encrypt-relayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx-encrypt-relayer.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-encrypt-relayer.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n DopPopulateTransactionResponse,\n DopTransactionGasEstimateResponse,\n NetworkName,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n NFTTokenType,\n TransactionGasDetails,\n NETWORK_CONFIG,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n EncryptNote,\n DopEngine,\n EncryptRequestStruct,\n ByteUtils,\n EncryptNoteERC20,\n EncryptNoteNFT,\n ERC721_NOTE_VALUE,\n DopVersionedSmartContracts,\n} from 'dop-engine-v3';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from './tx-gas-details';\nimport { assertNotBlockedAddress } from '../../utils/blocked-address';\nimport { createNFTTokenDataFromDopNFTAmount } from './tx-cross-contract-calls';\nimport { reportAndSanitizeError } from '../../utils/error';\nimport { ContractTransaction } from 'ethers';\nimport { assertValidDopAddress } from '../dop/wallets';\n\nexport const getEncryptPrivateKeySignatureMessage = () => {\n return EncryptNote.getEncryptPrivateKeySignatureMessage();\n};\n\nconst generateERC20EncryptRequests = async (\n erc20AmountRecipient: DopERC20AmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = erc20AmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const encrypt = new EncryptNoteERC20(\n masterPublicKey,\n random,\n erc20AmountRecipient.amount,\n erc20AmountRecipient.tokenAddress,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nconst generateNFTEncryptRequests = async (\n nftAmountRecipient: DopNFTAmountRecipient,\n random: string,\n encryptPrivateKey: string,\n): Promise<EncryptRequestStruct> => {\n const dopAddress = nftAmountRecipient.recipientAddress;\n\n assertValidDopAddress(dopAddress);\n\n const { masterPublicKey, viewingPublicKey } =\n DopEngine.decodeAddress(dopAddress);\n\n const value =\n nftAmountRecipient.nftTokenType === NFTTokenType.ERC721\n ? ERC721_NOTE_VALUE\n : nftAmountRecipient.amount;\n\n const nftTokenData =\n createNFTTokenDataFromDopNFTAmount(nftAmountRecipient);\n\n const encrypt = new EncryptNoteNFT(\n masterPublicKey,\n random,\n value,\n nftTokenData,\n );\n return encrypt.serialize(\n ByteUtils.hexToBytes(encryptPrivateKey),\n viewingPublicKey,\n );\n};\n\nexport const generateEncryptTransactionWithRelayer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n fromWalletAddress: string,\n): Promise<ContractTransaction> => {\n try {\n const random = ByteUtils.randomHex(16);\n\n const encryptInputs: EncryptRequestStruct[] = await Promise.all([\n ...erc20AmountRecipients.map(erc20AmountRecipient =>\n generateERC20EncryptRequests(\n erc20AmountRecipient,\n random,\n encryptPrivateKey,\n ),\n ),\n ...nftAmountRecipients.map(nftAmountRecipient =>\n generateNFTEncryptRequests(nftAmountRecipient, random, encryptPrivateKey),\n ),\n ]);\n\n const chain = NETWORK_CONFIG[networkName].chain;\n \n const relayAdaptContract = DopVersionedSmartContracts.getRelayAdaptContract(\n txidVersion,\n chain,\n ) as any;\n\n const transaction = await relayAdaptContract.populateRelayEncrypts(\n encryptInputs,\n fromWalletAddress,\n );\n \n return transaction;\n } catch (err) {\n throw reportAndSanitizeError(generateEncryptTransactionWithRelayer.name, err);\n }\n};\n\nexport const populateEncryptWithRelayer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n fromWalletAddress: string,\n gasDetails?: TransactionGasDetails,\n): Promise<DopPopulateTransactionResponse> => {\n try {\n const transaction = await generateEncryptTransactionWithRelayer(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n fromWalletAddress,\n );\n\n if (gasDetails) {\n const sendWithPublicWallet = true;\n setGasDetailsForTransaction(\n networkName,\n transaction,\n gasDetails,\n sendWithPublicWallet,\n );\n }\n\n return {\n transaction,\n };\n } catch (err) {\n throw reportAndSanitizeError(populateEncryptWithRelayer.name, err);\n }\n};\n\nexport const gasEstimateForEncryptWithRelayer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n encryptPrivateKey: string,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n fromWalletAddress: string,\n): Promise<DopTransactionGasEstimateResponse> => {\n try {\n assertNotBlockedAddress(fromWalletAddress);\n\n const transaction = await generateEncryptTransactionWithRelayer(\n txidVersion,\n networkName,\n encryptPrivateKey,\n erc20AmountRecipients,\n nftAmountRecipients,\n fromWalletAddress,\n );\n\n const sendWithPublicWallet = true;\n const isGasEstimateWithDummyProof = false;\n return gasEstimateResponse(\n await getGasEstimate(\n txidVersion,\n networkName,\n transaction,\n fromWalletAddress,\n sendWithPublicWallet,\n true, // isCrossContractCall - Relayer is a cross-contract call\n ),\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n } catch (err) {\n throw reportAndSanitizeError(gasEstimateForEncryptWithRelayer.name, err);\n }\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dop-wallet-v6",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.32",
|
|
4
4
|
"description": "DOP Wallet SDK, compatible with mobile, browser and nodejs environments.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"files": [
|
|
8
8
|
"dist/**/*",
|
|
9
|
+
"!dist/**/__tests__",
|
|
10
|
+
"!dist/**/__tests__/**",
|
|
11
|
+
"!dist/tests",
|
|
12
|
+
"!dist/tests/**",
|
|
13
|
+
"!dist/**/*.test.*",
|
|
9
14
|
"patches",
|
|
10
15
|
"*.js",
|
|
11
16
|
"node_modules/dop-engine-v3/dist/utils/keys-utils.js",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const chai_1 = require("chai");
|
|
7
|
-
const index_1 = __importDefault(require("../index"));
|
|
8
|
-
describe('index', () => {
|
|
9
|
-
it('Should load main for test', async () => {
|
|
10
|
-
(0, chai_1.expect)(index_1.default).to.deep.equal({});
|
|
11
|
-
});
|
|
12
|
-
});
|
|
13
|
-
//# sourceMappingURL=index.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/__tests__/index.test.ts"],"names":[],"mappings":";;;;;AAAA,+BAA8B;AAC9B,qDAA6B;AAE7B,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,IAAA,aAAM,EAAC,eAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from 'chai';\nimport index from '../index';\n\ndescribe('index', () => {\n it('Should load main for test', async () => {\n expect(index).to.deep.equal({});\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
/// <reference types="../../../types/global" />
|
|
7
|
-
const chai_1 = __importDefault(require("chai"));
|
|
8
|
-
const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
|
|
9
|
-
const setup_test_1 = require("../../../tests/setup.test");
|
|
10
|
-
const artifacts_1 = require("../../dop/core/artifacts");
|
|
11
|
-
chai_1.default.use(chai_as_promised_1.default);
|
|
12
|
-
const { expect } = chai_1.default;
|
|
13
|
-
describe('artifact-downloader', () => {
|
|
14
|
-
before(async () => {
|
|
15
|
-
const useNativeArtifacts = false;
|
|
16
|
-
await (0, setup_test_1.initTestEngine)(useNativeArtifacts);
|
|
17
|
-
});
|
|
18
|
-
// Skipped because we don't want to run this on every build.
|
|
19
|
-
it.skip('Should download ALL artifacts - native and nodejs', async () => {
|
|
20
|
-
(0, artifacts_1.setUseNativeArtifacts)(true);
|
|
21
|
-
(0, artifacts_1.clearArtifactCache)();
|
|
22
|
-
for (let i = 1; i <= 10; i += 1) {
|
|
23
|
-
for (let j = 1; j <= 3; j += 1) {
|
|
24
|
-
if (i === 10 && j === 5) {
|
|
25
|
-
continue;
|
|
26
|
-
}
|
|
27
|
-
// console.log(`NATIVE: ${i}x${j}...`);
|
|
28
|
-
const inputs = {
|
|
29
|
-
nullifiers: new Array(i),
|
|
30
|
-
merkleRoot: BigInt(0),
|
|
31
|
-
boundParamsHash: BigInt(0),
|
|
32
|
-
commitmentsOut: new Array(j),
|
|
33
|
-
};
|
|
34
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
35
|
-
const artifacts =
|
|
36
|
-
// eslint-disable-next-line no-await-in-loop
|
|
37
|
-
await artifacts_1.artifactGetterDownloadJustInTime.getArtifacts(inputs);
|
|
38
|
-
expect(artifacts.vkey).to.not.be.undefined;
|
|
39
|
-
expect(artifacts.zkey).to.not.be.undefined;
|
|
40
|
-
expect(artifacts.wasm).to.be.undefined;
|
|
41
|
-
expect(artifacts.dat).to.not.be.undefined;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
(0, artifacts_1.clearArtifactCache)();
|
|
45
|
-
(0, artifacts_1.setUseNativeArtifacts)(false);
|
|
46
|
-
for (let i = 1; i <= 10; i += 1) {
|
|
47
|
-
for (let j = 1; j <= 5; j += 1) {
|
|
48
|
-
if (i === 10 && j === 5) {
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
// console.log(`NODEJS: ${i}x${j}...`);
|
|
52
|
-
const inputs = {
|
|
53
|
-
nullifiers: new Array(i),
|
|
54
|
-
merkleRoot: BigInt(0),
|
|
55
|
-
boundParamsHash: BigInt(0),
|
|
56
|
-
commitmentsOut: new Array(j),
|
|
57
|
-
};
|
|
58
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
59
|
-
const artifacts =
|
|
60
|
-
// eslint-disable-next-line no-await-in-loop
|
|
61
|
-
await artifacts_1.artifactGetterDownloadJustInTime.getArtifacts(inputs);
|
|
62
|
-
expect(artifacts.vkey).to.not.be.undefined;
|
|
63
|
-
expect(artifacts.zkey).to.not.be.undefined;
|
|
64
|
-
expect(artifacts.wasm).to.not.be.undefined;
|
|
65
|
-
expect(artifacts.dat).to.be.undefined;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}).timeout(30000);
|
|
69
|
-
});
|
|
70
|
-
//# sourceMappingURL=artifact-downloader.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-downloader.test.js","sourceRoot":"","sources":["../../../../src/services/artifacts/__tests__/artifact-downloader.test.ts"],"names":[],"mappings":"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","sourcesContent":["/// <reference types=\"../../../types/global\" />\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport { Artifact, ArtifactName } from 'dop-sharedmodels-v3';\nimport { initTestEngine } from '../../../tests/setup.test';\nimport {\n clearArtifactCache,\n overrideArtifact,\n artifactGetterDownloadJustInTime,\n artifactCache,\n setUseNativeArtifacts,\n} from '../../dop/core/artifacts';\nimport { PublicInputsDop } from 'dop-engine-v3';\nimport { getArtifactVariantString } from '../artifact-util';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\ndescribe('artifact-downloader', () => {\n before(async () => {\n const useNativeArtifacts = false;\n await initTestEngine(useNativeArtifacts);\n });\n\n // Skipped because we don't want to run this on every build.\n it.skip('Should download ALL artifacts - native and nodejs', async () => {\n setUseNativeArtifacts(true);\n\n clearArtifactCache();\n\n for (let i = 1; i <= 10; i += 1) {\n for (let j = 1; j <= 3; j += 1) {\n if (i === 10 && j === 5) {\n continue;\n }\n\n // console.log(`NATIVE: ${i}x${j}...`);\n\n const inputs: PublicInputsDop = {\n nullifiers: new Array<bigint>(i),\n merkleRoot: BigInt(0),\n boundParamsHash: BigInt(0),\n commitmentsOut: new Array<bigint>(j),\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const artifacts: Artifact =\n // eslint-disable-next-line no-await-in-loop\n await artifactGetterDownloadJustInTime.getArtifacts(inputs);\n\n expect(artifacts.vkey).to.not.be.undefined;\n expect(artifacts.zkey).to.not.be.undefined;\n expect(artifacts.wasm).to.be.undefined;\n expect(artifacts.dat).to.not.be.undefined;\n }\n }\n\n clearArtifactCache();\n setUseNativeArtifacts(false);\n\n for (let i = 1; i <= 10; i += 1) {\n for (let j = 1; j <= 5; j += 1) {\n if (i === 10 && j === 5) {\n continue;\n }\n\n // console.log(`NODEJS: ${i}x${j}...`);\n\n const inputs: PublicInputsDop = {\n nullifiers: new Array<bigint>(i),\n merkleRoot: BigInt(0),\n boundParamsHash: BigInt(0),\n commitmentsOut: new Array<bigint>(j),\n };\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const artifacts: Artifact =\n // eslint-disable-next-line no-await-in-loop\n await artifactGetterDownloadJustInTime.getArtifacts(inputs);\n\n expect(artifacts.vkey).to.not.be.undefined;\n expect(artifacts.zkey).to.not.be.undefined;\n expect(artifacts.wasm).to.not.be.undefined;\n expect(artifacts.dat).to.be.undefined;\n }\n }\n }).timeout(30_000);\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|