@ledgerhq/context-module 0.0.0-multisig-20250905101831 → 0.0.0-no-issue-rn-ble-reconnection-20250916150911
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/lib/cjs/package.json +1 -1
- package/lib/cjs/src/ContextModule.js +1 -1
- package/lib/cjs/src/ContextModule.js.map +1 -1
- package/lib/cjs/src/DefaultContextModule.js +1 -1
- package/lib/cjs/src/DefaultContextModule.js.map +3 -3
- package/lib/cjs/src/di.js +1 -1
- package/lib/cjs/src/di.js.map +3 -3
- package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
- package/lib/cjs/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
- package/lib/cjs/src/index.js +1 -1
- package/lib/cjs/src/index.js.map +2 -2
- package/lib/cjs/src/nft/domain/NftContextFieldLoader.js.map +1 -1
- package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js +2 -0
- package/lib/cjs/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
- package/lib/cjs/src/proxy/data/HttpProxyDataSource.js.map +7 -0
- package/lib/cjs/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
- package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js.map +1 -1
- package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js.map +1 -1
- package/lib/cjs/src/proxy/di/proxyModuleFactory.js +2 -0
- package/lib/cjs/src/proxy/di/proxyModuleFactory.js.map +7 -0
- package/lib/cjs/src/proxy/di/proxyTypes.js +2 -0
- package/lib/cjs/src/proxy/di/proxyTypes.js.map +7 -0
- package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
- package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
- package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
- package/lib/cjs/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
- package/lib/cjs/src/{transaction → proxy}/model/ProxyDelegateCall.js.map +1 -1
- package/lib/cjs/src/{transaction → proxy}/model/ProxyImplementationAddress.js.map +1 -1
- package/lib/cjs/src/shared/domain/ContextFieldLoader.js.map +1 -1
- package/lib/cjs/src/shared/domain/ContextLoader.js +1 -1
- package/lib/cjs/src/shared/domain/ContextLoader.js.map +1 -1
- package/lib/cjs/src/shared/model/TransactionContext.js +1 -1
- package/lib/cjs/src/shared/model/TransactionContext.js.map +1 -1
- package/lib/cjs/src/shared/model/TransactionFieldContext.js +2 -0
- package/lib/cjs/src/shared/model/TransactionFieldContext.js.map +7 -0
- package/lib/cjs/src/shared/model/TransactionSubset.js.map +1 -1
- package/lib/cjs/src/shared/model/TypedDataClearSignContext.js +1 -1
- package/lib/cjs/src/shared/model/TypedDataClearSignContext.js.map +3 -3
- package/lib/cjs/src/shared/model/TypedDataContext.js +1 -1
- package/lib/cjs/src/shared/model/TypedDataContext.js.map +1 -1
- package/lib/cjs/src/token/domain/TokenContextFieldLoader.js.map +1 -1
- package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js +2 -0
- package/lib/cjs/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
- package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js +1 -1
- package/lib/cjs/src/transaction/data/HttpTransactionDataSource.js.map +2 -2
- package/lib/cjs/src/transaction/di/transactionModuleFactory.js +1 -1
- package/lib/cjs/src/transaction/di/transactionModuleFactory.js.map +3 -3
- package/lib/cjs/src/transaction/di/transactionTypes.js +1 -1
- package/lib/cjs/src/transaction/di/transactionTypes.js.map +2 -2
- package/lib/cjs/src/transaction/domain/TransactionContextLoader.js +1 -1
- package/lib/cjs/src/transaction/domain/TransactionContextLoader.js.map +3 -3
- package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js +1 -1
- package/lib/cjs/src/transaction/domain/TransactionContextLoader.test.js.map +3 -3
- package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +1 -1
- package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
- package/lib/cjs/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
- package/lib/cjs/src/typed-data/data/FiltersDto.js +1 -1
- package/lib/cjs/src/typed-data/data/FiltersDto.js.map +1 -1
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
- package/lib/cjs/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
- package/lib/cjs/src/typed-data/data/TypedDataDataSource.js +1 -1
- package/lib/cjs/src/typed-data/data/TypedDataDataSource.js.map +1 -1
- package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
- package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
- package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
- package/lib/cjs/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
- package/lib/esm/package.json +1 -1
- package/lib/esm/src/DefaultContextModule.js +1 -1
- package/lib/esm/src/DefaultContextModule.js.map +3 -3
- package/lib/esm/src/di.js +1 -1
- package/lib/esm/src/di.js.map +3 -3
- package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js +1 -1
- package/lib/esm/src/dynamic-network/domain/DynamicNetworkContextLoader.js.map +3 -3
- package/lib/esm/src/index.js +1 -1
- package/lib/esm/src/index.js.map +2 -2
- package/lib/esm/src/nft/domain/NftContextFieldLoader.js.map +1 -1
- package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js +2 -0
- package/lib/esm/src/nft/domain/NftContextFieldLoader.test.js.map +7 -0
- package/lib/esm/src/proxy/data/HttpProxyDataSource.js.map +7 -0
- package/lib/esm/src/proxy/data/HttpProxyDataSource.test.js.map +7 -0
- package/lib/esm/src/proxy/di/proxyModuleFactory.js +2 -0
- package/lib/esm/src/proxy/di/proxyModuleFactory.js.map +7 -0
- package/lib/esm/src/proxy/di/proxyTypes.js +2 -0
- package/lib/esm/src/proxy/di/proxyTypes.js.map +7 -0
- package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js +2 -0
- package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.js.map +7 -0
- package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js +2 -0
- package/lib/esm/src/proxy/domain/ProxyContextFieldLoader.test.js.map +7 -0
- package/lib/esm/src/shared/domain/ContextFieldLoader.js.map +1 -1
- package/lib/esm/src/shared/model/TransactionFieldContext.js +1 -0
- package/lib/esm/src/shared/model/TransactionFieldContext.js.map +7 -0
- package/lib/esm/src/shared/model/TypedDataClearSignContext.js +1 -1
- package/lib/esm/src/shared/model/TypedDataClearSignContext.js.map +3 -3
- package/lib/esm/src/token/domain/TokenContextFieldLoader.js.map +1 -1
- package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js +2 -0
- package/lib/esm/src/token/domain/TokenContextFieldLoader.test.js.map +7 -0
- package/lib/esm/src/transaction/data/HttpTransactionDataSource.js +1 -1
- package/lib/esm/src/transaction/data/HttpTransactionDataSource.js.map +2 -2
- package/lib/esm/src/transaction/di/transactionModuleFactory.js +1 -1
- package/lib/esm/src/transaction/di/transactionModuleFactory.js.map +3 -3
- package/lib/esm/src/transaction/di/transactionTypes.js +1 -1
- package/lib/esm/src/transaction/di/transactionTypes.js.map +2 -2
- package/lib/esm/src/transaction/domain/TransactionContextLoader.js +1 -1
- package/lib/esm/src/transaction/domain/TransactionContextLoader.js.map +3 -3
- package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js +1 -1
- package/lib/esm/src/transaction/domain/TransactionContextLoader.test.js.map +3 -3
- package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.js.map +1 -1
- package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js +2 -0
- package/lib/esm/src/trusted-name/domain/TrustedNameContextFieldLoader.test.js.map +7 -0
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js +1 -1
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.js.map +3 -3
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
- package/lib/esm/src/typed-data/data/HttpTypedDataDataSource.test.js.map +3 -3
- package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js +1 -1
- package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.js.map +3 -3
- package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js +1 -1
- package/lib/esm/src/typed-data/domain/DefaultTypedDataContextLoader.test.js.map +3 -3
- package/lib/types/src/ContextModule.d.ts +2 -2
- package/lib/types/src/ContextModule.d.ts.map +1 -1
- package/lib/types/src/DefaultContextModule.d.ts +2 -4
- package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
- package/lib/types/src/di.d.ts.map +1 -1
- package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts +1 -2
- package/lib/types/src/dynamic-network/domain/DynamicNetworkContextLoader.d.ts.map +1 -1
- package/lib/types/src/index.d.ts +1 -0
- package/lib/types/src/index.d.ts.map +1 -1
- package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts +1 -1
- package/lib/types/src/nft/domain/NftContextFieldLoader.d.ts.map +1 -1
- package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts +2 -0
- package/lib/types/src/nft/domain/NftContextFieldLoader.test.d.ts.map +1 -0
- package/lib/types/src/{transaction → proxy}/data/HttpProxyDataSource.d.ts +2 -2
- package/lib/types/src/proxy/data/HttpProxyDataSource.d.ts.map +1 -0
- package/lib/types/src/proxy/data/HttpProxyDataSource.test.d.ts.map +1 -0
- package/lib/types/src/proxy/data/dto/ProxyDelegateCallDto.d.ts.map +1 -0
- package/lib/types/src/proxy/data/dto/ProxyImplementationAddressDto.d.ts.map +1 -0
- package/lib/types/src/proxy/di/proxyModuleFactory.d.ts +3 -0
- package/lib/types/src/proxy/di/proxyModuleFactory.d.ts.map +1 -0
- package/lib/types/src/proxy/di/proxyTypes.d.ts +5 -0
- package/lib/types/src/proxy/di/proxyTypes.d.ts.map +1 -0
- package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts +13 -0
- package/lib/types/src/proxy/domain/ProxyContextFieldLoader.d.ts.map +1 -0
- package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts +2 -0
- package/lib/types/src/proxy/domain/ProxyContextFieldLoader.test.d.ts.map +1 -0
- package/lib/types/src/proxy/model/ProxyDelegateCall.d.ts.map +1 -0
- package/lib/types/src/proxy/model/ProxyImplementationAddress.d.ts.map +1 -0
- package/lib/types/src/shared/domain/ContextFieldLoader.d.ts +1 -1
- package/lib/types/src/shared/domain/ContextFieldLoader.d.ts.map +1 -1
- package/lib/types/src/shared/domain/ContextLoader.d.ts +2 -1
- package/lib/types/src/shared/domain/ContextLoader.d.ts.map +1 -1
- package/lib/types/src/shared/model/TransactionContext.d.ts +0 -17
- package/lib/types/src/shared/model/TransactionContext.d.ts.map +1 -1
- package/lib/types/src/shared/model/TransactionFieldContext.d.ts +26 -0
- package/lib/types/src/shared/model/TransactionFieldContext.d.ts.map +1 -0
- package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts +33 -1
- package/lib/types/src/shared/model/TypedDataClearSignContext.d.ts.map +1 -1
- package/lib/types/src/shared/model/TypedDataContext.d.ts +3 -0
- package/lib/types/src/shared/model/TypedDataContext.d.ts.map +1 -1
- package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts +1 -1
- package/lib/types/src/token/domain/TokenContextFieldLoader.d.ts.map +1 -1
- package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts +2 -0
- package/lib/types/src/token/domain/TokenContextFieldLoader.test.d.ts.map +1 -0
- package/lib/types/src/transaction/data/HttpTransactionDataSource.d.ts.map +1 -1
- package/lib/types/src/transaction/di/transactionModuleFactory.d.ts.map +1 -1
- package/lib/types/src/transaction/di/transactionTypes.d.ts +0 -1
- package/lib/types/src/transaction/di/transactionTypes.d.ts.map +1 -1
- package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts +2 -4
- package/lib/types/src/transaction/domain/TransactionContextLoader.d.ts.map +1 -1
- package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts +1 -1
- package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.d.ts.map +1 -1
- package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts +2 -0
- package/lib/types/src/trusted-name/domain/TrustedNameContextFieldLoader.test.d.ts.map +1 -0
- package/lib/types/src/typed-data/data/FiltersDto.d.ts +32 -2
- package/lib/types/src/typed-data/data/FiltersDto.d.ts.map +1 -1
- package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts +3 -0
- package/lib/types/src/typed-data/data/HttpTypedDataDataSource.d.ts.map +1 -1
- package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts +1 -0
- package/lib/types/src/typed-data/data/HttpTypedDataDataSource.test.d.ts.map +1 -1
- package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts +2 -1
- package/lib/types/src/typed-data/data/TypedDataDataSource.d.ts.map +1 -1
- package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts +12 -1
- package/lib/types/src/typed-data/domain/DefaultTypedDataContextLoader.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +5 -5
- package/lib/cjs/src/transaction/data/HttpProxyDataSource.js.map +0 -7
- package/lib/cjs/src/transaction/data/HttpProxyDataSource.test.js.map +0 -7
- package/lib/esm/src/transaction/data/HttpProxyDataSource.js.map +0 -7
- package/lib/esm/src/transaction/data/HttpProxyDataSource.test.js.map +0 -7
- package/lib/types/src/transaction/data/HttpProxyDataSource.d.ts.map +0 -1
- package/lib/types/src/transaction/data/HttpProxyDataSource.test.d.ts.map +0 -1
- package/lib/types/src/transaction/data/dto/ProxyDelegateCallDto.d.ts.map +0 -1
- package/lib/types/src/transaction/data/dto/ProxyImplementationAddressDto.d.ts.map +0 -1
- package/lib/types/src/transaction/model/ProxyDelegateCall.d.ts.map +0 -1
- package/lib/types/src/transaction/model/ProxyImplementationAddress.d.ts.map +0 -1
- /package/lib/cjs/src/{transaction → proxy}/data/HttpProxyDataSource.js +0 -0
- /package/lib/cjs/src/{transaction → proxy}/data/HttpProxyDataSource.test.js +0 -0
- /package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js +0 -0
- /package/lib/cjs/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js +0 -0
- /package/lib/cjs/src/{transaction → proxy}/model/ProxyDelegateCall.js +0 -0
- /package/lib/cjs/src/{transaction → proxy}/model/ProxyImplementationAddress.js +0 -0
- /package/lib/esm/src/{transaction → proxy}/data/HttpProxyDataSource.js +0 -0
- /package/lib/esm/src/{transaction → proxy}/data/HttpProxyDataSource.test.js +0 -0
- /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js +0 -0
- /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.js.map +0 -0
- /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js +0 -0
- /package/lib/esm/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.js.map +0 -0
- /package/lib/esm/src/{transaction → proxy}/model/ProxyDelegateCall.js +0 -0
- /package/lib/esm/src/{transaction → proxy}/model/ProxyDelegateCall.js.map +0 -0
- /package/lib/esm/src/{transaction → proxy}/model/ProxyImplementationAddress.js +0 -0
- /package/lib/esm/src/{transaction → proxy}/model/ProxyImplementationAddress.js.map +0 -0
- /package/lib/types/src/{transaction → proxy}/data/HttpProxyDataSource.test.d.ts +0 -0
- /package/lib/types/src/{transaction → proxy}/data/dto/ProxyDelegateCallDto.d.ts +0 -0
- /package/lib/types/src/{transaction → proxy}/data/dto/ProxyImplementationAddressDto.d.ts +0 -0
- /package/lib/types/src/{transaction → proxy}/model/ProxyDelegateCall.d.ts +0 -0
- /package/lib/types/src/{transaction → proxy}/model/ProxyImplementationAddress.d.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/domain/ContextLoader.ts"],
|
|
4
|
-
"sourcesContent": ["import { type ClearSignContext } from \"@/shared/model/ClearSignContext\";\nimport {
|
|
4
|
+
"sourcesContent": ["import { type ClearSignContext } from \"@/shared/model/ClearSignContext\";\nimport { type TransactionContext } from \"@/shared/model/TransactionContext\";\nimport { type TransactionFieldContext } from \"@/shared/model/TransactionFieldContext\";\n\nexport type ContextLoader = {\n load: (transaction: TransactionContext) => Promise<ClearSignContext[]>;\n loadField?: (\n field: TransactionFieldContext,\n ) => Promise<ClearSignContext | null>;\n};\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["ContextLoader_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var n=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var s=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of d(e))!c.call(t,o)&&o!==r&&n(t,o,{get:()=>e[o],enumerable:!(i=a(e,o))||i.enumerable});return t};var p=t=>s(n({},"__esModule",{value:!0}),t);var l={};module.exports=p(l);
|
|
2
2
|
//# sourceMappingURL=TransactionContext.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/model/TransactionContext.ts"],
|
|
4
|
-
"sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\n\nimport { type
|
|
4
|
+
"sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\n\nimport { type TransactionSubset } from \"@/shared/model/TransactionSubset\";\n\nexport type TransactionContext = TransactionSubset & {\n deviceModelId: DeviceModelId; // needed to fetch the correct certificate\n challenge?: string;\n domain?: string;\n};\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["TransactionContext_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var a=Object.prototype.hasOwnProperty;var l=(d,e,r,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of s(e))!a.call(d,n)&&n!==r&&i(d,n,{get:()=>e[n],enumerable:!(t=o(e,n))||t.enumerable});return d};var x=d=>l(i({},"__esModule",{value:!0}),d);var L={};module.exports=x(L);
|
|
2
|
+
//# sourceMappingURL=TransactionFieldContext.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/model/TransactionFieldContext.ts"],
|
|
4
|
+
"sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\n\nimport { type ContextFieldLoaderKind } from \"@/shared/domain/ContextFieldLoader\";\n\nexport type TransactionFieldContext<\n T extends ContextFieldLoaderKind = ContextFieldLoaderKind,\n> = T extends ContextFieldLoaderKind.TOKEN\n ? {\n kind: ContextFieldLoaderKind.TOKEN;\n chainId: number;\n address: string;\n }\n : T extends ContextFieldLoaderKind.NFT\n ? {\n kind: ContextFieldLoaderKind.NFT;\n chainId: number;\n address: string;\n }\n : T extends ContextFieldLoaderKind.TRUSTED_NAME\n ? {\n kind: ContextFieldLoaderKind.TRUSTED_NAME;\n chainId: number;\n address: string;\n challenge: string;\n types: string[];\n sources: string[];\n }\n : T extends ContextFieldLoaderKind.PROXY_DELEGATE_CALL\n ? {\n kind: ContextFieldLoaderKind.PROXY_DELEGATE_CALL;\n chainId: number;\n proxyAddress: string;\n calldata: string;\n challenge: string;\n deviceModelId: DeviceModelId;\n }\n : never;\n"],
|
|
5
|
+
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
|
+
"names": ["TransactionFieldContext_exports", "__toCommonJS"]
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/model/TransactionSubset.ts"],
|
|
4
|
-
"sourcesContent": ["export type TransactionSubset = {\n chainId: number;\n data: string
|
|
4
|
+
"sourcesContent": ["export type TransactionSubset = {\n chainId: number;\n data: string;\n selector: string;\n to?: string;\n value?: bigint;\n from?: string;\n};\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["TransactionSubset_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var p=Object.defineProperty;var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var s=(t,e)=>{for(var n in e)p(t,n,{get:e[n],enumerable:!0})},y=(t,e,n,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of o(e))!i.call(t,r)&&r!==n&&p(t,r,{get:()=>e[r],enumerable:!(a=d(e,r))||a.enumerable});return t};var T=t=>y(p({},"__esModule",{value:!0}),t);var x={};s(x,{TypedDataCalldataParamPresence:()=>l,VERIFYING_CONTRACT_TOKEN_INDEX:()=>g});module.exports=T(x);const g=255;var l=(a=>(a.None="none",a.Present="present",a.VerifyingContract="verifying_contract",a))(l||{});0&&(module.exports={TypedDataCalldataParamPresence,VERIFYING_CONTRACT_TOKEN_INDEX});
|
|
2
2
|
//# sourceMappingURL=TypedDataClearSignContext.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/model/TypedDataClearSignContext.ts"],
|
|
4
|
-
"sourcesContent": ["import type { HexaString } from \"@ledgerhq/device-management-kit\";\n\n// The general informations for a typed message\nexport type TypedDataMessageInfo = {\n displayName: string;\n filtersCount: number;\n signature: string;\n};\n\n// Token index and descriptor. Needed for tokens that are referenced by a typed message\nexport type TypedDataTokenIndex = number;\nexport type TypedDataToken = string;\n// Special token index value when the referenced token is the verifying contract\nexport const VERIFYING_CONTRACT_TOKEN_INDEX = 255;\n\n// Typed message filters, to select fields to display, and provide formatting informations\nexport type TypedDataFilterPath = string;\nexport type TypedDataFilterWithToken = {\n type: \"amount\" | \"token\";\n displayName: string;\n tokenIndex: TypedDataTokenIndex;\n path: TypedDataFilterPath;\n signature: string;\n};\nexport type TypedDataFilterWithTrustedName = {\n type: \"trusted-name\";\n displayName: string;\n types: string[];\n sources: string[];\n typesAndSourcesPayload: string;\n path: TypedDataFilterPath;\n signature: string;\n};\nexport type TypedDataFilter =\n | {\n type: \"datetime\" | \"raw\";\n displayName: string;\n path: TypedDataFilterPath;\n signature: string;\n }\n | TypedDataFilterWithToken\n | TypedDataFilterWithTrustedName;\n\n// Clear signing context for a typed message\nexport type TypedDataClearSignContextSuccess = {\n type: \"success\";\n messageInfo: TypedDataMessageInfo;\n filters: Record<TypedDataFilterPath, TypedDataFilter>;\n trustedNamesAddresses: Record<TypedDataFilterPath, HexaString>;\n tokens: Record<TypedDataTokenIndex, TypedDataToken>;\n};\nexport type TypedDataClearSignContextError = {\n type: \"error\";\n error: Error;\n};\nexport type TypedDataClearSignContext =\n | TypedDataClearSignContextSuccess\n | TypedDataClearSignContextError;\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oCAAAE,IAAA,eAAAC,
|
|
6
|
-
"names": ["TypedDataClearSignContext_exports", "__export", "VERIFYING_CONTRACT_TOKEN_INDEX", "__toCommonJS"]
|
|
4
|
+
"sourcesContent": ["import type { HexaString } from \"@ledgerhq/device-management-kit\";\n\nimport {\n type ClearSignContextSuccess,\n type ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { type TransactionSubset } from \"@/shared/model/TransactionSubset\";\n\n// The general informations for a typed message\nexport type TypedDataMessageInfo = {\n displayName: string;\n filtersCount: number;\n signature: string;\n};\n\n// Token index and descriptor. Needed for tokens that are referenced by a typed message\nexport type TypedDataTokenIndex = number;\nexport type TypedDataToken = string;\n// Calldata index. Needed for calldatas that are referenced by a typed message\nexport type TypedDataCalldataIndex = number;\n// Special token index value when the referenced token is the verifying contract\nexport const VERIFYING_CONTRACT_TOKEN_INDEX = 255;\n\n// Typed message filters, to select fields to display, and provide formatting informations\nexport type TypedDataFilterPath = string;\nexport type TypedDataFilterWithToken = {\n type: \"amount\" | \"token\";\n displayName: string;\n tokenIndex: TypedDataTokenIndex;\n path: TypedDataFilterPath;\n signature: string;\n};\nexport type TypedDataFilterWithTrustedName = {\n type: \"trusted-name\";\n displayName: string;\n types: string[];\n sources: string[];\n typesAndSourcesPayload: string;\n path: TypedDataFilterPath;\n signature: string;\n};\nexport type TypedDataFilterCalldata = {\n type:\n | \"calldata-value\"\n | \"calldata-callee\"\n | \"calldata-chain-id\"\n | \"calldata-selector\"\n | \"calldata-amount\"\n | \"calldata-spender\";\n displayName: string;\n calldataIndex: TypedDataCalldataIndex;\n path: TypedDataFilterPath;\n signature: string;\n};\nexport type TypedDataFilter =\n | {\n type: \"datetime\" | \"raw\";\n displayName: string;\n path: TypedDataFilterPath;\n signature: string;\n }\n | TypedDataFilterWithToken\n | TypedDataFilterWithTrustedName\n | TypedDataFilterCalldata;\n\n// Calldata info when referenced by a typed message\nexport enum TypedDataCalldataParamPresence {\n None = \"none\",\n Present = \"present\",\n VerifyingContract = \"verifying_contract\",\n}\nexport type TypedDataFilterCalldataInfo = {\n displayName: string;\n calldataIndex: TypedDataCalldataIndex;\n valueFlag: boolean;\n calleeFlag: TypedDataCalldataParamPresence;\n chainIdFlag: boolean;\n selectorFlag: boolean;\n amountFlag: boolean;\n spenderFlag: TypedDataCalldataParamPresence;\n signature: string;\n};\nexport type TypedDataCalldataInfo = {\n filter: TypedDataFilterCalldataInfo;\n subset: TransactionSubset;\n};\n\n// Clear signing context for a typed message\nexport type TypedDataClearSignContextSuccess = {\n type: \"success\";\n messageInfo: TypedDataMessageInfo;\n filters: Record<TypedDataFilterPath, TypedDataFilter>;\n trustedNamesAddresses: Record<TypedDataFilterPath, HexaString>;\n tokens: Record<TypedDataTokenIndex, TypedDataToken>;\n calldatas: Record<TypedDataCalldataIndex, TypedDataCalldataInfo>;\n proxy?: ClearSignContextSuccess<ClearSignContextType.PROXY_DELEGATE_CALL>;\n};\nexport type TypedDataClearSignContextError = {\n type: \"error\";\n error: Error;\n};\nexport type TypedDataClearSignContext =\n | TypedDataClearSignContextSuccess\n | TypedDataClearSignContextError;\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oCAAAE,EAAA,mCAAAC,IAAA,eAAAC,EAAAJ,GAqBO,MAAMG,EAAiC,IA6CvC,IAAKD,OACVA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,kBAAoB,qBAHVA,OAAA",
|
|
6
|
+
"names": ["TypedDataClearSignContext_exports", "__export", "TypedDataCalldataParamPresence", "VERIFYING_CONTRACT_TOKEN_INDEX", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var i=Object.defineProperty;var
|
|
1
|
+
"use strict";var i=Object.defineProperty;var n=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var l=(t,e,d,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of p(e))!y.call(t,a)&&a!==d&&i(t,a,{get:()=>e[a],enumerable:!(r=n(e,a))||r.enumerable});return t};var o=t=>l(i({},"__esModule",{value:!0}),t);var s={};module.exports=o(s);
|
|
2
2
|
//# sourceMappingURL=TypedDataContext.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/model/TypedDataContext.ts"],
|
|
4
|
-
"sourcesContent": ["// The schema of a typed message\nexport type TypedDataSchema = Record<\n string,\n Array<{ name: string; type: string }>\n>;\n\n// The extracted message values, with their path\nexport type TypedDataFieldValues = Array<{ path: string; value: Uint8Array }>;\n\n// Context needed to fetch the clear signing context of a typed message\nexport type TypedDataContext = {\n verifyingContract: string;\n chainId: number;\n version: \"v1\" | \"v2\";\n schema: TypedDataSchema;\n fieldsValues: TypedDataFieldValues;\n};\n"],
|
|
4
|
+
"sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\n\n// The schema of a typed message\nexport type TypedDataSchema = Record<\n string,\n Array<{ name: string; type: string }>\n>;\n\n// The extracted message values, with their path\nexport type TypedDataFieldValues = Array<{ path: string; value: Uint8Array }>;\n\n// Context needed to fetch the clear signing context of a typed message\nexport type TypedDataContext = {\n deviceModelId: DeviceModelId; // needed to fetch the correct certificate\n verifyingContract: string;\n chainId: number;\n version: \"v1\" | \"v2\";\n schema: TypedDataSchema;\n fieldsValues: TypedDataFieldValues;\n challenge?: string;\n};\n"],
|
|
5
5
|
"mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
|
|
6
6
|
"names": ["TypedDataContext_exports", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/token/domain/TokenContextFieldLoader.ts"],
|
|
4
|
-
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport {\n type ContextFieldLoader,\n ContextFieldLoaderKind,\n} from \"@/shared/domain/ContextFieldLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { type TransactionFieldContext } from \"@/shared/model/
|
|
4
|
+
"sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport {\n type ContextFieldLoader,\n ContextFieldLoaderKind,\n} from \"@/shared/domain/ContextFieldLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { type TransactionFieldContext } from \"@/shared/model/TransactionFieldContext\";\nimport { type TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { tokenTypes } from \"@/token/di/tokenTypes\";\n\n@injectable()\nexport class TokenContextFieldLoader\n implements ContextFieldLoader<ContextFieldLoaderKind.TOKEN>\n{\n kind: ContextFieldLoaderKind.TOKEN = ContextFieldLoaderKind.TOKEN;\n\n constructor(\n @inject(tokenTypes.TokenDataSource) private _dataSource: TokenDataSource,\n ) {}\n\n async loadField(\n field: TransactionFieldContext<ContextFieldLoaderKind.TOKEN>,\n ): Promise<ClearSignContext> {\n const payload = await this._dataSource.getTokenInfosPayload({\n address: field.address,\n chainId: field.chainId,\n });\n return payload.caseOf({\n Left: (error): ClearSignContext => ({\n type: ClearSignContextType.ERROR,\n error,\n }),\n Right: (value): ClearSignContext => ({\n type: ClearSignContextType.TOKEN,\n payload: value,\n }),\n });\n }\n}\n"],
|
|
5
5
|
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAmC,qBAEnCC,EAGO,8CACPC,EAGO,2CAGPC,EAA2B,iCAGpB,IAAMC,EAAN,KAEP,CAGE,YAC8CC,EAC5C,CAD4C,iBAAAA,CAC3C,CAJH,KAAqC,yBAAuB,MAM5D,MAAM,UACJC,EAC2B,CAK3B,OAJgB,MAAM,KAAK,YAAY,qBAAqB,CAC1D,QAASA,EAAM,QACf,QAASA,EAAM,OACjB,CAAC,GACc,OAAO,CACpB,KAAOC,IAA6B,CAClC,KAAM,uBAAqB,MAC3B,MAAAA,CACF,GACA,MAAQC,IAA6B,CACnC,KAAM,uBAAqB,MAC3B,QAASA,CACX,EACF,CAAC,CACH,CACF,EA3BaJ,EAANK,EAAA,IADN,cAAW,EAOPC,EAAA,eAAO,aAAW,eAAe,IANzBN",
|
|
6
6
|
"names": ["TokenContextFieldLoader_exports", "__export", "TokenContextFieldLoader", "__toCommonJS", "import_inversify", "import_ContextFieldLoader", "import_ClearSignContext", "import_tokenTypes", "TokenContextFieldLoader", "_dataSource", "field", "error", "value", "__decorateClass", "__decorateParam"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=require("purify-ts"),l=require("../../shared/domain/ContextFieldLoader"),r=require("../../shared/model/ClearSignContext"),i=require("../../token/domain/TokenContextFieldLoader");describe("TokenContextFieldLoader",()=>{const o={getTokenInfosPayload:vi.fn()},d=new i.TokenContextFieldLoader(o),t={kind:l.ContextFieldLoaderKind.TOKEN,chainId:1,address:"0x1234567890abcdef"},s="0x123456789abcdef0";beforeEach(()=>{vi.resetAllMocks()}),describe("constructor",()=>{it("should initialize with correct kind",()=>{expect(d.kind).toBe(l.ContextFieldLoaderKind.TOKEN)})}),describe("loadField",()=>{it("should return error context when token data source fails",async()=>{const e=new Error("Token data source error");vi.spyOn(o,"getTokenInfosPayload").mockResolvedValue((0,n.Left)(e));const a=await d.loadField(t);expect(o.getTokenInfosPayload).toHaveBeenCalledWith({address:t.address,chainId:t.chainId}),expect(a).toEqual({type:r.ClearSignContextType.ERROR,error:e})}),it("should return token context when successful",async()=>{vi.spyOn(o,"getTokenInfosPayload").mockResolvedValue((0,n.Right)(s));const e=await d.loadField(t);expect(o.getTokenInfosPayload).toHaveBeenCalledWith({address:t.address,chainId:t.chainId}),expect(e).toEqual({type:r.ClearSignContextType.TOKEN,payload:s})}),it("should handle different chain IDs and addresses correctly",async()=>{const e={...t,chainId:137,address:"0xdeadbeef"};vi.spyOn(o,"getTokenInfosPayload").mockResolvedValue((0,n.Right)(s));const a=await d.loadField(e);expect(o.getTokenInfosPayload).toHaveBeenCalledWith({address:"0xdeadbeef",chainId:137}),expect(a).toEqual({type:r.ClearSignContextType.TOKEN,payload:s})}),it("should preserve error message from token data source",async()=>{const e=new Error("Network timeout error");vi.spyOn(o,"getTokenInfosPayload").mockResolvedValue((0,n.Left)(e));const a=await d.loadField(t);expect(a).toEqual({type:r.ClearSignContextType.ERROR,error:e})}),it("should handle empty token payload",async()=>{const e="";vi.spyOn(o,"getTokenInfosPayload").mockResolvedValue((0,n.Right)(e));const a=await d.loadField(t);expect(a).toEqual({type:r.ClearSignContextType.TOKEN,payload:e})})})});
|
|
2
|
+
//# sourceMappingURL=TokenContextFieldLoader.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/token/domain/TokenContextFieldLoader.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { ContextFieldLoaderKind } from \"@/shared/domain/ContextFieldLoader\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\nimport { type TransactionFieldContext } from \"@/shared/model/TransactionFieldContext\";\nimport { type TokenDataSource } from \"@/token/data/TokenDataSource\";\nimport { TokenContextFieldLoader } from \"@/token/domain/TokenContextFieldLoader\";\n\ndescribe(\"TokenContextFieldLoader\", () => {\n const mockTokenDataSource: TokenDataSource = {\n getTokenInfosPayload: vi.fn(),\n };\n const tokenContextFieldLoader = new TokenContextFieldLoader(\n mockTokenDataSource,\n );\n\n const mockTransactionField: TransactionFieldContext<ContextFieldLoaderKind.TOKEN> =\n {\n kind: ContextFieldLoaderKind.TOKEN,\n chainId: 1,\n address: \"0x1234567890abcdef\",\n };\n\n const mockTokenPayload = \"0x123456789abcdef0\";\n\n beforeEach(() => {\n vi.resetAllMocks();\n });\n\n describe(\"constructor\", () => {\n it(\"should initialize with correct kind\", () => {\n // THEN\n expect(tokenContextFieldLoader.kind).toBe(ContextFieldLoaderKind.TOKEN);\n });\n });\n\n describe(\"loadField\", () => {\n it(\"should return error context when token data source fails\", async () => {\n // GIVEN\n const error = new Error(\"Token data source error\");\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(error),\n );\n\n // WHEN\n const result =\n await tokenContextFieldLoader.loadField(mockTransactionField);\n\n // THEN\n expect(mockTokenDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n address: mockTransactionField.address,\n chainId: mockTransactionField.chainId,\n });\n expect(result).toEqual({\n type: ClearSignContextType.ERROR,\n error: error,\n });\n });\n\n it(\"should return token context when successful\", async () => {\n // GIVEN\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(mockTokenPayload),\n );\n\n // WHEN\n const result =\n await tokenContextFieldLoader.loadField(mockTransactionField);\n\n // THEN\n expect(mockTokenDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n address: mockTransactionField.address,\n chainId: mockTransactionField.chainId,\n });\n expect(result).toEqual({\n type: ClearSignContextType.TOKEN,\n payload: mockTokenPayload,\n });\n });\n\n it(\"should handle different chain IDs and addresses correctly\", async () => {\n // GIVEN\n const customField = {\n ...mockTransactionField,\n chainId: 137,\n address: \"0xdeadbeef\",\n };\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(mockTokenPayload),\n );\n\n // WHEN\n const result = await tokenContextFieldLoader.loadField(customField);\n\n // THEN\n expect(mockTokenDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n address: \"0xdeadbeef\",\n chainId: 137,\n });\n expect(result).toEqual({\n type: ClearSignContextType.TOKEN,\n payload: mockTokenPayload,\n });\n });\n\n it(\"should preserve error message from token data source\", async () => {\n // GIVEN\n const specificError = new Error(\"Network timeout error\");\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(specificError),\n );\n\n // WHEN\n const result =\n await tokenContextFieldLoader.loadField(mockTransactionField);\n\n // THEN\n expect(result).toEqual({\n type: ClearSignContextType.ERROR,\n error: specificError,\n });\n });\n\n it(\"should handle empty token payload\", async () => {\n // GIVEN\n const emptyPayload = \"\";\n vi.spyOn(mockTokenDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(emptyPayload),\n );\n\n // WHEN\n const result =\n await tokenContextFieldLoader.loadField(mockTransactionField);\n\n // THEN\n expect(result).toEqual({\n type: ClearSignContextType.TOKEN,\n payload: emptyPayload,\n });\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA4B,qBAE5BC,EAAuC,8CACvCC,EAAqC,2CAGrCC,EAAwC,kDAExC,SAAS,0BAA2B,IAAM,CACxC,MAAMC,EAAuC,CAC3C,qBAAsB,GAAG,GAAG,CAC9B,EACMC,EAA0B,IAAI,0BAClCD,CACF,EAEME,EACJ,CACE,KAAM,yBAAuB,MAC7B,QAAS,EACT,QAAS,oBACX,EAEIC,EAAmB,qBAEzB,WAAW,IAAM,CACf,GAAG,cAAc,CACnB,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,GAAG,sCAAuC,IAAM,CAE9C,OAAOF,EAAwB,IAAI,EAAE,KAAK,yBAAuB,KAAK,CACxE,CAAC,CACH,CAAC,EAED,SAAS,YAAa,IAAM,CAC1B,GAAG,2DAA4D,SAAY,CAEzE,MAAMG,EAAQ,IAAI,MAAM,yBAAyB,EACjD,GAAG,MAAMJ,EAAqB,sBAAsB,EAAE,qBACpD,QAAKI,CAAK,CACZ,EAGA,MAAMC,EACJ,MAAMJ,EAAwB,UAAUC,CAAoB,EAG9D,OAAOF,EAAoB,oBAAoB,EAAE,qBAAqB,CACpE,QAASE,EAAqB,QAC9B,QAASA,EAAqB,OAChC,CAAC,EACD,OAAOG,CAAM,EAAE,QAAQ,CACrB,KAAM,uBAAqB,MAC3B,MAAOD,CACT,CAAC,CACH,CAAC,EAED,GAAG,8CAA+C,SAAY,CAE5D,GAAG,MAAMJ,EAAqB,sBAAsB,EAAE,qBACpD,SAAMG,CAAgB,CACxB,EAGA,MAAME,EACJ,MAAMJ,EAAwB,UAAUC,CAAoB,EAG9D,OAAOF,EAAoB,oBAAoB,EAAE,qBAAqB,CACpE,QAASE,EAAqB,QAC9B,QAASA,EAAqB,OAChC,CAAC,EACD,OAAOG,CAAM,EAAE,QAAQ,CACrB,KAAM,uBAAqB,MAC3B,QAASF,CACX,CAAC,CACH,CAAC,EAED,GAAG,4DAA6D,SAAY,CAE1E,MAAMG,EAAc,CAClB,GAAGJ,EACH,QAAS,IACT,QAAS,YACX,EACA,GAAG,MAAMF,EAAqB,sBAAsB,EAAE,qBACpD,SAAMG,CAAgB,CACxB,EAGA,MAAME,EAAS,MAAMJ,EAAwB,UAAUK,CAAW,EAGlE,OAAON,EAAoB,oBAAoB,EAAE,qBAAqB,CACpE,QAAS,aACT,QAAS,GACX,CAAC,EACD,OAAOK,CAAM,EAAE,QAAQ,CACrB,KAAM,uBAAqB,MAC3B,QAASF,CACX,CAAC,CACH,CAAC,EAED,GAAG,uDAAwD,SAAY,CAErE,MAAMI,EAAgB,IAAI,MAAM,uBAAuB,EACvD,GAAG,MAAMP,EAAqB,sBAAsB,EAAE,qBACpD,QAAKO,CAAa,CACpB,EAGA,MAAMF,EACJ,MAAMJ,EAAwB,UAAUC,CAAoB,EAG9D,OAAOG,CAAM,EAAE,QAAQ,CACrB,KAAM,uBAAqB,MAC3B,MAAOE,CACT,CAAC,CACH,CAAC,EAED,GAAG,oCAAqC,SAAY,CAElD,MAAMC,EAAe,GACrB,GAAG,MAAMR,EAAqB,sBAAsB,EAAE,qBACpD,SAAMQ,CAAY,CACpB,EAGA,MAAMH,EACJ,MAAMJ,EAAwB,UAAUC,CAAoB,EAG9D,OAAOG,CAAM,EAAE,QAAQ,CACrB,KAAM,uBAAqB,MAC3B,QAASG,CACX,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_purify_ts", "import_ContextFieldLoader", "import_ClearSignContext", "import_TokenContextFieldLoader", "mockTokenDataSource", "tokenContextFieldLoader", "mockTransactionField", "mockTokenPayload", "error", "result", "customField", "specificError", "emptyPayload"]
|
|
7
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var U=Object.create;var c=Object.defineProperty;var
|
|
1
|
+
"use strict";var U=Object.create;var c=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var w=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var $=(o,e)=>{for(var t in e)c(o,t,{get:e[t],enumerable:!0})},V=(o,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of j(e))!K.call(o,i)&&i!==t&&c(o,i,{get:()=>e[i],enumerable:!(r=E(e,i))||r.enumerable});return o};var g=(o,e,t)=>(t=o!=null?U(w(o)):{},V(e||!o||!o.__esModule?c(t,"default",{value:o,enumerable:!0}):t,o)),B=o=>V(c({},"__esModule",{value:!0}),o),A=(o,e,t,r)=>{for(var i=r>1?void 0:r?E(e,t):e,s=o.length-1,n;s>=0;s--)(n=o[s])&&(i=(r?n(e,t,i):n(i))||i);return r&&i&&c(e,t,i),i},h=(o,e)=>(t,r)=>e(t,r,o);var Y={};$(Y,{HttpTransactionDataSource:()=>u});module.exports=B(Y);var _=g(require("axios")),y=require("inversify"),l=require("purify-ts"),b=require("../../config/di/configTypes"),P=require("../../pki/di/pkiTypes"),v=require("../../pki/model/KeyId"),N=require("../../pki/model/KeyUsage"),C=require("../../shared/constant/HttpHeaders"),a=require("../../shared/model/ClearSignContext"),d=require("../../shared/model/SignatureTags"),m=require("../../shared/utils/HexStringUtils"),I=g(require("../../../package.json"));let u=class{constructor(e,t){this.config=e;this._certificateLoader=t}async getTransactionDescriptors({chainId:e,address:t,selector:r,deviceModelId:i}){let s;try{s=(await _.default.request({method:"GET",url:`${this.config.cal.url}/dapps`,params:{output:"descriptors_calldata",chain_id:e,contracts:t,ref:`branch:${this.config.cal.branch}`},headers:{[C.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${I.default.version}`,[C.LEDGER_ORIGIN_TOKEN_HEADER]:this.config.originToken}})).data}catch(n){return(0,l.Left)(new Error(`[ContextModule] HttpTransactionDataSource: Failed to fetch transaction informations: ${n}`))}if(!Array.isArray(s))return(0,l.Left)(new Error("[ContextModule] HttpTransactionDataSource: Response is not an array"));if(s.length===0)return(0,l.Left)(new Error(`[ContextModule] HttpTransactionDataSource: No data for contract ${t} and selector ${r}`));for(const n of s){t=t.toLowerCase(),r=`0x${r.slice(2).toLowerCase()}`;const p=n.descriptors_calldata?.[t]?.[r];if(!p||!this.isCalldataDescriptorV1(p,this.config.cal.mode))continue;const S=p.transaction_info.descriptor.data,M=p.transaction_info.descriptor.signatures[this.config.cal.mode],R={targetDevice:i,keyUsage:N.KeyUsage.Calldata,keyId:v.KeyId.CalCalldataKey},T=await this._certificateLoader.loadCertificate(R),L={type:a.ClearSignContextType.TRANSACTION_INFO,payload:m.HexStringUtils.appendSignatureToPayload(S,M,d.INFO_SIGNATURE_TAG),certificate:T},D=[];for(const[f,O]of Object.entries(p.enums))for(const[F,{data:G,signatures:k}]of Object.entries(O))D.push({type:a.ClearSignContextType.ENUM,id:Number(f),value:Number(F),payload:m.HexStringUtils.appendSignatureToPayload(G,k[this.config.cal.mode],d.INFO_SIGNATURE_TAG),certificate:T});const x=p.fields.map(f=>({type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:f.descriptor,reference:this.getReference(f.param)}));return(0,l.Right)([L,...D,...x])}return(0,l.Left)(new Error(`[ContextModule] HttpTransactionDataSource: Invalid response for contract ${t} and selector ${r}`))}getReference(e){if(e.type==="TOKEN_AMOUNT"&&e.token!==void 0&&e.token.type==="path")return{type:a.ClearSignContextReferenceType.TOKEN,valuePath:this.toGenericPath(e.token.binary_path)};if(e.type==="TOKEN_AMOUNT"&&e.token!==void 0&&e.token.type==="constant")return{type:a.ClearSignContextReferenceType.TOKEN,value:e.token.value};if(e.type==="NFT"&&e.collection.type==="path")return{type:a.ClearSignContextReferenceType.NFT,valuePath:this.toGenericPath(e.collection.binary_path)};if(e.type==="NFT"&&e.collection.type==="constant")return{type:a.ClearSignContextReferenceType.NFT,value:e.collection.value};if(e.type==="TRUSTED_NAME"&&e.value.type==="path")return{type:a.ClearSignContextReferenceType.TRUSTED_NAME,valuePath:this.toGenericPath(e.value.binary_path),types:e.types,sources:e.sources};if(e.type==="ENUM"&&e.value.type==="path")return{type:a.ClearSignContextReferenceType.ENUM,valuePath:this.toGenericPath(e.value.binary_path),id:e.id};if(e.type==="CALLDATA"&&e.value.type==="path"&&e.callee.type==="path")return{type:a.ClearSignContextReferenceType.CALLDATA,valuePath:this.toGenericPath(e.value.binary_path),callee:this.toGenericPath(e.callee.binary_path),selector:e.selector?.type==="path"?this.toGenericPath(e.selector.binary_path):void 0,amount:e.amount?.type==="path"?this.toGenericPath(e.amount.binary_path):void 0,spender:e.spender?.type==="path"?this.toGenericPath(e.spender.binary_path):void 0,chainId:e.chainId?.type==="path"?this.toGenericPath(e.chainId.binary_path):void 0}}toGenericPath(e){return e.type==="CONTAINER"?e.value:e.elements.map(t=>{if(t.type==="ARRAY"){const{weight:r,...i}=t;return{itemSize:r,...i}}else if(t.type==="LEAF"){const{leaf_type:r,...i}=t;return{leafType:r,...i}}return t})}isCalldataDescriptorV1(e,t){return typeof e=="object"&&e.type==="calldata"&&e.version==="v1"&&this.isTransactionInfoV1(e.transaction_info,t)&&this.isEnumV1(e.enums,t)&&Array.isArray(e.fields)&&e.fields.every(r=>this.isFieldV1(r))}isTransactionInfoV1(e,t){return typeof e=="object"&&typeof e.descriptor=="object"&&typeof e.descriptor.data=="string"&&typeof e.descriptor.signatures=="object"&&typeof e.descriptor.signatures[t]=="string"}isEnumV1(e,t){return typeof e=="object"&&Object.entries(e).every(([r,i])=>typeof r=="string"&&typeof i=="object"&&Object.entries(i).every(([s,n])=>typeof s=="string"&&typeof n=="object"&&typeof n.data=="string"&&n.signatures!==void 0&&this.isCalldataSignatures(n.signatures,t)))}isCalldataSignatures(e,t){return typeof e=="object"&&typeof e[t]=="string"}isFieldV1(e){return typeof e=="object"&&typeof e.descriptor=="string"&&typeof e.param=="object"&&typeof e.param.value=="object"&&this.isDescriptorValueV1(e.param.value)&&(e.param.type==="RAW"||e.param.type==="AMOUNT"||e.param.type==="DATETIME"||e.param.type==="DURATION"||e.param.type==="UNIT"||e.param.type==="ENUM"||e.param.type==="NFT"&&this.isDescriptorValueV1(e.param.collection)||e.param.type==="TOKEN_AMOUNT"&&(e.param.token===void 0||this.isDescriptorValueV1(e.param.token))||e.param.type==="TRUSTED_NAME"&&Array.isArray(e.param.types)&&Array.isArray(e.param.sources)&&e.param.types.every(t=>typeof t=="string")&&e.param.sources.every(t=>typeof t=="string")||e.param.type==="CALLDATA"&&this.isDescriptorValueV1(e.param.value)&&this.isDescriptorValueV1(e.param.callee)&&(e.param.selector===void 0||this.isDescriptorValueV1(e.param.selector))&&(e.param.amount===void 0||this.isDescriptorValueV1(e.param.amount))&&(e.param.spender===void 0||this.isDescriptorValueV1(e.param.spender))&&(e.param.chainId===void 0||this.isDescriptorValueV1(e.param.chainId)))}isDescriptorValueV1(e){return typeof e=="object"&&typeof e.type_family=="string"&&["UINT","INT","UFIXED","FIXED","ADDRESS","BOOL","BYTES","STRING"].includes(e.type_family)&&(typeof e.type_size>"u"||typeof e.type_size=="number")&&(e.type==="path"&&this.isCalldataDescriptorValueBinaryPathV1(e)||e.type==="constant"&&this.isCalldataDescriptorValueConstantV1(e))}isCalldataDescriptorValueConstantV1(e){return typeof e=="object"&&e.type==="constant"&&typeof e.value=="string"}isCalldataDescriptorValueBinaryPathV1(e){return typeof e=="object"&&(e.type==="path"&&e.binary_path.type==="CONTAINER"&&["FROM","TO","VALUE"].includes(e.binary_path.value)||e.binary_path.type==="DATA"&&Array.isArray(e.binary_path.elements)&&e.binary_path.elements.every(t=>this.isPathElementV1(t)))}isPathElementV1(e){return typeof e=="object"&&(e.type==="REF"||e.type==="TUPLE"&&typeof e.offset=="number"||e.type==="ARRAY"&&typeof e.weight=="number"&&(typeof e.start>"u"||typeof e.start=="number")&&(typeof e.end>"u"||typeof e.end=="number")||e.type==="LEAF"&&typeof e.leaf_type=="string"&&["ARRAY_LEAF","TUPLE_LEAF","STATIC_LEAF","DYNAMIC_LEAF"].includes(e.leaf_type)||e.type==="SLICE"&&(typeof e.start>"u"||typeof e.start=="number")&&(typeof e.end>"u"||typeof e.end=="number"))}};u=A([(0,y.injectable)(),h(0,(0,y.inject)(b.configTypes.Config)),h(1,(0,y.inject)(P.pkiTypes.PkiCertificateLoader))],u);0&&(module.exports={HttpTransactionDataSource});
|
|
2
2
|
//# sourceMappingURL=HttpTransactionDataSource.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/transaction/data/HttpTransactionDataSource.ts"],
|
|
4
|
-
"sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleCalMode,\n type ContextModuleConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport { PkiCertificateInfo } from \"@/pki/model/PkiCertificateInfo\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport {\n ClearSignContextReference,\n ClearSignContextReferenceType,\n ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { GenericPath } from \"@/shared/model/GenericPath\";\nimport { INFO_SIGNATURE_TAG } from \"@/shared/model/SignatureTags\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n CalldataDescriptor,\n CalldataDescriptorContainerPathV1,\n CalldataDescriptorParam,\n CalldataDescriptorPathElementsV1,\n CalldataDescriptorPathElementV1,\n CalldataDescriptorV1,\n CalldataDescriptorValueBinaryPathV1,\n CalldataDescriptorValueConstantV1,\n CalldataDescriptorValueV1,\n CalldataDto,\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataSignatures,\n CalldataTransactionDescriptor,\n CalldataTransactionInfoV1,\n} from \"./dto/CalldataDto\";\nimport {\n GetTransactionDescriptorsParams,\n TransactionDataSource,\n} from \"./TransactionDataSource\";\n\n@injectable()\nexport class HttpTransactionDataSource implements TransactionDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n ) {}\n\n public async getTransactionDescriptors({\n chainId,\n address,\n selector,\n deviceModelId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, ClearSignContextSuccess[]>\n > {\n let dto: CalldataDto[] | undefined;\n try {\n const response = await axios.request<CalldataDto[]>({\n method: \"GET\",\n url: `${this.config.cal.url}/dapps`,\n params: {\n output: \"descriptors_calldata\",\n chain_id: chainId,\n contracts: address,\n // TODO revert to branch\n ref: `commit:14e65f0b9821ed63c40d5162fabfa818b24d5260`,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n dto = response.data;\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: Failed to fetch transaction informations: ${error}`,\n ),\n );\n }\n\n if (!Array.isArray(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: Response is not an array`,\n ),\n );\n }\n\n if (dto.length === 0) {\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: No data for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n for (const calldata of dto) {\n // Normalize the address and selector\n address = address.toLowerCase();\n selector = `0x${selector.slice(2).toLowerCase()}`;\n const calldataDescriptor =\n calldata.descriptors_calldata?.[address]?.[selector];\n\n if (\n !calldataDescriptor ||\n !this.isCalldataDescriptorV1(calldataDescriptor, this.config.cal.mode)\n ) {\n continue;\n }\n\n const infoData = calldataDescriptor.transaction_info.descriptor.data;\n const infoSignature =\n calldataDescriptor.transaction_info.descriptor.signatures[\n this.config.cal.mode\n ];\n\n const certificateInfos: PkiCertificateInfo = {\n targetDevice: deviceModelId,\n keyUsage: KeyUsage.Calldata,\n keyId: KeyId.CalCalldataKey,\n };\n const certificate: PkiCertificate | undefined =\n await this._certificateLoader.loadCertificate(certificateInfos);\n\n const info: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: HexStringUtils.appendSignatureToPayload(\n infoData,\n infoSignature,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n };\n\n const enums: ClearSignContextSuccess[] = [];\n for (const [id, values] of Object.entries(calldataDescriptor.enums)) {\n for (const [\n value,\n { data, signatures },\n ] of Object.entries<CalldataTransactionDescriptor>(values)) {\n enums.push({\n type: ClearSignContextType.ENUM,\n id: Number(id),\n value: Number(value),\n payload: HexStringUtils.appendSignatureToPayload(\n data,\n signatures[this.config.cal.mode]!,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n });\n }\n }\n\n const fields: ClearSignContextSuccess[] = calldataDescriptor.fields.map(\n (field) => ({\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: field.descriptor,\n reference: this.getReference(field.param),\n }),\n );\n return Right([info, ...enums, ...fields]);\n }\n\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: Invalid response for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n private getReference(\n param: CalldataDescriptorParam,\n ): ClearSignContextReference | undefined {\n if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n valuePath: this.toGenericPath(param.token.binary_path),\n };\n } else if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"constant\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n value: param.token.value,\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n valuePath: this.toGenericPath(param.collection.binary_path),\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"constant\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n value: param.collection.value,\n };\n } else if (param.type === \"TRUSTED_NAME\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.TRUSTED_NAME,\n valuePath: this.toGenericPath(param.value.binary_path),\n types: param.types,\n sources: param.sources,\n };\n } else if (param.type === \"ENUM\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.ENUM,\n valuePath: this.toGenericPath(param.value.binary_path),\n id: param.id,\n };\n } else if (\n param.type === \"CALLDATA\" &&\n param.value.type === \"path\" &&\n param.callee.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: this.toGenericPath(param.value.binary_path),\n callee: this.toGenericPath(param.callee.binary_path),\n selector:\n param.selector?.type === \"path\"\n ? this.toGenericPath(param.selector.binary_path)\n : undefined,\n amount:\n param.amount?.type === \"path\"\n ? this.toGenericPath(param.amount.binary_path)\n : undefined,\n spender:\n param.spender?.type === \"path\"\n ? this.toGenericPath(param.spender.binary_path)\n : undefined,\n chainId:\n param.chainId?.type === \"path\"\n ? this.toGenericPath(param.chainId.binary_path)\n : undefined,\n };\n }\n return undefined;\n }\n\n private toGenericPath(\n path: CalldataDescriptorContainerPathV1 | CalldataDescriptorPathElementsV1,\n ): GenericPath {\n if (path.type === \"CONTAINER\") {\n return path.value;\n }\n return path.elements.map((element) => {\n if (element.type === \"ARRAY\") {\n const { weight: itemSize, ...rest } = element;\n return {\n itemSize,\n ...rest,\n };\n } else if (element.type === \"LEAF\") {\n const { leaf_type: leafType, ...rest } = element;\n return {\n leafType,\n ...rest,\n };\n }\n return element;\n });\n }\n\n private isCalldataDescriptorV1(\n data: CalldataDescriptor,\n mode: ContextModuleCalMode,\n ): data is CalldataDescriptorV1 & {\n transaction_info: {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n };\n } {\n return (\n typeof data === \"object\" &&\n data.type === \"calldata\" &&\n data.version === \"v1\" &&\n this.isTransactionInfoV1(data.transaction_info, mode) &&\n this.isEnumV1(data.enums, mode) &&\n Array.isArray(data.fields) &&\n data.fields.every((f) => this.isFieldV1(f))\n );\n }\n\n private isTransactionInfoV1(\n data: CalldataTransactionInfoV1,\n mode: ContextModuleCalMode,\n ): data is CalldataTransactionInfoV1 & {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n } {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"object\" &&\n typeof data.descriptor.data === \"string\" &&\n typeof data.descriptor.signatures === \"object\" &&\n typeof data.descriptor.signatures[mode] === \"string\"\n );\n }\n\n private isEnumV1(\n calldata: CalldataEnumV1,\n mode: ContextModuleCalMode,\n ): calldata is CalldataEnumV1 {\n return (\n typeof calldata === \"object\" &&\n Object.entries(calldata).every(\n ([id, values]) =>\n typeof id === \"string\" &&\n typeof values === \"object\" &&\n Object.entries<CalldataTransactionDescriptor>(values).every(\n ([value, obj]) =>\n typeof value === \"string\" &&\n typeof obj === \"object\" &&\n typeof obj.data === \"string\" &&\n obj.signatures !== undefined &&\n this.isCalldataSignatures(obj.signatures, mode),\n ),\n )\n );\n }\n\n private isCalldataSignatures(\n data: CalldataSignatures,\n mode: ContextModuleCalMode,\n ): data is CalldataSignatures & { [_key in ContextModuleCalMode]: string } {\n return typeof data === \"object\" && typeof data[mode] === \"string\";\n }\n\n private isFieldV1(data: CalldataFieldV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"string\" &&\n typeof data.param === \"object\" &&\n typeof data.param.value === \"object\" &&\n this.isDescriptorValueV1(data.param.value) &&\n (data.param.type === \"RAW\" ||\n data.param.type === \"AMOUNT\" ||\n data.param.type === \"DATETIME\" ||\n data.param.type === \"DURATION\" ||\n data.param.type === \"UNIT\" ||\n data.param.type === \"ENUM\" ||\n (data.param.type === \"NFT\" &&\n this.isDescriptorValueV1(data.param.collection)) ||\n (data.param.type === \"TOKEN_AMOUNT\" &&\n (data.param.token === undefined ||\n this.isDescriptorValueV1(data.param.token))) ||\n (data.param.type === \"TRUSTED_NAME\" &&\n Array.isArray(data.param.types) &&\n Array.isArray(data.param.sources) &&\n data.param.types.every((t) => typeof t === \"string\") &&\n data.param.sources.every((t) => typeof t === \"string\")) ||\n (data.param.type === \"CALLDATA\" &&\n this.isDescriptorValueV1(data.param.value) &&\n this.isDescriptorValueV1(data.param.callee) &&\n (data.param.selector === undefined ||\n this.isDescriptorValueV1(data.param.selector)) &&\n (data.param.amount === undefined ||\n this.isDescriptorValueV1(data.param.amount))))\n );\n }\n\n private isDescriptorValueV1(data: CalldataDescriptorValueV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.type_family === \"string\" &&\n [\n \"UINT\",\n \"INT\",\n \"UFIXED\",\n \"FIXED\",\n \"ADDRESS\",\n \"BOOL\",\n \"BYTES\",\n \"STRING\",\n ].includes(data.type_family) &&\n (typeof data.type_size === \"undefined\" ||\n typeof data.type_size === \"number\") &&\n ((data.type === \"path\" &&\n this.isCalldataDescriptorValueBinaryPathV1(data)) ||\n (data.type === \"constant\" &&\n this.isCalldataDescriptorValueConstantV1(data)))\n );\n }\n\n private isCalldataDescriptorValueConstantV1(\n data: CalldataDescriptorValueConstantV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n data.type === \"constant\" &&\n typeof data.value === \"string\"\n );\n }\n\n private isCalldataDescriptorValueBinaryPathV1(\n data: CalldataDescriptorValueBinaryPathV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n ((data.type === \"path\" &&\n data.binary_path.type === \"CONTAINER\" &&\n [\"FROM\", \"TO\", \"VALUE\"].includes(data.binary_path.value)) ||\n (data.binary_path.type === \"DATA\" &&\n Array.isArray(data.binary_path.elements) &&\n data.binary_path.elements.every((e) => this.isPathElementV1(e))))\n );\n }\n\n private isPathElementV1(data: CalldataDescriptorPathElementV1): boolean {\n return (\n typeof data === \"object\" &&\n (data.type === \"REF\" ||\n (data.type === \"TUPLE\" && typeof data.offset === \"number\") ||\n (data.type === \"ARRAY\" &&\n typeof data.weight === \"number\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")) ||\n (data.type === \"LEAF\" &&\n typeof data.leaf_type === \"string\" &&\n [\"ARRAY_LEAF\", \"TUPLE_LEAF\", \"STATIC_LEAF\", \"DYNAMIC_LEAF\"].includes(\n data.leaf_type,\n )) ||\n (data.type === \"SLICE\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")))\n );\n }\n}\n"],
|
|
5
|
-
"mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,+BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAK5BC,EAAyB,6BAEzBC,EAAsB,6BACtBC,EAAyB,gCAGzBC,EAGO,yCACPC,EAKO,2CAEPC,EAAmC,wCACnCC,EAA+B,yCAC/BC,EAAoB,iCAyBb,IAAMC,EAAN,KAAiE,CACtE,YAC+CC,EAE5BC,EACjB,CAH6C,YAAAD,EAE5B,wBAAAC,CAChB,CAEH,MAAa,0BAA0B,CACrC,QAAAC,EACA,QAAAC,EACA,SAAAC,EACA,cAAAC,CACF,EAEE,CACA,IAAIC,EACJ,GAAI,
|
|
4
|
+
"sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleCalMode,\n type ContextModuleConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport { PkiCertificateInfo } from \"@/pki/model/PkiCertificateInfo\";\nimport {\n LEDGER_CLIENT_VERSION_HEADER,\n LEDGER_ORIGIN_TOKEN_HEADER,\n} from \"@/shared/constant/HttpHeaders\";\nimport {\n ClearSignContextReference,\n ClearSignContextReferenceType,\n ClearSignContextSuccess,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { GenericPath } from \"@/shared/model/GenericPath\";\nimport { INFO_SIGNATURE_TAG } from \"@/shared/model/SignatureTags\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n CalldataDescriptor,\n CalldataDescriptorContainerPathV1,\n CalldataDescriptorParam,\n CalldataDescriptorPathElementsV1,\n CalldataDescriptorPathElementV1,\n CalldataDescriptorV1,\n CalldataDescriptorValueBinaryPathV1,\n CalldataDescriptorValueConstantV1,\n CalldataDescriptorValueV1,\n CalldataDto,\n CalldataEnumV1,\n CalldataFieldV1,\n CalldataSignatures,\n CalldataTransactionDescriptor,\n CalldataTransactionInfoV1,\n} from \"./dto/CalldataDto\";\nimport {\n GetTransactionDescriptorsParams,\n TransactionDataSource,\n} from \"./TransactionDataSource\";\n\n@injectable()\nexport class HttpTransactionDataSource implements TransactionDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n ) {}\n\n public async getTransactionDescriptors({\n chainId,\n address,\n selector,\n deviceModelId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, ClearSignContextSuccess[]>\n > {\n let dto: CalldataDto[] | undefined;\n try {\n const response = await axios.request<CalldataDto[]>({\n method: \"GET\",\n url: `${this.config.cal.url}/dapps`,\n params: {\n output: \"descriptors_calldata\",\n chain_id: chainId,\n contracts: address,\n ref: `branch:${this.config.cal.branch}`,\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n [LEDGER_ORIGIN_TOKEN_HEADER]: this.config.originToken,\n },\n });\n dto = response.data;\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: Failed to fetch transaction informations: ${error}`,\n ),\n );\n }\n\n if (!Array.isArray(dto)) {\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: Response is not an array`,\n ),\n );\n }\n\n if (dto.length === 0) {\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: No data for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n for (const calldata of dto) {\n // Normalize the address and selector\n address = address.toLowerCase();\n selector = `0x${selector.slice(2).toLowerCase()}`;\n const calldataDescriptor =\n calldata.descriptors_calldata?.[address]?.[selector];\n\n if (\n !calldataDescriptor ||\n !this.isCalldataDescriptorV1(calldataDescriptor, this.config.cal.mode)\n ) {\n continue;\n }\n\n const infoData = calldataDescriptor.transaction_info.descriptor.data;\n const infoSignature =\n calldataDescriptor.transaction_info.descriptor.signatures[\n this.config.cal.mode\n ];\n\n const certificateInfos: PkiCertificateInfo = {\n targetDevice: deviceModelId,\n keyUsage: KeyUsage.Calldata,\n keyId: KeyId.CalCalldataKey,\n };\n const certificate: PkiCertificate | undefined =\n await this._certificateLoader.loadCertificate(certificateInfos);\n\n const info: ClearSignContextSuccess = {\n type: ClearSignContextType.TRANSACTION_INFO,\n payload: HexStringUtils.appendSignatureToPayload(\n infoData,\n infoSignature,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n };\n\n const enums: ClearSignContextSuccess[] = [];\n for (const [id, values] of Object.entries(calldataDescriptor.enums)) {\n for (const [\n value,\n { data, signatures },\n ] of Object.entries<CalldataTransactionDescriptor>(values)) {\n enums.push({\n type: ClearSignContextType.ENUM,\n id: Number(id),\n value: Number(value),\n payload: HexStringUtils.appendSignatureToPayload(\n data,\n signatures[this.config.cal.mode]!,\n INFO_SIGNATURE_TAG,\n ),\n certificate,\n });\n }\n }\n\n const fields: ClearSignContextSuccess[] = calldataDescriptor.fields.map(\n (field) => ({\n type: ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,\n payload: field.descriptor,\n reference: this.getReference(field.param),\n }),\n );\n return Right([info, ...enums, ...fields]);\n }\n\n return Left(\n new Error(\n `[ContextModule] HttpTransactionDataSource: Invalid response for contract ${address} and selector ${selector}`,\n ),\n );\n }\n\n private getReference(\n param: CalldataDescriptorParam,\n ): ClearSignContextReference | undefined {\n if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n valuePath: this.toGenericPath(param.token.binary_path),\n };\n } else if (\n param.type === \"TOKEN_AMOUNT\" &&\n param.token !== undefined &&\n param.token.type === \"constant\"\n ) {\n return {\n type: ClearSignContextReferenceType.TOKEN,\n value: param.token.value,\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n valuePath: this.toGenericPath(param.collection.binary_path),\n };\n } else if (param.type === \"NFT\" && param.collection.type === \"constant\") {\n return {\n type: ClearSignContextReferenceType.NFT,\n value: param.collection.value,\n };\n } else if (param.type === \"TRUSTED_NAME\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.TRUSTED_NAME,\n valuePath: this.toGenericPath(param.value.binary_path),\n types: param.types,\n sources: param.sources,\n };\n } else if (param.type === \"ENUM\" && param.value.type === \"path\") {\n return {\n type: ClearSignContextReferenceType.ENUM,\n valuePath: this.toGenericPath(param.value.binary_path),\n id: param.id,\n };\n } else if (\n param.type === \"CALLDATA\" &&\n param.value.type === \"path\" &&\n param.callee.type === \"path\"\n ) {\n return {\n type: ClearSignContextReferenceType.CALLDATA,\n valuePath: this.toGenericPath(param.value.binary_path),\n callee: this.toGenericPath(param.callee.binary_path),\n selector:\n param.selector?.type === \"path\"\n ? this.toGenericPath(param.selector.binary_path)\n : undefined,\n amount:\n param.amount?.type === \"path\"\n ? this.toGenericPath(param.amount.binary_path)\n : undefined,\n spender:\n param.spender?.type === \"path\"\n ? this.toGenericPath(param.spender.binary_path)\n : undefined,\n chainId:\n param.chainId?.type === \"path\"\n ? this.toGenericPath(param.chainId.binary_path)\n : undefined,\n };\n }\n return undefined;\n }\n\n private toGenericPath(\n path: CalldataDescriptorContainerPathV1 | CalldataDescriptorPathElementsV1,\n ): GenericPath {\n if (path.type === \"CONTAINER\") {\n return path.value;\n }\n return path.elements.map((element) => {\n if (element.type === \"ARRAY\") {\n const { weight: itemSize, ...rest } = element;\n return {\n itemSize,\n ...rest,\n };\n } else if (element.type === \"LEAF\") {\n const { leaf_type: leafType, ...rest } = element;\n return {\n leafType,\n ...rest,\n };\n }\n return element;\n });\n }\n\n private isCalldataDescriptorV1(\n data: CalldataDescriptor,\n mode: ContextModuleCalMode,\n ): data is CalldataDescriptorV1 & {\n transaction_info: {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n };\n } {\n return (\n typeof data === \"object\" &&\n data.type === \"calldata\" &&\n data.version === \"v1\" &&\n this.isTransactionInfoV1(data.transaction_info, mode) &&\n this.isEnumV1(data.enums, mode) &&\n Array.isArray(data.fields) &&\n data.fields.every((f) => this.isFieldV1(f))\n );\n }\n\n private isTransactionInfoV1(\n data: CalldataTransactionInfoV1,\n mode: ContextModuleCalMode,\n ): data is CalldataTransactionInfoV1 & {\n descriptor: {\n signatures: { [_key in ContextModuleCalMode]: string };\n };\n } {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"object\" &&\n typeof data.descriptor.data === \"string\" &&\n typeof data.descriptor.signatures === \"object\" &&\n typeof data.descriptor.signatures[mode] === \"string\"\n );\n }\n\n private isEnumV1(\n calldata: CalldataEnumV1,\n mode: ContextModuleCalMode,\n ): calldata is CalldataEnumV1 {\n return (\n typeof calldata === \"object\" &&\n Object.entries(calldata).every(\n ([id, values]) =>\n typeof id === \"string\" &&\n typeof values === \"object\" &&\n Object.entries<CalldataTransactionDescriptor>(values).every(\n ([value, obj]) =>\n typeof value === \"string\" &&\n typeof obj === \"object\" &&\n typeof obj.data === \"string\" &&\n obj.signatures !== undefined &&\n this.isCalldataSignatures(obj.signatures, mode),\n ),\n )\n );\n }\n\n private isCalldataSignatures(\n data: CalldataSignatures,\n mode: ContextModuleCalMode,\n ): data is CalldataSignatures & { [_key in ContextModuleCalMode]: string } {\n return typeof data === \"object\" && typeof data[mode] === \"string\";\n }\n\n private isFieldV1(data: CalldataFieldV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.descriptor === \"string\" &&\n typeof data.param === \"object\" &&\n typeof data.param.value === \"object\" &&\n this.isDescriptorValueV1(data.param.value) &&\n (data.param.type === \"RAW\" ||\n data.param.type === \"AMOUNT\" ||\n data.param.type === \"DATETIME\" ||\n data.param.type === \"DURATION\" ||\n data.param.type === \"UNIT\" ||\n data.param.type === \"ENUM\" ||\n (data.param.type === \"NFT\" &&\n this.isDescriptorValueV1(data.param.collection)) ||\n (data.param.type === \"TOKEN_AMOUNT\" &&\n (data.param.token === undefined ||\n this.isDescriptorValueV1(data.param.token))) ||\n (data.param.type === \"TRUSTED_NAME\" &&\n Array.isArray(data.param.types) &&\n Array.isArray(data.param.sources) &&\n data.param.types.every((t) => typeof t === \"string\") &&\n data.param.sources.every((t) => typeof t === \"string\")) ||\n (data.param.type === \"CALLDATA\" &&\n this.isDescriptorValueV1(data.param.value) &&\n this.isDescriptorValueV1(data.param.callee) &&\n (data.param.selector === undefined ||\n this.isDescriptorValueV1(data.param.selector)) &&\n (data.param.amount === undefined ||\n this.isDescriptorValueV1(data.param.amount)) &&\n (data.param.spender === undefined ||\n this.isDescriptorValueV1(data.param.spender)) &&\n (data.param.chainId === undefined ||\n this.isDescriptorValueV1(data.param.chainId))))\n );\n }\n\n private isDescriptorValueV1(data: CalldataDescriptorValueV1): boolean {\n return (\n typeof data === \"object\" &&\n typeof data.type_family === \"string\" &&\n [\n \"UINT\",\n \"INT\",\n \"UFIXED\",\n \"FIXED\",\n \"ADDRESS\",\n \"BOOL\",\n \"BYTES\",\n \"STRING\",\n ].includes(data.type_family) &&\n (typeof data.type_size === \"undefined\" ||\n typeof data.type_size === \"number\") &&\n ((data.type === \"path\" &&\n this.isCalldataDescriptorValueBinaryPathV1(data)) ||\n (data.type === \"constant\" &&\n this.isCalldataDescriptorValueConstantV1(data)))\n );\n }\n\n private isCalldataDescriptorValueConstantV1(\n data: CalldataDescriptorValueConstantV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n data.type === \"constant\" &&\n typeof data.value === \"string\"\n );\n }\n\n private isCalldataDescriptorValueBinaryPathV1(\n data: CalldataDescriptorValueBinaryPathV1,\n ): boolean {\n return (\n typeof data === \"object\" &&\n ((data.type === \"path\" &&\n data.binary_path.type === \"CONTAINER\" &&\n [\"FROM\", \"TO\", \"VALUE\"].includes(data.binary_path.value)) ||\n (data.binary_path.type === \"DATA\" &&\n Array.isArray(data.binary_path.elements) &&\n data.binary_path.elements.every((e) => this.isPathElementV1(e))))\n );\n }\n\n private isPathElementV1(data: CalldataDescriptorPathElementV1): boolean {\n return (\n typeof data === \"object\" &&\n (data.type === \"REF\" ||\n (data.type === \"TUPLE\" && typeof data.offset === \"number\") ||\n (data.type === \"ARRAY\" &&\n typeof data.weight === \"number\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")) ||\n (data.type === \"LEAF\" &&\n typeof data.leaf_type === \"string\" &&\n [\"ARRAY_LEAF\", \"TUPLE_LEAF\", \"STATIC_LEAF\", \"DYNAMIC_LEAF\"].includes(\n data.leaf_type,\n )) ||\n (data.type === \"SLICE\" &&\n (typeof data.start === \"undefined\" ||\n typeof data.start === \"number\") &&\n (typeof data.end === \"undefined\" || typeof data.end === \"number\")))\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["HttpTransactionDataSource_exports", "__export", "HttpTransactionDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_HttpHeaders", "import_ClearSignContext", "import_SignatureTags", "import_HexStringUtils", "import_package", "HttpTransactionDataSource", "config", "_certificateLoader", "chainId", "address", "selector", "deviceModelId", "dto", "axios", "PACKAGE", "error", "calldata", "calldataDescriptor", "infoData", "infoSignature", "certificateInfos", "certificate", "info", "enums", "id", "values", "value", "data", "signatures", "fields", "field", "param", "path", "element", "itemSize", "rest", "leafType", "mode", "f", "obj", "e", "__decorateClass", "__decorateParam"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var n=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var T=Object.getOwnPropertyNames;var f=Object.prototype.hasOwnProperty;var u=(o,t)=>{for(var a in t)n(o,a,{get:t[a],enumerable:!0})},d=(o,t,a,c)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of T(t))!f.call(o,r)&&r!==a&&n(o,r,{get:()=>t[r],enumerable:!(c=p(t,r))||c.enumerable});return o};var x=o=>d(n({},"__esModule",{value:!0}),o);var l={};u(l,{transactionModuleFactory:()=>C});module.exports=x(l);var i=require("inversify"),m=require("../../transaction/data/HttpTransactionDataSource"),e=require("../../transaction/di/transactionTypes"),s=require("../../transaction/domain/TransactionContextLoader");const C=()=>new i.ContainerModule(({bind:o})=>{o(e.transactionTypes.TransactionDataSource).to(m.HttpTransactionDataSource),o(e.transactionTypes.TransactionContextLoader).to(s.TransactionContextLoader)});0&&(module.exports={transactionModuleFactory});
|
|
2
2
|
//# sourceMappingURL=transactionModuleFactory.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/transaction/di/transactionModuleFactory.ts"],
|
|
4
|
-
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport {
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,
|
|
6
|
-
"names": ["transactionModuleFactory_exports", "__export", "transactionModuleFactory", "__toCommonJS", "import_inversify", "
|
|
4
|
+
"sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { HttpTransactionDataSource } from \"@/transaction/data/HttpTransactionDataSource\";\nimport { transactionTypes } from \"@/transaction/di/transactionTypes\";\nimport { TransactionContextLoader } from \"@/transaction/domain/TransactionContextLoader\";\n\nexport const transactionModuleFactory = () =>\n new ContainerModule(({ bind }) => {\n bind(transactionTypes.TransactionDataSource).to(HttpTransactionDataSource);\n bind(transactionTypes.TransactionContextLoader).to(\n TransactionContextLoader,\n );\n });\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAgC,qBAEhCC,EAA0C,wDAC1CC,EAAiC,6CACjCC,EAAyC,yDAElC,MAAML,EAA2B,IACtC,IAAI,kBAAgB,CAAC,CAAE,KAAAM,CAAK,IAAM,CAChCA,EAAK,mBAAiB,qBAAqB,EAAE,GAAG,2BAAyB,EACzEA,EAAK,mBAAiB,wBAAwB,EAAE,GAC9C,0BACF,CACF,CAAC",
|
|
6
|
+
"names": ["transactionModuleFactory_exports", "__export", "transactionModuleFactory", "__toCommonJS", "import_inversify", "import_HttpTransactionDataSource", "import_transactionTypes", "import_TransactionContextLoader", "bind"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var r=Object.defineProperty;var e=Object.getOwnPropertyDescriptor;var s=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var T=(a,o)=>{for(var n in o)r(a,n,{get:o[n],enumerable:!0})},S=(a,o,n,c)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of s(o))!i.call(a,t)&&t!==n&&r(a,t,{get:()=>o[t],enumerable:!(c=e(o,t))||c.enumerable});return a};var x=a=>S(r({},"__esModule",{value:!0}),a);var b={};T(b,{transactionTypes:()=>y});module.exports=x(b);const y={TransactionDataSource:Symbol.for("TransactionDataSource"),TransactionContextLoader:Symbol.for("TransactionContextLoader")};0&&(module.exports={transactionTypes});
|
|
2
2
|
//# sourceMappingURL=transactionTypes.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/transaction/di/transactionTypes.ts"],
|
|
4
|
-
"sourcesContent": ["export const transactionTypes = {\n TransactionDataSource: Symbol.for(\"TransactionDataSource\"),\n TransactionContextLoader: Symbol.for(\"TransactionContextLoader\"),\n
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAmB,CAC9B,sBAAuB,OAAO,IAAI,uBAAuB,EACzD,yBAA0B,OAAO,IAAI,0BAA0B,
|
|
4
|
+
"sourcesContent": ["export const transactionTypes = {\n TransactionDataSource: Symbol.for(\"TransactionDataSource\"),\n TransactionContextLoader: Symbol.for(\"TransactionContextLoader\"),\n};\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,sBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,EAAmB,CAC9B,sBAAuB,OAAO,IAAI,uBAAuB,EACzD,yBAA0B,OAAO,IAAI,0BAA0B,CACjE",
|
|
6
6
|
"names": ["transactionTypes_exports", "__export", "transactionTypes", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var R=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var P=(o,t)=>{for(var r in t)d(o,r,{get:t[r],enumerable:!0})},T=(o,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of R(t))!h.call(o,e)&&e!==r&&d(o,e,{get:()=>t[e],enumerable:!(a=C(t,e))||a.enumerable});return o};var E=o=>T(d({},"__esModule",{value:!0}),o),g=(o,t,r,a)=>{for(var e=a>1?void 0:a?C(t,r):t,n=o.length-1,i;n>=0;n--)(i=o[n])&&(e=(a?i(t,r,e):i(e))||e);return a&&e&&d(t,r,e),e},m=(o,t)=>(r,a)=>t(r,a,o);var v={};P(v,{TransactionContextLoader:()=>c});module.exports=E(v);var x=require("@ledgerhq/device-management-kit"),l=require("inversify"),D=require("../../proxy/di/proxyTypes"),s=require("../../shared/model/ClearSignContext"),S=require("../../transaction/di/transactionTypes");let c=class{constructor(t,r){this.transactionDataSource=t;this.proxyDataSource=r}async load(t){if(t.deviceModelId===x.DeviceModelId.NANO_S)return[];const{to:r,data:a,selector:e,chainId:n,deviceModelId:i}=t;if(r===void 0)return[];if(!(0,x.isHexaString)(e))return[{type:s.ClearSignContextType.ERROR,error:new Error("Invalid selector")}];const p=await this.transactionDataSource.getTransactionDescriptors({deviceModelId:i,address:r,chainId:n,selector:e});return p.isRight()&&p.extract().length>0?p.extract():(await this.proxyDataSource.getProxyDelegateCall({calldata:a,proxyAddress:r,chainId:n,challenge:""})).caseOf({Right:async({delegateAddresses:f})=>{const y=f[0];if(!y)return[{type:s.ClearSignContextType.ERROR,error:new Error(`[ContextModule] TransactionContextLoader: No delegate address found for proxy ${r}`)}];const u=await this.transactionDataSource.getTransactionDescriptors({deviceModelId:i,address:y,chainId:n,selector:e});return u.isRight()&&u.extract().length>0?[{type:s.ClearSignContextType.PROXY_DELEGATE_CALL,payload:"0x"},...u.extract()]:[{type:s.ClearSignContextType.ERROR,error:new Error(`[ContextModule] TransactionContextLoader: Unable to fetch contexts from contract address using proxy delegate call ${y}`)}]},Left:f=>Promise.resolve([{type:s.ClearSignContextType.ERROR,error:new Error(`[ContextModule] TransactionContextLoader: Unable to fetch contexts from contract address ${r}`)}])})}};c=g([(0,l.injectable)(),m(0,(0,l.inject)(S.transactionTypes.TransactionDataSource)),m(1,(0,l.inject)(D.proxyTypes.ProxyDataSource))],c);0&&(module.exports={TransactionContextLoader});
|
|
2
2
|
//# sourceMappingURL=TransactionContextLoader.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/transaction/domain/TransactionContextLoader.ts"],
|
|
4
|
-
"sourcesContent": ["import { DeviceModelId, isHexaString } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport
|
|
5
|
-
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA4C,2CAC5CC,EAAmC,
|
|
6
|
-
"names": ["TransactionContextLoader_exports", "__export", "TransactionContextLoader", "__toCommonJS", "import_device_management_kit", "import_inversify", "
|
|
4
|
+
"sourcesContent": ["import { DeviceModelId, isHexaString } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport type { ProxyDataSource } from \"@/proxy/data/HttpProxyDataSource\";\nimport { proxyTypes } from \"@/proxy/di/proxyTypes\";\nimport { ProxyDelegateCall } from \"@/proxy/model/ProxyDelegateCall\";\nimport { ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { TransactionContext } from \"@/shared/model/TransactionContext\";\nimport type { TransactionDataSource } from \"@/transaction/data/TransactionDataSource\";\nimport { transactionTypes } from \"@/transaction/di/transactionTypes\";\n\n@injectable()\nexport class TransactionContextLoader implements ContextLoader {\n constructor(\n @inject(transactionTypes.TransactionDataSource)\n private transactionDataSource: TransactionDataSource,\n @inject(proxyTypes.ProxyDataSource)\n private proxyDataSource: ProxyDataSource,\n ) {}\n\n async load(ctx: TransactionContext): Promise<ClearSignContext[]> {\n if (ctx.deviceModelId === DeviceModelId.NANO_S) {\n return [];\n }\n\n const { to, data, selector, chainId, deviceModelId } = ctx;\n if (to === undefined) {\n return [];\n }\n\n if (!isHexaString(selector)) {\n return [\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\"Invalid selector\"),\n },\n ];\n }\n\n // try to fetch the transaction descriptors from the transaction data source\n // using the smart contract address to\n const transactionContexts =\n await this.transactionDataSource.getTransactionDescriptors({\n deviceModelId,\n address: to,\n chainId,\n selector,\n });\n\n if (\n transactionContexts.isRight() &&\n transactionContexts.extract().length > 0\n ) {\n return transactionContexts.extract();\n }\n\n // if the transaction descriptors are not found, try to fetch the proxy delegate call\n // and return the proxy delegate call context\n const proxyDelegateCall = await this.proxyDataSource.getProxyDelegateCall({\n calldata: data,\n proxyAddress: to,\n chainId,\n challenge: \"\",\n });\n\n return proxyDelegateCall.caseOf<Promise<ClearSignContext[]>>({\n Right: async ({ delegateAddresses }: ProxyDelegateCall) => {\n const resolvedAddress = delegateAddresses[0];\n\n if (!resolvedAddress) {\n return [\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n `[ContextModule] TransactionContextLoader: No delegate address found for proxy ${to}`,\n ),\n },\n ];\n }\n\n const transactionProxyContexts =\n await this.transactionDataSource.getTransactionDescriptors({\n deviceModelId,\n address: resolvedAddress,\n chainId,\n selector,\n });\n\n if (\n transactionProxyContexts.isRight() &&\n transactionProxyContexts.extract().length > 0\n ) {\n return [\n // This payload is not used as the clear sign context is not used, only the subcontext that will be\n // fetched during the provide, with a correct challenge\n {\n type: ClearSignContextType.PROXY_DELEGATE_CALL,\n payload: \"0x\",\n },\n ...transactionProxyContexts.extract(),\n ];\n }\n\n return [\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n `[ContextModule] TransactionContextLoader: Unable to fetch contexts from contract address using proxy delegate call ${resolvedAddress}`,\n ),\n },\n ];\n },\n Left: (_) => {\n return Promise.resolve([\n {\n type: ClearSignContextType.ERROR,\n error: new Error(\n `[ContextModule] TransactionContextLoader: Unable to fetch contexts from contract address ${to}`,\n ),\n },\n ]);\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA4C,2CAC5CC,EAAmC,qBAGnCC,EAA2B,iCAG3BC,EAGO,2CAGPC,EAAiC,6CAG1B,IAAMC,EAAN,KAAwD,CAC7D,YAEUC,EAEAC,EACR,CAHQ,2BAAAD,EAEA,qBAAAC,CACP,CAEH,MAAM,KAAKC,EAAsD,CAC/D,GAAIA,EAAI,gBAAkB,gBAAc,OACtC,MAAO,CAAC,EAGV,KAAM,CAAE,GAAAC,EAAI,KAAAC,EAAM,SAAAC,EAAU,QAAAC,EAAS,cAAAC,CAAc,EAAIL,EACvD,GAAIC,IAAO,OACT,MAAO,CAAC,EAGV,GAAI,IAAC,gBAAaE,CAAQ,EACxB,MAAO,CACL,CACE,KAAM,uBAAqB,MAC3B,MAAO,IAAI,MAAM,kBAAkB,CACrC,CACF,EAKF,MAAMG,EACJ,MAAM,KAAK,sBAAsB,0BAA0B,CACzD,cAAAD,EACA,QAASJ,EACT,QAAAG,EACA,SAAAD,CACF,CAAC,EAEH,OACEG,EAAoB,QAAQ,GAC5BA,EAAoB,QAAQ,EAAE,OAAS,EAEhCA,EAAoB,QAAQ,GAKX,MAAM,KAAK,gBAAgB,qBAAqB,CACxE,SAAUJ,EACV,aAAcD,EACd,QAAAG,EACA,UAAW,EACb,CAAC,GAEwB,OAAoC,CAC3D,MAAO,MAAO,CAAE,kBAAAG,CAAkB,IAAyB,CACzD,MAAMC,EAAkBD,EAAkB,CAAC,EAE3C,GAAI,CAACC,EACH,MAAO,CACL,CACE,KAAM,uBAAqB,MAC3B,MAAO,IAAI,MACT,iFAAiFP,CAAE,EACrF,CACF,CACF,EAGF,MAAMQ,EACJ,MAAM,KAAK,sBAAsB,0BAA0B,CACzD,cAAAJ,EACA,QAASG,EACT,QAAAJ,EACA,SAAAD,CACF,CAAC,EAEH,OACEM,EAAyB,QAAQ,GACjCA,EAAyB,QAAQ,EAAE,OAAS,EAErC,CAGL,CACE,KAAM,uBAAqB,oBAC3B,QAAS,IACX,EACA,GAAGA,EAAyB,QAAQ,CACtC,EAGK,CACL,CACE,KAAM,uBAAqB,MAC3B,MAAO,IAAI,MACT,sHAAsHD,CAAe,EACvI,CACF,CACF,CACF,EACA,KAAOE,GACE,QAAQ,QAAQ,CACrB,CACE,KAAM,uBAAqB,MAC3B,MAAO,IAAI,MACT,4FAA4FT,CAAE,EAChG,CACF,CACF,CAAC,CAEL,CAAC,CACH,CACF,EAhHaJ,EAANc,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,mBAAiB,qBAAqB,GAE7CA,EAAA,eAAO,aAAW,eAAe,IAJzBf",
|
|
6
|
+
"names": ["TransactionContextLoader_exports", "__export", "TransactionContextLoader", "__toCommonJS", "import_device_management_kit", "import_inversify", "import_proxyTypes", "import_ClearSignContext", "import_transactionTypes", "TransactionContextLoader", "transactionDataSource", "proxyDataSource", "ctx", "to", "data", "selector", "chainId", "deviceModelId", "transactionContexts", "delegateAddresses", "resolvedAddress", "transactionProxyContexts", "_", "__decorateClass", "__decorateParam"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var o=require("purify-ts"),
|
|
1
|
+
"use strict";var c=require("@ledgerhq/device-management-kit"),o=require("purify-ts"),a=require("../../shared/model/ClearSignContext"),d=require("../../transaction/domain/TransactionContextLoader");describe("TransactionContextLoader",()=>{const r=vi.fn(),s=vi.fn(),l={getTransactionDescriptors:r},i={getProxyDelegateCall:s,getProxyImplementationAddress:vi.fn()},n=new d.TransactionContextLoader(l,i);beforeEach(()=>{vi.resetAllMocks()}),it("should return an empty array if no destination address is provided",async()=>{const e={},t=await n.load(e);expect(t).toEqual([])}),it("should return an empty array if 'to' is undefined",async()=>{const e={to:void 0,data:"0x"},t=await n.load(e);expect(t).toEqual([])}),it("should return an error if selector is invalid",async()=>{const e={to:"0x7",chainId:3,data:"0xzf68b302000000000000000000000000000000000000000000000000000000000002"},t=await n.load(e);expect(t).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("Invalid selector")}])}),it("should return an error if data source fails",async()=>{s.mockResolvedValue((0,o.Left)(new Error("data source error"))),r.mockResolvedValue((0,o.Left)(new Error("data source error")));const e={to:"0x7",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302"},t=await n.load(e);expect(r).toHaveBeenCalledWith({address:"0x7",chainId:3,selector:"0xaf68b302"}),expect(t).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("[ContextModule] TransactionContextLoader: Unable to fetch contexts from contract address 0x7")}])}),it("should return the contexts on success",async()=>{r.mockResolvedValue((0,o.Right)([{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"1234567890"},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])),s.mockResolvedValue((0,o.Left)(new Error("data source error")));const e={to:"0x7",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302"},t=await n.load(e);expect(t).toEqual([{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"1234567890"},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])}),it("should return the proxy delegate call context on success",async()=>{r.mockResolvedValueOnce((0,o.Right)([])),r.mockResolvedValue((0,o.Right)([{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"1234567890"},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])),s.mockResolvedValue((0,o.Right)({delegateAddresses:["0x7"],signedDescriptor:"0x1234567890abcdef"}));const e={to:"0x7",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302"},t=await n.load(e);expect(t).toEqual([{type:a.ClearSignContextType.PROXY_DELEGATE_CALL,payload:"0x"},{type:a.ClearSignContextType.TRANSACTION_INFO,payload:"1234567890"},{type:a.ClearSignContextType.TRANSACTION_FIELD_DESCRIPTION,payload:"deadbeef"}])}),it("should return an empty array if device model is NANO_S",async()=>{const e={deviceModelId:c.DeviceModelId.NANO_S,to:"0x7",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302"},t=await n.load(e);expect(t).toEqual([]),expect(r).not.toHaveBeenCalled(),expect(s).not.toHaveBeenCalled()}),it("should return an error when proxy delegate call succeeds but no delegate addresses are found",async()=>{r.mockResolvedValueOnce((0,o.Right)([])),s.mockResolvedValue((0,o.Right)({delegateAddresses:[],signedDescriptor:"0x1234567890abcdef"}));const e={to:"0x7",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302"},t=await n.load(e);expect(t).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("[ContextModule] TransactionContextLoader: No delegate address found for proxy 0x7")}])}),it("should return an error when proxy delegate call succeeds but transaction descriptors for resolved address fail",async()=>{r.mockResolvedValueOnce((0,o.Right)([])),r.mockResolvedValueOnce((0,o.Left)(new Error("data source error"))),s.mockResolvedValue((0,o.Right)({delegateAddresses:["0xResolvedAddress"],signedDescriptor:"0x1234567890abcdef"}));const e={to:"0x7",chainId:3,data:"0xaf68b302000000000000000000000000000000000000000000000000000000000002",selector:"0xaf68b302"},t=await n.load(e);expect(r).toHaveBeenCalledTimes(2),expect(r).toHaveBeenNthCalledWith(2,{address:"0xResolvedAddress",chainId:3,selector:"0xaf68b302"}),expect(t).toEqual([{type:a.ClearSignContextType.ERROR,error:new Error("[ContextModule] TransactionContextLoader: Unable to fetch contexts from contract address using proxy delegate call 0xResolvedAddress")}])})});
|
|
2
2
|
//# sourceMappingURL=TransactionContextLoader.test.js.map
|