@dynamic-labs-wallet/browser 1.1.19 → 1.1.20

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/index.cjs CHANGED
@@ -1686,34 +1686,7 @@ const isHexString = (str)=>{
1686
1686
  * Chain-agnostic: used by every chain whose signer takes raw bytes (Solana,
1687
1687
  * TON, Stellar — Ed25519 — and Midnight — BIP340 Schnorr). The signing
1688
1688
  * algorithm is applied inside the MPC signer, not here.
1689
- */ const formatRawBytesMessage = (message)=>{
1690
- if (typeof message !== 'string') {
1691
- return message;
1692
- }
1693
- if (isHexString(message)) {
1694
- return new Uint8Array(Buffer.from(message, 'hex'));
1695
- }
1696
- return Buffer.from(message).toString('hex');
1697
- };
1698
- const formatSolanaMessage = (message)=>formatRawBytesMessage(message);
1699
- const formatTonMessage = (message)=>formatRawBytesMessage(message);
1700
- const formatStellarMessage = (message)=>formatRawBytesMessage(message);
1701
- const formatMidnightMessage = (message)=>formatRawBytesMessage(message);
1702
- /**
1703
- * EdBls12377.signBytes takes a raw Uint8Array (no hex-string form accepted),
1704
- * unlike formatRawBytesMessage's other consumers — so hex input decodes to
1705
- * bytes and plain text UTF-8-encodes to bytes, instead of staying a string.
1706
- */ const formatAleoMessage = (message)=>{
1707
- if (typeof message !== 'string') {
1708
- return message;
1709
- }
1710
- if (isHexString(message)) {
1711
- const hex = message.startsWith('0x') ? message.slice(2) : message;
1712
- return new Uint8Array(Buffer.from(hex, 'hex'));
1713
- }
1714
- return new Uint8Array(Buffer.from(message, 'utf-8'));
1715
- };
1716
- const formatMessage = (chainName, message)=>{
1689
+ */ const formatMessage = (chainName, message)=>{
1717
1690
  switch(chainName){
1718
1691
  case 'EVM':
1719
1692
  case 'TEMPO':
@@ -1721,17 +1694,17 @@ const formatMessage = (chainName, message)=>{
1721
1694
  case 'TRON':
1722
1695
  return formatTronMessage(message);
1723
1696
  case 'SVM':
1724
- return formatSolanaMessage(message);
1697
+ return core.formatRawMessageForSigning('SVM', message);
1725
1698
  case 'SUI':
1726
1699
  return message;
1727
1700
  case 'TON':
1728
- return formatTonMessage(message);
1701
+ return core.formatRawMessageForSigning('TON', message);
1729
1702
  case 'STELLAR':
1730
- return formatStellarMessage(message);
1703
+ return core.formatRawMessageForSigning('STELLAR', message);
1731
1704
  case 'MIDNIGHT':
1732
- return formatMidnightMessage(message);
1705
+ return core.formatRawMessageForSigning('MIDNIGHT', message);
1733
1706
  case 'ALEO':
1734
- return formatAleoMessage(message);
1707
+ return core.formatRawMessageForSigning('ALEO', message);
1735
1708
  default:
1736
1709
  throw new Error('Unsupported chain name');
1737
1710
  }
package/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BitcoinAddressType, MPC_RELAY_PROD_API_URL, DEFAULT_ED25519_VARIANT, getMPCChainConfig, parseNamespacedVersion, WalletApiError, NETWORK_ERROR_STATUS, BackupLocation, ENCRYPTED_SHARES_STORAGE_SUFFIX, Logger, handleAxiosError, WalletOperation, ThresholdSignatureScheme, WalletReadyState, classifyForwardMpcError, isRecoveredForwardMpcConnectionChurn, FEATURE_FLAGS, getClientThreshold, MPC_CONFIG, getTSSConfig, serializeMessageForForwardMPC, isEvmCompatibleChain, serializeError, createRejectablePromise, getReshareConfig, isBusinessAccountActionRequired, getRequiredExternalKeyShareId, verifiedCredentialNameToChainEnum, AuthMode, NoopLogger, DynamicApiClient, BusinessAccountClient, getEnvironmentFromUrl, IFRAME_DOMAIN_MAP } from '@dynamic-labs-wallet/core';
1
+ import { BitcoinAddressType, MPC_RELAY_PROD_API_URL, DEFAULT_ED25519_VARIANT, getMPCChainConfig, parseNamespacedVersion, WalletApiError, NETWORK_ERROR_STATUS, formatRawMessageForSigning, BackupLocation, ENCRYPTED_SHARES_STORAGE_SUFFIX, Logger, handleAxiosError, WalletOperation, ThresholdSignatureScheme, WalletReadyState, classifyForwardMpcError, isRecoveredForwardMpcConnectionChurn, FEATURE_FLAGS, getClientThreshold, MPC_CONFIG, getTSSConfig, serializeMessageForForwardMPC, isEvmCompatibleChain, serializeError, createRejectablePromise, getReshareConfig, isBusinessAccountActionRequired, getRequiredExternalKeyShareId, verifiedCredentialNameToChainEnum, AuthMode, NoopLogger, DynamicApiClient, BusinessAccountClient, getEnvironmentFromUrl, IFRAME_DOMAIN_MAP } from '@dynamic-labs-wallet/core';
2
2
  export * from '@dynamic-labs-wallet/core';
3
3
  export { Logger } from '@dynamic-labs-wallet/core';
4
4
  import { EdBls12377, BIP340, Ed25519, ExportableEd25519, Ecdsa, MessageHash, EcdsaSignature, EcdsaKeygenResult, ExportableEd25519KeygenResult, Ed25519KeygenResult, BIP340KeygenResult } from '#internal/web';
@@ -1687,34 +1687,7 @@ const isHexString = (str)=>{
1687
1687
  * Chain-agnostic: used by every chain whose signer takes raw bytes (Solana,
1688
1688
  * TON, Stellar — Ed25519 — and Midnight — BIP340 Schnorr). The signing
1689
1689
  * algorithm is applied inside the MPC signer, not here.
1690
- */ const formatRawBytesMessage = (message)=>{
1691
- if (typeof message !== 'string') {
1692
- return message;
1693
- }
1694
- if (isHexString(message)) {
1695
- return new Uint8Array(Buffer.from(message, 'hex'));
1696
- }
1697
- return Buffer.from(message).toString('hex');
1698
- };
1699
- const formatSolanaMessage = (message)=>formatRawBytesMessage(message);
1700
- const formatTonMessage = (message)=>formatRawBytesMessage(message);
1701
- const formatStellarMessage = (message)=>formatRawBytesMessage(message);
1702
- const formatMidnightMessage = (message)=>formatRawBytesMessage(message);
1703
- /**
1704
- * EdBls12377.signBytes takes a raw Uint8Array (no hex-string form accepted),
1705
- * unlike formatRawBytesMessage's other consumers — so hex input decodes to
1706
- * bytes and plain text UTF-8-encodes to bytes, instead of staying a string.
1707
- */ const formatAleoMessage = (message)=>{
1708
- if (typeof message !== 'string') {
1709
- return message;
1710
- }
1711
- if (isHexString(message)) {
1712
- const hex = message.startsWith('0x') ? message.slice(2) : message;
1713
- return new Uint8Array(Buffer.from(hex, 'hex'));
1714
- }
1715
- return new Uint8Array(Buffer.from(message, 'utf-8'));
1716
- };
1717
- const formatMessage = (chainName, message)=>{
1690
+ */ const formatMessage = (chainName, message)=>{
1718
1691
  switch(chainName){
1719
1692
  case 'EVM':
1720
1693
  case 'TEMPO':
@@ -1722,17 +1695,17 @@ const formatMessage = (chainName, message)=>{
1722
1695
  case 'TRON':
1723
1696
  return formatTronMessage(message);
1724
1697
  case 'SVM':
1725
- return formatSolanaMessage(message);
1698
+ return formatRawMessageForSigning('SVM', message);
1726
1699
  case 'SUI':
1727
1700
  return message;
1728
1701
  case 'TON':
1729
- return formatTonMessage(message);
1702
+ return formatRawMessageForSigning('TON', message);
1730
1703
  case 'STELLAR':
1731
- return formatStellarMessage(message);
1704
+ return formatRawMessageForSigning('STELLAR', message);
1732
1705
  case 'MIDNIGHT':
1733
- return formatMidnightMessage(message);
1706
+ return formatRawMessageForSigning('MIDNIGHT', message);
1734
1707
  case 'ALEO':
1735
- return formatAleoMessage(message);
1708
+ return formatRawMessageForSigning('ALEO', message);
1736
1709
  default:
1737
1710
  throw new Error('Unsupported chain name');
1738
1711
  }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/browser",
3
- "version": "1.1.19",
3
+ "version": "1.1.20",
4
4
  "license": "Licensed under the Dynamic Labs, Inc. Terms Of Service (https://www.dynamic.xyz/terms-conditions)",
5
5
  "type": "module",
6
6
  "dependencies": {
7
- "@dynamic-labs-wallet/core": "1.1.19",
7
+ "@dynamic-labs-wallet/core": "1.1.20",
8
8
  "@dynamic-labs-wallet/forward-mpc-client": "2.0.2",
9
- "@dynamic-labs-wallet/primitives": "1.1.19",
9
+ "@dynamic-labs-wallet/primitives": "1.1.20",
10
10
  "@dynamic-labs/sdk-api-core": "0.50.0",
11
11
  "@noble/curves": "1.8.0",
12
12
  "argon2id": "1.0.1",
package/src/utils.d.ts CHANGED
@@ -117,6 +117,16 @@ export declare const formatEvmMessage: (message: string | Uint8Array) => Message
117
117
  */
118
118
  export declare const formatTronMessage: (message: string | Uint8Array) => MessageHash;
119
119
  export declare const isHexString: (str: string) => boolean;
120
+ /**
121
+ * Normalizes a message to the bytes/hex form an MPC signer consumes:
122
+ * - string + hex charset → Uint8Array
123
+ * - string + plain text → hex-encoded string
124
+ * - Uint8Array → passthrough
125
+ *
126
+ * Chain-agnostic: used by every chain whose signer takes raw bytes (Solana,
127
+ * TON, Stellar — Ed25519 — and Midnight — BIP340 Schnorr). The signing
128
+ * algorithm is applied inside the MPC signer, not here.
129
+ */
120
130
  export declare const formatMessage: (chainName: string, message: string | Uint8Array) => string | Uint8Array | MessageHash;
121
131
  export declare const getGoogleOAuthAccountId: (verifiedCredentials: JwtVerifiedCredential[]) => string | undefined;
122
132
  export declare const createBackupData: ({ encryptedKeyShares, accountAddress, thresholdSignatureScheme, hasPassword, }: {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../packages/src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../packages/src/utils.ts"],"names":[],"mappings":"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"}