@ledgerhq/context-module 2.1.0 → 2.3.0
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 +2 -2
- package/lib/cjs/src/ContextModuleBuilder.js +1 -1
- package/lib/cjs/src/ContextModuleBuilder.js.map +2 -2
- package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
- package/lib/cjs/src/ContextModuleBuilder.test.js.map +2 -2
- 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/index.js +1 -1
- package/lib/cjs/src/index.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/token/data/HttpTokenDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
- package/lib/cjs/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/multichain/pki/model/KeyId.js +1 -1
- package/lib/cjs/src/modules/multichain/pki/model/KeyId.js.map +2 -2
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
- package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
- package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionTypes.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/di/altResolutionTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantTypes.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/di/enumVariantTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoTypes.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/di/instructionInfoTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/lifi/data/HttpLifiDataSource.test.js +1 -1
- package/lib/cjs/src/modules/solana/lifi/data/HttpLifiDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaClearSignContext.js.map +3 -3
- package/lib/cjs/src/modules/solana/model/SolanaContextTypes.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaContextTypes.js.map +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaPayloads.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaPayloads.js.map +3 -3
- package/lib/cjs/src/modules/solana/model/SolanaTransactionScanChainId.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaTransactionScanChainId.js.map +2 -2
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js.map +2 -2
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/owner-info/domain/solanaContextTypes.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/domain/solanaContextTypes.js.map +1 -1
- package/lib/cjs/src/modules/solana/token/data/HttpTokenDataSource.test.js +2 -2
- package/lib/cjs/src/modules/solana/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/data/TokenInfoDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/data/TokenInfoDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoTypes.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/di/tokenInfoTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameTypes.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/di/trustedNameTypes.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +7 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +2 -0
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +7 -0
- package/lib/cjs/src/shared/model/ClearSignContext.js +1 -1
- package/lib/cjs/src/shared/model/ClearSignContext.js.map +2 -2
- package/lib/cjs/src/shared/utils/HexStringUtils.js +1 -1
- package/lib/cjs/src/shared/utils/HexStringUtils.js.map +3 -3
- package/lib/cjs/src/shared/utils/HexStringUtils.test.js +1 -1
- package/lib/cjs/src/shared/utils/HexStringUtils.test.js.map +2 -2
- package/lib/cjs/src/shared/utils/certificateCache.js +2 -0
- package/lib/cjs/src/shared/utils/certificateCache.js.map +7 -0
- package/lib/cjs/src/shared/utils/certificateCache.test.js +2 -0
- package/lib/cjs/src/shared/utils/certificateCache.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/certificateResult.js +2 -0
- package/lib/cjs/src/shared/utils/certificateResult.js.map +7 -0
- package/lib/cjs/src/shared/utils/certificateResult.test.js +2 -0
- package/lib/cjs/src/shared/utils/certificateResult.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.js +2 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.js.map +7 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.test.js +2 -0
- package/lib/cjs/src/shared/utils/challengeBoundLoader.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.js +2 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.js.map +7 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js +2 -0
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.js +2 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.js.map +7 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.test.js +2 -0
- package/lib/cjs/src/shared/utils/signedDescriptorDto.test.js.map +7 -0
- package/lib/cjs/src/shared/utils/uIntCodec.js +2 -0
- package/lib/cjs/src/shared/utils/uIntCodec.js.map +7 -0
- package/lib/cjs/src/shared/utils/uIntCodec.test.js +2 -0
- package/lib/cjs/src/shared/utils/uIntCodec.test.js.map +7 -0
- package/lib/esm/package.json +2 -2
- package/lib/esm/src/ContextModuleBuilder.js +1 -1
- package/lib/esm/src/ContextModuleBuilder.js.map +2 -2
- package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
- package/lib/esm/src/ContextModuleBuilder.test.js.map +2 -2
- 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/index.js +1 -1
- package/lib/esm/src/index.js.map +2 -2
- package/lib/esm/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/calldata/data/HttpCalldataDescriptorDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/dynamic-network/data/HttpDynamicNetworkDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js +1 -1
- package/lib/esm/src/modules/ethereum/dynamic-network/domain/DynamicNetworkContextLoader.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/external-plugin/data/HttpExternalPluginDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/gated-signing/data/HttpGatedDescriptorDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/token/data/HttpTokenDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js +1 -1
- package/lib/esm/src/modules/ethereum/typed-data/data/HttpTypedDataDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/multichain/pki/model/KeyId.js +1 -1
- package/lib/esm/src/modules/multichain/pki/model/KeyId.js.map +2 -2
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
- package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
- package/lib/esm/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js +1 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionTypes.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/di/altResolutionTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantTypes.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/di/enumVariantTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js +1 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoTypes.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/di/instructionInfoTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/lifi/data/HttpLifiDataSource.test.js +1 -1
- package/lib/esm/src/modules/solana/lifi/data/HttpLifiDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.test.js +1 -1
- package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.test.js.map +2 -2
- package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js +1 -1
- package/lib/esm/src/modules/solana/model/SolanaClearSignContext.js.map +3 -3
- package/lib/esm/src/modules/solana/model/SolanaPayloads.js +1 -0
- package/lib/esm/src/modules/solana/model/SolanaPayloads.js.map +4 -4
- package/lib/esm/src/modules/solana/model/SolanaTransactionScanChainId.js +1 -1
- package/lib/esm/src/modules/solana/model/SolanaTransactionScanChainId.js.map +2 -2
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.js.map +2 -2
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js +1 -1
- package/lib/esm/src/modules/solana/owner-info/domain/OwnerInfoContextLoader.test.js.map +2 -2
- package/lib/esm/src/modules/solana/token/data/HttpTokenDataSource.test.js +2 -2
- package/lib/esm/src/modules/solana/token/data/HttpTokenDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +1 -0
- package/lib/esm/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/di/tokenAccountStateTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +2 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/data/TokenInfoDataSource.js +1 -0
- package/lib/esm/src/modules/solana/token-info/data/TokenInfoDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoTypes.js +2 -0
- package/lib/esm/src/modules/solana/token-info/di/tokenInfoTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +1 -0
- package/lib/esm/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameModuleFactory.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameTypes.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/di/trustedNameTypes.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +7 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +2 -0
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +7 -0
- package/lib/esm/src/shared/model/ClearSignContext.js +1 -1
- package/lib/esm/src/shared/model/ClearSignContext.js.map +2 -2
- package/lib/esm/src/shared/utils/HexStringUtils.js +1 -1
- package/lib/esm/src/shared/utils/HexStringUtils.js.map +3 -3
- package/lib/esm/src/shared/utils/HexStringUtils.test.js +1 -1
- package/lib/esm/src/shared/utils/HexStringUtils.test.js.map +2 -2
- package/lib/esm/src/shared/utils/certificateCache.js +2 -0
- package/lib/esm/src/shared/utils/certificateCache.js.map +7 -0
- package/lib/esm/src/shared/utils/certificateCache.test.js +2 -0
- package/lib/esm/src/shared/utils/certificateCache.test.js.map +7 -0
- package/lib/esm/src/shared/utils/certificateResult.js +2 -0
- package/lib/esm/src/shared/utils/certificateResult.js.map +7 -0
- package/lib/esm/src/shared/utils/certificateResult.test.js +2 -0
- package/lib/esm/src/shared/utils/certificateResult.test.js.map +7 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.js +2 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.js.map +7 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.test.js +2 -0
- package/lib/esm/src/shared/utils/challengeBoundLoader.test.js.map +7 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.js +2 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.js.map +7 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js +2 -0
- package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js.map +7 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.js +2 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.js.map +7 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.test.js +2 -0
- package/lib/esm/src/shared/utils/signedDescriptorDto.test.js.map +7 -0
- package/lib/esm/src/shared/utils/uIntCodec.js +2 -0
- package/lib/esm/src/shared/utils/uIntCodec.js.map +7 -0
- package/lib/esm/src/shared/utils/uIntCodec.test.js +2 -0
- package/lib/esm/src/shared/utils/uIntCodec.test.js.map +7 -0
- package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
- package/lib/types/src/DefaultContextModule.d.ts.map +1 -1
- package/lib/types/src/di.d.ts.map +1 -1
- package/lib/types/src/index.d.ts +16 -0
- package/lib/types/src/index.d.ts.map +1 -1
- package/lib/types/src/modules/multichain/pki/model/KeyId.d.ts +1 -0
- package/lib/types/src/modules/multichain/pki/model/KeyId.d.ts.map +1 -1
- package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts +1 -1
- package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts.map +1 -1
- package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts +17 -0
- package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/alt-resolution/di/altResolutionTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts +23 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantTypes.d.ts +4 -0
- package/lib/types/src/modules/solana/enum-variant/di/enumVariantTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.d.ts +45 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/enum-variant/domain/EnumVariantContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDataSource.d.ts +32 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts +129 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts +26 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.d.ts +2 -0
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoMapper.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/instruction-info/di/instructionInfoTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.d.ts +39 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/instruction-info/domain/InstructionInfoContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts +33 -2
- package/lib/types/src/modules/solana/model/SolanaClearSignContext.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts +8 -1
- package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts +124 -0
- package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaTransactionScanChainId.d.ts +6 -5
- package/lib/types/src/modules/solana/model/SolanaTransactionScanChainId.d.ts.map +1 -1
- package/lib/types/src/modules/solana/owner-info/domain/solanaContextTypes.d.ts +2 -5
- package/lib/types/src/modules/solana/owner-info/domain/solanaContextTypes.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token/domain/TokenContextLoader.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts +15 -0
- package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/token-account-state/di/tokenAccountStateTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts +26 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/data/TokenInfoDataSource.d.ts +24 -0
- package/lib/types/src/modules/solana/token-info/data/TokenInfoDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/token-info/di/tokenInfoTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.d.ts +26 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token-info/domain/TokenInfoContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts +17 -0
- package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameModuleFactory.d.ts +3 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameModuleFactory.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameTypes.d.ts +5 -0
- package/lib/types/src/modules/solana/trusted-name/di/trustedNameTypes.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts +28 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.d.ts +2 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.d.ts.map +1 -0
- package/lib/types/src/shared/model/ClearSignContext.d.ts +7 -1
- package/lib/types/src/shared/model/ClearSignContext.d.ts.map +1 -1
- package/lib/types/src/shared/utils/HexStringUtils.d.ts +7 -0
- package/lib/types/src/shared/utils/HexStringUtils.d.ts.map +1 -1
- package/lib/types/src/shared/utils/certificateCache.d.ts +23 -0
- package/lib/types/src/shared/utils/certificateCache.d.ts.map +1 -0
- package/lib/types/src/shared/utils/certificateCache.test.d.ts +2 -0
- package/lib/types/src/shared/utils/certificateCache.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/certificateResult.d.ts +26 -0
- package/lib/types/src/shared/utils/certificateResult.d.ts.map +1 -0
- package/lib/types/src/shared/utils/certificateResult.test.d.ts +2 -0
- package/lib/types/src/shared/utils/certificateResult.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.d.ts +43 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.d.ts.map +1 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.test.d.ts +2 -0
- package/lib/types/src/shared/utils/challengeBoundLoader.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts +7 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts.map +1 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.test.d.ts +2 -0
- package/lib/types/src/shared/utils/deviceModelIdCodec.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.d.ts +15 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.d.ts.map +1 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.test.d.ts +2 -0
- package/lib/types/src/shared/utils/signedDescriptorDto.test.d.ts.map +1 -0
- package/lib/types/src/shared/utils/uIntCodec.d.ts +20 -0
- package/lib/types/src/shared/utils/uIntCodec.d.ts.map +1 -0
- package/lib/types/src/shared/utils/uIntCodec.test.d.ts +2 -0
- package/lib/types/src/shared/utils/uIntCodec.test.d.ts.map +1 -0
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/model/ClearSignContext.ts"],
|
|
4
|
-
"sourcesContent": ["import { type EthereumPayloadOverrides } from \"@/modules/ethereum/model/EthereumClearSignContext\";\nimport { type PkiCertificate } from \"@/modules/multichain/pki/model/PkiCertificate\";\nimport { type SolanaPayloadOverrides } from \"@/modules/solana/model/SolanaClearSignContext\";\n\nexport enum ClearSignContextType {\n ERROR = \"error\",\n CONCORDIUM_ACCOUNT_OWNERSHIP = \"concordiumAccountOwnership\",\n ETHEREUM_TOKEN = \"ethereumToken\",\n ETHEREUM_NFT = \"ethereumNft\",\n ETHEREUM_TRUSTED_NAME = \"ethereumTrustedName\",\n ETHEREUM_PLUGIN = \"ethereumPlugin\",\n ETHEREUM_EXTERNAL_PLUGIN = \"ethereumExternalPlugin\",\n ETHEREUM_TRANSACTION_INFO = \"ethereumTransactionInfo\",\n ETHEREUM_PROXY_INFO = \"ethereumProxyInfo\",\n ETHEREUM_ENUM = \"ethereumEnum\",\n ETHEREUM_TRANSACTION_FIELD_DESCRIPTION = \"ethereumTransactionFieldDescription\",\n ETHEREUM_TRANSACTION_CHECK = \"ethereumTransactionCheck\",\n ETHEREUM_DYNAMIC_NETWORK = \"ethereumDynamicNetwork\",\n ETHEREUM_DYNAMIC_NETWORK_ICON = \"ethereumDynamicNetworkIcon\",\n ETHEREUM_SAFE = \"ethereumSafe\",\n ETHEREUM_SIGNER = \"ethereumSigner\",\n ETHEREUM_GATED_SIGNING = \"ethereumGatedSigning\",\n SOLANA_TOKEN = \"solanaToken\",\n SOLANA_LIFI = \"solanaLifi\",\n SOLANA_TRUSTED_NAME = \"solanaTrustedName\",\n SOLANA_TRANSACTION_CHECK = \"solanaTransactionCheck\",\n}\n\nexport type ClearSignContextSuccessType = Exclude<\n ClearSignContextType,\n ClearSignContextType.ERROR\n>;\n\n/**\n * Base payload shape shared by every success context. Chain modules extend\n * this via PayloadOverrides for variants that carry typed payloads.\n */\nexport type ClearSignContextSuccessBase = {\n payload: string;\n certificate?: PkiCertificate;\n};\n\ntype ClearSignContextSuccessPayloadsBase = {\n [K in ClearSignContextSuccessType]: ClearSignContextSuccessBase;\n};\n\n// Chain modules contribute typed-payload overrides. This file is the\n// integration boundary that assembles them into the cross-chain union.\ntype ClearSignContextSuccessPayloadOverrides = EthereumPayloadOverrides &\n SolanaPayloadOverrides;\n\ntype ClearSignContextSuccessPayloads = Omit<\n ClearSignContextSuccessPayloadsBase,\n keyof ClearSignContextSuccessPayloadOverrides\n> &\n ClearSignContextSuccessPayloadOverrides;\n\nexport type ClearSignContextSuccess<\n T extends ClearSignContextSuccessType = ClearSignContextSuccessType,\n> = T extends ClearSignContextSuccessType\n ? { type: T } & ClearSignContextSuccessPayloads[T]\n : never;\n\nexport type ClearSignContextError = {\n type: ClearSignContextType.ERROR;\n error: Error;\n};\n\nexport type ClearSignContext = ClearSignContextSuccess | ClearSignContextError;\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAIO,IAAKE,OACVA,EAAA,MAAQ,QACRA,EAAA,6BAA+B,6BAC/BA,EAAA,eAAiB,gBACjBA,EAAA,aAAe,cACfA,EAAA,sBAAwB,sBACxBA,EAAA,gBAAkB,iBAClBA,EAAA,yBAA2B,yBAC3BA,EAAA,0BAA4B,0BAC5BA,EAAA,oBAAsB,oBACtBA,EAAA,cAAgB,eAChBA,EAAA,uCAAyC,sCACzCA,EAAA,2BAA6B,2BAC7BA,EAAA,yBAA2B,yBAC3BA,EAAA,8BAAgC,6BAChCA,EAAA,cAAgB,eAChBA,EAAA,gBAAkB,iBAClBA,EAAA,uBAAyB,uBACzBA,EAAA,aAAe,cACfA,EAAA,YAAc,aACdA,EAAA,oBAAsB,oBACtBA,EAAA,yBAA2B,
|
|
4
|
+
"sourcesContent": ["import { type EthereumPayloadOverrides } from \"@/modules/ethereum/model/EthereumClearSignContext\";\nimport { type PkiCertificate } from \"@/modules/multichain/pki/model/PkiCertificate\";\nimport { type SolanaPayloadOverrides } from \"@/modules/solana/model/SolanaClearSignContext\";\n\nexport enum ClearSignContextType {\n ERROR = \"error\",\n CONCORDIUM_ACCOUNT_OWNERSHIP = \"concordiumAccountOwnership\",\n ETHEREUM_TOKEN = \"ethereumToken\",\n ETHEREUM_NFT = \"ethereumNft\",\n ETHEREUM_TRUSTED_NAME = \"ethereumTrustedName\",\n ETHEREUM_PLUGIN = \"ethereumPlugin\",\n ETHEREUM_EXTERNAL_PLUGIN = \"ethereumExternalPlugin\",\n ETHEREUM_TRANSACTION_INFO = \"ethereumTransactionInfo\",\n ETHEREUM_PROXY_INFO = \"ethereumProxyInfo\",\n ETHEREUM_ENUM = \"ethereumEnum\",\n ETHEREUM_TRANSACTION_FIELD_DESCRIPTION = \"ethereumTransactionFieldDescription\",\n ETHEREUM_TRANSACTION_CHECK = \"ethereumTransactionCheck\",\n ETHEREUM_DYNAMIC_NETWORK = \"ethereumDynamicNetwork\",\n ETHEREUM_DYNAMIC_NETWORK_ICON = \"ethereumDynamicNetworkIcon\",\n ETHEREUM_SAFE = \"ethereumSafe\",\n ETHEREUM_SIGNER = \"ethereumSigner\",\n ETHEREUM_GATED_SIGNING = \"ethereumGatedSigning\",\n SOLANA_TOKEN = \"solanaToken\",\n SOLANA_LIFI = \"solanaLifi\",\n SOLANA_TRUSTED_NAME = \"solanaTrustedName\",\n SOLANA_BASIC_TRUSTED_NAME = \"solanaBasicTrustedName\",\n SOLANA_TRANSACTION_CHECK = \"solanaTransactionCheck\",\n SOLANA_INSTRUCTION_INFO = \"solanaInstructionInfo\",\n SOLANA_ENUM_VARIANT = \"solanaEnumVariant\",\n SOLANA_TOKEN_INFO = \"solanaTokenInfo\",\n SOLANA_TOKEN_ACCOUNT_STATE = \"solanaTokenAccountState\",\n SOLANA_ALT_RESOLUTION = \"solanaAltResolution\",\n}\n\nexport type ClearSignContextSuccessType = Exclude<\n ClearSignContextType,\n ClearSignContextType.ERROR\n>;\n\n/**\n * Base payload shape shared by every success context. Chain modules extend\n * this via PayloadOverrides for variants that carry typed payloads.\n */\nexport type ClearSignContextSuccessBase = {\n payload: string;\n certificate?: PkiCertificate;\n};\n\ntype ClearSignContextSuccessPayloadsBase = {\n [K in ClearSignContextSuccessType]: ClearSignContextSuccessBase;\n};\n\n// Chain modules contribute typed-payload overrides. This file is the\n// integration boundary that assembles them into the cross-chain union.\ntype ClearSignContextSuccessPayloadOverrides = EthereumPayloadOverrides &\n SolanaPayloadOverrides;\n\ntype ClearSignContextSuccessPayloads = Omit<\n ClearSignContextSuccessPayloadsBase,\n keyof ClearSignContextSuccessPayloadOverrides\n> &\n ClearSignContextSuccessPayloadOverrides;\n\nexport type ClearSignContextSuccess<\n T extends ClearSignContextSuccessType = ClearSignContextSuccessType,\n> = T extends ClearSignContextSuccessType\n ? { type: T } & ClearSignContextSuccessPayloads[T]\n : never;\n\nexport type ClearSignContextError = {\n type: ClearSignContextType.ERROR;\n error: Error;\n};\n\nexport type ClearSignContext = ClearSignContextSuccess | ClearSignContextError;\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAIO,IAAKE,OACVA,EAAA,MAAQ,QACRA,EAAA,6BAA+B,6BAC/BA,EAAA,eAAiB,gBACjBA,EAAA,aAAe,cACfA,EAAA,sBAAwB,sBACxBA,EAAA,gBAAkB,iBAClBA,EAAA,yBAA2B,yBAC3BA,EAAA,0BAA4B,0BAC5BA,EAAA,oBAAsB,oBACtBA,EAAA,cAAgB,eAChBA,EAAA,uCAAyC,sCACzCA,EAAA,2BAA6B,2BAC7BA,EAAA,yBAA2B,yBAC3BA,EAAA,8BAAgC,6BAChCA,EAAA,cAAgB,eAChBA,EAAA,gBAAkB,iBAClBA,EAAA,uBAAyB,uBACzBA,EAAA,aAAe,cACfA,EAAA,YAAc,aACdA,EAAA,oBAAsB,oBACtBA,EAAA,0BAA4B,yBAC5BA,EAAA,yBAA2B,yBAC3BA,EAAA,wBAA0B,wBAC1BA,EAAA,oBAAsB,oBACtBA,EAAA,kBAAoB,kBACpBA,EAAA,2BAA6B,0BAC7BA,EAAA,sBAAwB,sBA3BdA,OAAA",
|
|
6
6
|
"names": ["ClearSignContext_exports", "__export", "ClearSignContextType", "__toCommonJS"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var l=(i,r)=>{for(var t in r)s(i,t,{get:r[t],enumerable:!0})},a=(i,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of o(r))!h.call(i,e)&&e!==t&&s(i,e,{get:()=>r[e],enumerable:!(n=g(r,e))||n.enumerable});return i};var x=i=>a(s({},"__esModule",{value:!0}),i);var S={};l(S,{HexStringUtils:()=>c});module.exports=x(S);class c{static hexToBytes(r){const t=r.startsWith("0x")||r.startsWith("0X")?r.slice(2):r;if(t.length===0)throw new Error("HexStringUtils.hexToBytes: empty hex string");if(t.length%2!==0)throw new Error(`HexStringUtils.hexToBytes: odd-length hex string (${t.length})`);if(!/^[0-9a-fA-F]+$/.test(t))throw new Error("HexStringUtils.hexToBytes: non-hex characters");const n=new Uint8Array(t.length/2);for(let e=0;e<n.length;e++)n[e]=Number.parseInt(t.slice(e*2,e*2+2),16);return n}static stringToHex(r){let t="";for(let n=0;n<r.length;n++){const e=r.charCodeAt(n).toString(16);t+=e.padStart(2,"0")}return t}static appendSignatureToPayload(r,t,n){t.length%2!==0&&(t="0"+t);let e=(t.length/2).toString(16);return e.length%2!==0&&(e="0"+e),`${r}${n}${e}${t}`}}0&&(module.exports={HexStringUtils});
|
|
2
2
|
//# sourceMappingURL=HexStringUtils.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/utils/HexStringUtils.ts"],
|
|
4
|
-
"sourcesContent": ["export class HexStringUtils {\n static stringToHex(str: string): string {\n let hexString = \"\";\n for (let i = 0; i < str.length; i++) {\n const hex = str.charCodeAt(i).toString(16);\n hexString += hex.padStart(2, \"0\"); // Ensure each hex code is at least 2 characters long\n }\n return hexString;\n }\n\n static appendSignatureToPayload(\n payload: string,\n signature: string,\n tag: string,\n ): string {\n // Ensure correct padding\n if (signature.length % 2 !== 0) {\n signature = \"0\" + signature;\n }\n // TLV encoding as according to trusted name documentation\n let signatureLength = (signature.length / 2).toString(16);\n if (signatureLength.length % 2 !== 0) {\n signatureLength = \"0\" + signatureLength;\n }\n\n return `${payload}${tag}${signatureLength}${signature}`;\n }\n}\n"],
|
|
5
|
-
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,CAAe,
|
|
6
|
-
"names": ["HexStringUtils_exports", "__export", "HexStringUtils", "__toCommonJS", "
|
|
4
|
+
"sourcesContent": ["export class HexStringUtils {\n /**\n * Decode a non-empty even-length hex string (with optional `0x` prefix)\n * into a Uint8Array. Throws on empty input, odd length, or non-hex\n * characters \u2014 the empty case is rejected explicitly so callers can't\n * silently produce a zero-length descriptor.\n */\n static hexToBytes(hex: string): Uint8Array {\n const s = hex.startsWith(\"0x\") || hex.startsWith(\"0X\") ? hex.slice(2) : hex;\n if (s.length === 0) {\n throw new Error(\"HexStringUtils.hexToBytes: empty hex string\");\n }\n if (s.length % 2 !== 0) {\n throw new Error(\n `HexStringUtils.hexToBytes: odd-length hex string (${s.length})`,\n );\n }\n if (!/^[0-9a-fA-F]+$/.test(s)) {\n throw new Error(\"HexStringUtils.hexToBytes: non-hex characters\");\n }\n const out = new Uint8Array(s.length / 2);\n for (let i = 0; i < out.length; i++) {\n out[i] = Number.parseInt(s.slice(i * 2, i * 2 + 2), 16);\n }\n return out;\n }\n\n static stringToHex(str: string): string {\n let hexString = \"\";\n for (let i = 0; i < str.length; i++) {\n const hex = str.charCodeAt(i).toString(16);\n hexString += hex.padStart(2, \"0\"); // Ensure each hex code is at least 2 characters long\n }\n return hexString;\n }\n\n static appendSignatureToPayload(\n payload: string,\n signature: string,\n tag: string,\n ): string {\n // Ensure correct padding\n if (signature.length % 2 !== 0) {\n signature = \"0\" + signature;\n }\n // TLV encoding as according to trusted name documentation\n let signatureLength = (signature.length / 2).toString(16);\n if (signatureLength.length % 2 !== 0) {\n signatureLength = \"0\" + signatureLength;\n }\n\n return `${payload}${tag}${signatureLength}${signature}`;\n }\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAO,MAAME,CAAe,CAO1B,OAAO,WAAWE,EAAyB,CACzC,MAAMC,EAAID,EAAI,WAAW,IAAI,GAAKA,EAAI,WAAW,IAAI,EAAIA,EAAI,MAAM,CAAC,EAAIA,EACxE,GAAIC,EAAE,SAAW,EACf,MAAM,IAAI,MAAM,6CAA6C,EAE/D,GAAIA,EAAE,OAAS,IAAM,EACnB,MAAM,IAAI,MACR,qDAAqDA,EAAE,MAAM,GAC/D,EAEF,GAAI,CAAC,iBAAiB,KAAKA,CAAC,EAC1B,MAAM,IAAI,MAAM,+CAA+C,EAEjE,MAAMC,EAAM,IAAI,WAAWD,EAAE,OAAS,CAAC,EACvC,QAASE,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC9BD,EAAIC,CAAC,EAAI,OAAO,SAASF,EAAE,MAAME,EAAI,EAAGA,EAAI,EAAI,CAAC,EAAG,EAAE,EAExD,OAAOD,CACT,CAEA,OAAO,YAAYE,EAAqB,CACtC,IAAIC,EAAY,GAChB,QAASF,EAAI,EAAGA,EAAIC,EAAI,OAAQD,IAAK,CACnC,MAAMH,EAAMI,EAAI,WAAWD,CAAC,EAAE,SAAS,EAAE,EACzCE,GAAaL,EAAI,SAAS,EAAG,GAAG,CAClC,CACA,OAAOK,CACT,CAEA,OAAO,yBACLC,EACAC,EACAC,EACQ,CAEJD,EAAU,OAAS,IAAM,IAC3BA,EAAY,IAAMA,GAGpB,IAAIE,GAAmBF,EAAU,OAAS,GAAG,SAAS,EAAE,EACxD,OAAIE,EAAgB,OAAS,IAAM,IACjCA,EAAkB,IAAMA,GAGnB,GAAGH,CAAO,GAAGE,CAAG,GAAGC,CAAe,GAAGF,CAAS,EACvD,CACF",
|
|
6
|
+
"names": ["HexStringUtils_exports", "__export", "HexStringUtils", "__toCommonJS", "hex", "s", "out", "i", "str", "hexString", "payload", "signature", "tag", "signatureLength"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var t=require("../../shared/utils/HexStringUtils");describe("HexStringUtils",()=>{describe("appendSignatureToPayload",()=>{it("should append signature to payload",()=>{const s=t.HexStringUtils.appendSignatureToPayload("01020304","05060708","15");expect(s).toEqual("01020304150405060708")}),it("should append signature to payload with odd length",()=>{const s=t.HexStringUtils.appendSignatureToPayload("01020304","5060708","15");expect(s).toEqual("01020304150405060708")})}),describe("hexToBytes",()=>{it("decodes a plain hex string into Uint8Array",()=>{expect(t.HexStringUtils.hexToBytes("deadbeef")).toEqual(new Uint8Array([222,173,190,239]))}),it("strips a 0x prefix",()=>{expect(t.HexStringUtils.hexToBytes("0xCAFEBABE")).toEqual(new Uint8Array([202,254,186,190]))}),it("throws on the empty string",()=>{expect(()=>t.HexStringUtils.hexToBytes("")).toThrow(/empty hex string/)}),it("throws on a bare `0x` prefix with no payload",()=>{expect(()=>t.HexStringUtils.hexToBytes("0x")).toThrow(/empty hex string/)}),it("throws on odd-length input",()=>{expect(()=>t.HexStringUtils.hexToBytes("abc")).toThrow(/odd-length/)}),it("throws on non-hex characters",()=>{expect(()=>t.HexStringUtils.hexToBytes("zzzz")).toThrow(/non-hex/)})}),describe("stringToHex",()=>{it("should convert string to hex",()=>{const e=t.HexStringUtils.stringToHex("test");expect(e).toEqual("74657374")}),it("should convert string to hex with odd length",()=>{const e=t.HexStringUtils.stringToHex("test1");expect(e).toEqual("7465737431")})})});
|
|
2
2
|
//# sourceMappingURL=HexStringUtils.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/shared/utils/HexStringUtils.test.ts"],
|
|
4
|
-
"sourcesContent": ["import { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\ndescribe(\"HexStringUtils\", () => {\n describe(\"appendSignatureToPayload\", () => {\n it(\"should append signature to payload\", () => {\n // GIVEN\n const payload = \"01020304\";\n const signature = \"05060708\";\n const tag = \"15\";\n // WHEN\n const result = HexStringUtils.appendSignatureToPayload(\n payload,\n signature,\n tag,\n );\n // THEN\n expect(result).toEqual(\"01020304150405060708\");\n });\n\n it(\"should append signature to payload with odd length\", () => {\n // GIVEN\n const payload = \"01020304\";\n const signature = \"5060708\";\n const tag = \"15\";\n // WHEN\n const result = HexStringUtils.appendSignatureToPayload(\n payload,\n signature,\n tag,\n );\n // THEN\n expect(result).toEqual(\"01020304150405060708\");\n });\n });\n\n describe(\"stringToHex\", () => {\n it(\"should convert string to hex\", () => {\n // GIVEN\n const str = \"test\";\n // WHEN\n const result = HexStringUtils.stringToHex(str);\n // THEN\n expect(result).toEqual(\"74657374\");\n });\n\n it(\"should convert string to hex with odd length\", () => {\n // GIVEN\n const str = \"test1\";\n // WHEN\n const result = HexStringUtils.stringToHex(str);\n // THEN\n expect(result).toEqual(\"7465737431\");\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "aAAA,IAAAA,EAA+B,yCAE/B,SAAS,iBAAkB,IAAM,CAC/B,SAAS,2BAA4B,IAAM,CACzC,GAAG,qCAAsC,IAAM,CAM7C,MAAMC,EAAS,iBAAe,yBAJd,WACE,WACN,IAMZ,EAEA,OAAOA,CAAM,EAAE,QAAQ,sBAAsB,CAC/C,CAAC,EAED,GAAG,qDAAsD,IAAM,CAM7D,MAAMA,EAAS,iBAAe,yBAJd,WACE,UACN,IAMZ,EAEA,OAAOA,CAAM,EAAE,QAAQ,sBAAsB,CAC/C,CAAC,CACH,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,GAAG,+BAAgC,IAAM,CAIvC,MAAMA,EAAS,iBAAe,YAFlB,MAEiC,EAE7C,OAAOA,CAAM,EAAE,QAAQ,UAAU,CACnC,CAAC,EAED,GAAG,+CAAgD,IAAM,CAIvD,MAAMA,EAAS,iBAAe,YAFlB,OAEiC,EAE7C,OAAOA,CAAM,EAAE,QAAQ,YAAY,CACrC,CAAC,CACH,CAAC,CACH,CAAC",
|
|
4
|
+
"sourcesContent": ["import { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\ndescribe(\"HexStringUtils\", () => {\n describe(\"appendSignatureToPayload\", () => {\n it(\"should append signature to payload\", () => {\n // GIVEN\n const payload = \"01020304\";\n const signature = \"05060708\";\n const tag = \"15\";\n // WHEN\n const result = HexStringUtils.appendSignatureToPayload(\n payload,\n signature,\n tag,\n );\n // THEN\n expect(result).toEqual(\"01020304150405060708\");\n });\n\n it(\"should append signature to payload with odd length\", () => {\n // GIVEN\n const payload = \"01020304\";\n const signature = \"5060708\";\n const tag = \"15\";\n // WHEN\n const result = HexStringUtils.appendSignatureToPayload(\n payload,\n signature,\n tag,\n );\n // THEN\n expect(result).toEqual(\"01020304150405060708\");\n });\n });\n\n describe(\"hexToBytes\", () => {\n it(\"decodes a plain hex string into Uint8Array\", () => {\n expect(HexStringUtils.hexToBytes(\"deadbeef\")).toEqual(\n new Uint8Array([0xde, 0xad, 0xbe, 0xef]),\n );\n });\n\n it(\"strips a 0x prefix\", () => {\n expect(HexStringUtils.hexToBytes(\"0xCAFEBABE\")).toEqual(\n new Uint8Array([0xca, 0xfe, 0xba, 0xbe]),\n );\n });\n\n it(\"throws on the empty string\", () => {\n expect(() => HexStringUtils.hexToBytes(\"\")).toThrow(/empty hex string/);\n });\n\n it(\"throws on a bare `0x` prefix with no payload\", () => {\n expect(() => HexStringUtils.hexToBytes(\"0x\")).toThrow(/empty hex string/);\n });\n\n it(\"throws on odd-length input\", () => {\n expect(() => HexStringUtils.hexToBytes(\"abc\")).toThrow(/odd-length/);\n });\n\n it(\"throws on non-hex characters\", () => {\n expect(() => HexStringUtils.hexToBytes(\"zzzz\")).toThrow(/non-hex/);\n });\n });\n\n describe(\"stringToHex\", () => {\n it(\"should convert string to hex\", () => {\n // GIVEN\n const str = \"test\";\n // WHEN\n const result = HexStringUtils.stringToHex(str);\n // THEN\n expect(result).toEqual(\"74657374\");\n });\n\n it(\"should convert string to hex with odd length\", () => {\n // GIVEN\n const str = \"test1\";\n // WHEN\n const result = HexStringUtils.stringToHex(str);\n // THEN\n expect(result).toEqual(\"7465737431\");\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA+B,yCAE/B,SAAS,iBAAkB,IAAM,CAC/B,SAAS,2BAA4B,IAAM,CACzC,GAAG,qCAAsC,IAAM,CAM7C,MAAMC,EAAS,iBAAe,yBAJd,WACE,WACN,IAMZ,EAEA,OAAOA,CAAM,EAAE,QAAQ,sBAAsB,CAC/C,CAAC,EAED,GAAG,qDAAsD,IAAM,CAM7D,MAAMA,EAAS,iBAAe,yBAJd,WACE,UACN,IAMZ,EAEA,OAAOA,CAAM,EAAE,QAAQ,sBAAsB,CAC/C,CAAC,CACH,CAAC,EAED,SAAS,aAAc,IAAM,CAC3B,GAAG,6CAA8C,IAAM,CACrD,OAAO,iBAAe,WAAW,UAAU,CAAC,EAAE,QAC5C,IAAI,WAAW,CAAC,IAAM,IAAM,IAAM,GAAI,CAAC,CACzC,CACF,CAAC,EAED,GAAG,qBAAsB,IAAM,CAC7B,OAAO,iBAAe,WAAW,YAAY,CAAC,EAAE,QAC9C,IAAI,WAAW,CAAC,IAAM,IAAM,IAAM,GAAI,CAAC,CACzC,CACF,CAAC,EAED,GAAG,6BAA8B,IAAM,CACrC,OAAO,IAAM,iBAAe,WAAW,EAAE,CAAC,EAAE,QAAQ,kBAAkB,CACxE,CAAC,EAED,GAAG,+CAAgD,IAAM,CACvD,OAAO,IAAM,iBAAe,WAAW,IAAI,CAAC,EAAE,QAAQ,kBAAkB,CAC1E,CAAC,EAED,GAAG,6BAA8B,IAAM,CACrC,OAAO,IAAM,iBAAe,WAAW,KAAK,CAAC,EAAE,QAAQ,YAAY,CACrE,CAAC,EAED,GAAG,+BAAgC,IAAM,CACvC,OAAO,IAAM,iBAAe,WAAW,MAAM,CAAC,EAAE,QAAQ,SAAS,CACnE,CAAC,CACH,CAAC,EAED,SAAS,cAAe,IAAM,CAC5B,GAAG,+BAAgC,IAAM,CAIvC,MAAMA,EAAS,iBAAe,YAFlB,MAEiC,EAE7C,OAAOA,CAAM,EAAE,QAAQ,UAAU,CACnC,CAAC,EAED,GAAG,+CAAgD,IAAM,CAIvD,MAAMA,EAAS,iBAAe,YAFlB,OAEiC,EAE7C,OAAOA,CAAM,EAAE,QAAQ,YAAY,CACrC,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["import_HexStringUtils", "result"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var s=(t,e)=>{for(var r in e)c(t,r,{get:e[r],enumerable:!0})},d=(t,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of n(e))!p.call(t,i)&&i!==r&&c(t,i,{get:()=>e[i],enumerable:!(a=C(e,i))||a.enumerable});return t};var L=t=>d(c({},"__esModule",{value:!0}),t);var k={};s(k,{makeCertificateCache:()=>u});module.exports=L(k);function u(t,e){const r=new Map;return(a,i)=>{const f=`${a}::${i}`;let o=r.get(f);return o||(o=t.loadCertificate({keyId:a,keyUsage:i,targetDevice:e}),r.set(f,o)),o}}0&&(module.exports={makeCertificateCache});
|
|
2
|
+
//# sourceMappingURL=certificateCache.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/certificateCache.ts"],
|
|
4
|
+
"sourcesContent": ["import { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\n\ntype LoadCertificate = PkiCertificateLoader[\"loadCertificate\"];\ntype LoadCertificateResult = ReturnType<LoadCertificate>;\ntype CertificateLookup = (\n keyId: string,\n keyUsage: string,\n) => LoadCertificateResult;\n\n/**\n * Builds a per-batch certificate-loader memoiser. Returns a `(keyId,\n * keyUsage) => Promise<Certificate | undefined>` function that issues\n * `loadCertificate` once per distinct `(keyId, keyUsage)` pair and\n * returns the cached promise for every subsequent caller in the same\n * batch.\n *\n * Use when a single `load()` call fans out N requests whose backend\n * responses report `(keyId, keyUsage)` independently but, in the common\n * case, all reference the same PKI root \u2014 issuing N parallel duplicate\n * cert loads would waste cycles and bandwidth.\n *\n * The returned cache is intentionally short-lived: scope it to one\n * loader invocation, then drop it. Cross-invocation caching is a\n * different concern handled (or not) elsewhere.\n */\nexport function makeCertificateCache(\n certificateLoader: PkiCertificateLoader,\n targetDevice: string,\n): CertificateLookup {\n const cache = new Map<string, LoadCertificateResult>();\n return (keyId, keyUsage) => {\n const key = `${keyId}::${keyUsage}`;\n let promise = cache.get(key);\n if (!promise) {\n promise = certificateLoader.loadCertificate({\n keyId,\n keyUsage,\n targetDevice,\n });\n cache.set(key, promise);\n }\n return promise;\n };\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,0BAAAE,IAAA,eAAAC,EAAAH,GAyBO,SAASE,EACdE,EACAC,EACmB,CACnB,MAAMC,EAAQ,IAAI,IAClB,MAAO,CAACC,EAAOC,IAAa,CAC1B,MAAMC,EAAM,GAAGF,CAAK,KAAKC,CAAQ,GACjC,IAAIE,EAAUJ,EAAM,IAAIG,CAAG,EAC3B,OAAKC,IACHA,EAAUN,EAAkB,gBAAgB,CAC1C,MAAAG,EACA,SAAAC,EACA,aAAAH,CACF,CAAC,EACDC,EAAM,IAAIG,EAAKC,CAAO,GAEjBA,CACT,CACF",
|
|
6
|
+
"names": ["certificateCache_exports", "__export", "makeCertificateCache", "__toCommonJS", "certificateLoader", "targetDevice", "cache", "keyId", "keyUsage", "key", "promise"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vitest"),i=require("./certificateCache");(0,e.describe)("makeCertificateCache",()=>{let t;(0,e.beforeEach)(()=>{t={loadCertificate:e.vi.fn().mockResolvedValue({keyUsageNumber:8,payload:new Uint8Array([1])})}}),(0,e.it)("calls loadCertificate once for repeated (keyId, keyUsage)",async()=>{const a=(0,i.makeCertificateCache)(t,"nanoX");await Promise.all([a("k1","coin_meta"),a("k1","coin_meta"),a("k1","coin_meta")]),(0,e.expect)(t.loadCertificate).toHaveBeenCalledTimes(1),(0,e.expect)(t.loadCertificate).toHaveBeenCalledWith({keyId:"k1",keyUsage:"coin_meta",targetDevice:"nanoX"})}),(0,e.it)("issues distinct calls per distinct (keyId, keyUsage)",async()=>{const a=(0,i.makeCertificateCache)(t,"nanoX");await Promise.all([a("k1","coin_meta"),a("k2","coin_meta"),a("k1","trusted_name")]),(0,e.expect)(t.loadCertificate).toHaveBeenCalledTimes(3)}),(0,e.it)("returns the same promise instance for the same key",()=>{const a=(0,i.makeCertificateCache)(t,"nanoX"),o=a("k1","coin_meta"),c=a("k1","coin_meta");(0,e.expect)(o).toBe(c)})});
|
|
2
|
+
//# sourceMappingURL=certificateCache.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/certificateCache.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\n\nimport { makeCertificateCache } from \"./certificateCache\";\n\ndescribe(\"makeCertificateCache\", () => {\n let loader: PkiCertificateLoader;\n\n beforeEach(() => {\n loader = {\n loadCertificate: vi\n .fn()\n .mockResolvedValue({ keyUsageNumber: 8, payload: new Uint8Array([1]) }),\n };\n });\n\n it(\"calls loadCertificate once for repeated (keyId, keyUsage)\", async () => {\n const getCert = makeCertificateCache(loader, \"nanoX\");\n\n await Promise.all([\n getCert(\"k1\", \"coin_meta\"),\n getCert(\"k1\", \"coin_meta\"),\n getCert(\"k1\", \"coin_meta\"),\n ]);\n\n expect(loader.loadCertificate).toHaveBeenCalledTimes(1);\n expect(loader.loadCertificate).toHaveBeenCalledWith({\n keyId: \"k1\",\n keyUsage: \"coin_meta\",\n targetDevice: \"nanoX\",\n });\n });\n\n it(\"issues distinct calls per distinct (keyId, keyUsage)\", async () => {\n const getCert = makeCertificateCache(loader, \"nanoX\");\n\n await Promise.all([\n getCert(\"k1\", \"coin_meta\"),\n getCert(\"k2\", \"coin_meta\"),\n getCert(\"k1\", \"trusted_name\"),\n ]);\n\n expect(loader.loadCertificate).toHaveBeenCalledTimes(3);\n });\n\n it(\"returns the same promise instance for the same key\", () => {\n const getCert = makeCertificateCache(loader, \"nanoX\");\n const a = getCert(\"k1\", \"coin_meta\");\n const b = getCert(\"k1\", \"coin_meta\");\n expect(a).toBe(b);\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAqD,kBAIrDC,EAAqC,iCAErC,YAAS,uBAAwB,IAAM,CACrC,IAAIC,KAEJ,cAAW,IAAM,CACfA,EAAS,CACP,gBAAiB,KACd,GAAG,EACH,kBAAkB,CAAE,eAAgB,EAAG,QAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAE,CAAC,CAC1E,CACF,CAAC,KAED,MAAG,4DAA6D,SAAY,CAC1E,MAAMC,KAAU,wBAAqBD,EAAQ,OAAO,EAEpD,MAAM,QAAQ,IAAI,CAChBC,EAAQ,KAAM,WAAW,EACzBA,EAAQ,KAAM,WAAW,EACzBA,EAAQ,KAAM,WAAW,CAC3B,CAAC,KAED,UAAOD,EAAO,eAAe,EAAE,sBAAsB,CAAC,KACtD,UAAOA,EAAO,eAAe,EAAE,qBAAqB,CAClD,MAAO,KACP,SAAU,YACV,aAAc,OAChB,CAAC,CACH,CAAC,KAED,MAAG,uDAAwD,SAAY,CACrE,MAAMC,KAAU,wBAAqBD,EAAQ,OAAO,EAEpD,MAAM,QAAQ,IAAI,CAChBC,EAAQ,KAAM,WAAW,EACzBA,EAAQ,KAAM,WAAW,EACzBA,EAAQ,KAAM,cAAc,CAC9B,CAAC,KAED,UAAOD,EAAO,eAAe,EAAE,sBAAsB,CAAC,CACxD,CAAC,KAED,MAAG,qDAAsD,IAAM,CAC7D,MAAMC,KAAU,wBAAqBD,EAAQ,OAAO,EAC9CE,EAAID,EAAQ,KAAM,WAAW,EAC7BE,EAAIF,EAAQ,KAAM,WAAW,KACnC,UAAOC,CAAC,EAAE,KAAKC,CAAC,CAClB,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_vitest", "import_certificateCache", "loader", "getCert", "a", "b"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var f=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var u=(i,t)=>{for(var e in t)f(i,e,{get:t[e],enumerable:!0})},C=(i,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of n(t))!c.call(i,r)&&r!==e&&f(i,r,{get:()=>t[r],enumerable:!(o=a(t,r))||o.enumerable});return i};var k=i=>C(f({},"__esModule",{value:!0}),i);var l={};u(l,{loadCertificateResult:()=>s});module.exports=k(l);function s(i,t){return i.loadCertificate(t).then(e=>({ok:!0,value:e}),e=>({ok:!1,error:e instanceof Error?e:new Error(typeof e=="string"?e:JSON.stringify(e))}))}0&&(module.exports={loadCertificateResult});
|
|
2
|
+
//# sourceMappingURL=certificateResult.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/certificateResult.ts"],
|
|
4
|
+
"sourcesContent": ["import { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/modules/multichain/pki/model/PkiCertificate\";\nimport { type PkiCertificateInfo } from \"@/modules/multichain/pki/model/PkiCertificateInfo\";\n\n/**\n * Tagged result of a certificate load attempt. Mirrors the\n * `Promise.allSettled`-style pattern but stays inside a single Promise\n * so callers can `Promise.all([certPromise, dataPromise])` to\n * parallelise cert + data fetches without one path's rejection tanking\n * the other.\n */\nexport type CertificateResult =\n | { ok: true; value: PkiCertificate | undefined }\n | { ok: false; error: Error };\n\n/**\n * Wrap a `loadCertificate` call into a non-rejecting promise so it can\n * be awaited alongside a parallel data fetch via `Promise.all`. A\n * thrown error is normalised into a tagged `{ ok: false }` Result;\n * caller decides how to surface it (typically: one ERROR\n * ClearSignContext per request in the batch).\n */\nexport function loadCertificateResult(\n certificateLoader: PkiCertificateLoader,\n params: PkiCertificateInfo,\n): Promise<CertificateResult> {\n return certificateLoader.loadCertificate(params).then(\n (value): CertificateResult => ({ ok: true, value }),\n (error: unknown): CertificateResult => ({\n ok: false,\n error:\n error instanceof Error\n ? error\n : new Error(\n typeof error === \"string\" ? error : JSON.stringify(error),\n ),\n }),\n );\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,2BAAAE,IAAA,eAAAC,EAAAH,GAsBO,SAASE,EACdE,EACAC,EAC4B,CAC5B,OAAOD,EAAkB,gBAAgBC,CAAM,EAAE,KAC9CC,IAA8B,CAAE,GAAI,GAAM,MAAAA,CAAM,GAChDC,IAAuC,CACtC,GAAI,GACJ,MACEA,aAAiB,MACbA,EACA,IAAI,MACF,OAAOA,GAAU,SAAWA,EAAQ,KAAK,UAAUA,CAAK,CAC1D,CACR,EACF,CACF",
|
|
6
|
+
"names": ["certificateResult_exports", "__export", "loadCertificateResult", "__toCommonJS", "certificateLoader", "params", "value", "error"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("vitest"),o=require("./certificateResult");(0,e.describe)("loadCertificateResult",()=>{let t;(0,e.beforeEach)(()=>{t={loadCertificate:e.vi.fn()}}),(0,e.it)("returns { ok: true, value } on success",async()=>{const r={keyUsageNumber:8,payload:new Uint8Array([1])};e.vi.spyOn(t,"loadCertificate").mockResolvedValue(r);const a=await(0,o.loadCertificateResult)(t,{keyId:"k",keyUsage:"u",targetDevice:"nanoX"});(0,e.expect)(a).toEqual({ok:!0,value:r})}),(0,e.it)("returns { ok: true, value: undefined } when loader resolves undefined",async()=>{e.vi.spyOn(t,"loadCertificate").mockResolvedValue(void 0);const r=await(0,o.loadCertificateResult)(t,{keyId:"k",keyUsage:"u",targetDevice:"nanoX"});(0,e.expect)(r).toEqual({ok:!0,value:void 0})}),(0,e.it)("returns { ok: false, error } on rejection (no rethrow)",async()=>{e.vi.spyOn(t,"loadCertificate").mockRejectedValue(new Error("pki-down"));const r=await(0,o.loadCertificateResult)(t,{keyId:"k",keyUsage:"u",targetDevice:"nanoX"});(0,e.expect)(r).toEqual({ok:!1,error:new Error("pki-down")})}),(0,e.it)("wraps non-Error throws in Error",async()=>{e.vi.spyOn(t,"loadCertificate").mockRejectedValue("string-rejection");const r=await(0,o.loadCertificateResult)(t,{keyId:"k",keyUsage:"u",targetDevice:"nanoX"});(0,e.expect)(r.ok).toBe(!1),r.ok||((0,e.expect)(r.error).toBeInstanceOf(Error),(0,e.expect)(r.error.message).toBe("string-rejection"))})});
|
|
2
|
+
//# sourceMappingURL=certificateResult.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/certificateResult.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\n\nimport { loadCertificateResult } from \"./certificateResult\";\n\ndescribe(\"loadCertificateResult\", () => {\n let loader: PkiCertificateLoader;\n\n beforeEach(() => {\n loader = {\n loadCertificate: vi.fn(),\n };\n });\n\n it(\"returns { ok: true, value } on success\", async () => {\n const cert = { keyUsageNumber: 8, payload: new Uint8Array([1]) };\n vi.spyOn(loader, \"loadCertificate\").mockResolvedValue(cert);\n\n const result = await loadCertificateResult(loader, {\n keyId: \"k\",\n keyUsage: \"u\",\n targetDevice: \"nanoX\",\n });\n\n expect(result).toEqual({ ok: true, value: cert });\n });\n\n it(\"returns { ok: true, value: undefined } when loader resolves undefined\", async () => {\n vi.spyOn(loader, \"loadCertificate\").mockResolvedValue(undefined);\n\n const result = await loadCertificateResult(loader, {\n keyId: \"k\",\n keyUsage: \"u\",\n targetDevice: \"nanoX\",\n });\n\n expect(result).toEqual({ ok: true, value: undefined });\n });\n\n it(\"returns { ok: false, error } on rejection (no rethrow)\", async () => {\n vi.spyOn(loader, \"loadCertificate\").mockRejectedValue(\n new Error(\"pki-down\"),\n );\n\n const result = await loadCertificateResult(loader, {\n keyId: \"k\",\n keyUsage: \"u\",\n targetDevice: \"nanoX\",\n });\n\n expect(result).toEqual({ ok: false, error: new Error(\"pki-down\") });\n });\n\n it(\"wraps non-Error throws in Error\", async () => {\n vi.spyOn(loader, \"loadCertificate\").mockRejectedValue(\"string-rejection\");\n\n const result = await loadCertificateResult(loader, {\n keyId: \"k\",\n keyUsage: \"u\",\n targetDevice: \"nanoX\",\n });\n\n expect(result.ok).toBe(false);\n if (!result.ok) {\n expect(result.error).toBeInstanceOf(Error);\n expect(result.error.message).toBe(\"string-rejection\");\n }\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAqD,kBAIrDC,EAAsC,kCAEtC,YAAS,wBAAyB,IAAM,CACtC,IAAIC,KAEJ,cAAW,IAAM,CACfA,EAAS,CACP,gBAAiB,KAAG,GAAG,CACzB,CACF,CAAC,KAED,MAAG,yCAA0C,SAAY,CACvD,MAAMC,EAAO,CAAE,eAAgB,EAAG,QAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAE,EAC/D,KAAG,MAAMD,EAAQ,iBAAiB,EAAE,kBAAkBC,CAAI,EAE1D,MAAMC,EAAS,QAAM,yBAAsBF,EAAQ,CACjD,MAAO,IACP,SAAU,IACV,aAAc,OAChB,CAAC,KAED,UAAOE,CAAM,EAAE,QAAQ,CAAE,GAAI,GAAM,MAAOD,CAAK,CAAC,CAClD,CAAC,KAED,MAAG,wEAAyE,SAAY,CACtF,KAAG,MAAMD,EAAQ,iBAAiB,EAAE,kBAAkB,MAAS,EAE/D,MAAME,EAAS,QAAM,yBAAsBF,EAAQ,CACjD,MAAO,IACP,SAAU,IACV,aAAc,OAChB,CAAC,KAED,UAAOE,CAAM,EAAE,QAAQ,CAAE,GAAI,GAAM,MAAO,MAAU,CAAC,CACvD,CAAC,KAED,MAAG,yDAA0D,SAAY,CACvE,KAAG,MAAMF,EAAQ,iBAAiB,EAAE,kBAClC,IAAI,MAAM,UAAU,CACtB,EAEA,MAAME,EAAS,QAAM,yBAAsBF,EAAQ,CACjD,MAAO,IACP,SAAU,IACV,aAAc,OAChB,CAAC,KAED,UAAOE,CAAM,EAAE,QAAQ,CAAE,GAAI,GAAO,MAAO,IAAI,MAAM,UAAU,CAAE,CAAC,CACpE,CAAC,KAED,MAAG,kCAAmC,SAAY,CAChD,KAAG,MAAMF,EAAQ,iBAAiB,EAAE,kBAAkB,kBAAkB,EAExE,MAAME,EAAS,QAAM,yBAAsBF,EAAQ,CACjD,MAAO,IACP,SAAU,IACV,aAAc,OAChB,CAAC,KAED,UAAOE,EAAO,EAAE,EAAE,KAAK,EAAK,EACvBA,EAAO,QACV,UAAOA,EAAO,KAAK,EAAE,eAAe,KAAK,KACzC,UAAOA,EAAO,MAAM,OAAO,EAAE,KAAK,kBAAkB,EAExD,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_vitest", "import_certificateResult", "loader", "cert", "result"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var u=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var T=(r,e)=>{for(var a in e)u(r,a,{get:e[a],enumerable:!0})},k=(r,e,a,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of P(e))!x.call(r,t)&&t!==a&&u(r,t,{get:()=>e[t],enumerable:!(i=y(e,t))||i.enumerable});return r};var w=r=>k(u({},"__esModule",{value:!0}),r);var L={};T(L,{loadChallengeBoundContexts:()=>E});module.exports=w(L);var c=require("../../shared/model/ClearSignContext"),g=require("../../shared/utils/certificateCache");async function E({requests:r,deviceModelId:e,certificateLoader:a,logger:i,label:t,fetch:C,toContext:m,describe:d}){i.debug(`[load] Fetching ${t} descriptors`,{data:{count:r.length}});const R=await Promise.all(r.map(async n=>({request:n,either:await C(n)}))),p=(0,g.makeCertificateCache)(a,e);return Promise.all(R.map(({request:n,either:h})=>h.caseOf({Left:async o=>(i.warn(`[load] ${t} fetch failed`,{data:{...d(n),error:o.message}}),{type:c.ClearSignContextType.ERROR,error:o}),Right:async o=>{let l;try{l=await p(o.keyId,o.keyUsage)}catch(s){const f=s instanceof Error?s:new Error(String(s));return i.warn(`[load] ${t} certificate load failed`,{data:{...d(n),error:f.message}}),{type:c.ClearSignContextType.ERROR,error:f}}if(!l){const s=new Error(`[ContextModule] ${t}: certificate is missing`);return i.warn(`[load] ${t} certificate missing`,{data:d(n)}),{type:c.ClearSignContextType.ERROR,error:s}}return m(o,l)}})))}0&&(module.exports={loadChallengeBoundContexts});
|
|
2
|
+
//# sourceMappingURL=challengeBoundLoader.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/challengeBoundLoader.ts"],
|
|
4
|
+
"sourcesContent": ["import { type LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/modules/multichain/pki/model/PkiCertificate\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { makeCertificateCache } from \"@/shared/utils/certificateCache\";\n\n/**\n * Shape every challenge-bound dynamic-descriptor result shares: the PKI\n * identifiers the host needs to load the matching certificate. The three\n * Solana challenge-bound loaders (token-account-state, alt-resolution,\n * trusted-name) each fetch a per-request descriptor whose backend response\n * reports its own `(keyId, keyUsage)`.\n */\nexport type ChallengeBoundResult = {\n keyId: string;\n keyUsage: string;\n};\n\nexport type ChallengeBoundLoaderParams<\n TRequest,\n TResult extends ChallengeBoundResult,\n> = {\n requests: TRequest[];\n deviceModelId: string;\n certificateLoader: PkiCertificateLoader;\n logger: LoggerPublisherService;\n /** Short UPPER_SNAKE label used in log messages, e.g. `\"TRUSTED_NAME\"`. */\n label: string;\n /** Issue the per-request backend fetch. */\n fetch: (request: TRequest) => Promise<Either<Error, TResult>>;\n /** Build the success context from a validated result + its certificate. */\n toContext: (result: TResult, certificate: PkiCertificate) => ClearSignContext;\n /** Structured fields attached to per-request log lines. */\n describe: (request: TRequest) => Record<string, unknown>;\n};\n\n/**\n * Orchestrates the shared lifecycle of the Solana challenge-bound loaders:\n * fan out the per-request fetches in parallel, dedup certificate loads per\n * batch via {@link makeCertificateCache}, and map each request to exactly\n * one {@link ClearSignContext}.\n *\n * A fetch failure, a certificate-load throw, or an absent (resolved-\n * `undefined`) certificate each degrade that single request to an ERROR\n * context \u2014 never the whole batch, and never a success context shipped\n * without a certificate.\n */\nexport async function loadChallengeBoundContexts<\n TRequest,\n TResult extends ChallengeBoundResult,\n>({\n requests,\n deviceModelId,\n certificateLoader,\n logger,\n label,\n fetch,\n toContext,\n describe,\n}: ChallengeBoundLoaderParams<TRequest, TResult>): Promise<ClearSignContext[]> {\n logger.debug(`[load] Fetching ${label} descriptors`, {\n data: { count: requests.length },\n });\n\n const fetched = await Promise.all(\n requests.map(async (request) => ({\n request,\n either: await fetch(request),\n })),\n );\n\n const getCert = makeCertificateCache(certificateLoader, deviceModelId);\n\n return Promise.all(\n fetched.map(({ request, either }) =>\n either.caseOf<Promise<ClearSignContext>>({\n Left: async (error) => {\n logger.warn(`[load] ${label} fetch failed`, {\n data: { ...describe(request), error: error.message },\n });\n return { type: ClearSignContextType.ERROR, error };\n },\n Right: async (value) => {\n let certificate: PkiCertificate | undefined;\n try {\n certificate = await getCert(value.keyId, value.keyUsage);\n } catch (caught) {\n const error =\n caught instanceof Error ? caught : new Error(String(caught));\n logger.warn(`[load] ${label} certificate load failed`, {\n data: { ...describe(request), error: error.message },\n });\n return { type: ClearSignContextType.ERROR, error };\n }\n if (!certificate) {\n const error = new Error(\n `[ContextModule] ${label}: certificate is missing`,\n );\n logger.warn(`[load] ${label} certificate missing`, {\n data: describe(request),\n });\n return { type: ClearSignContextType.ERROR, error };\n }\n return toContext(value, certificate);\n },\n }),\n ),\n );\n}\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GAKA,IAAAI,EAGO,2CACPC,EAAqC,2CA2CrC,eAAsBH,EAGpB,CACA,SAAAI,EACA,cAAAC,EACA,kBAAAC,EACA,OAAAC,EACA,MAAAC,EACA,MAAAC,EACA,UAAAC,EACA,SAAAC,CACF,EAA+E,CAC7EJ,EAAO,MAAM,mBAAmBC,CAAK,eAAgB,CACnD,KAAM,CAAE,MAAOJ,EAAS,MAAO,CACjC,CAAC,EAED,MAAMQ,EAAU,MAAM,QAAQ,IAC5BR,EAAS,IAAI,MAAOS,IAAa,CAC/B,QAAAA,EACA,OAAQ,MAAMJ,EAAMI,CAAO,CAC7B,EAAE,CACJ,EAEMC,KAAU,wBAAqBR,EAAmBD,CAAa,EAErE,OAAO,QAAQ,IACbO,EAAQ,IAAI,CAAC,CAAE,QAAAC,EAAS,OAAAE,CAAO,IAC7BA,EAAO,OAAkC,CACvC,KAAM,MAAOC,IACXT,EAAO,KAAK,UAAUC,CAAK,gBAAiB,CAC1C,KAAM,CAAE,GAAGG,EAASE,CAAO,EAAG,MAAOG,EAAM,OAAQ,CACrD,CAAC,EACM,CAAE,KAAM,uBAAqB,MAAO,MAAAA,CAAM,GAEnD,MAAO,MAAOC,GAAU,CACtB,IAAIC,EACJ,GAAI,CACFA,EAAc,MAAMJ,EAAQG,EAAM,MAAOA,EAAM,QAAQ,CACzD,OAASE,EAAQ,CACf,MAAMH,EACJG,aAAkB,MAAQA,EAAS,IAAI,MAAM,OAAOA,CAAM,CAAC,EAC7D,OAAAZ,EAAO,KAAK,UAAUC,CAAK,2BAA4B,CACrD,KAAM,CAAE,GAAGG,EAASE,CAAO,EAAG,MAAOG,EAAM,OAAQ,CACrD,CAAC,EACM,CAAE,KAAM,uBAAqB,MAAO,MAAAA,CAAM,CACnD,CACA,GAAI,CAACE,EAAa,CAChB,MAAMF,EAAQ,IAAI,MAChB,mBAAmBR,CAAK,0BAC1B,EACA,OAAAD,EAAO,KAAK,UAAUC,CAAK,uBAAwB,CACjD,KAAMG,EAASE,CAAO,CACxB,CAAC,EACM,CAAE,KAAM,uBAAqB,MAAO,MAAAG,CAAM,CACnD,CACA,OAAON,EAAUO,EAAOC,CAAW,CACrC,CACF,CAAC,CACH,CACF,CACF",
|
|
6
|
+
"names": ["challengeBoundLoader_exports", "__export", "loadChallengeBoundContexts", "__toCommonJS", "import_ClearSignContext", "import_certificateCache", "requests", "deviceModelId", "certificateLoader", "logger", "label", "fetch", "toContext", "describe", "fetched", "request", "getCert", "either", "error", "value", "certificate", "caught"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=require("purify-ts"),e=require("vitest"),s=require("../../shared/model/ClearSignContext"),o=require("./challengeBoundLoader");const y=()=>({debug:e.vi.fn(),info:e.vi.fn(),warn:e.vi.fn(),error:e.vi.fn(),subscribers:[]}),n={keyUsageNumber:1,payload:new Uint8Array([1])},c=(r,t)=>({deviceModelId:"stax",certificateLoader:r,logger:y(),label:"TEST_CTX",fetch:t,toContext:(a,d)=>({type:s.ClearSignContextType.SOLANA_TRUSTED_NAME,payload:a.descriptor,certificate:d}),describe:a=>({id:a.id})});(0,e.describe)("loadChallengeBoundContexts",()=>{let r;(0,e.beforeEach)(()=>{e.vi.restoreAllMocks(),r={loadCertificate:e.vi.fn().mockResolvedValue(n)}}),(0,e.it)("emits one success context per request with its certificate",async()=>{const t=await(0,o.loadChallengeBoundContexts)({...c(r,async({id:a})=>(0,i.Right)({id:a,descriptor:new Uint8Array([170]),keyId:"k",keyUsage:"u"})),requests:[{id:"a",challenge:"c1"},{id:"b",challenge:"c2"}]});(0,e.expect)(t).toHaveLength(2),(0,e.expect)(t.every(a=>a.type===s.ClearSignContextType.SOLANA_TRUSTED_NAME)).toBe(!0),(0,e.expect)(t[0].certificate).toBe(n)}),(0,e.it)("degrades only the failing request to ERROR and keeps the others",async()=>{const t=await(0,o.loadChallengeBoundContexts)({...c(r,async({id:a})=>a==="a"?(0,i.Right)({id:a,descriptor:new Uint8Array([1]),keyId:"k",keyUsage:"u"}):(0,i.Left)(new Error("boom"))),requests:[{id:"a",challenge:"c1"},{id:"b",challenge:"c2"}]});(0,e.expect)(t[0]?.type).toBe(s.ClearSignContextType.SOLANA_TRUSTED_NAME),(0,e.expect)(t[1]?.type).toBe(s.ClearSignContextType.ERROR)}),(0,e.it)("emits ERROR when the certificate load throws",async()=>{e.vi.spyOn(r,"loadCertificate").mockRejectedValue(new Error("pki-down"));const t=await(0,o.loadChallengeBoundContexts)({...c(r,async({id:a})=>(0,i.Right)({id:a,descriptor:new Uint8Array([1]),keyId:"k",keyUsage:"u"})),requests:[{id:"a",challenge:"c1"}]});(0,e.expect)(t[0]?.type).toBe(s.ClearSignContextType.ERROR),(0,e.expect)(t[0].error.message).toBe("pki-down")}),(0,e.it)("emits ERROR (not a cert-less success) when the certificate resolves undefined",async()=>{e.vi.spyOn(r,"loadCertificate").mockResolvedValue(void 0);const t=await(0,o.loadChallengeBoundContexts)({...c(r,async({id:a})=>(0,i.Right)({id:a,descriptor:new Uint8Array([1]),keyId:"k",keyUsage:"u"})),requests:[{id:"a",challenge:"c1"}]});(0,e.expect)(t[0]?.type).toBe(s.ClearSignContextType.ERROR),(0,e.expect)(t[0].error.message).toMatch(/TEST_CTX: certificate is missing/)}),(0,e.it)("dedups certificate loads per (keyId, keyUsage) across the batch",async()=>{const t=await(0,o.loadChallengeBoundContexts)({...c(r,async({id:a})=>(0,i.Right)({id:a,descriptor:new Uint8Array([1]),keyId:"same",keyUsage:"same"})),requests:[{id:"a",challenge:"c1"},{id:"b",challenge:"c2"},{id:"c",challenge:"c3"}]});(0,e.expect)(t).toHaveLength(3),(0,e.expect)(r.loadCertificate).toHaveBeenCalledTimes(1)})});
|
|
2
|
+
//# sourceMappingURL=challengeBoundLoader.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/challengeBoundLoader.test.ts"],
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { type PkiCertificate } from \"@/modules/multichain/pki/model/PkiCertificate\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\nimport { loadChallengeBoundContexts } from \"./challengeBoundLoader\";\n\nconst mockLogger = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\nconst certificate = { keyUsageNumber: 1, payload: new Uint8Array([0x01]) };\n\ntype Req = { id: string; challenge: string };\ntype Res = {\n id: string;\n descriptor: Uint8Array;\n keyId: string;\n keyUsage: string;\n};\n\nconst baseParams = (\n certificateLoader: PkiCertificateLoader,\n fetch: (r: Req) => Promise<any>,\n) => ({\n deviceModelId: \"stax\",\n certificateLoader,\n logger: mockLogger() as any,\n label: \"TEST_CTX\",\n fetch,\n toContext: (value: Res, cert: PkiCertificate) => ({\n type: ClearSignContextType.SOLANA_TRUSTED_NAME as const,\n payload: value.descriptor,\n certificate: cert,\n }),\n describe: (r: Req) => ({ id: r.id }),\n});\n\ndescribe(\"loadChallengeBoundContexts\", () => {\n let certificateLoader: PkiCertificateLoader;\n\n beforeEach(() => {\n vi.restoreAllMocks();\n certificateLoader = {\n loadCertificate: vi.fn().mockResolvedValue(certificate),\n };\n });\n\n it(\"emits one success context per request with its certificate\", async () => {\n const out = await loadChallengeBoundContexts({\n ...baseParams(certificateLoader, async ({ id }) =>\n Right({\n id,\n descriptor: new Uint8Array([0xaa]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n ),\n requests: [\n { id: \"a\", challenge: \"c1\" },\n { id: \"b\", challenge: \"c2\" },\n ],\n });\n\n expect(out).toHaveLength(2);\n expect(\n out.every((c) => c.type === ClearSignContextType.SOLANA_TRUSTED_NAME),\n ).toBe(true);\n expect((out[0] as any).certificate).toBe(certificate);\n });\n\n it(\"degrades only the failing request to ERROR and keeps the others\", async () => {\n const out = await loadChallengeBoundContexts({\n ...baseParams(certificateLoader, async ({ id }) =>\n id === \"a\"\n ? Right({\n id,\n descriptor: new Uint8Array([1]),\n keyId: \"k\",\n keyUsage: \"u\",\n })\n : Left(new Error(\"boom\")),\n ),\n requests: [\n { id: \"a\", challenge: \"c1\" },\n { id: \"b\", challenge: \"c2\" },\n ],\n });\n\n expect(out[0]?.type).toBe(ClearSignContextType.SOLANA_TRUSTED_NAME);\n expect(out[1]?.type).toBe(ClearSignContextType.ERROR);\n });\n\n it(\"emits ERROR when the certificate load throws\", async () => {\n vi.spyOn(certificateLoader, \"loadCertificate\").mockRejectedValue(\n new Error(\"pki-down\"),\n );\n\n const out = await loadChallengeBoundContexts({\n ...baseParams(certificateLoader, async ({ id }) =>\n Right({\n id,\n descriptor: new Uint8Array([1]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n ),\n requests: [{ id: \"a\", challenge: \"c1\" }],\n });\n\n expect(out[0]?.type).toBe(ClearSignContextType.ERROR);\n expect((out[0] as any).error.message).toBe(\"pki-down\");\n });\n\n it(\"emits ERROR (not a cert-less success) when the certificate resolves undefined\", async () => {\n vi.spyOn(certificateLoader, \"loadCertificate\").mockResolvedValue(undefined);\n\n const out = await loadChallengeBoundContexts({\n ...baseParams(certificateLoader, async ({ id }) =>\n Right({\n id,\n descriptor: new Uint8Array([1]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n ),\n requests: [{ id: \"a\", challenge: \"c1\" }],\n });\n\n expect(out[0]?.type).toBe(ClearSignContextType.ERROR);\n expect((out[0] as any).error.message).toMatch(\n /TEST_CTX: certificate is missing/,\n );\n });\n\n it(\"dedups certificate loads per (keyId, keyUsage) across the batch\", async () => {\n const out = await loadChallengeBoundContexts({\n ...baseParams(certificateLoader, async ({ id }) =>\n Right({\n id,\n descriptor: new Uint8Array([1]),\n keyId: \"same\",\n keyUsage: \"same\",\n }),\n ),\n requests: [\n { id: \"a\", challenge: \"c1\" },\n { id: \"b\", challenge: \"c2\" },\n { id: \"c\", challenge: \"c3\" },\n ],\n });\n\n expect(out).toHaveLength(3);\n // Three requests share one PKI key \u2192 exactly one loadCertificate call.\n expect(certificateLoader.loadCertificate).toHaveBeenCalledTimes(1);\n });\n});\n"],
|
|
5
|
+
"mappings": "aACA,IAAAA,EAA4B,qBAC5BC,EAAqD,kBAIrDC,EAAqC,2CAErCC,EAA2C,kCAE3C,MAAMC,EAAa,KAAO,CACxB,MAAO,KAAG,GAAG,EACb,KAAM,KAAG,GAAG,EACZ,KAAM,KAAG,GAAG,EACZ,MAAO,KAAG,GAAG,EACb,YAAa,CAAC,CAChB,GAEMC,EAAc,CAAE,eAAgB,EAAG,QAAS,IAAI,WAAW,CAAC,CAAI,CAAC,CAAE,EAUnEC,EAAa,CACjBC,EACAC,KACI,CACJ,cAAe,OACf,kBAAAD,EACA,OAAQH,EAAW,EACnB,MAAO,WACP,MAAAI,EACA,UAAW,CAACC,EAAYC,KAA0B,CAChD,KAAM,uBAAqB,oBAC3B,QAASD,EAAM,WACf,YAAaC,CACf,GACA,SAAWC,IAAY,CAAE,GAAIA,EAAE,EAAG,EACpC,MAEA,YAAS,6BAA8B,IAAM,CAC3C,IAAIJ,KAEJ,cAAW,IAAM,CACf,KAAG,gBAAgB,EACnBA,EAAoB,CAClB,gBAAiB,KAAG,GAAG,EAAE,kBAAkBF,CAAW,CACxD,CACF,CAAC,KAED,MAAG,6DAA8D,SAAY,CAC3E,MAAMO,EAAM,QAAM,8BAA2B,CAC3C,GAAGN,EAAWC,EAAmB,MAAO,CAAE,GAAAM,CAAG,OAC3C,SAAM,CACJ,GAAAA,EACA,WAAY,IAAI,WAAW,CAAC,GAAI,CAAC,EACjC,MAAO,IACP,SAAU,GACZ,CAAC,CACH,EACA,SAAU,CACR,CAAE,GAAI,IAAK,UAAW,IAAK,EAC3B,CAAE,GAAI,IAAK,UAAW,IAAK,CAC7B,CACF,CAAC,KAED,UAAOD,CAAG,EAAE,aAAa,CAAC,KAC1B,UACEA,EAAI,MAAOE,GAAMA,EAAE,OAAS,uBAAqB,mBAAmB,CACtE,EAAE,KAAK,EAAI,KACX,UAAQF,EAAI,CAAC,EAAU,WAAW,EAAE,KAAKP,CAAW,CACtD,CAAC,KAED,MAAG,kEAAmE,SAAY,CAChF,MAAMO,EAAM,QAAM,8BAA2B,CAC3C,GAAGN,EAAWC,EAAmB,MAAO,CAAE,GAAAM,CAAG,IAC3CA,IAAO,OACH,SAAM,CACJ,GAAAA,EACA,WAAY,IAAI,WAAW,CAAC,CAAC,CAAC,EAC9B,MAAO,IACP,SAAU,GACZ,CAAC,KACD,QAAK,IAAI,MAAM,MAAM,CAAC,CAC5B,EACA,SAAU,CACR,CAAE,GAAI,IAAK,UAAW,IAAK,EAC3B,CAAE,GAAI,IAAK,UAAW,IAAK,CAC7B,CACF,CAAC,KAED,UAAOD,EAAI,CAAC,GAAG,IAAI,EAAE,KAAK,uBAAqB,mBAAmB,KAClE,UAAOA,EAAI,CAAC,GAAG,IAAI,EAAE,KAAK,uBAAqB,KAAK,CACtD,CAAC,KAED,MAAG,+CAAgD,SAAY,CAC7D,KAAG,MAAML,EAAmB,iBAAiB,EAAE,kBAC7C,IAAI,MAAM,UAAU,CACtB,EAEA,MAAMK,EAAM,QAAM,8BAA2B,CAC3C,GAAGN,EAAWC,EAAmB,MAAO,CAAE,GAAAM,CAAG,OAC3C,SAAM,CACJ,GAAAA,EACA,WAAY,IAAI,WAAW,CAAC,CAAC,CAAC,EAC9B,MAAO,IACP,SAAU,GACZ,CAAC,CACH,EACA,SAAU,CAAC,CAAE,GAAI,IAAK,UAAW,IAAK,CAAC,CACzC,CAAC,KAED,UAAOD,EAAI,CAAC,GAAG,IAAI,EAAE,KAAK,uBAAqB,KAAK,KACpD,UAAQA,EAAI,CAAC,EAAU,MAAM,OAAO,EAAE,KAAK,UAAU,CACvD,CAAC,KAED,MAAG,gFAAiF,SAAY,CAC9F,KAAG,MAAML,EAAmB,iBAAiB,EAAE,kBAAkB,MAAS,EAE1E,MAAMK,EAAM,QAAM,8BAA2B,CAC3C,GAAGN,EAAWC,EAAmB,MAAO,CAAE,GAAAM,CAAG,OAC3C,SAAM,CACJ,GAAAA,EACA,WAAY,IAAI,WAAW,CAAC,CAAC,CAAC,EAC9B,MAAO,IACP,SAAU,GACZ,CAAC,CACH,EACA,SAAU,CAAC,CAAE,GAAI,IAAK,UAAW,IAAK,CAAC,CACzC,CAAC,KAED,UAAOD,EAAI,CAAC,GAAG,IAAI,EAAE,KAAK,uBAAqB,KAAK,KACpD,UAAQA,EAAI,CAAC,EAAU,MAAM,OAAO,EAAE,QACpC,kCACF,CACF,CAAC,KAED,MAAG,kEAAmE,SAAY,CAChF,MAAMA,EAAM,QAAM,8BAA2B,CAC3C,GAAGN,EAAWC,EAAmB,MAAO,CAAE,GAAAM,CAAG,OAC3C,SAAM,CACJ,GAAAA,EACA,WAAY,IAAI,WAAW,CAAC,CAAC,CAAC,EAC9B,MAAO,OACP,SAAU,MACZ,CAAC,CACH,EACA,SAAU,CACR,CAAE,GAAI,IAAK,UAAW,IAAK,EAC3B,CAAE,GAAI,IAAK,UAAW,IAAK,EAC3B,CAAE,GAAI,IAAK,UAAW,IAAK,CAC7B,CACF,CAAC,KAED,UAAOD,CAAG,EAAE,aAAa,CAAC,KAE1B,UAAOL,EAAkB,eAAe,EAAE,sBAAsB,CAAC,CACnE,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_purify_ts", "import_vitest", "import_ClearSignContext", "import_challengeBoundLoader", "mockLogger", "certificate", "baseParams", "certificateLoader", "fetch", "value", "cert", "r", "out", "id", "c"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var i=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var p=(o,e)=>{for(var t in e)i(o,t,{get:e[t],enumerable:!0})},A=(o,e,t,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of f(e))!l.call(o,c)&&c!==t&&i(o,c,{get:()=>e[c],enumerable:!(m=N(e,c))||m.enumerable});return o};var O=o=>A(i({},"__esModule",{value:!0}),o);var n={};p(n,{deviceModelIdCodec:()=>X});module.exports=O(n);var r=require("@ledgerhq/device-management-kit"),d=require("purify-ts");const X=(0,d.oneOf)([(0,d.exactly)(r.DeviceModelId.NANO_X),(0,d.exactly)(r.DeviceModelId.NANO_SP),(0,d.exactly)(r.DeviceModelId.STAX),(0,d.exactly)(r.DeviceModelId.FLEX)]);0&&(module.exports={deviceModelIdCodec});
|
|
2
|
+
//# sourceMappingURL=deviceModelIdCodec.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/deviceModelIdCodec.ts"],
|
|
4
|
+
"sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { exactly, oneOf } from \"purify-ts\";\n\n/**\n * Set of device models supported by the clear-signing and transaction-check\n * flows. Excludes `NANO_S` and `APEX`.\n */\nexport const deviceModelIdCodec = oneOf([\n exactly(DeviceModelId.NANO_X),\n exactly(DeviceModelId.NANO_SP),\n exactly(DeviceModelId.STAX),\n exactly(DeviceModelId.FLEX),\n]);\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAA8B,2CAC9BC,EAA+B,qBAMxB,MAAMH,KAAqB,SAAM,IACtC,WAAQ,gBAAc,MAAM,KAC5B,WAAQ,gBAAc,OAAO,KAC7B,WAAQ,gBAAc,IAAI,KAC1B,WAAQ,gBAAc,IAAI,CAC5B,CAAC",
|
|
6
|
+
"names": ["deviceModelIdCodec_exports", "__export", "deviceModelIdCodec", "__toCommonJS", "import_device_management_kit", "import_purify_ts"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var e=require("@ledgerhq/device-management-kit"),t=require("purify-ts"),d=require("./deviceModelIdCodec");describe("deviceModelIdCodec",()=>{it.each([e.DeviceModelId.NANO_X,e.DeviceModelId.NANO_SP,e.DeviceModelId.STAX,e.DeviceModelId.FLEX])("decodes %s as Right",o=>{expect(d.deviceModelIdCodec.decode(o)).toEqual((0,t.Right)(o))}),it("rejects NANO_S (unsupported for clear-signing)",()=>{expect(d.deviceModelIdCodec.decode(e.DeviceModelId.NANO_S).isLeft()).toBe(!0)}),it.each([null,void 0,"","ledger",42,{},[]])("rejects non-model values: %s",o=>{expect(d.deviceModelIdCodec.decode(o).isLeft()).toBe(!0)}),it("encodes a model as itself",()=>{expect(d.deviceModelIdCodec.encode(e.DeviceModelId.NANO_X)).toBe(e.DeviceModelId.NANO_X)})});
|
|
2
|
+
//# sourceMappingURL=deviceModelIdCodec.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/deviceModelIdCodec.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Right } from \"purify-ts\";\n\nimport { deviceModelIdCodec } from \"./deviceModelIdCodec\";\n\ndescribe(\"deviceModelIdCodec\", () => {\n it.each([\n DeviceModelId.NANO_X,\n DeviceModelId.NANO_SP,\n DeviceModelId.STAX,\n DeviceModelId.FLEX,\n ])(\"decodes %s as Right\", (model) => {\n expect(deviceModelIdCodec.decode(model)).toEqual(Right(model));\n });\n\n it(\"rejects NANO_S (unsupported for clear-signing)\", () => {\n expect(deviceModelIdCodec.decode(DeviceModelId.NANO_S).isLeft()).toBe(true);\n });\n\n it.each([null, undefined, \"\", \"ledger\", 42, {}, []])(\n \"rejects non-model values: %s\",\n (value) => {\n expect(deviceModelIdCodec.decode(value).isLeft()).toBe(true);\n },\n );\n\n it(\"encodes a model as itself\", () => {\n expect(deviceModelIdCodec.encode(DeviceModelId.NANO_X)).toBe(\n DeviceModelId.NANO_X,\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA8B,2CAC9BC,EAAsB,qBAEtBC,EAAmC,gCAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,KAAK,CACN,gBAAc,OACd,gBAAc,QACd,gBAAc,KACd,gBAAc,IAChB,CAAC,EAAE,sBAAwBC,GAAU,CACnC,OAAO,qBAAmB,OAAOA,CAAK,CAAC,EAAE,WAAQ,SAAMA,CAAK,CAAC,CAC/D,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,OAAO,qBAAmB,OAAO,gBAAc,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CAC5E,CAAC,EAED,GAAG,KAAK,CAAC,KAAM,OAAW,GAAI,SAAU,GAAI,CAAC,EAAG,CAAC,CAAC,CAAC,EACjD,+BACCC,GAAU,CACT,OAAO,qBAAmB,OAAOA,CAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CAC7D,CACF,EAEA,GAAG,4BAA6B,IAAM,CACpC,OAAO,qBAAmB,OAAO,gBAAc,MAAM,CAAC,EAAE,KACtD,gBAAc,MAChB,CACF,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_device_management_kit", "import_purify_ts", "import_deviceModelIdCodec", "model", "value"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var g=(e,o)=>{for(var n in o)s(e,n,{get:o[n],enumerable:!0})},y=(e,o,n,c)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of p(o))!d.call(e,r)&&r!==n&&s(e,r,{get:()=>o[r],enumerable:!(c=i(o,r))||c.enumerable});return e};var D=e=>y(s({},"__esModule",{value:!0}),e);var a={};g(a,{signedDescriptorDtoCodec:()=>m});module.exports=D(a);var t=require("purify-ts");const f=t.Codec.custom({decode:e=>typeof e=="string"&&e.length>0?(0,t.Right)(e):(0,t.Left)("Expected a non-empty string"),encode:e=>e}),m=t.Codec.interface({signedDescriptor:f,keyId:t.string,keyUsage:t.string});0&&(module.exports={signedDescriptorDtoCodec});
|
|
2
|
+
//# sourceMappingURL=signedDescriptorDto.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/signedDescriptorDto.ts"],
|
|
4
|
+
"sourcesContent": ["import { Codec, type GetType, Left, Right, string } from \"purify-ts\";\n\n/**\n * Codec for a non-empty string. Rejects `\"\"` so callers can't decode a\n * malformed-but-typed-correctly response (e.g. `signedDescriptor: \"\"`)\n * into a valid DTO.\n */\nconst nonEmptyString = Codec.custom<string>({\n decode: (input) =>\n typeof input === \"string\" && input.length > 0\n ? Right(input)\n : Left(\"Expected a non-empty string\"),\n encode: (value) => value,\n});\n\n/**\n * Common envelope shape returned by the Solana dynamic-descriptor backend\n * endpoints: a hex-encoded signed TLV plus the PKI key identifiers used to\n * load the matching certificate. `Codec.interface` ignores extra fields, so\n * each datasource can validate this shared slice and ignore the rest of its\n * own response.\n */\nexport const signedDescriptorDtoCodec = Codec.interface({\n signedDescriptor: nonEmptyString,\n keyId: string,\n keyUsage: string,\n});\n\nexport type SignedDescriptorDto = GetType<typeof signedDescriptorDtoCodec>;\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyD,qBAOzD,MAAMC,EAAiB,QAAM,OAAe,CAC1C,OAASC,GACP,OAAOA,GAAU,UAAYA,EAAM,OAAS,KACxC,SAAMA,CAAK,KACX,QAAK,6BAA6B,EACxC,OAASC,GAAUA,CACrB,CAAC,EASYL,EAA2B,QAAM,UAAU,CACtD,iBAAkBG,EAClB,MAAO,SACP,SAAU,QACZ,CAAC",
|
|
6
|
+
"names": ["signedDescriptorDto_exports", "__export", "signedDescriptorDtoCodec", "__toCommonJS", "import_purify_ts", "nonEmptyString", "input", "value"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var s=require("purify-ts"),t=require("./signedDescriptorDto");describe("signedDescriptorDtoCodec",()=>{const e={signedDescriptor:"deadbeef",keyId:"some_key",keyUsage:"coin_meta"};it("decodes a well-formed envelope as Right",()=>{expect(t.signedDescriptorDtoCodec.decode(e)).toEqual((0,s.Right)(e))}),it("ignores extra fields (datasource-specific context)",()=>{const i={...e,account_address:"abc",entry_index:3};expect(t.signedDescriptorDtoCodec.decode(i)).toEqual((0,s.Right)(e))}),it("rejects null and primitives",()=>{expect(t.signedDescriptorDtoCodec.decode(null).isLeft()).toBe(!0),expect(t.signedDescriptorDtoCodec.decode(void 0).isLeft()).toBe(!0),expect(t.signedDescriptorDtoCodec.decode("string").isLeft()).toBe(!0),expect(t.signedDescriptorDtoCodec.decode(42).isLeft()).toBe(!0)}),it.each([["missing signedDescriptor",{keyId:"k",keyUsage:"u"}],["empty signedDescriptor",{...e,signedDescriptor:""}],["non-string signedDescriptor",{...e,signedDescriptor:123}],["missing keyId",{signedDescriptor:"ab",keyUsage:"u"}],["non-string keyId",{...e,keyId:null}],["missing keyUsage",{signedDescriptor:"ab",keyId:"k"}],["non-string keyUsage",{...e,keyUsage:0}]])("rejects %s",(i,d)=>{expect(t.signedDescriptorDtoCodec.decode(d).isLeft()).toBe(!0)})});
|
|
2
|
+
//# sourceMappingURL=signedDescriptorDto.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/signedDescriptorDto.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { Right } from \"purify-ts\";\n\nimport { signedDescriptorDtoCodec } from \"./signedDescriptorDto\";\n\ndescribe(\"signedDescriptorDtoCodec\", () => {\n const valid = {\n signedDescriptor: \"deadbeef\",\n keyId: \"some_key\",\n keyUsage: \"coin_meta\",\n };\n\n it(\"decodes a well-formed envelope as Right\", () => {\n expect(signedDescriptorDtoCodec.decode(valid)).toEqual(Right(valid));\n });\n\n it(\"ignores extra fields (datasource-specific context)\", () => {\n const withExtras = { ...valid, account_address: \"abc\", entry_index: 3 };\n expect(signedDescriptorDtoCodec.decode(withExtras)).toEqual(Right(valid));\n });\n\n it(\"rejects null and primitives\", () => {\n expect(signedDescriptorDtoCodec.decode(null).isLeft()).toBe(true);\n expect(signedDescriptorDtoCodec.decode(undefined).isLeft()).toBe(true);\n expect(signedDescriptorDtoCodec.decode(\"string\").isLeft()).toBe(true);\n expect(signedDescriptorDtoCodec.decode(42).isLeft()).toBe(true);\n });\n\n it.each([\n [\"missing signedDescriptor\", { keyId: \"k\", keyUsage: \"u\" }],\n [\"empty signedDescriptor\", { ...valid, signedDescriptor: \"\" }],\n [\"non-string signedDescriptor\", { ...valid, signedDescriptor: 123 }],\n [\"missing keyId\", { signedDescriptor: \"ab\", keyUsage: \"u\" }],\n [\"non-string keyId\", { ...valid, keyId: null }],\n [\"missing keyUsage\", { signedDescriptor: \"ab\", keyId: \"k\" }],\n [\"non-string keyUsage\", { ...valid, keyUsage: 0 }],\n ])(\"rejects %s\", (_label, bad) => {\n expect(signedDescriptorDtoCodec.decode(bad).isLeft()).toBe(true);\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAAsB,qBAEtBC,EAAyC,iCAEzC,SAAS,2BAA4B,IAAM,CACzC,MAAMC,EAAQ,CACZ,iBAAkB,WAClB,MAAO,WACP,SAAU,WACZ,EAEA,GAAG,0CAA2C,IAAM,CAClD,OAAO,2BAAyB,OAAOA,CAAK,CAAC,EAAE,WAAQ,SAAMA,CAAK,CAAC,CACrE,CAAC,EAED,GAAG,qDAAsD,IAAM,CAC7D,MAAMC,EAAa,CAAE,GAAGD,EAAO,gBAAiB,MAAO,YAAa,CAAE,EACtE,OAAO,2BAAyB,OAAOC,CAAU,CAAC,EAAE,WAAQ,SAAMD,CAAK,CAAC,CAC1E,CAAC,EAED,GAAG,8BAA+B,IAAM,CACtC,OAAO,2BAAyB,OAAO,IAAI,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,EAChE,OAAO,2BAAyB,OAAO,MAAS,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,EACrE,OAAO,2BAAyB,OAAO,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,EACpE,OAAO,2BAAyB,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CAChE,CAAC,EAED,GAAG,KAAK,CACN,CAAC,2BAA4B,CAAE,MAAO,IAAK,SAAU,GAAI,CAAC,EAC1D,CAAC,yBAA0B,CAAE,GAAGA,EAAO,iBAAkB,EAAG,CAAC,EAC7D,CAAC,8BAA+B,CAAE,GAAGA,EAAO,iBAAkB,GAAI,CAAC,EACnE,CAAC,gBAAiB,CAAE,iBAAkB,KAAM,SAAU,GAAI,CAAC,EAC3D,CAAC,mBAAoB,CAAE,GAAGA,EAAO,MAAO,IAAK,CAAC,EAC9C,CAAC,mBAAoB,CAAE,iBAAkB,KAAM,MAAO,GAAI,CAAC,EAC3D,CAAC,sBAAuB,CAAE,GAAGA,EAAO,SAAU,CAAE,CAAC,CACnD,CAAC,EAAE,aAAc,CAACE,EAAQC,IAAQ,CAChC,OAAO,2BAAyB,OAAOA,CAAG,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CACjE,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_purify_ts", "import_signedDescriptorDto", "valid", "withExtras", "_label", "bad"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var n=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var s=Object.prototype.hasOwnProperty;var x=(t,e)=>{for(var o in e)n(t,o,{get:e[o],enumerable:!0})},C=(t,e,o,m)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of u(e))!s.call(t,c)&&c!==o&&n(t,c,{get:()=>e[c],enumerable:!(m=p(e,c))||m.enumerable});return t};var b=t=>C(n({},"__esModule",{value:!0}),t);var i={};x(i,{u16Codec:()=>g,u8Codec:()=>f,uIntCodec:()=>d});module.exports=b(i);var r=require("purify-ts");const d=t=>{const e=2**t-1;return r.Codec.custom({decode:o=>typeof o=="number"&&Number.isInteger(o)&&o>=0&&o<=e?(0,r.Right)(o):(0,r.Left)(`Expected a u${t} integer (0..=${e})`),encode:o=>o})},f=d(8),g=d(16);0&&(module.exports={u16Codec,u8Codec,uIntCodec});
|
|
2
|
+
//# sourceMappingURL=uIntCodec.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/uIntCodec.ts"],
|
|
4
|
+
"sourcesContent": ["import { Codec, Left, Right } from \"purify-ts\";\n\n/**\n * Factory for an unsigned N-bit integer codec (0..=2^bits-1). Decodes only\n * finite integers in that range; everything else (floats, negatives,\n * non-numbers, NaN) returns Left.\n */\nexport const uIntCodec = (bits: number) => {\n const max = 2 ** bits - 1;\n return Codec.custom<number>({\n decode: (value) =>\n typeof value === \"number\" &&\n Number.isInteger(value) &&\n value >= 0 &&\n value <= max\n ? Right(value)\n : Left(`Expected a u${bits} integer (0..=${max})`),\n encode: (value) => value,\n });\n};\n\n/**\n * Codec for an unsigned 8-bit integer (0..=255).\n *\n * Used for byte-wide TLV fields like ALT entry indices.\n */\nexport const u8Codec = uIntCodec(8);\n\n/**\n * Codec for an unsigned 16-bit integer (0..=65535).\n *\n * Used for the enum-variant index, which can range over a uint16.\n */\nexport const u16Codec = uIntCodec(16);\n"],
|
|
5
|
+
"mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,EAAA,YAAAC,EAAA,cAAAC,IAAA,eAAAC,EAAAL,GAAA,IAAAM,EAAmC,qBAO5B,MAAMF,EAAaG,GAAiB,CACzC,MAAMC,EAAM,GAAKD,EAAO,EACxB,OAAO,QAAM,OAAe,CAC1B,OAASE,GACP,OAAOA,GAAU,UACjB,OAAO,UAAUA,CAAK,GACtBA,GAAS,GACTA,GAASD,KACL,SAAMC,CAAK,KACX,QAAK,eAAeF,CAAI,iBAAiBC,CAAG,GAAG,EACrD,OAASC,GAAUA,CACrB,CAAC,CACH,EAOaN,EAAUC,EAAU,CAAC,EAOrBF,EAAWE,EAAU,EAAE",
|
|
6
|
+
"names": ["uIntCodec_exports", "__export", "u16Codec", "u8Codec", "uIntCodec", "__toCommonJS", "import_purify_ts", "bits", "max", "value"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var c=require("purify-ts"),t=require("./uIntCodec");describe("uIntCodec",()=>{describe("uIntCodec factory",()=>{it("builds a codec bounded by the given bit width",()=>{const e=(0,t.uIntCodec)(4);expect(e.decode(0)).toEqual((0,c.Right)(0)),expect(e.decode(15)).toEqual((0,c.Right)(15)),expect(e.decode(16)).toEqual((0,c.Left)("Expected a u4 integer (0..=15)"))})}),describe("u8Codec",()=>{it.each([0,1,127,255])("decodes %s as Right",e=>{expect(t.u8Codec.decode(e)).toEqual((0,c.Right)(e))}),it.each([-1,256,1.5,Number.NaN,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY])("rejects out-of-range / non-integer numbers: %s",e=>{expect(t.u8Codec.decode(e)).toEqual((0,c.Left)("Expected a u8 integer (0..=255)"))}),it.each(["0",null,void 0,!0,{},[]])("rejects non-numeric values: %s",e=>{expect(t.u8Codec.decode(e)).toEqual((0,c.Left)("Expected a u8 integer (0..=255)"))}),it("encodes a number as itself",()=>{expect(t.u8Codec.encode(42)).toBe(42)})}),describe("u16Codec",()=>{it.each([0,1,255,256,1e3,65535])("decodes %s as Right",e=>{expect(t.u16Codec.decode(e)).toEqual((0,c.Right)(e))}),it.each([-1,65536,1.5,Number.NaN,Number.POSITIVE_INFINITY,Number.NEGATIVE_INFINITY])("rejects out-of-range / non-integer numbers: %s",e=>{expect(t.u16Codec.decode(e)).toEqual((0,c.Left)("Expected a u16 integer (0..=65535)"))}),it.each(["0",null,void 0,!0,{},[]])("rejects non-numeric values: %s",e=>{expect(t.u16Codec.decode(e)).toEqual((0,c.Left)("Expected a u16 integer (0..=65535)"))}),it("encodes a number as itself",()=>{expect(t.u16Codec.encode(4242)).toBe(4242)})})});
|
|
2
|
+
//# sourceMappingURL=uIntCodec.test.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/shared/utils/uIntCodec.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { Left, Right } from \"purify-ts\";\n\nimport { u8Codec, u16Codec, uIntCodec } from \"./uIntCodec\";\n\ndescribe(\"uIntCodec\", () => {\n describe(\"uIntCodec factory\", () => {\n it(\"builds a codec bounded by the given bit width\", () => {\n const u4Codec = uIntCodec(4);\n expect(u4Codec.decode(0)).toEqual(Right(0));\n expect(u4Codec.decode(15)).toEqual(Right(15));\n expect(u4Codec.decode(16)).toEqual(\n Left(\"Expected a u4 integer (0..=15)\"),\n );\n });\n });\n\n describe(\"u8Codec\", () => {\n it.each([0, 1, 127, 255])(\"decodes %s as Right\", (n) => {\n expect(u8Codec.decode(n)).toEqual(Right(n));\n });\n\n it.each([\n -1,\n 256,\n 1.5,\n Number.NaN,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ])(\"rejects out-of-range / non-integer numbers: %s\", (n) => {\n expect(u8Codec.decode(n)).toEqual(\n Left(\"Expected a u8 integer (0..=255)\"),\n );\n });\n\n it.each([\"0\", null, undefined, true, {}, []])(\n \"rejects non-numeric values: %s\",\n (value) => {\n expect(u8Codec.decode(value)).toEqual(\n Left(\"Expected a u8 integer (0..=255)\"),\n );\n },\n );\n\n it(\"encodes a number as itself\", () => {\n expect(u8Codec.encode(42)).toBe(42);\n });\n });\n\n describe(\"u16Codec\", () => {\n it.each([0, 1, 255, 256, 1000, 65535])(\"decodes %s as Right\", (n) => {\n expect(u16Codec.decode(n)).toEqual(Right(n));\n });\n\n it.each([\n -1,\n 65536,\n 1.5,\n Number.NaN,\n Number.POSITIVE_INFINITY,\n Number.NEGATIVE_INFINITY,\n ])(\"rejects out-of-range / non-integer numbers: %s\", (n) => {\n expect(u16Codec.decode(n)).toEqual(\n Left(\"Expected a u16 integer (0..=65535)\"),\n );\n });\n\n it.each([\"0\", null, undefined, true, {}, []])(\n \"rejects non-numeric values: %s\",\n (value) => {\n expect(u16Codec.decode(value)).toEqual(\n Left(\"Expected a u16 integer (0..=65535)\"),\n );\n },\n );\n\n it(\"encodes a number as itself\", () => {\n expect(u16Codec.encode(4242)).toBe(4242);\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "aAAA,IAAAA,EAA4B,qBAE5BC,EAA6C,uBAE7C,SAAS,YAAa,IAAM,CAC1B,SAAS,oBAAqB,IAAM,CAClC,GAAG,gDAAiD,IAAM,CACxD,MAAMC,KAAU,aAAU,CAAC,EAC3B,OAAOA,EAAQ,OAAO,CAAC,CAAC,EAAE,WAAQ,SAAM,CAAC,CAAC,EAC1C,OAAOA,EAAQ,OAAO,EAAE,CAAC,EAAE,WAAQ,SAAM,EAAE,CAAC,EAC5C,OAAOA,EAAQ,OAAO,EAAE,CAAC,EAAE,WACzB,QAAK,gCAAgC,CACvC,CACF,CAAC,CACH,CAAC,EAED,SAAS,UAAW,IAAM,CACxB,GAAG,KAAK,CAAC,EAAG,EAAG,IAAK,GAAG,CAAC,EAAE,sBAAwBC,GAAM,CACtD,OAAO,UAAQ,OAAOA,CAAC,CAAC,EAAE,WAAQ,SAAMA,CAAC,CAAC,CAC5C,CAAC,EAED,GAAG,KAAK,CACN,GACA,IACA,IACA,OAAO,IACP,OAAO,kBACP,OAAO,iBACT,CAAC,EAAE,iDAAmDA,GAAM,CAC1D,OAAO,UAAQ,OAAOA,CAAC,CAAC,EAAE,WACxB,QAAK,iCAAiC,CACxC,CACF,CAAC,EAED,GAAG,KAAK,CAAC,IAAK,KAAM,OAAW,GAAM,CAAC,EAAG,CAAC,CAAC,CAAC,EAC1C,iCACCC,GAAU,CACT,OAAO,UAAQ,OAAOA,CAAK,CAAC,EAAE,WAC5B,QAAK,iCAAiC,CACxC,CACF,CACF,EAEA,GAAG,6BAA8B,IAAM,CACrC,OAAO,UAAQ,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CACpC,CAAC,CACH,CAAC,EAED,SAAS,WAAY,IAAM,CACzB,GAAG,KAAK,CAAC,EAAG,EAAG,IAAK,IAAK,IAAM,KAAK,CAAC,EAAE,sBAAwBD,GAAM,CACnE,OAAO,WAAS,OAAOA,CAAC,CAAC,EAAE,WAAQ,SAAMA,CAAC,CAAC,CAC7C,CAAC,EAED,GAAG,KAAK,CACN,GACA,MACA,IACA,OAAO,IACP,OAAO,kBACP,OAAO,iBACT,CAAC,EAAE,iDAAmDA,GAAM,CAC1D,OAAO,WAAS,OAAOA,CAAC,CAAC,EAAE,WACzB,QAAK,oCAAoC,CAC3C,CACF,CAAC,EAED,GAAG,KAAK,CAAC,IAAK,KAAM,OAAW,GAAM,CAAC,EAAG,CAAC,CAAC,CAAC,EAC1C,iCACCC,GAAU,CACT,OAAO,WAAS,OAAOA,CAAK,CAAC,EAAE,WAC7B,QAAK,oCAAoC,CAC3C,CACF,CACF,EAEA,GAAG,6BAA8B,IAAM,CACrC,OAAO,WAAS,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,CACzC,CAAC,CACH,CAAC,CACH,CAAC",
|
|
6
|
+
"names": ["import_purify_ts", "import_uIntCodec", "u4Codec", "n", "value"]
|
|
7
|
+
}
|
package/lib/esm/package.json
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"license": "Apache-2.0",
|
|
36
36
|
"name": "@ledgerhq/context-module",
|
|
37
37
|
"peerDependencies": {
|
|
38
|
-
"@ledgerhq/device-management-kit": "
|
|
38
|
+
"@ledgerhq/device-management-kit": "^1.7.1"
|
|
39
39
|
},
|
|
40
40
|
"private": false,
|
|
41
41
|
"repository": {
|
|
@@ -58,5 +58,5 @@
|
|
|
58
58
|
"watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
|
|
59
59
|
"watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
|
|
60
60
|
},
|
|
61
|
-
"version": "2.
|
|
61
|
+
"version": "2.3.0"
|
|
62
62
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{noopLoggerFactory as o}from"@ledgerhq/device-management-kit";import{DefaultContextModule as r}from"./DefaultContextModule";const i="https://
|
|
1
|
+
import{noopLoggerFactory as o}from"@ledgerhq/device-management-kit";import{DefaultContextModule as r}from"./DefaultContextModule";const i="https://global.api.prd.ledger.com/cal/v1",n="https://global.api.prd.ledger.com/transaction-checks/v3",a="https://nft.api.live.ledger.com",d="https://blind-signing.api.ledger.com/ingest/v1",s=Object.freeze({cal:Object.freeze({url:i,mode:"prod",branch:"main"}),web3checks:Object.freeze({url:n}),metadataServiceDomain:Object.freeze({url:a}),reporter:Object.freeze({url:d}),datasource:Object.freeze({proxy:"default"}),appSource:"third-party"}),u={defaultLoaders:!0,defaultFieldLoaders:!0,customLoaders:[],customFieldLoaders:[],customTypedDataLoader:void 0,customBlindSigningReporter:void 0,customTrustedNameDataSource:void 0};class C{config;constructor({originToken:e,loggerFactory:t}){this.config={...s,...u,customLoaders:[],customFieldLoaders:[],originToken:e??"",loggerFactory:t??o}}removeDefaultLoaders(){return this.config.defaultLoaders=!1,this}addLoader(e){return this.config.customLoaders.push(e),this}addTypedDataLoader(e){return this.config.customTypedDataLoader=e,this}setCalConfig(e){return this.config.cal=e,this}setMetadataServiceConfig(e){return this.config.metadataServiceDomain=e,this}setWeb3ChecksConfig(e){return this.config.web3checks=e,this}setDatasourceConfig(e){return this.config.datasource=e,this}setReporterConfig(e){return this.config.reporter=e,this}setAppSource(e){return this.config.appSource=e,this}setBlindSigningReporter(e){return this.config.customBlindSigningReporter=e,this}setTrustedNameDataSource(e){return this.config.customTrustedNameDataSource=e,this}setLoggerFactory(e){return this.config.loggerFactory=e,this}setChain(e){return this.config.chain=e,this}build(){if(!this.config.chain)throw new Error("[ContextModuleBuilder] setChain() must be called before build()");return new r(this.config)}}export{C as ContextModuleBuilder,s as DEFAULT_CONFIG};
|
|
2
2
|
//# sourceMappingURL=ContextModuleBuilder.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/ContextModuleBuilder.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type LoggerPublisherService,\n noopLoggerFactory,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type ContextModuleConstructorArgs } from \"./config/model/ContextModuleBuildArgs\";\nimport {\n type ContextModuleCalConfig,\n type ContextModuleConfig,\n type ContextModuleDatasourceConfig,\n type ContextModuleLoaderConfig,\n type ContextModuleMetadataServiceConfig,\n type ContextModuleReporterConfig,\n type ContextModuleServiceConfig,\n type ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { type TrustedNameDataSource } from \"./modules/ethereum/trusted-name/data/TrustedNameDataSource\";\nimport { type TypedDataContextLoader } from \"./modules/ethereum/typed-data/domain/TypedDataContextLoader\";\nimport { type BlindSigningReporter } from \"./modules/multichain/reporter/domain/BlindSigningReporter\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport { type ContextModuleChainID } from \"./shared/domain/ContextModuleChainID\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\nconst DEFAULT_CAL_URL = \"https://
|
|
5
|
-
"mappings": "AAAA,OAEE,qBAAAA,MACK,kCAmBP,OAAS,wBAAAC,MAA4B,yBAErC,MAAMC,EAAkB,
|
|
4
|
+
"sourcesContent": ["import {\n type LoggerPublisherService,\n noopLoggerFactory,\n} from \"@ledgerhq/device-management-kit\";\n\nimport { type ContextModuleConstructorArgs } from \"./config/model/ContextModuleBuildArgs\";\nimport {\n type ContextModuleCalConfig,\n type ContextModuleConfig,\n type ContextModuleDatasourceConfig,\n type ContextModuleLoaderConfig,\n type ContextModuleMetadataServiceConfig,\n type ContextModuleReporterConfig,\n type ContextModuleServiceConfig,\n type ContextModuleWeb3ChecksConfig,\n} from \"./config/model/ContextModuleConfig\";\nimport { type TrustedNameDataSource } from \"./modules/ethereum/trusted-name/data/TrustedNameDataSource\";\nimport { type TypedDataContextLoader } from \"./modules/ethereum/typed-data/domain/TypedDataContextLoader\";\nimport { type BlindSigningReporter } from \"./modules/multichain/reporter/domain/BlindSigningReporter\";\nimport { type ContextLoader } from \"./shared/domain/ContextLoader\";\nimport { type ContextModuleChainID } from \"./shared/domain/ContextModuleChainID\";\nimport { type ContextModule } from \"./ContextModule\";\nimport { DefaultContextModule } from \"./DefaultContextModule\";\n\nconst DEFAULT_CAL_URL = \"https://global.api.prd.ledger.com/cal/v1\";\nconst DEFAULT_WEB3_CHECKS_URL =\n \"https://global.api.prd.ledger.com/transaction-checks/v3\";\nconst DEFAULT_METADATA_SERVICE_DOMAIN = \"https://nft.api.live.ledger.com\";\nconst DEFAULT_REPORTER_URL = \"https://blind-signing.api.ledger.com/ingest/v1\";\n\n/**\n * Default configuration for the context module\n *\n * @note This configuration is frozen to prevent modifications after construction\n * and can be used by external packages to get a default configuration.\n */\nexport const DEFAULT_CONFIG: Readonly<ContextModuleConfig> = Object.freeze({\n cal: Object.freeze({\n url: DEFAULT_CAL_URL,\n mode: \"prod\",\n branch: \"main\",\n }),\n web3checks: Object.freeze({\n url: DEFAULT_WEB3_CHECKS_URL,\n }),\n metadataServiceDomain: Object.freeze({\n url: DEFAULT_METADATA_SERVICE_DOMAIN,\n }),\n reporter: Object.freeze({\n url: DEFAULT_REPORTER_URL,\n }),\n datasource: Object.freeze({ proxy: \"default\" }),\n appSource: \"third-party\",\n});\n\n/**\n * Default loader configuration for the context module\n *\n * @note This configuration is internal and will be the default configuration for the context module.\n */\nconst DEFAULT_LOADER_CONFIG: ContextModuleLoaderConfig = {\n defaultLoaders: true,\n defaultFieldLoaders: true,\n customLoaders: [],\n customFieldLoaders: [],\n customTypedDataLoader: undefined,\n customBlindSigningReporter: undefined,\n customTrustedNameDataSource: undefined,\n};\n\n// Internal config type: all ServiceConfig fields except chain (set later via setChain)\ntype BuilderConfig = Omit<ContextModuleServiceConfig, \"chain\"> &\n Partial<Pick<ContextModuleServiceConfig, \"chain\">> &\n ContextModuleLoaderConfig;\n\nexport class ContextModuleBuilder {\n private config: BuilderConfig;\n\n constructor({ originToken, loggerFactory }: ContextModuleConstructorArgs) {\n this.config = {\n ...DEFAULT_CONFIG,\n ...DEFAULT_LOADER_CONFIG,\n customLoaders: [],\n customFieldLoaders: [],\n originToken: originToken ?? \"\",\n loggerFactory: loggerFactory ?? noopLoggerFactory,\n };\n }\n\n /**\n * Remove default loaders from the list of loaders\n *\n * @returns this\n */\n removeDefaultLoaders() {\n this.config.defaultLoaders = false;\n return this;\n }\n\n /**\n * Add a custom loader to the list of loaders\n *\n * @param loader loader to add to the list of loaders\n * @returns this\n */\n addLoader(loader: ContextLoader) {\n this.config.customLoaders.push(loader);\n return this;\n }\n\n /**\n * Replace the default loader for typed data clear signing contexts\n *\n * @param loader loader to use for typed data clear signing contexts\n * @returns this\n */\n addTypedDataLoader(loader: TypedDataContextLoader) {\n this.config.customTypedDataLoader = loader;\n return this;\n }\n\n /**\n * Add a custom CAL configuration\n *\n * @param calConfig\n * @returns this\n */\n setCalConfig(calConfig: ContextModuleCalConfig) {\n this.config.cal = calConfig;\n return this;\n }\n\n /**\n * Add a custom metadata service configuration\n *\n * @param metadataServiceConfig\n * @returns this\n */\n setMetadataServiceConfig(\n metadataServiceConfig: ContextModuleMetadataServiceConfig,\n ) {\n this.config.metadataServiceDomain = metadataServiceConfig;\n return this;\n }\n\n /**\n * Add a custom web3 checks configuration\n *\n * @param web3ChecksConfig\n * @returns this\n */\n setWeb3ChecksConfig(web3ChecksConfig: ContextModuleWeb3ChecksConfig) {\n this.config.web3checks = web3ChecksConfig;\n return this;\n }\n\n /**\n * Add datasource configuration\n *\n * @param datasourceConfig\n * @returns this\n */\n setDatasourceConfig(datasourceConfig: ContextModuleDatasourceConfig) {\n this.config.datasource = datasourceConfig;\n return this;\n }\n\n /**\n * Set a custom reporter configuration\n *\n * @param reporterConfig\n * @returns this\n */\n setReporterConfig(reporterConfig: ContextModuleReporterConfig) {\n this.config.reporter = reporterConfig;\n return this;\n }\n\n /**\n * Set the app source identifier included in blind signing reports\n *\n * @param appSource\n * @returns this\n */\n setAppSource(appSource: string) {\n this.config.appSource = appSource;\n return this;\n }\n\n /**\n * Set a custom blind signing reporter\n *\n * @param reporter reporter to use for blind signing events\n * @returns this\n */\n setBlindSigningReporter(reporter: BlindSigningReporter) {\n this.config.customBlindSigningReporter = reporter;\n return this;\n }\n\n /**\n * Set a custom trusted name data source\n *\n * @param dataSource data source to use for trusted name resolution\n * @returns this\n */\n setTrustedNameDataSource(dataSource: TrustedNameDataSource) {\n this.config.customTrustedNameDataSource = dataSource;\n return this;\n }\n\n /**\n * Set a custom logger factory\n *\n * @param loggerFactory\n * @returns this\n */\n setLoggerFactory(loggerFactory: (tag: string) => LoggerPublisherService) {\n this.config.loggerFactory = loggerFactory;\n return this;\n }\n\n /**\n * Set the chain for which this context module is built\n *\n * @param chain\n * @returns this\n */\n setChain(chain: ContextModuleChainID) {\n this.config.chain = chain;\n return this;\n }\n\n /**\n * Build the context module\n *\n * @returns the context module\n */\n build(): ContextModule {\n if (!this.config.chain) {\n throw new Error(\n \"[ContextModuleBuilder] setChain() must be called before build()\",\n );\n }\n return new DefaultContextModule(\n this.config as ContextModuleServiceConfig & ContextModuleLoaderConfig,\n );\n }\n}\n"],
|
|
5
|
+
"mappings": "AAAA,OAEE,qBAAAA,MACK,kCAmBP,OAAS,wBAAAC,MAA4B,yBAErC,MAAMC,EAAkB,2CAClBC,EACJ,0DACIC,EAAkC,kCAClCC,EAAuB,iDAQhBC,EAAgD,OAAO,OAAO,CACzE,IAAK,OAAO,OAAO,CACjB,IAAKJ,EACL,KAAM,OACN,OAAQ,MACV,CAAC,EACD,WAAY,OAAO,OAAO,CACxB,IAAKC,CACP,CAAC,EACD,sBAAuB,OAAO,OAAO,CACnC,IAAKC,CACP,CAAC,EACD,SAAU,OAAO,OAAO,CACtB,IAAKC,CACP,CAAC,EACD,WAAY,OAAO,OAAO,CAAE,MAAO,SAAU,CAAC,EAC9C,UAAW,aACb,CAAC,EAOKE,EAAmD,CACvD,eAAgB,GAChB,oBAAqB,GACrB,cAAe,CAAC,EAChB,mBAAoB,CAAC,EACrB,sBAAuB,OACvB,2BAA4B,OAC5B,4BAA6B,MAC/B,EAOO,MAAMC,CAAqB,CACxB,OAER,YAAY,CAAE,YAAAC,EAAa,cAAAC,CAAc,EAAiC,CACxE,KAAK,OAAS,CACZ,GAAGJ,EACH,GAAGC,EACH,cAAe,CAAC,EAChB,mBAAoB,CAAC,EACrB,YAAaE,GAAe,GAC5B,cAAeC,GAAiBV,CAClC,CACF,CAOA,sBAAuB,CACrB,YAAK,OAAO,eAAiB,GACtB,IACT,CAQA,UAAUW,EAAuB,CAC/B,YAAK,OAAO,cAAc,KAAKA,CAAM,EAC9B,IACT,CAQA,mBAAmBA,EAAgC,CACjD,YAAK,OAAO,sBAAwBA,EAC7B,IACT,CAQA,aAAaC,EAAmC,CAC9C,YAAK,OAAO,IAAMA,EACX,IACT,CAQA,yBACEC,EACA,CACA,YAAK,OAAO,sBAAwBA,EAC7B,IACT,CAQA,oBAAoBC,EAAiD,CACnE,YAAK,OAAO,WAAaA,EAClB,IACT,CAQA,oBAAoBC,EAAiD,CACnE,YAAK,OAAO,WAAaA,EAClB,IACT,CAQA,kBAAkBC,EAA6C,CAC7D,YAAK,OAAO,SAAWA,EAChB,IACT,CAQA,aAAaC,EAAmB,CAC9B,YAAK,OAAO,UAAYA,EACjB,IACT,CAQA,wBAAwBC,EAAgC,CACtD,YAAK,OAAO,2BAA6BA,EAClC,IACT,CAQA,yBAAyBC,EAAmC,CAC1D,YAAK,OAAO,4BAA8BA,EACnC,IACT,CAQA,iBAAiBT,EAAwD,CACvE,YAAK,OAAO,cAAgBA,EACrB,IACT,CAQA,SAASU,EAA6B,CACpC,YAAK,OAAO,MAAQA,EACb,IACT,CAOA,OAAuB,CACrB,GAAI,CAAC,KAAK,OAAO,MACf,MAAM,IAAI,MACR,iEACF,EAEF,OAAO,IAAInB,EACT,KAAK,MACP,CACF,CACF",
|
|
6
6
|
"names": ["noopLoggerFactory", "DefaultContextModule", "DEFAULT_CAL_URL", "DEFAULT_WEB3_CHECKS_URL", "DEFAULT_METADATA_SERVICE_DOMAIN", "DEFAULT_REPORTER_URL", "DEFAULT_CONFIG", "DEFAULT_LOADER_CONFIG", "ContextModuleBuilder", "originToken", "loggerFactory", "loader", "calConfig", "metadataServiceConfig", "web3ChecksConfig", "datasourceConfig", "reporterConfig", "appSource", "reporter", "dataSource", "chain"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{configTypes as u}from"./config/di/configTypes";import{HttpProxyDataSource as f}from"./modules/ethereum/proxy/data/HttpProxyDataSource";import{HttpSafeProxyDataSource as C}from"./modules/ethereum/proxy/data/HttpSafeProxyDataSource";import{proxyTypes as d}from"./modules/ethereum/proxy/di/proxyTypes";import{HttpTrustedNameDataSource as h}from"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource";import{trustedNameTypes as x}from"./modules/ethereum/trusted-name/di/trustedNameTypes";import{ContextModuleChainID as a}from"./shared/domain/ContextModuleChainID";import{ContextModuleBuilder as r}from"./ContextModuleBuilder";import{DefaultContextModule as s}from"./DefaultContextModule";describe("ContextModuleBuilder",()=>{const l={url:"https://cal/v1",mode:"prod",branch:"main"},g={url:"https://web3checks/v1"},c={originToken:"test",loggerFactory:()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]})};beforeEach(()=>{vi.resetAllMocks()}),it("should return a default context module",()=>{const e=new r(c).setChain(a.Ethereum).build();expect(e).toBeInstanceOf(s)}),it("should return a custom context module",()=>{const t=new r(c),e={load:vi.fn(),canHandle:vi.fn()},o=t.removeDefaultLoaders().addLoader(e).setChain(a.Ethereum).build();expect(o).toBeInstanceOf(s)}),it("should return a custom context module with a custom typed data loader",()=>{const t=new r(c),e={load:vi.fn()},o=t.removeDefaultLoaders().addTypedDataLoader(e).setChain(a.Ethereum).build();expect(o).toBeInstanceOf(s),expect(o._typedDataLoader).toBe(e)}),it("should return a custom context module with a custom config",()=>{const e=new r(c).setCalConfig(l).setWeb3ChecksConfig(g).setChain(a.Ethereum).build(),o=e._container.get(u.Config);expect(e).toBeInstanceOf(s),expect(o.cal).toEqual(l),expect(o.web3checks).toEqual(g)}),it("should not throw when setChain is called before build",()=>{const t=new r(c);expect(()=>t.setChain(a.Ethereum).build()).not.toThrow()}),it("should throw when setChain is not called before build",()=>{const t=new r(c);expect(()=>t.build()).toThrow("[ContextModuleBuilder] setChain() must be called before build()")}),describe("setMetadataServiceConfig",()=>{it("should set the metadata service configuration",()=>{const t=new r(c),e={url:"https://custom-metadata-service.com/v3"},o=t.setMetadataServiceConfig(e).setChain(a.Ethereum).build(),n=o._container.get(u.Config);expect(o).toBeInstanceOf(s),expect(n.metadataServiceDomain).toEqual(e)}),it("should override the default metadata service configuration",()=>{const t=new r(c),e={url:"https://override-metadata-service.com/v1"},n=t.setMetadataServiceConfig(e).setChain(a.Ethereum).build()._container.get(u.Config);expect(n.metadataServiceDomain.url).toBe(e.url),expect(n.metadataServiceDomain.url).not.toBe("https://nft.api.live.ledger.com/v2")})}),describe("setCalConfig",()=>{it("should set the CAL configuration",()=>{const t=new r(c),e={url:"https://custom-cal-service.com/v2",mode:"test",branch:"next"},o=t.setCalConfig(e).setChain(a.Ethereum).build(),n=o._container.get(u.Config);expect(o).toBeInstanceOf(s),expect(n.cal).toEqual(e)}),it("should override the default CAL configuration",()=>{const t=new r(c),e={url:"https://override-cal-service.com/v1",mode:"prod",branch:"demo"},n=t.setCalConfig(e).setChain(a.Ethereum).build()._container.get(u.Config);expect(n.cal.url).toBe(e.url),expect(n.cal.mode).toBe(e.mode),expect(n.cal.branch).toBe(e.branch),expect(n.cal.url).not.toBe("https://
|
|
1
|
+
import{configTypes as u}from"./config/di/configTypes";import{HttpProxyDataSource as f}from"./modules/ethereum/proxy/data/HttpProxyDataSource";import{HttpSafeProxyDataSource as C}from"./modules/ethereum/proxy/data/HttpSafeProxyDataSource";import{proxyTypes as d}from"./modules/ethereum/proxy/di/proxyTypes";import{HttpTrustedNameDataSource as h}from"./modules/ethereum/trusted-name/data/HttpTrustedNameDataSource";import{trustedNameTypes as x}from"./modules/ethereum/trusted-name/di/trustedNameTypes";import{ContextModuleChainID as a}from"./shared/domain/ContextModuleChainID";import{ContextModuleBuilder as r}from"./ContextModuleBuilder";import{DefaultContextModule as s}from"./DefaultContextModule";describe("ContextModuleBuilder",()=>{const l={url:"https://cal/v1",mode:"prod",branch:"main"},g={url:"https://web3checks/v1"},c={originToken:"test",loggerFactory:()=>({debug:vi.fn(),info:vi.fn(),warn:vi.fn(),error:vi.fn(),subscribers:[]})};beforeEach(()=>{vi.resetAllMocks()}),it("should return a default context module",()=>{const e=new r(c).setChain(a.Ethereum).build();expect(e).toBeInstanceOf(s)}),it("should return a custom context module",()=>{const t=new r(c),e={load:vi.fn(),canHandle:vi.fn()},o=t.removeDefaultLoaders().addLoader(e).setChain(a.Ethereum).build();expect(o).toBeInstanceOf(s)}),it("should return a custom context module with a custom typed data loader",()=>{const t=new r(c),e={load:vi.fn()},o=t.removeDefaultLoaders().addTypedDataLoader(e).setChain(a.Ethereum).build();expect(o).toBeInstanceOf(s),expect(o._typedDataLoader).toBe(e)}),it("should return a custom context module with a custom config",()=>{const e=new r(c).setCalConfig(l).setWeb3ChecksConfig(g).setChain(a.Ethereum).build(),o=e._container.get(u.Config);expect(e).toBeInstanceOf(s),expect(o.cal).toEqual(l),expect(o.web3checks).toEqual(g)}),it("should not throw when setChain is called before build",()=>{const t=new r(c);expect(()=>t.setChain(a.Ethereum).build()).not.toThrow()}),it("should throw when setChain is not called before build",()=>{const t=new r(c);expect(()=>t.build()).toThrow("[ContextModuleBuilder] setChain() must be called before build()")}),describe("setMetadataServiceConfig",()=>{it("should set the metadata service configuration",()=>{const t=new r(c),e={url:"https://custom-metadata-service.com/v3"},o=t.setMetadataServiceConfig(e).setChain(a.Ethereum).build(),n=o._container.get(u.Config);expect(o).toBeInstanceOf(s),expect(n.metadataServiceDomain).toEqual(e)}),it("should override the default metadata service configuration",()=>{const t=new r(c),e={url:"https://override-metadata-service.com/v1"},n=t.setMetadataServiceConfig(e).setChain(a.Ethereum).build()._container.get(u.Config);expect(n.metadataServiceDomain.url).toBe(e.url),expect(n.metadataServiceDomain.url).not.toBe("https://nft.api.live.ledger.com/v2")})}),describe("setCalConfig",()=>{it("should set the CAL configuration",()=>{const t=new r(c),e={url:"https://custom-cal-service.com/v2",mode:"test",branch:"next"},o=t.setCalConfig(e).setChain(a.Ethereum).build(),n=o._container.get(u.Config);expect(o).toBeInstanceOf(s),expect(n.cal).toEqual(e)}),it("should override the default CAL configuration",()=>{const t=new r(c),e={url:"https://override-cal-service.com/v1",mode:"prod",branch:"demo"},n=t.setCalConfig(e).setChain(a.Ethereum).build()._container.get(u.Config);expect(n.cal.url).toBe(e.url),expect(n.cal.mode).toBe(e.mode),expect(n.cal.branch).toBe(e.branch),expect(n.cal.url).not.toBe("https://global.api.prd.ledger.com/cal/v1")})}),describe("setWeb3ChecksConfig",()=>{it("should set the web3 checks configuration",()=>{const t=new r(c),e={url:"https://custom-web3checks-service.com/v4"},o=t.setWeb3ChecksConfig(e).setChain(a.Ethereum).build(),n=o._container.get(u.Config);expect(o).toBeInstanceOf(s),expect(n.web3checks).toEqual(e)}),it("should override the default web3 checks configuration",()=>{const t=new r(c),e={url:"https://override-web3checks-service.com/v2"},n=t.setWeb3ChecksConfig(e).setChain(a.Ethereum).build()._container.get(u.Config);expect(n.web3checks.url).toBe(e.url),expect(n.web3checks.url).not.toBe("https://global.api.prd.ledger.com/transaction-checks/v3")})}),describe("setDatasourceConfig",()=>{it("should bind HttpSafeProxyDataSource when proxy is 'safe'",()=>{const t=new r(c),e={proxy:"safe"},o=t.setDatasourceConfig(e).setChain(a.Ethereum).build(),n=o._container.get(d.ProxyDataSource);expect(o).toBeInstanceOf(s),expect(n).toBeInstanceOf(C)}),it("should bind HttpProxyDataSource when proxy is 'default'",()=>{const t=new r(c),e={proxy:"default"},o=t.setDatasourceConfig(e).setChain(a.Ethereum).build(),n=o._container.get(d.ProxyDataSource);expect(o).toBeInstanceOf(s),expect(n).toBeInstanceOf(f)}),it("should bind HttpProxyDataSource when datasource config is empty",()=>{const t=new r(c),e={},o=t.setDatasourceConfig(e).setChain(a.Ethereum).build(),n=o._container.get(d.ProxyDataSource);expect(o).toBeInstanceOf(s),expect(n).toBeInstanceOf(f)})}),describe("loggerFactory",()=>{it("should use the default empty logger when loggerFactory is not provided",()=>{const e=new r({originToken:"test"}).setChain(a.Ethereum).build(),o=e._container.get(u.ContextModuleLoggerFactory);expect(e).toBeInstanceOf(s),expect(o).toBeDefined();const n=o("test");expect(n.debug).toBeDefined(),expect(n.info).toBeDefined(),expect(n.warn).toBeDefined(),expect(n.error).toBeDefined(),expect(n.subscribers).toEqual([]),expect(()=>n.debug("test")).not.toThrow(),expect(()=>n.info("test")).not.toThrow(),expect(()=>n.warn("test")).not.toThrow(),expect(()=>n.error("test")).not.toThrow()}),it("should set the loggerFactory when provided in the constructor",()=>{const t=vi.fn(),o=new r({...c,loggerFactory:t}).setChain(a.Ethereum).build(),n=o._container.get(u.ContextModuleLoggerFactory);expect(o).toBeInstanceOf(s),expect(n).toBe(t)}),it("should set the loggerFactory via setLoggerFactory",()=>{const t=vi.fn(),o=new r(c).setLoggerFactory(t).setChain(a.Ethereum).build(),n=o._container.get(u.ContextModuleLoggerFactory);expect(o).toBeInstanceOf(s),expect(n).toBe(t)}),it("should override constructor loggerFactory with setLoggerFactory",()=>{const t=vi.fn(),e=vi.fn(),i=new r({...c,loggerFactory:t}).setLoggerFactory(e).setChain(a.Ethereum).build()._container.get(u.ContextModuleLoggerFactory);expect(i).toBe(e),expect(i).not.toBe(t)})}),describe("instance isolation",()=>{it("should not share customLoaders arrays between builder instances",()=>{const t=new r(c),e=new r(c),o={load:vi.fn(),canHandle:vi.fn()};t.addLoader(o);const n=t.removeDefaultLoaders().setChain(a.Ethereum).build(),i=e.removeDefaultLoaders().setChain(a.Ethereum).build();expect(n._loaders).toHaveLength(1),expect(i._loaders).toHaveLength(0)})}),describe("setTrustedNameDataSource",()=>{it("should inject the custom data source into the container",()=>{const t=new r(c),e={getDomainNamePayload:vi.fn(),getTrustedNamePayload:vi.fn()},n=t.setTrustedNameDataSource(e).setChain(a.Ethereum).build()._container.get(x.TrustedNameDataSource);expect(n).toBe(e)}),it("should use HttpTrustedNameDataSource when no custom data source is set",()=>{const e=new r(c).setChain(a.Ethereum).build(),o=e._container.get(x.TrustedNameDataSource);expect(e).toBeInstanceOf(s),expect(o).toBeInstanceOf(h)})})});
|
|
2
2
|
//# sourceMappingURL=ContextModuleBuilder.test.js.map
|