@dynamic-labs-sdk/aleo 1.31.1 → 1.31.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.
- package/dist/{constants-B5ZekPm3.esm.js → constants-DjFwmNVw.esm.js} +2 -2
- package/dist/{constants-B5ZekPm3.esm.js.map → constants-DjFwmNVw.esm.js.map} +1 -1
- package/dist/{constants-CQhfKFAa.cjs → constants-XMltosSB.cjs} +2 -2
- package/dist/{constants-CQhfKFAa.cjs.map → constants-XMltosSB.cjs.map} +1 -1
- package/dist/{getNetworkByChainId-BfPBALUQ.esm.js → getNetworkByChainId-DAxc6aCo.esm.js} +2 -2
- package/dist/{getNetworkByChainId-BfPBALUQ.esm.js.map → getNetworkByChainId-DAxc6aCo.esm.js.map} +1 -1
- package/dist/{getNetworkByChainId-BeDTMZiX.cjs → getNetworkByChainId-zaxFVxfE.cjs} +2 -2
- package/dist/{getNetworkByChainId-BeDTMZiX.cjs.map → getNetworkByChainId-zaxFVxfE.cjs.map} +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.esm.js +2 -2
- package/dist/{registerAleoNetworkProviderBuilder-8z8X2G-v.cjs → registerAleoNetworkProviderBuilder-BBahF92D.cjs} +2 -2
- package/dist/{registerAleoNetworkProviderBuilder-8z8X2G-v.cjs.map → registerAleoNetworkProviderBuilder-BBahF92D.cjs.map} +1 -1
- package/dist/{registerAleoNetworkProviderBuilder-Dzpmsc0Z.esm.js → registerAleoNetworkProviderBuilder-DKDaXyO5.esm.js} +2 -2
- package/dist/{registerAleoNetworkProviderBuilder-Dzpmsc0Z.esm.js.map → registerAleoNetworkProviderBuilder-DKDaXyO5.esm.js.map} +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.d.ts.map +1 -1
- package/dist/waas.cjs +7 -3
- package/dist/waas.cjs.map +1 -1
- package/dist/waas.esm.js +9 -5
- package/dist/waas.esm.js.map +1 -1
- package/dist/walletStandard.cjs +3 -3
- package/dist/walletStandard.esm.js +3 -3
- package/package.json +3 -3
package/dist/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createWalletProviderForWaasAleo.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"createWalletProviderForWaasAleo.d.ts","sourceRoot":"","sources":["../../../../src/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAuB9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAOjF,KAAK,qCAAqC,GAAG;IAC3C,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,+BAA+B,uBAEzC,qCAAqC,KAAG,sBAyN1C,CAAC"}
|
package/dist/waas.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_constants = require('./constants-
|
|
1
|
+
const require_constants = require('./constants-XMltosSB.cjs');
|
|
2
2
|
const require_InvalidAleoTransactionIdError = require('./InvalidAleoTransactionIdError-DRDfoh4x.cjs');
|
|
3
|
-
const require_registerAleoNetworkProviderBuilder = require('./registerAleoNetworkProviderBuilder-
|
|
3
|
+
const require_registerAleoNetworkProviderBuilder = require('./registerAleoNetworkProviderBuilder-BBahF92D.cjs');
|
|
4
4
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
5
5
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
6
6
|
let _dynamic_labs_sdk_client_waas_core = require("@dynamic-labs-sdk/client/waas/core");
|
|
@@ -148,12 +148,16 @@ const createWalletProviderForWaasAleo = ({ dynamicClient }) => {
|
|
|
148
148
|
});
|
|
149
149
|
const waasClient = await waasProvider.getWaasClient();
|
|
150
150
|
const { signature: signedSessionId } = await (0, _dynamic_labs_sdk_client_core.getSignedSessionId)(dynamicClient);
|
|
151
|
-
const mfaToken = await (0, _dynamic_labs_sdk_client_core.
|
|
151
|
+
const { elevatedAccessToken, mfaToken } = await (0, _dynamic_labs_sdk_client_core.getActionAuthorizationTokens)({
|
|
152
|
+
mfaAction: _dynamic_labs_sdk_api_core.MFAAction.WalletWaasSign,
|
|
153
|
+
scope: _dynamic_labs_sdk_api_core.TokenScope.Walletsign
|
|
154
|
+
}, dynamicClient);
|
|
152
155
|
const { txId } = await waasClient.proveTransaction({
|
|
153
156
|
accountAddress: walletAccount.address,
|
|
154
157
|
authToken: dynamicClient.token ?? void 0,
|
|
155
158
|
broadcast: true,
|
|
156
159
|
chainId,
|
|
160
|
+
elevatedAccessToken,
|
|
157
161
|
functionName: transition.functionName,
|
|
158
162
|
inputs,
|
|
159
163
|
inputTypes: transition.inputTypes ?? inputs.map(inferAleoInputType),
|
package/dist/waas.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waas.cjs","names":["AleoInvalidTransactionError","WalletProviderEnum","DYNAMIC_WAAS_METADATA","getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses']","signMessage: WaasAleoWalletProvider['signMessage']","AleoFeatureUnsupportedError","decrypt: WaasAleoWalletProvider['decrypt']","requestRecords: WaasAleoWalletProvider['requestRecords']","requestTransaction: WaasAleoWalletProvider['requestTransaction']","AleoInvalidTransactionError","MFAAction","InvalidAleoTransactionIdError","WalletProviderPriority","packageName","packageVersion"],"sources":["../src/waas/utils/inferAleoInputType/inferAleoInputType.ts","../src/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.ts","../src/waas/addWaasAleoExtension/addWaasAleoExtension.ts","../src/exports/waas.ts"],"sourcesContent":["import { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\n\nconst MAX_INPUT_TYPE_INFERENCE_LENGTH = 256;\n\n/**\n * Best-effort fallback for deriving the Aleo literal type (e.g.\n * `address.public`, `u64.public`) of a public transition input when the\n * caller didn't supply `AleoTransition.inputTypes` explicitly. Used by\n * `createWalletProviderForWaasAleo` to build the `inputTypes` array\n * `proveTransaction` needs. Addresses (`aleo1...`) map to `address.public`;\n * integer literals carry their own type suffix (e.g. `123u64` → `u64.public`).\n * Boolean literals map to `boolean.public`. Anything else — including\n * private/record inputs, which cannot be inferred from a plaintext string\n * alone — falls back to `field.public`; callers with non-public inputs must\n * pass `inputTypes` explicitly.\n *\n * @param input - A single transition input value.\n * @returns The inferred Aleo literal type for the input.\n * @notInstrumented\n */\nexport const inferAleoInputType = (input: unknown): string => {\n const value = String(input);\n\n if (value.length > MAX_INPUT_TYPE_INFERENCE_LENGTH) return 'field.public';\n\n if (/^aleo1[a-z0-9]{58}$/.test(value)) return 'address.public';\n\n if (value === 'true' || value === 'false') return 'boolean.public';\n\n if (/^-?\\d+$/.test(value)) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_uninferrable',\n reason:\n 'numeric literals must include an Aleo type suffix (e.g. 100u64) unless inputTypes is provided',\n });\n }\n\n const match = /^-?\\d+(u8|u16|u32|u64|u128|i8|i16|i32|i64|i128)$/.exec(value);\n\n return match ? `${match[1]}.public` : 'field.public';\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n consumeMfaTokenIfRequiredForAction,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getSignedSessionId,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport { MFAAction, WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport { AleoFeatureUnsupportedError } from '../../../errors/AleoFeatureUnsupportedError';\nimport { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\nimport { InvalidAleoTransactionIdError } from '../../../errors/InvalidAleoTransactionIdError';\nimport type { WaasAleoWalletProvider } from '../../WaasAleoWalletProvider.types';\nimport { inferAleoInputType } from '../inferAleoInputType';\n\nconst ALEO_CHAIN = 'ALEO' as const;\n\nconst MAX_TRANSACTION_INPUT_LENGTH = 1024;\n\ntype CreateWalletProviderForWaasAleoParams = {\n dynamicClient: DynamicClient;\n};\n\n/**\n * Builds the Aleo WaaS (Dynamic-managed MPC) wallet provider.\n *\n * Wraps the generic `WaasProvider` (createWalletAccount, exportPrivateKey,\n * backup/recovery, etc. — all reused as-is) and layers Aleo-specific signing\n * on top by reaching for the raw WaaS client via `getWaasClient()`, since\n * Aleo's transaction model (`proveTransaction`, `findOwnedRecords`) doesn't\n * fit the chain-agnostic `signSerializedTransaction` surface. Only a single\n * transition per transaction is supported — batching multiple transitions\n * atomically isn't exposed by the underlying WaaS client yet. `signMessage`\n * and `decrypt` are unsupported: Aleo's MPC signer has no arbitrary-message\n * primitive, and the view key never leaves the WaaS iframe.\n *\n * @param params.dynamicClient - The Dynamic client instance.\n * @returns The Aleo WaaS wallet provider, registered by `addWaasAleoExtension`.\n * @notInstrumented\n */\nexport const createWalletProviderForWaasAleo = ({\n dynamicClient,\n}: CreateWalletProviderForWaasAleoParams): WaasAleoWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: ALEO_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: ALEO_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasAleoAddresses = getAllUserWaasAddressesForChain(\n { chain: ALEO_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasAleoAddresses,\n };\n };\n\n const signMessage: WaasAleoWalletProvider['signMessage'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'signMessage',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const decrypt: WaasAleoWalletProvider['decrypt'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'decrypt',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const requestRecords: WaasAleoWalletProvider['requestRecords'] = async ({\n options,\n program,\n walletAccount,\n }) => {\n const { networkId: chainId } = await getActiveNetworkId();\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const { records } = await waasClient.findOwnedRecords({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n chainId,\n signedSessionId,\n });\n\n const filteredRecords = records.filter((record) => {\n const typedRecord = record as { program_name?: unknown } | undefined;\n return typedRecord?.program_name === program;\n });\n\n if (options?.plaintext) {\n return {\n records: filteredRecords.map((record) => {\n const typedRecord = record as\n | { record_plaintext?: unknown }\n | undefined;\n return typedRecord?.record_plaintext ?? record;\n }),\n };\n }\n\n return { records: filteredRecords };\n };\n\n const requestTransaction: WaasAleoWalletProvider['requestTransaction'] =\n async ({ transaction, walletAccount }) => {\n const [transition, ...rest] = transaction.transitions;\n\n if (!transition) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_no_transitions',\n reason: 'transaction must contain at least one transition',\n });\n }\n\n if (rest.length > 0) {\n throw new AleoFeatureUnsupportedError({\n featureName: 'batch transitions',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n }\n\n const { networkId: chainId } = await getActiveNetworkId();\n\n if (transaction.chainId !== chainId) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_chain_id_mismatch',\n reason: 'transaction chainId does not match the active network',\n });\n }\n\n if (transaction.address !== walletAccount.address) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_address_mismatch',\n reason: 'transaction address does not match the selected wallet account',\n });\n }\n\n // The WaaS proving flow does not accept fee or privateFee; fees are\n // covered by Feemaster sponsorship, so those fields are intentionally\n // not forwarded.\n const inputs = transition.inputs.map((input) => {\n if (input === null || input === undefined) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n if (\n typeof input !== 'string' &&\n typeof input !== 'number' &&\n typeof input !== 'boolean' &&\n typeof input !== 'bigint'\n ) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n const inputString = String(input);\n\n if (inputString.length > MAX_TRANSACTION_INPUT_LENGTH) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_too_long',\n reason:\n 'one or more transition inputs exceed the maximum allowed length',\n });\n }\n\n return inputString;\n });\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n const mfaToken = await consumeMfaTokenIfRequiredForAction(\n { mfaAction: MFAAction.WalletWaasSign },\n dynamicClient\n );\n\n const { txId } = await waasClient.proveTransaction({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n broadcast: true,\n chainId,\n functionName: transition.functionName,\n inputs,\n inputTypes: transition.inputTypes ?? inputs.map(inferAleoInputType),\n mfaToken,\n programId: transition.program,\n signedSessionId,\n });\n\n if (!txId) {\n throw new InvalidAleoTransactionIdError({ txId: txId ?? '' });\n }\n\n return { transactionId: txId };\n };\n\n return {\n ...waasProvider,\n chain: ALEO_CHAIN,\n decrypt,\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n requestRecords,\n requestTransaction,\n signMessage,\n switchActiveNetwork,\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerAleoNetworkProviderBuilder } from '../../registerAleoNetworkProviderBuilder';\nimport { createWalletProviderForWaasAleo } from '../utils/createWalletProviderForWaasAleo';\n\nexport const WAAS_ALEO_EXTENSION_KEY = 'waasAleo';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Aleo extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Aleo blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addWaasAleoExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client);\n registerAleoNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasAleo({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWaasAleoExtension } from '../waas/addWaasAleoExtension';\n\nexport type { WaasAleoWalletProvider } from '../waas/WaasAleoWalletProvider.types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"waas.cjs","names":["AleoInvalidTransactionError","WalletProviderEnum","DYNAMIC_WAAS_METADATA","getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses']","signMessage: WaasAleoWalletProvider['signMessage']","AleoFeatureUnsupportedError","decrypt: WaasAleoWalletProvider['decrypt']","requestRecords: WaasAleoWalletProvider['requestRecords']","requestTransaction: WaasAleoWalletProvider['requestTransaction']","AleoInvalidTransactionError","MFAAction","TokenScope","InvalidAleoTransactionIdError","WalletProviderPriority","packageName","packageVersion"],"sources":["../src/waas/utils/inferAleoInputType/inferAleoInputType.ts","../src/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.ts","../src/waas/addWaasAleoExtension/addWaasAleoExtension.ts","../src/exports/waas.ts"],"sourcesContent":["import { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\n\nconst MAX_INPUT_TYPE_INFERENCE_LENGTH = 256;\n\n/**\n * Best-effort fallback for deriving the Aleo literal type (e.g.\n * `address.public`, `u64.public`) of a public transition input when the\n * caller didn't supply `AleoTransition.inputTypes` explicitly. Used by\n * `createWalletProviderForWaasAleo` to build the `inputTypes` array\n * `proveTransaction` needs. Addresses (`aleo1...`) map to `address.public`;\n * integer literals carry their own type suffix (e.g. `123u64` → `u64.public`).\n * Boolean literals map to `boolean.public`. Anything else — including\n * private/record inputs, which cannot be inferred from a plaintext string\n * alone — falls back to `field.public`; callers with non-public inputs must\n * pass `inputTypes` explicitly.\n *\n * @param input - A single transition input value.\n * @returns The inferred Aleo literal type for the input.\n * @notInstrumented\n */\nexport const inferAleoInputType = (input: unknown): string => {\n const value = String(input);\n\n if (value.length > MAX_INPUT_TYPE_INFERENCE_LENGTH) return 'field.public';\n\n if (/^aleo1[a-z0-9]{58}$/.test(value)) return 'address.public';\n\n if (value === 'true' || value === 'false') return 'boolean.public';\n\n if (/^-?\\d+$/.test(value)) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_uninferrable',\n reason:\n 'numeric literals must include an Aleo type suffix (e.g. 100u64) unless inputTypes is provided',\n });\n }\n\n const match = /^-?\\d+(u8|u16|u32|u64|u128|i8|i16|i32|i64|i128)$/.exec(value);\n\n return match ? `${match[1]}.public` : 'field.public';\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActionAuthorizationTokens,\n getActiveNetworkIdFromLastKnownRegistry,\n getSignedSessionId,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport {\n MFAAction,\n TokenScope,\n WalletProviderEnum,\n} from '@dynamic-labs/sdk-api-core';\n\nimport { AleoFeatureUnsupportedError } from '../../../errors/AleoFeatureUnsupportedError';\nimport { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\nimport { InvalidAleoTransactionIdError } from '../../../errors/InvalidAleoTransactionIdError';\nimport type { WaasAleoWalletProvider } from '../../WaasAleoWalletProvider.types';\nimport { inferAleoInputType } from '../inferAleoInputType';\n\nconst ALEO_CHAIN = 'ALEO' as const;\n\nconst MAX_TRANSACTION_INPUT_LENGTH = 1024;\n\ntype CreateWalletProviderForWaasAleoParams = {\n dynamicClient: DynamicClient;\n};\n\n/**\n * Builds the Aleo WaaS (Dynamic-managed MPC) wallet provider.\n *\n * Wraps the generic `WaasProvider` (createWalletAccount, exportPrivateKey,\n * backup/recovery, etc. — all reused as-is) and layers Aleo-specific signing\n * on top by reaching for the raw WaaS client via `getWaasClient()`, since\n * Aleo's transaction model (`proveTransaction`, `findOwnedRecords`) doesn't\n * fit the chain-agnostic `signSerializedTransaction` surface. Only a single\n * transition per transaction is supported — batching multiple transitions\n * atomically isn't exposed by the underlying WaaS client yet. `signMessage`\n * and `decrypt` are unsupported: Aleo's MPC signer has no arbitrary-message\n * primitive, and the view key never leaves the WaaS iframe.\n *\n * @param params.dynamicClient - The Dynamic client instance.\n * @returns The Aleo WaaS wallet provider, registered by `addWaasAleoExtension`.\n * @notInstrumented\n */\nexport const createWalletProviderForWaasAleo = ({\n dynamicClient,\n}: CreateWalletProviderForWaasAleoParams): WaasAleoWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: ALEO_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: ALEO_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasAleoAddresses = getAllUserWaasAddressesForChain(\n { chain: ALEO_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasAleoAddresses,\n };\n };\n\n const signMessage: WaasAleoWalletProvider['signMessage'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'signMessage',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const decrypt: WaasAleoWalletProvider['decrypt'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'decrypt',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const requestRecords: WaasAleoWalletProvider['requestRecords'] = async ({\n options,\n program,\n walletAccount,\n }) => {\n const { networkId: chainId } = await getActiveNetworkId();\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const { records } = await waasClient.findOwnedRecords({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n chainId,\n signedSessionId,\n });\n\n const filteredRecords = records.filter((record) => {\n const typedRecord = record as { program_name?: unknown } | undefined;\n return typedRecord?.program_name === program;\n });\n\n if (options?.plaintext) {\n return {\n records: filteredRecords.map((record) => {\n const typedRecord = record as\n | { record_plaintext?: unknown }\n | undefined;\n return typedRecord?.record_plaintext ?? record;\n }),\n };\n }\n\n return { records: filteredRecords };\n };\n\n const requestTransaction: WaasAleoWalletProvider['requestTransaction'] =\n async ({ transaction, walletAccount }) => {\n const [transition, ...rest] = transaction.transitions;\n\n if (!transition) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_no_transitions',\n reason: 'transaction must contain at least one transition',\n });\n }\n\n if (rest.length > 0) {\n throw new AleoFeatureUnsupportedError({\n featureName: 'batch transitions',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n }\n\n const { networkId: chainId } = await getActiveNetworkId();\n\n if (transaction.chainId !== chainId) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_chain_id_mismatch',\n reason: 'transaction chainId does not match the active network',\n });\n }\n\n if (transaction.address !== walletAccount.address) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_address_mismatch',\n reason: 'transaction address does not match the selected wallet account',\n });\n }\n\n // The WaaS proving flow does not accept fee or privateFee; fees are\n // covered by Feemaster sponsorship, so those fields are intentionally\n // not forwarded.\n const inputs = transition.inputs.map((input) => {\n if (input === null || input === undefined) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n if (\n typeof input !== 'string' &&\n typeof input !== 'number' &&\n typeof input !== 'boolean' &&\n typeof input !== 'bigint'\n ) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n const inputString = String(input);\n\n if (inputString.length > MAX_TRANSACTION_INPUT_LENGTH) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_too_long',\n reason:\n 'one or more transition inputs exceed the maximum allowed length',\n });\n }\n\n return inputString;\n });\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n const { elevatedAccessToken, mfaToken } =\n await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\n dynamicClient\n );\n\n const { txId } = await waasClient.proveTransaction({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n broadcast: true,\n chainId,\n elevatedAccessToken,\n functionName: transition.functionName,\n inputs,\n inputTypes: transition.inputTypes ?? inputs.map(inferAleoInputType),\n mfaToken,\n programId: transition.program,\n signedSessionId,\n });\n\n if (!txId) {\n throw new InvalidAleoTransactionIdError({ txId: txId ?? '' });\n }\n\n return { transactionId: txId };\n };\n\n return {\n ...waasProvider,\n chain: ALEO_CHAIN,\n decrypt,\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n requestRecords,\n requestTransaction,\n signMessage,\n switchActiveNetwork,\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerAleoNetworkProviderBuilder } from '../../registerAleoNetworkProviderBuilder';\nimport { createWalletProviderForWaasAleo } from '../utils/createWalletProviderForWaasAleo';\n\nexport const WAAS_ALEO_EXTENSION_KEY = 'waasAleo';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Aleo extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Aleo blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addWaasAleoExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client);\n registerAleoNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasAleo({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWaasAleoExtension } from '../waas/addWaasAleoExtension';\n\nexport type { WaasAleoWalletProvider } from '../waas/WaasAleoWalletProvider.types';\n"],"mappings":"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"}
|
package/dist/waas.esm.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { a as name, i as AleoFeatureUnsupportedError, o as version } from "./constants-
|
|
1
|
+
import { a as name, i as AleoFeatureUnsupportedError, o as version } from "./constants-DjFwmNVw.esm.js";
|
|
2
2
|
import { n as AleoInvalidTransactionError, t as InvalidAleoTransactionIdError } from "./InvalidAleoTransactionIdError-CZoNf2SE.esm.js";
|
|
3
|
-
import { t as registerAleoNetworkProviderBuilder } from "./registerAleoNetworkProviderBuilder-
|
|
3
|
+
import { t as registerAleoNetworkProviderBuilder } from "./registerAleoNetworkProviderBuilder-DKDaXyO5.esm.js";
|
|
4
4
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
5
|
-
import { WalletProviderPriority,
|
|
5
|
+
import { WalletProviderPriority, formatWalletProviderGroupKey, formatWalletProviderKey, getActionAuthorizationTokens, getActiveNetworkIdFromLastKnownRegistry, getDefaultClient, getSignedSessionId, getWalletProviderRegistry, hasExtension, registerExtension, switchActiveNetworkInLastKnownRegistry } from "@dynamic-labs-sdk/client/core";
|
|
6
6
|
import { DYNAMIC_WAAS_METADATA, createWaasProvider, getAllUserWaasAddressesForChain } from "@dynamic-labs-sdk/client/waas/core";
|
|
7
|
-
import { MFAAction, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
|
|
7
|
+
import { MFAAction, TokenScope, WalletProviderEnum } from "@dynamic-labs/sdk-api-core";
|
|
8
8
|
|
|
9
9
|
//#region src/waas/utils/inferAleoInputType/inferAleoInputType.ts
|
|
10
10
|
const MAX_INPUT_TYPE_INFERENCE_LENGTH = 256;
|
|
@@ -148,12 +148,16 @@ const createWalletProviderForWaasAleo = ({ dynamicClient }) => {
|
|
|
148
148
|
});
|
|
149
149
|
const waasClient = await waasProvider.getWaasClient();
|
|
150
150
|
const { signature: signedSessionId } = await getSignedSessionId(dynamicClient);
|
|
151
|
-
const mfaToken = await
|
|
151
|
+
const { elevatedAccessToken, mfaToken } = await getActionAuthorizationTokens({
|
|
152
|
+
mfaAction: MFAAction.WalletWaasSign,
|
|
153
|
+
scope: TokenScope.Walletsign
|
|
154
|
+
}, dynamicClient);
|
|
152
155
|
const { txId } = await waasClient.proveTransaction({
|
|
153
156
|
accountAddress: walletAccount.address,
|
|
154
157
|
authToken: dynamicClient.token ?? void 0,
|
|
155
158
|
broadcast: true,
|
|
156
159
|
chainId,
|
|
160
|
+
elevatedAccessToken,
|
|
157
161
|
functionName: transition.functionName,
|
|
158
162
|
inputs,
|
|
159
163
|
inputTypes: transition.inputTypes ?? inputs.map(inferAleoInputType),
|
package/dist/waas.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"waas.esm.js","names":["getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses']","signMessage: WaasAleoWalletProvider['signMessage']","decrypt: WaasAleoWalletProvider['decrypt']","requestRecords: WaasAleoWalletProvider['requestRecords']","requestTransaction: WaasAleoWalletProvider['requestTransaction']","packageName","packageVersion"],"sources":["../src/waas/utils/inferAleoInputType/inferAleoInputType.ts","../src/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.ts","../src/waas/addWaasAleoExtension/addWaasAleoExtension.ts","../src/exports/waas.ts"],"sourcesContent":["import { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\n\nconst MAX_INPUT_TYPE_INFERENCE_LENGTH = 256;\n\n/**\n * Best-effort fallback for deriving the Aleo literal type (e.g.\n * `address.public`, `u64.public`) of a public transition input when the\n * caller didn't supply `AleoTransition.inputTypes` explicitly. Used by\n * `createWalletProviderForWaasAleo` to build the `inputTypes` array\n * `proveTransaction` needs. Addresses (`aleo1...`) map to `address.public`;\n * integer literals carry their own type suffix (e.g. `123u64` → `u64.public`).\n * Boolean literals map to `boolean.public`. Anything else — including\n * private/record inputs, which cannot be inferred from a plaintext string\n * alone — falls back to `field.public`; callers with non-public inputs must\n * pass `inputTypes` explicitly.\n *\n * @param input - A single transition input value.\n * @returns The inferred Aleo literal type for the input.\n * @notInstrumented\n */\nexport const inferAleoInputType = (input: unknown): string => {\n const value = String(input);\n\n if (value.length > MAX_INPUT_TYPE_INFERENCE_LENGTH) return 'field.public';\n\n if (/^aleo1[a-z0-9]{58}$/.test(value)) return 'address.public';\n\n if (value === 'true' || value === 'false') return 'boolean.public';\n\n if (/^-?\\d+$/.test(value)) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_uninferrable',\n reason:\n 'numeric literals must include an Aleo type suffix (e.g. 100u64) unless inputTypes is provided',\n });\n }\n\n const match = /^-?\\d+(u8|u16|u32|u64|u128|i8|i16|i32|i64|i128)$/.exec(value);\n\n return match ? `${match[1]}.public` : 'field.public';\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n consumeMfaTokenIfRequiredForAction,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActiveNetworkIdFromLastKnownRegistry,\n getSignedSessionId,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport { MFAAction, WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\n\nimport { AleoFeatureUnsupportedError } from '../../../errors/AleoFeatureUnsupportedError';\nimport { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\nimport { InvalidAleoTransactionIdError } from '../../../errors/InvalidAleoTransactionIdError';\nimport type { WaasAleoWalletProvider } from '../../WaasAleoWalletProvider.types';\nimport { inferAleoInputType } from '../inferAleoInputType';\n\nconst ALEO_CHAIN = 'ALEO' as const;\n\nconst MAX_TRANSACTION_INPUT_LENGTH = 1024;\n\ntype CreateWalletProviderForWaasAleoParams = {\n dynamicClient: DynamicClient;\n};\n\n/**\n * Builds the Aleo WaaS (Dynamic-managed MPC) wallet provider.\n *\n * Wraps the generic `WaasProvider` (createWalletAccount, exportPrivateKey,\n * backup/recovery, etc. — all reused as-is) and layers Aleo-specific signing\n * on top by reaching for the raw WaaS client via `getWaasClient()`, since\n * Aleo's transaction model (`proveTransaction`, `findOwnedRecords`) doesn't\n * fit the chain-agnostic `signSerializedTransaction` surface. Only a single\n * transition per transaction is supported — batching multiple transitions\n * atomically isn't exposed by the underlying WaaS client yet. `signMessage`\n * and `decrypt` are unsupported: Aleo's MPC signer has no arbitrary-message\n * primitive, and the view key never leaves the WaaS iframe.\n *\n * @param params.dynamicClient - The Dynamic client instance.\n * @returns The Aleo WaaS wallet provider, registered by `addWaasAleoExtension`.\n * @notInstrumented\n */\nexport const createWalletProviderForWaasAleo = ({\n dynamicClient,\n}: CreateWalletProviderForWaasAleoParams): WaasAleoWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: ALEO_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: ALEO_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasAleoAddresses = getAllUserWaasAddressesForChain(\n { chain: ALEO_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasAleoAddresses,\n };\n };\n\n const signMessage: WaasAleoWalletProvider['signMessage'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'signMessage',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const decrypt: WaasAleoWalletProvider['decrypt'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'decrypt',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const requestRecords: WaasAleoWalletProvider['requestRecords'] = async ({\n options,\n program,\n walletAccount,\n }) => {\n const { networkId: chainId } = await getActiveNetworkId();\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const { records } = await waasClient.findOwnedRecords({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n chainId,\n signedSessionId,\n });\n\n const filteredRecords = records.filter((record) => {\n const typedRecord = record as { program_name?: unknown } | undefined;\n return typedRecord?.program_name === program;\n });\n\n if (options?.plaintext) {\n return {\n records: filteredRecords.map((record) => {\n const typedRecord = record as\n | { record_plaintext?: unknown }\n | undefined;\n return typedRecord?.record_plaintext ?? record;\n }),\n };\n }\n\n return { records: filteredRecords };\n };\n\n const requestTransaction: WaasAleoWalletProvider['requestTransaction'] =\n async ({ transaction, walletAccount }) => {\n const [transition, ...rest] = transaction.transitions;\n\n if (!transition) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_no_transitions',\n reason: 'transaction must contain at least one transition',\n });\n }\n\n if (rest.length > 0) {\n throw new AleoFeatureUnsupportedError({\n featureName: 'batch transitions',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n }\n\n const { networkId: chainId } = await getActiveNetworkId();\n\n if (transaction.chainId !== chainId) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_chain_id_mismatch',\n reason: 'transaction chainId does not match the active network',\n });\n }\n\n if (transaction.address !== walletAccount.address) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_address_mismatch',\n reason: 'transaction address does not match the selected wallet account',\n });\n }\n\n // The WaaS proving flow does not accept fee or privateFee; fees are\n // covered by Feemaster sponsorship, so those fields are intentionally\n // not forwarded.\n const inputs = transition.inputs.map((input) => {\n if (input === null || input === undefined) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n if (\n typeof input !== 'string' &&\n typeof input !== 'number' &&\n typeof input !== 'boolean' &&\n typeof input !== 'bigint'\n ) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n const inputString = String(input);\n\n if (inputString.length > MAX_TRANSACTION_INPUT_LENGTH) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_too_long',\n reason:\n 'one or more transition inputs exceed the maximum allowed length',\n });\n }\n\n return inputString;\n });\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n const mfaToken = await consumeMfaTokenIfRequiredForAction(\n { mfaAction: MFAAction.WalletWaasSign },\n dynamicClient\n );\n\n const { txId } = await waasClient.proveTransaction({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n broadcast: true,\n chainId,\n functionName: transition.functionName,\n inputs,\n inputTypes: transition.inputTypes ?? inputs.map(inferAleoInputType),\n mfaToken,\n programId: transition.program,\n signedSessionId,\n });\n\n if (!txId) {\n throw new InvalidAleoTransactionIdError({ txId: txId ?? '' });\n }\n\n return { transactionId: txId };\n };\n\n return {\n ...waasProvider,\n chain: ALEO_CHAIN,\n decrypt,\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n requestRecords,\n requestTransaction,\n signMessage,\n switchActiveNetwork,\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerAleoNetworkProviderBuilder } from '../../registerAleoNetworkProviderBuilder';\nimport { createWalletProviderForWaasAleo } from '../utils/createWalletProviderForWaasAleo';\n\nexport const WAAS_ALEO_EXTENSION_KEY = 'waasAleo';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Aleo extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Aleo blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addWaasAleoExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client);\n registerAleoNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasAleo({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWaasAleoExtension } from '../waas/addWaasAleoExtension';\n\nexport type { WaasAleoWalletProvider } from '../waas/WaasAleoWalletProvider.types';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"waas.esm.js","names":["getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId']","switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork']","getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses']","signMessage: WaasAleoWalletProvider['signMessage']","decrypt: WaasAleoWalletProvider['decrypt']","requestRecords: WaasAleoWalletProvider['requestRecords']","requestTransaction: WaasAleoWalletProvider['requestTransaction']","packageName","packageVersion"],"sources":["../src/waas/utils/inferAleoInputType/inferAleoInputType.ts","../src/waas/utils/createWalletProviderForWaasAleo/createWalletProviderForWaasAleo.ts","../src/waas/addWaasAleoExtension/addWaasAleoExtension.ts","../src/exports/waas.ts"],"sourcesContent":["import { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\n\nconst MAX_INPUT_TYPE_INFERENCE_LENGTH = 256;\n\n/**\n * Best-effort fallback for deriving the Aleo literal type (e.g.\n * `address.public`, `u64.public`) of a public transition input when the\n * caller didn't supply `AleoTransition.inputTypes` explicitly. Used by\n * `createWalletProviderForWaasAleo` to build the `inputTypes` array\n * `proveTransaction` needs. Addresses (`aleo1...`) map to `address.public`;\n * integer literals carry their own type suffix (e.g. `123u64` → `u64.public`).\n * Boolean literals map to `boolean.public`. Anything else — including\n * private/record inputs, which cannot be inferred from a plaintext string\n * alone — falls back to `field.public`; callers with non-public inputs must\n * pass `inputTypes` explicitly.\n *\n * @param input - A single transition input value.\n * @returns The inferred Aleo literal type for the input.\n * @notInstrumented\n */\nexport const inferAleoInputType = (input: unknown): string => {\n const value = String(input);\n\n if (value.length > MAX_INPUT_TYPE_INFERENCE_LENGTH) return 'field.public';\n\n if (/^aleo1[a-z0-9]{58}$/.test(value)) return 'address.public';\n\n if (value === 'true' || value === 'false') return 'boolean.public';\n\n if (/^-?\\d+$/.test(value)) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_uninferrable',\n reason:\n 'numeric literals must include an Aleo type suffix (e.g. 100u64) unless inputTypes is provided',\n });\n }\n\n const match = /^-?\\d+(u8|u16|u32|u64|u128|i8|i16|i32|i64|i128)$/.exec(value);\n\n return match ? `${match[1]}.public` : 'field.public';\n};\n","import type { DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n getActionAuthorizationTokens,\n getActiveNetworkIdFromLastKnownRegistry,\n getSignedSessionId,\n switchActiveNetworkInLastKnownRegistry,\n} from '@dynamic-labs-sdk/client/core';\nimport {\n DYNAMIC_WAAS_METADATA,\n createWaasProvider,\n getAllUserWaasAddressesForChain,\n} from '@dynamic-labs-sdk/client/waas/core';\nimport {\n MFAAction,\n TokenScope,\n WalletProviderEnum,\n} from '@dynamic-labs/sdk-api-core';\n\nimport { AleoFeatureUnsupportedError } from '../../../errors/AleoFeatureUnsupportedError';\nimport { AleoInvalidTransactionError } from '../../../errors/AleoInvalidTransactionError';\nimport { InvalidAleoTransactionIdError } from '../../../errors/InvalidAleoTransactionIdError';\nimport type { WaasAleoWalletProvider } from '../../WaasAleoWalletProvider.types';\nimport { inferAleoInputType } from '../inferAleoInputType';\n\nconst ALEO_CHAIN = 'ALEO' as const;\n\nconst MAX_TRANSACTION_INPUT_LENGTH = 1024;\n\ntype CreateWalletProviderForWaasAleoParams = {\n dynamicClient: DynamicClient;\n};\n\n/**\n * Builds the Aleo WaaS (Dynamic-managed MPC) wallet provider.\n *\n * Wraps the generic `WaasProvider` (createWalletAccount, exportPrivateKey,\n * backup/recovery, etc. — all reused as-is) and layers Aleo-specific signing\n * on top by reaching for the raw WaaS client via `getWaasClient()`, since\n * Aleo's transaction model (`proveTransaction`, `findOwnedRecords`) doesn't\n * fit the chain-agnostic `signSerializedTransaction` surface. Only a single\n * transition per transaction is supported — batching multiple transitions\n * atomically isn't exposed by the underlying WaaS client yet. `signMessage`\n * and `decrypt` are unsupported: Aleo's MPC signer has no arbitrary-message\n * primitive, and the view key never leaves the WaaS iframe.\n *\n * @param params.dynamicClient - The Dynamic client instance.\n * @returns The Aleo WaaS wallet provider, registered by `addWaasAleoExtension`.\n * @notInstrumented\n */\nexport const createWalletProviderForWaasAleo = ({\n dynamicClient,\n}: CreateWalletProviderForWaasAleoParams): WaasAleoWalletProvider => {\n const walletProviderType = WalletProviderEnum.EmbeddedWallet;\n\n const key = formatWalletProviderKey({\n chain: ALEO_CHAIN,\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n walletProviderType,\n });\n\n const waasProvider = createWaasProvider({\n chain: ALEO_CHAIN,\n sdkClient: dynamicClient,\n });\n\n const getActiveNetworkId: WaasAleoWalletProvider['getActiveNetworkId'] =\n async () =>\n getActiveNetworkIdFromLastKnownRegistry({\n client: dynamicClient,\n walletProviderKey: key,\n });\n\n const switchActiveNetwork: WaasAleoWalletProvider['switchActiveNetwork'] =\n async ({ networkId }) =>\n switchActiveNetworkInLastKnownRegistry({\n client: dynamicClient,\n networkId,\n walletProviderKey: key,\n });\n\n const getConnectedAddresses: WaasAleoWalletProvider['getConnectedAddresses'] =\n async () => {\n const waasAleoAddresses = getAllUserWaasAddressesForChain(\n { chain: ALEO_CHAIN },\n dynamicClient\n );\n\n return {\n addresses: waasAleoAddresses,\n };\n };\n\n const signMessage: WaasAleoWalletProvider['signMessage'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'signMessage',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const decrypt: WaasAleoWalletProvider['decrypt'] = async () => {\n throw new AleoFeatureUnsupportedError({\n featureName: 'decrypt',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n };\n\n const requestRecords: WaasAleoWalletProvider['requestRecords'] = async ({\n options,\n program,\n walletAccount,\n }) => {\n const { networkId: chainId } = await getActiveNetworkId();\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n\n const { records } = await waasClient.findOwnedRecords({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n chainId,\n signedSessionId,\n });\n\n const filteredRecords = records.filter((record) => {\n const typedRecord = record as { program_name?: unknown } | undefined;\n return typedRecord?.program_name === program;\n });\n\n if (options?.plaintext) {\n return {\n records: filteredRecords.map((record) => {\n const typedRecord = record as\n | { record_plaintext?: unknown }\n | undefined;\n return typedRecord?.record_plaintext ?? record;\n }),\n };\n }\n\n return { records: filteredRecords };\n };\n\n const requestTransaction: WaasAleoWalletProvider['requestTransaction'] =\n async ({ transaction, walletAccount }) => {\n const [transition, ...rest] = transaction.transitions;\n\n if (!transition) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_no_transitions',\n reason: 'transaction must contain at least one transition',\n });\n }\n\n if (rest.length > 0) {\n throw new AleoFeatureUnsupportedError({\n featureName: 'batch transitions',\n walletName: DYNAMIC_WAAS_METADATA.displayName,\n });\n }\n\n const { networkId: chainId } = await getActiveNetworkId();\n\n if (transaction.chainId !== chainId) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_chain_id_mismatch',\n reason: 'transaction chainId does not match the active network',\n });\n }\n\n if (transaction.address !== walletAccount.address) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_address_mismatch',\n reason: 'transaction address does not match the selected wallet account',\n });\n }\n\n // The WaaS proving flow does not accept fee or privateFee; fees are\n // covered by Feemaster sponsorship, so those fields are intentionally\n // not forwarded.\n const inputs = transition.inputs.map((input) => {\n if (input === null || input === undefined) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n if (\n typeof input !== 'string' &&\n typeof input !== 'number' &&\n typeof input !== 'boolean' &&\n typeof input !== 'bigint'\n ) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_invalid',\n reason: 'one or more transition inputs are invalid',\n });\n }\n\n const inputString = String(input);\n\n if (inputString.length > MAX_TRANSACTION_INPUT_LENGTH) {\n throw new AleoInvalidTransactionError({\n code: 'aleo_transaction_input_too_long',\n reason:\n 'one or more transition inputs exceed the maximum allowed length',\n });\n }\n\n return inputString;\n });\n\n const waasClient = await waasProvider.getWaasClient();\n\n const { signature: signedSessionId } = await getSignedSessionId(\n dynamicClient\n );\n const { elevatedAccessToken, mfaToken } =\n await getActionAuthorizationTokens(\n {\n mfaAction: MFAAction.WalletWaasSign,\n scope: TokenScope.Walletsign,\n },\n dynamicClient\n );\n\n const { txId } = await waasClient.proveTransaction({\n accountAddress: walletAccount.address,\n authToken: dynamicClient.token ?? undefined,\n broadcast: true,\n chainId,\n elevatedAccessToken,\n functionName: transition.functionName,\n inputs,\n inputTypes: transition.inputTypes ?? inputs.map(inferAleoInputType),\n mfaToken,\n programId: transition.program,\n signedSessionId,\n });\n\n if (!txId) {\n throw new InvalidAleoTransactionIdError({ txId: txId ?? '' });\n }\n\n return { transactionId: txId };\n };\n\n return {\n ...waasProvider,\n chain: ALEO_CHAIN,\n decrypt,\n getActiveNetworkId,\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(DYNAMIC_WAAS_METADATA.displayName),\n key,\n metadata: {\n displayName: DYNAMIC_WAAS_METADATA.displayName,\n icon: DYNAMIC_WAAS_METADATA.icon,\n },\n requestRecords,\n requestTransaction,\n signMessage,\n switchActiveNetwork,\n walletProviderType,\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerAleoNetworkProviderBuilder } from '../../registerAleoNetworkProviderBuilder';\nimport { createWalletProviderForWaasAleo } from '../utils/createWalletProviderForWaasAleo';\n\nexport const WAAS_ALEO_EXTENSION_KEY = 'waasAleo';\n\n/**\n * Adds the Dynamic WaaS (Wallet as a Service) Aleo extension to the Dynamic client.\n *\n * This extension enables embedded wallet functionality for the Aleo blockchain,\n * allowing users to have wallets managed by Dynamic's infrastructure.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @notInstrumented\n */\nexport const addWaasAleoExtension = (client = getDefaultClient()): void => {\n if (hasExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client)) {\n return;\n }\n\n registerExtension({ extensionKey: WAAS_ALEO_EXTENSION_KEY }, client);\n registerAleoNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n const walletProvider = createWalletProviderForWaasAleo({\n dynamicClient: client,\n });\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SDK,\n walletProvider,\n });\n};\n","import { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addWaasAleoExtension } from '../waas/addWaasAleoExtension';\n\nexport type { WaasAleoWalletProvider } from '../waas/WaasAleoWalletProvider.types';\n"],"mappings":"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"}
|
package/dist/walletStandard.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const require_constants = require('./constants-
|
|
2
|
-
const require_getNetworkByChainId = require('./getNetworkByChainId-
|
|
3
|
-
const require_registerAleoNetworkProviderBuilder = require('./registerAleoNetworkProviderBuilder-
|
|
1
|
+
const require_constants = require('./constants-XMltosSB.cjs');
|
|
2
|
+
const require_getNetworkByChainId = require('./getNetworkByChainId-zaxFVxfE.cjs');
|
|
3
|
+
const require_registerAleoNetworkProviderBuilder = require('./registerAleoNetworkProviderBuilder-BBahF92D.cjs');
|
|
4
4
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
5
5
|
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
6
6
|
let _provablehq_aleo_types = require("@provablehq/aleo-types");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as name, i as AleoFeatureUnsupportedError, o as version, t as ALEO_MAINNET_NETWORK_ID } from "./constants-
|
|
2
|
-
import { t as ALEO_NETWORK_TO_ID_MAP } from "./getNetworkByChainId-
|
|
3
|
-
import { t as registerAleoNetworkProviderBuilder } from "./registerAleoNetworkProviderBuilder-
|
|
1
|
+
import { a as name, i as AleoFeatureUnsupportedError, o as version, t as ALEO_MAINNET_NETWORK_ID } from "./constants-DjFwmNVw.esm.js";
|
|
2
|
+
import { t as ALEO_NETWORK_TO_ID_MAP } from "./getNetworkByChainId-DAxc6aCo.esm.js";
|
|
3
|
+
import { t as registerAleoNetworkProviderBuilder } from "./registerAleoNetworkProviderBuilder-DKDaXyO5.esm.js";
|
|
4
4
|
import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
|
|
5
5
|
import { assertWalletAccountSigningAvailability } from "@dynamic-labs-sdk/client";
|
|
6
6
|
import { Network } from "@provablehq/aleo-types";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs-sdk/aleo",
|
|
3
|
-
"version": "1.31.
|
|
3
|
+
"version": "1.31.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.cjs",
|
|
6
6
|
"module": "./dist/index.esm.js",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"@provablehq/aleo-wallet-adaptor-core": "0.3.0-alpha.3",
|
|
33
33
|
"@provablehq/aleo-wallet-adaptor-shield": "0.3.0-alpha.3",
|
|
34
34
|
"@provablehq/aleo-wallet-standard": "0.3.0-alpha.3",
|
|
35
|
-
"@dynamic-labs-sdk/assert-package-version": "1.31.
|
|
36
|
-
"@dynamic-labs-sdk/client": "1.31.
|
|
35
|
+
"@dynamic-labs-sdk/assert-package-version": "1.31.2",
|
|
36
|
+
"@dynamic-labs-sdk/client": "1.31.2"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"vitest": "4.1.6"
|