@ledgerhq/context-module 2.3.0 → 2.4.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/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 +1 -1
- package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +1 -1
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +2 -2
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +2 -2
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +2 -2
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
- package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +3 -3
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js +1 -1
- package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +2 -2
- package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.js.map +3 -3
- 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 +3 -3
- 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 +2 -2
- package/lib/cjs/src/modules/solana/model/SolanaTransactionContext.js +1 -1
- package/lib/cjs/src/modules/solana/model/SolanaTransactionContext.js.map +1 -1
- package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js.map +2 -2
- package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js +1 -1
- package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.test.js +2 -0
- package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.test.js.map +7 -0
- package/lib/cjs/src/modules/solana/token/data/MintToIdDataSource.js +2 -0
- package/lib/cjs/src/modules/solana/token/data/MintToIdDataSource.js.map +7 -0
- package/lib/cjs/src/modules/solana/token/di/tokenModuleFactory.js +1 -1
- package/lib/cjs/src/modules/solana/token/di/tokenModuleFactory.js.map +3 -3
- package/lib/cjs/src/modules/solana/token/di/tokenTypes.js +1 -1
- package/lib/cjs/src/modules/solana/token/di/tokenTypes.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/domain/TokenContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.test.js.map +3 -3
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +2 -2
- package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +1 -1
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +2 -2
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +3 -3
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +1 -1
- package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
- package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
- package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +1 -1
- package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +1 -1
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +1 -1
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +2 -2
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
- package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +2 -2
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.js +1 -1
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.js.map +2 -2
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js +1 -1
- package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js.map +2 -2
- package/lib/esm/package.json +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/HttpAltResolutionDataSource.js +1 -1
- package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +2 -2
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +2 -2
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +1 -1
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +2 -2
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
- package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +3 -3
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js +1 -1
- package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +2 -2
- package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.js.map +3 -3
- 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 +3 -3
- package/lib/esm/src/modules/solana/model/SolanaPayloads.js.map +2 -2
- package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js +1 -1
- package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js.map +2 -2
- package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js +1 -1
- package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.js +2 -0
- package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.test.js +2 -0
- package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.test.js.map +7 -0
- package/lib/esm/src/modules/solana/token/data/MintToIdDataSource.js +1 -0
- package/lib/esm/src/modules/solana/token/data/MintToIdDataSource.js.map +7 -0
- package/lib/esm/src/modules/solana/token/di/tokenModuleFactory.js +1 -1
- package/lib/esm/src/modules/solana/token/di/tokenModuleFactory.js.map +3 -3
- package/lib/esm/src/modules/solana/token/di/tokenTypes.js +1 -1
- package/lib/esm/src/modules/solana/token/di/tokenTypes.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/domain/TokenContextLoader.test.js +1 -1
- package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.test.js.map +3 -3
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +1 -1
- package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +2 -2
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +3 -3
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +1 -1
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +3 -3
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +1 -1
- package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
- package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +1 -1
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +2 -2
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
- package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +2 -2
- package/lib/esm/src/shared/utils/deviceModelIdCodec.js +1 -1
- package/lib/esm/src/shared/utils/deviceModelIdCodec.js.map +2 -2
- package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js +1 -1
- package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js.map +2 -2
- package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts +0 -12
- 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 +1 -0
- package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts.map +1 -1
- package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts +2 -2
- package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts.map +1 -1
- package/lib/types/src/modules/solana/lifi/domain/LifiContextLoader.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts +5 -1
- package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts +5 -1
- package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts.map +1 -1
- package/lib/types/src/modules/solana/model/SolanaTransactionContext.d.ts +1 -0
- package/lib/types/src/modules/solana/model/SolanaTransactionContext.d.ts.map +1 -1
- package/lib/types/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.d.ts +11 -0
- package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.test.d.ts +2 -0
- package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.test.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token/data/MintToIdDataSource.d.ts +8 -0
- package/lib/types/src/modules/solana/token/data/MintToIdDataSource.d.ts.map +1 -0
- package/lib/types/src/modules/solana/token/di/tokenModuleFactory.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token/di/tokenTypes.d.ts +1 -0
- package/lib/types/src/modules/solana/token/di/tokenTypes.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token/domain/TokenContextLoader.d.ts +3 -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.map +1 -1
- package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts +1 -0
- package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts.map +1 -1
- package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts +1 -1
- package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts +1 -0
- package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -1
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts +1 -0
- package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -1
- package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts +2 -2
- package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts.map +1 -1
- package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Left as c,Right as l}from"purify-ts";import{beforeEach as p,describe as f,expect as
|
|
1
|
+
import{Left as c,Right as l}from"purify-ts";import{beforeEach as p,describe as f,expect as r,it as s,vi as i}from"vitest";import{HttpTokenInfoDataSource as u}from"./HttpTokenInfoDataSource";f("HttpTokenInfoDataSource",()=>{let n,e;const t="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",a="solana-mainnet",d={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"prod",branch:"main"}};p(()=>{i.clearAllMocks(),e={get:i.fn()},n=new u(d,e)}),s("calls /tokens with contract_address, network and ref params",async()=>{e.get.mockResolvedValue([{contract_address:t,network:"solana-mainnet",descriptor:{data:"01020304",signatures:{prod:"p",test:"t"}}}]),await n.getTokenInfo({mint:t,network:a}),r(e.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/tokens",{params:{contract_address:t,network:"solana",output:"contract_address,network,descriptor",ref:"branch:main"}})}),s("returns Right on success",async()=>{e.get.mockResolvedValue([{contract_address:t,descriptor:{data:"01020304",signatures:{prod:"psig",test:"tsig"}}}]);const o=await n.getTokenInfo({mint:t,network:a});r(o).toEqual(l({mint:t,descriptor:{data:"01020304",signatures:{prod:"psig",test:"tsig"}}}))}),s("returns Left when response is empty",async()=>{e.get.mockResolvedValue([]);const o=await n.getTokenInfo({mint:t,network:a});r(o).toEqual(c(new Error(`[ContextModule] HttpTokenInfoDataSource: no token info for mint ${t}`)))}),s("returns Left when descriptor is malformed",async()=>{e.get.mockResolvedValue([{contract_address:t}]);const o=await n.getTokenInfo({mint:t,network:a});r(o.isLeft()).toBe(!0),r(o.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpTokenInfoDataSource: malformed descriptor for mint ${t}:`))}),s("returns Left when HTTP client throws",async()=>{e.get.mockRejectedValue(new Error("net"));const o=await n.getTokenInfo({mint:t,network:a});r(o).toEqual(c(new Error("[ContextModule] HttpTokenInfoDataSource: Failed to fetch token info: net")))})});
|
|
2
2
|
//# sourceMappingURL=HttpTokenInfoDataSource.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpTokenInfoDataSource } from \"./HttpTokenInfoDataSource\";\nimport { type TokenInfoDataSource } from \"./TokenInfoDataSource\";\n\ndescribe(\"HttpTokenInfoDataSource\", () => {\n let datasource: TokenInfoDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const mint = \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\";\n const network = \"solana-mainnet\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://global.api.prd.ledger.com/cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpTokenInfoDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"calls /tokens with contract_address, network and ref params\", async () => {\n httpMock.get.mockResolvedValue([\n {\n contract_address: mint,\n network: \"solana-mainnet\",\n descriptor: { data: \"01020304\", signatures: { prod: \"p\", test: \"t\" } },\n },\n ]);\n\n await datasource.getTokenInfo({ mint, network });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/tokens\",\n {\n params: {\n contract_address: mint,\n network
|
|
5
|
-
"mappings": "AAEA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIrD,OAAS,2BAAAC,MAA+B,4BAGxCJ,EAAS,0BAA2B,IAAM,CACxC,IAAIK,EACAC,EACJ,MAAMC,EAAO,+CACPC,EAAU,iBACVC,EAAqC,CACzC,IAAK,CACH,IAAK,2CACL,KAAM,OACN,OAAQ,MACV,CACF,EAEAV,EAAW,IAAM,CACfI,EAAG,cAAc,EACjBG,EAAW,CAAE,IAAKH,EAAG,GAAG,CAAE,EAC1BE,EAAa,IAAID,EACfK,EACAH,CACF,CACF,CAAC,EAEDJ,EAAG,8DAA+D,SAAY,CAC5EI,EAAS,IAAI,kBAAkB,CAC7B,CACE,iBAAkBC,EAClB,QAAS,iBACT,WAAY,CAAE,KAAM,WAAY,WAAY,CAAE,KAAM,IAAK,KAAM,GAAI,CAAE,CACvE,CACF,CAAC,EAED,MAAMF,EAAW,aAAa,CAAE,KAAAE,EAAM,QAAAC,CAAQ,CAAC,EAE/CP,EAAOK,EAAS,GAAG,EAAE,qBACnB,kDACA,CACE,OAAQ,CACN,iBAAkBC,EAClB,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpTokenInfoDataSource } from \"./HttpTokenInfoDataSource\";\nimport { type TokenInfoDataSource } from \"./TokenInfoDataSource\";\n\ndescribe(\"HttpTokenInfoDataSource\", () => {\n let datasource: TokenInfoDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const mint = \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\";\n const network = \"solana-mainnet\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://global.api.prd.ledger.com/cal/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpTokenInfoDataSource(\n config,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"calls /tokens with contract_address, network and ref params\", async () => {\n httpMock.get.mockResolvedValue([\n {\n contract_address: mint,\n network: \"solana-mainnet\",\n descriptor: { data: \"01020304\", signatures: { prod: \"p\", test: \"t\" } },\n },\n ]);\n\n await datasource.getTokenInfo({ mint, network });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://global.api.prd.ledger.com/cal/v1/tokens\",\n {\n params: {\n contract_address: mint,\n network: \"solana\", // \"solana-mainnet\" mapped to the CAL short slug\n output: \"contract_address,network,descriptor\",\n ref: \"branch:main\",\n },\n },\n );\n });\n\n it(\"returns Right on success\", async () => {\n httpMock.get.mockResolvedValue([\n {\n contract_address: mint,\n descriptor: {\n data: \"01020304\",\n signatures: { prod: \"psig\", test: \"tsig\" },\n },\n },\n ]);\n\n const result = await datasource.getTokenInfo({ mint, network });\n\n expect(result).toEqual(\n Right({\n mint,\n descriptor: {\n data: \"01020304\",\n signatures: { prod: \"psig\", test: \"tsig\" },\n },\n }),\n );\n });\n\n it(\"returns Left when response is empty\", async () => {\n httpMock.get.mockResolvedValue([]);\n\n const result = await datasource.getTokenInfo({ mint, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpTokenInfoDataSource: no token info for mint ${mint}`,\n ),\n ),\n );\n });\n\n it(\"returns Left when descriptor is malformed\", async () => {\n httpMock.get.mockResolvedValue([{ contract_address: mint } as any]);\n\n const result = await datasource.getTokenInfo({ mint, network });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpTokenInfoDataSource: malformed descriptor for mint ${mint}:`,\n ),\n );\n });\n\n it(\"returns Left when HTTP client throws\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"net\"));\n\n const result = await datasource.getTokenInfo({ mint, network });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpTokenInfoDataSource: Failed to fetch token info: net\",\n ),\n ),\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "AAEA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIrD,OAAS,2BAAAC,MAA+B,4BAGxCJ,EAAS,0BAA2B,IAAM,CACxC,IAAIK,EACAC,EACJ,MAAMC,EAAO,+CACPC,EAAU,iBACVC,EAAqC,CACzC,IAAK,CACH,IAAK,2CACL,KAAM,OACN,OAAQ,MACV,CACF,EAEAV,EAAW,IAAM,CACfI,EAAG,cAAc,EACjBG,EAAW,CAAE,IAAKH,EAAG,GAAG,CAAE,EAC1BE,EAAa,IAAID,EACfK,EACAH,CACF,CACF,CAAC,EAEDJ,EAAG,8DAA+D,SAAY,CAC5EI,EAAS,IAAI,kBAAkB,CAC7B,CACE,iBAAkBC,EAClB,QAAS,iBACT,WAAY,CAAE,KAAM,WAAY,WAAY,CAAE,KAAM,IAAK,KAAM,GAAI,CAAE,CACvE,CACF,CAAC,EAED,MAAMF,EAAW,aAAa,CAAE,KAAAE,EAAM,QAAAC,CAAQ,CAAC,EAE/CP,EAAOK,EAAS,GAAG,EAAE,qBACnB,kDACA,CACE,OAAQ,CACN,iBAAkBC,EAClB,QAAS,SACT,OAAQ,sCACR,IAAK,aACP,CACF,CACF,CACF,CAAC,EAEDL,EAAG,2BAA4B,SAAY,CACzCI,EAAS,IAAI,kBAAkB,CAC7B,CACE,iBAAkBC,EAClB,WAAY,CACV,KAAM,WACN,WAAY,CAAE,KAAM,OAAQ,KAAM,MAAO,CAC3C,CACF,CACF,CAAC,EAED,MAAMG,EAAS,MAAML,EAAW,aAAa,CAAE,KAAAE,EAAM,QAAAC,CAAQ,CAAC,EAE9DP,EAAOS,CAAM,EAAE,QACbZ,EAAM,CACJ,KAAAS,EACA,WAAY,CACV,KAAM,WACN,WAAY,CAAE,KAAM,OAAQ,KAAM,MAAO,CAC3C,CACF,CAAC,CACH,CACF,CAAC,EAEDL,EAAG,sCAAuC,SAAY,CACpDI,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAEjC,MAAMI,EAAS,MAAML,EAAW,aAAa,CAAE,KAAAE,EAAM,QAAAC,CAAQ,CAAC,EAE9DP,EAAOS,CAAM,EAAE,QACbb,EACE,IAAI,MACF,mEAAmEU,CAAI,EACzE,CACF,CACF,CACF,CAAC,EAEDL,EAAG,4CAA6C,SAAY,CAC1DI,EAAS,IAAI,kBAAkB,CAAC,CAAE,iBAAkBC,CAAK,CAAQ,CAAC,EAElE,MAAMG,EAAS,MAAML,EAAW,aAAa,CAAE,KAAAE,EAAM,QAAAC,CAAQ,CAAC,EAE9DP,EAAOS,EAAO,OAAO,CAAC,EAAE,KAAK,EAAI,EACjCT,EAAQS,EAAO,QAAQ,EAAY,OAAO,EAAE,QAC1C,IAAI,OACF,OAAO,+EAA+EH,CAAI,GAC5F,CACF,CACF,CAAC,EAEDL,EAAG,uCAAwC,SAAY,CACrDI,EAAS,IAAI,kBAAkB,IAAI,MAAM,KAAK,CAAC,EAE/C,MAAMI,EAAS,MAAML,EAAW,aAAa,CAAE,KAAAE,EAAM,QAAAC,CAAQ,CAAC,EAE9DP,EAAOS,CAAM,EAAE,QACbb,EACE,IAAI,MACF,0EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "HttpTokenInfoDataSource", "datasource", "httpMock", "mint", "network", "config", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var
|
|
1
|
+
var N=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var y=(i,e,o,n)=>{for(var r=n>1?void 0:n?k(e,o):e,s=i.length-1,a;s>=0;s--)(a=i[s])&&(r=(n?a(e,o,r):a(r))||r);return n&&r&&N(e,o,r),r},p=(i,e)=>(o,n)=>e(o,n,i);import{inject as C,injectable as E}from"inversify";import{Codec as d,Left as u,optional as S,Right as x,string as m}from"purify-ts";import{configTypes as w}from"../../../../config/di/configTypes";import{SIGNATURE_TAG as M}from"../../../../shared/model/SignatureTags";import{networkTypes as $}from"../../../../shared/network/di/networkTypes";import{HexStringUtils as T}from"../../../../shared/utils/HexStringUtils";const D=d.interface({signedDescriptor:d.interface({data:m,signatures:d.interface({prod:S(m),test:S(m)})}),keyId:m,keyUsage:m});let l=class{constructor(e,o){this.config=e;this.http=o}async getTrustedName({address:e,network:o,challenge:n,types:r,sources:s}){let a;try{a=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/names/solana/${o}/reverse/${e}`,{params:{types:r.join(","),sources:s.join(","),challenge:n}})}catch(t){const c=t instanceof Error?t.message:String(t);return u(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: Failed to fetch trusted name: ${c}`))}return D.decode(a).caseOf({Left:t=>u(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: malformed response for ${e}: ${t}`)),Right:t=>{const c=this.config.cal.mode??"prod",f=t.signedDescriptor.signatures[c];if(!f)return u(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: missing ${c} signature for ${e}`));let g;try{g=T.hexToBytes(T.appendSignatureToPayload(t.signedDescriptor.data,f,M))}catch(h){return u(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: invalid signed descriptor for ${e}: ${h.message}`))}return x({address:e,descriptor:g,keyId:t.keyId,keyUsage:t.keyUsage})}})}};l=y([E(),p(0,C(w.Config)),p(1,C($.NetworkClient))],l);export{l as HttpSolanaTrustedNameDataSource};
|
|
2
2
|
//# sourceMappingURL=HttpTrustedNameDataSource.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.ts"],
|
|
4
|
-
"sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Codec, Either, Left, optional, Right, string } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleCalMode,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { SIGNATURE_TAG } from \"@/shared/model/SignatureTags\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\nimport {\n type GetSolanaTrustedNameParams,\n type SolanaTrustedNameDataSource,\n type SolanaTrustedNameResult,\n} from \"./TrustedNameDataSource\";\n\nconst trustedNameResponseCodec = Codec.interface({\n signedDescriptor: Codec.interface({\n data: string,\n signatures: Codec.interface({\n prod: optional(string),\n test: optional(string),\n }),\n }),\n keyId: string,\n keyUsage: string,\n});\n\n@injectable()\nexport class HttpSolanaTrustedNameDataSource\n implements SolanaTrustedNameDataSource\n{\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getTrustedName({\n address,\n network,\n challenge,\n sources,\n }: GetSolanaTrustedNameParams): Promise<\n Either<Error, SolanaTrustedNameResult>\n > {\n let dto: unknown;\n try {\n dto = await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/names/solana/${network}/reverse/${address}`,\n {\n params: {\n sources: sources.join(\",\"),\n challenge,\n },\n },\n );\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: Failed to fetch trusted name: ${reason}`,\n ),\n );\n }\n\n return trustedNameResponseCodec\n .decode(dto)\n .caseOf<Either<Error, SolanaTrustedNameResult>>({\n Left: (error) =>\n Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: malformed response for ${address}: ${error}`,\n ),\n ),\n Right: (validated) => {\n const mode: ContextModuleCalMode = this.config.cal.mode ?? \"prod\";\n const signature = validated.signedDescriptor.signatures[mode];\n if (!signature) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: missing ${mode} signature for ${address}`,\n ),\n );\n }\n\n let descriptor: Uint8Array;\n try {\n descriptor = HexStringUtils.hexToBytes(\n HexStringUtils.appendSignatureToPayload(\n validated.signedDescriptor.data,\n signature,\n SIGNATURE_TAG,\n ),\n );\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: invalid signed descriptor for ${address}: ${(error as Error).message}`,\n ),\n );\n }\n\n return Right({\n address,\n descriptor,\n keyId: validated.keyId,\n keyUsage: validated.keyUsage,\n });\n },\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,EAAe,QAAAC,EAAM,YAAAC,EAAU,SAAAC,EAAO,UAAAC,MAAc,YAE7D,OAAS,eAAAC,MAAmB,0BAK5B,OAAS,iBAAAC,MAAqB,+BAC9B,OAAS,gBAAAC,MAAoB,mCAC7B,OAAS,kBAAAC,MAAsB,gCAQ/B,MAAMC,EAA2BC,EAAM,UAAU,CAC/C,iBAAkBA,EAAM,UAAU,CAChC,KAAMC,EACN,WAAYD,EAAM,UAAU,CAC1B,KAAME,EAASD,CAAM,EACrB,KAAMC,EAASD,CAAM,CACvB,CAAC,CACH,CAAC,EACD,MAAOA,EACP,SAAUA,CACZ,CAAC,EAGM,IAAME,EAAN,KAEP,CACE,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAa,eAAe,CAC1B,QAAAC,EACA,QAAAC,EACA,UAAAC,EACA,QAAAC,CACF,EAEE,CACA,IAAIC,EACJ,GAAI,CACFA,EAAM,MAAM,KAAK,KAAK,IACpB,GAAG,KAAK,OAAO,sBAAsB,GAAG,
|
|
6
|
-
"names": ["inject", "injectable", "Codec", "Left", "optional", "Right", "string", "configTypes", "SIGNATURE_TAG", "networkTypes", "HexStringUtils", "trustedNameResponseCodec", "Codec", "string", "optional", "HttpSolanaTrustedNameDataSource", "config", "http", "address", "network", "challenge", "sources", "dto", "error", "reason", "Left", "validated", "mode", "signature", "descriptor", "HexStringUtils", "SIGNATURE_TAG", "Right", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
|
|
4
|
+
"sourcesContent": ["import { DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Codec, Either, Left, optional, Right, string } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport {\n type ContextModuleCalMode,\n type ContextModuleServiceConfig,\n} from \"@/config/model/ContextModuleConfig\";\nimport { SIGNATURE_TAG } from \"@/shared/model/SignatureTags\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\nimport { HexStringUtils } from \"@/shared/utils/HexStringUtils\";\n\nimport {\n type GetSolanaTrustedNameParams,\n type SolanaTrustedNameDataSource,\n type SolanaTrustedNameResult,\n} from \"./TrustedNameDataSource\";\n\nconst trustedNameResponseCodec = Codec.interface({\n signedDescriptor: Codec.interface({\n data: string,\n signatures: Codec.interface({\n prod: optional(string),\n test: optional(string),\n }),\n }),\n keyId: string,\n keyUsage: string,\n});\n\n@injectable()\nexport class HttpSolanaTrustedNameDataSource\n implements SolanaTrustedNameDataSource\n{\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {}\n\n public async getTrustedName({\n address,\n network,\n challenge,\n types,\n sources,\n }: GetSolanaTrustedNameParams): Promise<\n Either<Error, SolanaTrustedNameResult>\n > {\n let dto: unknown;\n try {\n dto = await this.http.get(\n `${this.config.metadataServiceDomain.url}/v2/names/solana/${network}/reverse/${address}`,\n {\n params: {\n types: types.join(\",\"),\n sources: sources.join(\",\"),\n challenge,\n },\n },\n );\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: Failed to fetch trusted name: ${reason}`,\n ),\n );\n }\n\n return trustedNameResponseCodec\n .decode(dto)\n .caseOf<Either<Error, SolanaTrustedNameResult>>({\n Left: (error) =>\n Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: malformed response for ${address}: ${error}`,\n ),\n ),\n Right: (validated) => {\n const mode: ContextModuleCalMode = this.config.cal.mode ?? \"prod\";\n const signature = validated.signedDescriptor.signatures[mode];\n if (!signature) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: missing ${mode} signature for ${address}`,\n ),\n );\n }\n\n let descriptor: Uint8Array;\n try {\n descriptor = HexStringUtils.hexToBytes(\n HexStringUtils.appendSignatureToPayload(\n validated.signedDescriptor.data,\n signature,\n SIGNATURE_TAG,\n ),\n );\n } catch (error) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaTrustedNameDataSource: invalid signed descriptor for ${address}: ${(error as Error).message}`,\n ),\n );\n }\n\n return Right({\n address,\n descriptor,\n keyId: validated.keyId,\n keyUsage: validated.keyUsage,\n });\n },\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "iOACA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,EAAe,QAAAC,EAAM,YAAAC,EAAU,SAAAC,EAAO,UAAAC,MAAc,YAE7D,OAAS,eAAAC,MAAmB,0BAK5B,OAAS,iBAAAC,MAAqB,+BAC9B,OAAS,gBAAAC,MAAoB,mCAC7B,OAAS,kBAAAC,MAAsB,gCAQ/B,MAAMC,EAA2BC,EAAM,UAAU,CAC/C,iBAAkBA,EAAM,UAAU,CAChC,KAAMC,EACN,WAAYD,EAAM,UAAU,CAC1B,KAAME,EAASD,CAAM,EACrB,KAAMC,EAASD,CAAM,CACvB,CAAC,CACH,CAAC,EACD,MAAOA,EACP,SAAUA,CACZ,CAAC,EAGM,IAAME,EAAN,KAEP,CACE,YAEmBC,EAEAC,EACjB,CAHiB,YAAAD,EAEA,UAAAC,CAChB,CAEH,MAAa,eAAe,CAC1B,QAAAC,EACA,QAAAC,EACA,UAAAC,EACA,MAAAC,EACA,QAAAC,CACF,EAEE,CACA,IAAIC,EACJ,GAAI,CACFA,EAAM,MAAM,KAAK,KAAK,IACpB,GAAG,KAAK,OAAO,sBAAsB,GAAG,oBAAoBJ,CAAO,YAAYD,CAAO,GACtF,CACE,OAAQ,CACN,MAAOG,EAAM,KAAK,GAAG,EACrB,QAASC,EAAQ,KAAK,GAAG,EACzB,UAAAF,CACF,CACF,CACF,CACF,OAASI,EAAO,CACd,MAAMC,EAASD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EACpE,OAAOE,EACL,IAAI,MACF,kFAAkFD,CAAM,EAC1F,CACF,CACF,CAEA,OAAOd,EACJ,OAAOY,CAAG,EACV,OAA+C,CAC9C,KAAOC,GACLE,EACE,IAAI,MACF,2EAA2ER,CAAO,KAAKM,CAAK,EAC9F,CACF,EACF,MAAQG,GAAc,CACpB,MAAMC,EAA6B,KAAK,OAAO,IAAI,MAAQ,OACrDC,EAAYF,EAAU,iBAAiB,WAAWC,CAAI,EAC5D,GAAI,CAACC,EACH,OAAOH,EACL,IAAI,MACF,4DAA4DE,CAAI,kBAAkBV,CAAO,EAC3F,CACF,EAGF,IAAIY,EACJ,GAAI,CACFA,EAAaC,EAAe,WAC1BA,EAAe,yBACbJ,EAAU,iBAAiB,KAC3BE,EACAG,CACF,CACF,CACF,OAASR,EAAO,CACd,OAAOE,EACL,IAAI,MACF,kFAAkFR,CAAO,KAAMM,EAAgB,OAAO,EACxH,CACF,CACF,CAEA,OAAOS,EAAM,CACX,QAAAf,EACA,WAAAY,EACA,MAAOH,EAAU,MACjB,SAAUA,EAAU,QACtB,CAAC,CACH,CACF,CAAC,CACL,CACF,EAtFaZ,EAANmB,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IANzBxB",
|
|
6
|
+
"names": ["inject", "injectable", "Codec", "Left", "optional", "Right", "string", "configTypes", "SIGNATURE_TAG", "networkTypes", "HexStringUtils", "trustedNameResponseCodec", "Codec", "string", "optional", "HttpSolanaTrustedNameDataSource", "config", "http", "address", "network", "challenge", "types", "sources", "dto", "error", "reason", "Left", "validated", "mode", "signature", "descriptor", "HexStringUtils", "SIGNATURE_TAG", "Right", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Left as g,Right as u}from"purify-ts";import{beforeEach as
|
|
1
|
+
import{Left as g,Right as u}from"purify-ts";import{beforeEach as k,describe as y,expect as s,it as c,vi as l}from"vitest";import{SolanaTransactionScanChainId as n}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{HttpSolanaTrustedNameDataSource as f}from"./HttpTrustedNameDataSource";y("HttpSolanaTrustedNameDataSource",()=>{let r,a;const t="vitalik.sol",o="deadbeef",m=(e="prod")=>({metadataServiceDomain:{url:"https://nft.api.ledger.com"},cal:{mode:e}}),d=(e="prod")=>new f(m(e),a),i=(e,p="ff00")=>({descriptorType:"name",descriptorVersion:"2",signedDescriptor:{data:p,signatures:e},keyId:"cal_trusted_name",keyUsage:"trusted_name"});k(()=>{l.clearAllMocks(),a={get:l.fn()},r=d()}),c("calls the names endpoint with network, types, sources and challenge",async()=>{a.get.mockResolvedValue(i({prod:"aabb"})),await r.getTrustedName({address:t,network:String(n.MAINNET),challenge:o,types:["token","smart_contract"],sources:["crypto_asset_list"]}),s(a.get).toHaveBeenCalledWith(`https://nft.api.ledger.com/v2/names/solana/${n.MAINNET}/reverse/${t}`,{params:{types:"token,smart_contract",sources:"crypto_asset_list",challenge:o}})}),c("appends the prod signature TLV and decodes into a Uint8Array",async()=>{a.get.mockResolvedValue(i({prod:"aabb",test:"cc"}));const e=await r.getTrustedName({address:t,network:String(n.MAINNET),challenge:o,types:["token","smart_contract"],sources:["crypto_asset_list"]});s(e).toEqual(u({address:t,descriptor:new Uint8Array([255,0,21,2,170,187]),keyId:"cal_trusted_name",keyUsage:"trusted_name"}))}),c("selects the test signature when cal.mode is test",async()=>{r=d("test"),a.get.mockResolvedValue(i({prod:"aabb",test:"cc"}));const e=await r.getTrustedName({address:t,network:String(n.MAINNET),challenge:o,types:["token","smart_contract"],sources:["crypto_asset_list"]});s(e).toEqual(u({address:t,descriptor:new Uint8Array([255,0,21,1,204]),keyId:"cal_trusted_name",keyUsage:"trusted_name"}))}),c("returns Left when the signature for the active mode is missing",async()=>{r=d("prod"),a.get.mockResolvedValue(i({test:"cc"}));const e=await r.getTrustedName({address:t,network:String(n.MAINNET),challenge:o,types:["token","smart_contract"],sources:["crypto_asset_list"]});s(e.isLeft()).toBe(!0),s(e.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpSolanaTrustedNameDataSource: missing prod signature for ${t}`))}),c("returns Left on malformed response (hex-string signedDescriptor)",async()=>{a.get.mockResolvedValue({signedDescriptor:"01020304",keyId:"k",keyUsage:"u"});const e=await r.getTrustedName({address:t,network:String(n.MAINNET),challenge:o,types:[],sources:[]});s(e.isLeft()).toBe(!0),s(e.extract().message).toMatch(new RegExp(String.raw`\[ContextModule\] HttpSolanaTrustedNameDataSource: malformed response for ${t}:`))}),c("returns Left when HTTP client throws",async()=>{a.get.mockRejectedValue(new Error("net"));const e=await r.getTrustedName({address:t,network:String(n.MAINNET),challenge:o,types:[],sources:[]});s(e).toEqual(g(new Error("[ContextModule] HttpSolanaTrustedNameDataSource: Failed to fetch trusted name: net")))})});
|
|
2
2
|
//# sourceMappingURL=HttpTrustedNameDataSource.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\n\nimport { HttpSolanaTrustedNameDataSource } from \"./HttpTrustedNameDataSource\";\nimport { type SolanaTrustedNameDataSource } from \"./TrustedNameDataSource\";\n\ndescribe(\"HttpSolanaTrustedNameDataSource\", () => {\n let datasource: SolanaTrustedNameDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const address = \"vitalik.sol\";\n const challenge = \"deadbeef\";\n\n const makeConfig = (mode: \"prod\" | \"test\" = \"prod\") =>\n ({\n metadataServiceDomain: { url: \"https://nft.api.ledger.com\" },\n cal: { mode },\n }) as ContextModuleServiceConfig;\n\n const makeDatasource = (mode: \"prod\" | \"test\" = \"prod\") =>\n new HttpSolanaTrustedNameDataSource(\n makeConfig(mode),\n httpMock as unknown as DmkNetworkClient,\n );\n\n const objectResponse = (\n signatures: { prod?: string; test?: string },\n data = \"ff00\",\n ) => ({\n descriptorType: \"name\",\n descriptorVersion: \"2\",\n signedDescriptor: { data, signatures },\n keyId: \"cal_trusted_name\",\n keyUsage: \"trusted_name\",\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = makeDatasource();\n });\n\n it(\"calls the names endpoint with network, sources and challenge
|
|
5
|
-
"mappings": "AAEA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAGrD,OAAS,gCAAAC,MAAoC,sDAE7C,OAAS,mCAAAC,MAAuC,8BAGhDL,EAAS,kCAAmC,IAAM,CAChD,IAAIM,EACAC,EACJ,MAAMC,EAAU,cACVC,EAAY,WAEZC,EAAa,CAACC,EAAwB,UACzC,CACC,sBAAuB,CAAE,IAAK,4BAA6B,EAC3D,IAAK,CAAE,KAAAA,CAAK,CACd,GAEIC,EAAiB,CAACD,EAAwB,SAC9C,IAAIN,EACFK,EAAWC,CAAI,EACfJ,CACF,EAEIM,EAAiB,CACrBC,EACAC,EAAO,UACH,CACJ,eAAgB,OAChB,kBAAmB,IACnB,iBAAkB,CAAE,KAAAA,EAAM,WAAAD,CAAW,EACrC,MAAO,mBACP,SAAU,cACZ,GAEAf,EAAW,IAAM,CACfI,EAAG,cAAc,EACjBI,EAAW,CAAE,IAAKJ,EAAG,GAAG,CAAE,EAC1BG,EAAaM,EAAe,CAC9B,CAAC,EAEDV,EAAG,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\n\nimport { HttpSolanaTrustedNameDataSource } from \"./HttpTrustedNameDataSource\";\nimport { type SolanaTrustedNameDataSource } from \"./TrustedNameDataSource\";\n\ndescribe(\"HttpSolanaTrustedNameDataSource\", () => {\n let datasource: SolanaTrustedNameDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const address = \"vitalik.sol\";\n const challenge = \"deadbeef\";\n\n const makeConfig = (mode: \"prod\" | \"test\" = \"prod\") =>\n ({\n metadataServiceDomain: { url: \"https://nft.api.ledger.com\" },\n cal: { mode },\n }) as ContextModuleServiceConfig;\n\n const makeDatasource = (mode: \"prod\" | \"test\" = \"prod\") =>\n new HttpSolanaTrustedNameDataSource(\n makeConfig(mode),\n httpMock as unknown as DmkNetworkClient,\n );\n\n const objectResponse = (\n signatures: { prod?: string; test?: string },\n data = \"ff00\",\n ) => ({\n descriptorType: \"name\",\n descriptorVersion: \"2\",\n signedDescriptor: { data, signatures },\n keyId: \"cal_trusted_name\",\n keyUsage: \"trusted_name\",\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = makeDatasource();\n });\n\n it(\"calls the names endpoint with network, types, sources and challenge\", async () => {\n httpMock.get.mockResolvedValue(objectResponse({ prod: \"aabb\" }));\n\n await datasource.getTrustedName({\n address,\n network: String(SolanaTransactionScanChainId.MAINNET),\n challenge,\n types: [\"token\", \"smart_contract\"],\n sources: [\"crypto_asset_list\"],\n });\n\n expect(httpMock.get).toHaveBeenCalledWith(\n `https://nft.api.ledger.com/v2/names/solana/${SolanaTransactionScanChainId.MAINNET}/reverse/${address}`,\n {\n params: {\n types: \"token,smart_contract\",\n sources: \"crypto_asset_list\",\n challenge,\n },\n },\n );\n });\n\n it(\"appends the prod signature TLV and decodes into a Uint8Array\", async () => {\n httpMock.get.mockResolvedValue(\n objectResponse({ prod: \"aabb\", test: \"cc\" }),\n );\n\n const result = await datasource.getTrustedName({\n address,\n network: String(SolanaTransactionScanChainId.MAINNET),\n challenge,\n types: [\"token\", \"smart_contract\"],\n sources: [\"crypto_asset_list\"],\n });\n\n // data(ff00) + SIGNATURE_TAG(15) + len(02) + sig(aabb)\n expect(result).toEqual(\n Right({\n address,\n descriptor: new Uint8Array([0xff, 0x00, 0x15, 0x02, 0xaa, 0xbb]),\n keyId: \"cal_trusted_name\",\n keyUsage: \"trusted_name\",\n }),\n );\n });\n\n it(\"selects the test signature when cal.mode is test\", async () => {\n datasource = makeDatasource(\"test\");\n httpMock.get.mockResolvedValue(\n objectResponse({ prod: \"aabb\", test: \"cc\" }),\n );\n\n const result = await datasource.getTrustedName({\n address,\n network: String(SolanaTransactionScanChainId.MAINNET),\n challenge,\n types: [\"token\", \"smart_contract\"],\n sources: [\"crypto_asset_list\"],\n });\n\n // data(ff00) + SIGNATURE_TAG(15) + len(01) + sig(cc)\n expect(result).toEqual(\n Right({\n address,\n descriptor: new Uint8Array([0xff, 0x00, 0x15, 0x01, 0xcc]),\n keyId: \"cal_trusted_name\",\n keyUsage: \"trusted_name\",\n }),\n );\n });\n\n it(\"returns Left when the signature for the active mode is missing\", async () => {\n datasource = makeDatasource(\"prod\");\n httpMock.get.mockResolvedValue(objectResponse({ test: \"cc\" }));\n\n const result = await datasource.getTrustedName({\n address,\n network: String(SolanaTransactionScanChainId.MAINNET),\n challenge,\n types: [\"token\", \"smart_contract\"],\n sources: [\"crypto_asset_list\"],\n });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpSolanaTrustedNameDataSource: missing prod signature for ${address}`,\n ),\n );\n });\n\n it(\"returns Left on malformed response (hex-string signedDescriptor)\", async () => {\n httpMock.get.mockResolvedValue({\n signedDescriptor: \"01020304\",\n keyId: \"k\",\n keyUsage: \"u\",\n } as any);\n\n const result = await datasource.getTrustedName({\n address,\n network: String(SolanaTransactionScanChainId.MAINNET),\n challenge,\n types: [],\n sources: [],\n });\n\n expect(result.isLeft()).toBe(true);\n expect((result.extract() as Error).message).toMatch(\n new RegExp(\n String.raw`\\[ContextModule\\] HttpSolanaTrustedNameDataSource: malformed response for ${address}:`,\n ),\n );\n });\n\n it(\"returns Left when HTTP client throws\", async () => {\n httpMock.get.mockRejectedValue(new Error(\"net\"));\n\n const result = await datasource.getTrustedName({\n address,\n network: String(SolanaTransactionScanChainId.MAINNET),\n challenge,\n types: [],\n sources: [],\n });\n\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaTrustedNameDataSource: Failed to fetch trusted name: net\",\n ),\n ),\n );\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "SolanaTransactionScanChainId", "HttpSolanaTrustedNameDataSource", "datasource", "httpMock", "address", "challenge", "makeConfig", "mode", "makeDatasource", "objectResponse", "signatures", "data", "result"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var f=Object.defineProperty;var
|
|
1
|
+
var f=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var m=(a,r,o,t)=>{for(var e=t>1?void 0:t?y(r,o):r,n=a.length-1,l;n>=0;n--)(l=a[n])&&(e=(t?l(r,o,e):l(e))||e);return t&&e&&f(r,o,e),e},i=(a,r)=>(o,t)=>r(o,t,a);import{inject as p,injectable as C}from"inversify";import{array as g,Codec as T,optional as N,string as s}from"purify-ts";import{configTypes as h}from"../../../../config/di/configTypes";import{pkiTypes as I}from"../../../../modules/multichain/pki/di/pkiTypes";import{SolanaTransactionScanChainId as c}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{solanaTrustedNameTypes as E}from"../../../../modules/solana/trusted-name/di/trustedNameTypes";import{ClearSignContextType as S}from"../../../../shared/model/ClearSignContext";import{loadChallengeBoundContexts as v}from"../../../../shared/utils/challengeBoundLoader";import{deviceModelIdCodec as x}from"../../../../shared/utils/deviceModelIdCodec";const L=[S.SOLANA_TRUSTED_NAME],M={"solana-mainnet":c.MAINNET,"solana-devnet":c.DEVNET,"solana-testnet":c.TESTNET},u=c.MAINNET,D=T.interface({address:s,challenge:s,types:g(s),sources:g(s)}),A=T.interface({deviceModelId:x,network:N(s),requests:g(D)});let d=class{constructor(r,o,t){this.dataSource=r;this.certificateLoader=o;this.logger=t("SolanaTrustedNameContextLoader")}logger;canHandle(r,o){return L.every(t=>o.includes(t))?A.decode(r).caseOf({Left:()=>!1,Right:({requests:t})=>t.length>0&&t.every(e=>e.address.length>0&&e.challenge.length>0)}):!1}async load(r){const o=r.network?M[r.network]??u:u,t=String(o);return v({requests:r.requests,deviceModelId:r.deviceModelId,certificateLoader:this.certificateLoader,logger:this.logger,label:"TRUSTED_NAME",fetch:e=>this.dataSource.getTrustedName({address:e.address,challenge:e.challenge,types:e.types,sources:e.sources,network:t}),toContext:(e,n)=>({type:S.SOLANA_TRUSTED_NAME,payload:e.descriptor,certificate:n}),describe:e=>({address:e.address})})}};d=m([C(),i(0,p(E.SolanaTrustedNameDataSource)),i(1,p(I.PkiCertificateLoader)),i(2,p(h.ContextModuleLoggerFactory))],d);export{d as SolanaTrustedNameContextLoader};
|
|
2
2
|
//# sourceMappingURL=TrustedNameContextLoader.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/modules/solana/trusted-name/domain/TrustedNameContextLoader.ts"],
|
|
4
|
-
"sourcesContent": ["import {\n type DeviceModelId,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { array, Codec, optional, string } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/modules/multichain/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\nimport { type SolanaTrustedNameDataSource } from \"@/modules/solana/trusted-name/data/TrustedNameDataSource\";\nimport { solanaTrustedNameTypes } from \"@/modules/solana/trusted-name/di/trustedNameTypes\";\nimport { type ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { loadChallengeBoundContexts } from \"@/shared/utils/challengeBoundLoader\";\nimport { deviceModelIdCodec } from \"@/shared/utils/deviceModelIdCodec\";\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.SOLANA_TRUSTED_NAME,\n];\n\nconst CHAIN_ID_BY_NETWORK: Record<string, SolanaTransactionScanChainId> = {\n \"solana-mainnet\": SolanaTransactionScanChainId.MAINNET,\n \"solana-devnet\": SolanaTransactionScanChainId.DEVNET,\n \"solana-testnet\": SolanaTransactionScanChainId.TESTNET,\n};\n\nconst NETWORK_DEFAULT = SolanaTransactionScanChainId.MAINNET;\n\n/**\n * One trusted-name request, resolved to a Uint8Array TLV descriptor. The\n * caller must obtain a fresh challenge immediately before each fetch.\n */\nexport type SolanaTrustedNameRequest = {\n address: string;\n challenge: string;\n sources: string[];\n};\n\nexport type SolanaTrustedNameContextInput = {\n deviceModelId: DeviceModelId;\n network?: string; // \"mainnet\" | \"devnet\" | \"testnet\"; defaults to mainnet\n requests: SolanaTrustedNameRequest[];\n};\n\nconst trustedNameRequestCodec = Codec.interface({\n address: string,\n challenge: string,\n sources: array(string),\n});\n\nconst solanaTrustedNameInputCodec = Codec.interface({\n deviceModelId: deviceModelIdCodec,\n network: optional(string),\n requests: array(trustedNameRequestCodec),\n});\n\n@injectable()\nexport class SolanaTrustedNameContextLoader\n implements ContextLoader<SolanaTrustedNameContextInput>\n{\n private readonly logger: LoggerPublisherService;\n\n constructor(\n @inject(solanaTrustedNameTypes.SolanaTrustedNameDataSource)\n private readonly dataSource: SolanaTrustedNameDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly certificateLoader: PkiCertificateLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this.logger = loggerFactory(\"SolanaTrustedNameContextLoader\");\n }\n\n public canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is SolanaTrustedNameContextInput {\n if (!SUPPORTED_TYPES.every((t) => expectedTypes.includes(t))) return false;\n return solanaTrustedNameInputCodec.decode(input).caseOf({\n Left: () => false,\n Right: ({ requests }) =>\n requests.length > 0 &&\n requests.every((r) => r.address.length > 0 && r.challenge.length > 0),\n });\n }\n\n public async load(\n input: SolanaTrustedNameContextInput,\n ): Promise<ClearSignContext[]> {\n const chainId = input.network\n ? (CHAIN_ID_BY_NETWORK[input.network] ?? NETWORK_DEFAULT)\n : NETWORK_DEFAULT;\n const network = String(chainId);\n\n return loadChallengeBoundContexts({\n requests: input.requests,\n deviceModelId: input.deviceModelId,\n certificateLoader: this.certificateLoader,\n logger: this.logger,\n label: \"TRUSTED_NAME\",\n fetch: (request) =>\n this.dataSource.getTrustedName({\n address: request.address,\n challenge: request.challenge,\n sources: request.sources,\n network,\n }),\n toContext: (value, certificate) => ({\n type: ClearSignContextType.SOLANA_TRUSTED_NAME,\n payload: value.descriptor,\n certificate,\n }),\n describe: (request) => ({ address: request.address }),\n });\n }\n}\n"],
|
|
5
|
-
"mappings": "iOAIA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,EAAO,SAAAC,EAAO,YAAAC,EAAU,UAAAC,MAAc,YAE/C,OAAS,eAAAC,MAAmB,0BAC5B,OAAS,YAAAC,MAAgB,uCAEzB,OAAS,gCAAAC,MAAoC,sDAE7C,OAAS,0BAAAC,MAA8B,oDAEvC,OAEE,wBAAAC,MACK,kCACP,OAAS,8BAAAC,MAAkC,sCAC3C,OAAS,sBAAAC,MAA0B,oCAEnC,MAAMC,EAA0C,CAC9CC,EAAqB,mBACvB,EAEMC,EAAoE,CACxE,iBAAkBC,EAA6B,QAC/C,gBAAiBA,EAA6B,OAC9C,iBAAkBA,EAA6B,OACjD,EAEMC,EAAkBD,EAA6B,
|
|
4
|
+
"sourcesContent": ["import {\n type DeviceModelId,\n type LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { array, Codec, optional, string } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/modules/multichain/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/modules/multichain/pki/domain/PkiCertificateLoader\";\nimport { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\nimport { type SolanaTrustedNameDataSource } from \"@/modules/solana/trusted-name/data/TrustedNameDataSource\";\nimport { solanaTrustedNameTypes } from \"@/modules/solana/trusted-name/di/trustedNameTypes\";\nimport { type ContextLoader } from \"@/shared/domain/ContextLoader\";\nimport {\n type ClearSignContext,\n ClearSignContextType,\n} from \"@/shared/model/ClearSignContext\";\nimport { loadChallengeBoundContexts } from \"@/shared/utils/challengeBoundLoader\";\nimport { deviceModelIdCodec } from \"@/shared/utils/deviceModelIdCodec\";\n\nconst SUPPORTED_TYPES: ClearSignContextType[] = [\n ClearSignContextType.SOLANA_TRUSTED_NAME,\n];\n\nconst CHAIN_ID_BY_NETWORK: Record<string, SolanaTransactionScanChainId> = {\n \"solana-mainnet\": SolanaTransactionScanChainId.MAINNET,\n \"solana-devnet\": SolanaTransactionScanChainId.DEVNET,\n \"solana-testnet\": SolanaTransactionScanChainId.TESTNET,\n};\n\nconst NETWORK_DEFAULT = SolanaTransactionScanChainId.MAINNET;\n\n/**\n * One trusted-name request, resolved to a Uint8Array TLV descriptor. The\n * caller must obtain a fresh challenge immediately before each fetch.\n */\nexport type SolanaTrustedNameRequest = {\n address: string;\n challenge: string;\n types: string[];\n sources: string[];\n};\n\nexport type SolanaTrustedNameContextInput = {\n deviceModelId: DeviceModelId;\n network?: string; // \"mainnet\" | \"devnet\" | \"testnet\"; defaults to mainnet\n requests: SolanaTrustedNameRequest[];\n};\n\nconst trustedNameRequestCodec = Codec.interface({\n address: string,\n challenge: string,\n types: array(string),\n sources: array(string),\n});\n\nconst solanaTrustedNameInputCodec = Codec.interface({\n deviceModelId: deviceModelIdCodec,\n network: optional(string),\n requests: array(trustedNameRequestCodec),\n});\n\n@injectable()\nexport class SolanaTrustedNameContextLoader\n implements ContextLoader<SolanaTrustedNameContextInput>\n{\n private readonly logger: LoggerPublisherService;\n\n constructor(\n @inject(solanaTrustedNameTypes.SolanaTrustedNameDataSource)\n private readonly dataSource: SolanaTrustedNameDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly certificateLoader: PkiCertificateLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this.logger = loggerFactory(\"SolanaTrustedNameContextLoader\");\n }\n\n public canHandle(\n input: unknown,\n expectedTypes: ClearSignContextType[],\n ): input is SolanaTrustedNameContextInput {\n if (!SUPPORTED_TYPES.every((t) => expectedTypes.includes(t))) return false;\n return solanaTrustedNameInputCodec.decode(input).caseOf({\n Left: () => false,\n Right: ({ requests }) =>\n requests.length > 0 &&\n requests.every((r) => r.address.length > 0 && r.challenge.length > 0),\n });\n }\n\n public async load(\n input: SolanaTrustedNameContextInput,\n ): Promise<ClearSignContext[]> {\n const chainId = input.network\n ? (CHAIN_ID_BY_NETWORK[input.network] ?? NETWORK_DEFAULT)\n : NETWORK_DEFAULT;\n const network = String(chainId);\n\n return loadChallengeBoundContexts({\n requests: input.requests,\n deviceModelId: input.deviceModelId,\n certificateLoader: this.certificateLoader,\n logger: this.logger,\n label: \"TRUSTED_NAME\",\n fetch: (request) =>\n this.dataSource.getTrustedName({\n address: request.address,\n challenge: request.challenge,\n types: request.types,\n sources: request.sources,\n network,\n }),\n toContext: (value, certificate) => ({\n type: ClearSignContextType.SOLANA_TRUSTED_NAME,\n payload: value.descriptor,\n certificate,\n }),\n describe: (request) => ({ address: request.address }),\n });\n }\n}\n"],
|
|
5
|
+
"mappings": "iOAIA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,EAAO,SAAAC,EAAO,YAAAC,EAAU,UAAAC,MAAc,YAE/C,OAAS,eAAAC,MAAmB,0BAC5B,OAAS,YAAAC,MAAgB,uCAEzB,OAAS,gCAAAC,MAAoC,sDAE7C,OAAS,0BAAAC,MAA8B,oDAEvC,OAEE,wBAAAC,MACK,kCACP,OAAS,8BAAAC,MAAkC,sCAC3C,OAAS,sBAAAC,MAA0B,oCAEnC,MAAMC,EAA0C,CAC9CC,EAAqB,mBACvB,EAEMC,EAAoE,CACxE,iBAAkBC,EAA6B,QAC/C,gBAAiBA,EAA6B,OAC9C,iBAAkBA,EAA6B,OACjD,EAEMC,EAAkBD,EAA6B,QAmB/CE,EAA0BC,EAAM,UAAU,CAC9C,QAASC,EACT,UAAWA,EACX,MAAOC,EAAMD,CAAM,EACnB,QAASC,EAAMD,CAAM,CACvB,CAAC,EAEKE,EAA8BH,EAAM,UAAU,CAClD,cAAeI,EACf,QAASC,EAASJ,CAAM,EACxB,SAAUC,EAAMH,CAAuB,CACzC,CAAC,EAGM,IAAMO,EAAN,KAEP,CAGE,YAEmBC,EAEAC,EAEjBC,EACA,CALiB,gBAAAF,EAEA,uBAAAC,EAIjB,KAAK,OAASC,EAAc,gCAAgC,CAC9D,CAXiB,OAaV,UACLC,EACAC,EACwC,CACxC,OAAKjB,EAAgB,MAAO,GAAMiB,EAAc,SAAS,CAAC,CAAC,EACpDR,EAA4B,OAAOO,CAAK,EAAE,OAAO,CACtD,KAAM,IAAM,GACZ,MAAO,CAAC,CAAE,SAAAE,CAAS,IACjBA,EAAS,OAAS,GAClBA,EAAS,MAAOC,GAAMA,EAAE,QAAQ,OAAS,GAAKA,EAAE,UAAU,OAAS,CAAC,CACxE,CAAC,EANoE,EAOvE,CAEA,MAAa,KACXH,EAC6B,CAC7B,MAAMI,EAAUJ,EAAM,QACjBd,EAAoBc,EAAM,OAAO,GAAKZ,EACvCA,EACEiB,EAAU,OAAOD,CAAO,EAE9B,OAAOE,EAA2B,CAChC,SAAUN,EAAM,SAChB,cAAeA,EAAM,cACrB,kBAAmB,KAAK,kBACxB,OAAQ,KAAK,OACb,MAAO,eACP,MAAQO,GACN,KAAK,WAAW,eAAe,CAC7B,QAASA,EAAQ,QACjB,UAAWA,EAAQ,UACnB,MAAOA,EAAQ,MACf,QAASA,EAAQ,QACjB,QAAAF,CACF,CAAC,EACH,UAAW,CAACG,EAAOC,KAAiB,CAClC,KAAMxB,EAAqB,oBAC3B,QAASuB,EAAM,WACf,YAAAC,CACF,GACA,SAAWF,IAAa,CAAE,QAASA,EAAQ,OAAQ,EACrD,CAAC,CACH,CACF,EA3DaX,EAANc,EAAA,CADNC,EAAW,EAOPC,EAAA,EAAAC,EAAOC,EAAuB,2BAA2B,GAEzDF,EAAA,EAAAC,EAAOE,EAAS,oBAAoB,GAEpCH,EAAA,EAAAC,EAAOG,EAAY,0BAA0B,IAVrCpB",
|
|
6
6
|
"names": ["inject", "injectable", "array", "Codec", "optional", "string", "configTypes", "pkiTypes", "SolanaTransactionScanChainId", "solanaTrustedNameTypes", "ClearSignContextType", "loadChallengeBoundContexts", "deviceModelIdCodec", "SUPPORTED_TYPES", "ClearSignContextType", "CHAIN_ID_BY_NETWORK", "SolanaTransactionScanChainId", "NETWORK_DEFAULT", "trustedNameRequestCodec", "Codec", "string", "array", "solanaTrustedNameInputCodec", "deviceModelIdCodec", "optional", "SolanaTrustedNameContextLoader", "dataSource", "certificateLoader", "loggerFactory", "input", "expectedTypes", "requests", "r", "chainId", "network", "loadChallengeBoundContexts", "request", "value", "certificate", "__decorateClass", "injectable", "__decorateParam", "inject", "solanaTrustedNameTypes", "pkiTypes", "configTypes"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DeviceModelId as i}from"@ledgerhq/device-management-kit";import{Left as
|
|
1
|
+
import{DeviceModelId as i}from"@ledgerhq/device-management-kit";import{Left as A,Right as l}from"purify-ts";import{beforeEach as N,describe as u,expect as t,it as o,vi as s}from"vitest";import{SolanaTransactionScanChainId as f}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{ClearSignContextType as c}from"../../../../shared/model/ClearSignContext";import{SolanaTrustedNameContextLoader as k}from"./TrustedNameContextLoader";const g=()=>({debug:s.fn(),info:s.fn(),warn:s.fn(),error:s.fn(),subscribers:[]}),m={keyUsageNumber:4,payload:new Uint8Array([7])},a="Addr11111111111111111111111111111111111111",p="Addr22222222222222222222222222222222222222";u("SolanaTrustedNameContextLoader",()=>{let d,y;N(()=>{s.restoreAllMocks(),d={getTrustedName:s.fn()},y={loadCertificate:s.fn().mockResolvedValue(m)}});const n=()=>new k(d,y,g);u("canHandle",()=>{o("returns true when SOLANA_TRUSTED_NAME is requested with valid requests",()=>{t(n().canHandle({deviceModelId:i.NANO_X,requests:[{address:a,challenge:"c",types:["token","smart_contract"],sources:["sns"]}]},[c.SOLANA_TRUSTED_NAME])).toBe(!0)}),o("returns false when SOLANA_TRUSTED_NAME is not requested",()=>{t(n().canHandle({requests:[{address:a,challenge:"c",types:["token","smart_contract"],sources:["sns"]}]},[c.SOLANA_TOKEN])).toBe(!1)}),o("returns false on malformed input",()=>{const e=n(),r=[c.SOLANA_TRUSTED_NAME];t(e.canHandle({requests:[]},r)).toBe(!1),t(e.canHandle({requests:[{address:"",challenge:"c",types:[],sources:[]}]},r)).toBe(!1),t(e.canHandle({requests:[{address:a,challenge:"",types:[],sources:[]}]},r)).toBe(!1)})}),u("load",()=>{o("emits one SOLANA_TRUSTED_NAME per request with Uint8Array payload",async()=>{s.spyOn(d,"getTrustedName").mockImplementation(async({address:r})=>l({address:r,descriptor:new Uint8Array([r===a?170:187]),keyId:"name_key",keyUsage:"trusted_name"}));const e=await n().load({deviceModelId:i.NANO_X,requests:[{address:a,challenge:"c1",types:["token","smart_contract"],sources:["sns"]},{address:p,challenge:"c2",types:["token","smart_contract"],sources:["cal"]}]});t(e).toHaveLength(2),t(e[0]).toMatchObject({type:c.SOLANA_TRUSTED_NAME,payload:new Uint8Array([170]),certificate:m}),t(e[1]).toMatchObject({type:c.SOLANA_TRUSTED_NAME,payload:new Uint8Array([187])})}),o("emits an ERROR per failing request and keeps the others",async()=>{s.spyOn(d,"getTrustedName").mockImplementation(async({address:r})=>r===a?l({address:r,descriptor:new Uint8Array([170]),keyId:"k",keyUsage:"u"}):A(new Error("upstream-404")));const e=await n().load({deviceModelId:i.NANO_X,requests:[{address:a,challenge:"c1",types:[],sources:[]},{address:p,challenge:"c2",types:[],sources:[]}]});t(e[0]?.type).toBe(c.SOLANA_TRUSTED_NAME),t(e[1]?.type).toBe(c.ERROR)}),o("forwards default chain id 900 when input.network is omitted",async()=>{const e=s.spyOn(d,"getTrustedName").mockResolvedValue(l({address:a,descriptor:new Uint8Array([1]),keyId:"k",keyUsage:"u"}));await n().load({deviceModelId:i.NANO_X,requests:[{address:a,challenge:"c",types:[],sources:[]}]}),t(e).toHaveBeenCalledWith(t.objectContaining({network:String(f.MAINNET)}))}),o("maps a cluster name to its numeric chain id",async()=>{const e=s.spyOn(d,"getTrustedName").mockResolvedValue(l({address:a,descriptor:new Uint8Array([1]),keyId:"k",keyUsage:"u"}));await n().load({deviceModelId:i.NANO_X,network:"solana-devnet",requests:[{address:a,challenge:"c",types:[],sources:[]}]}),t(e).toHaveBeenCalledWith(t.objectContaining({network:"901"}))})})});
|
|
2
2
|
//# sourceMappingURL=TrustedNameContextLoader.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../../../src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.ts"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\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 { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\nimport { type SolanaTrustedNameDataSource } from \"@/modules/solana/trusted-name/data/TrustedNameDataSource\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\nimport { SolanaTrustedNameContextLoader } from \"./TrustedNameContextLoader\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\nconst mockCertificate = { keyUsageNumber: 4, payload: new Uint8Array([7]) };\nconst ADDR_A = \"Addr11111111111111111111111111111111111111\";\nconst ADDR_B = \"Addr22222222222222222222222222222222222222\";\n\ndescribe(\"SolanaTrustedNameContextLoader\", () => {\n let dataSource: SolanaTrustedNameDataSource;\n let certificateLoader: PkiCertificateLoader;\n\n beforeEach(() => {\n vi.restoreAllMocks();\n dataSource = {\n getTrustedName: vi.fn(),\n };\n certificateLoader = {\n loadCertificate: vi.fn().mockResolvedValue(mockCertificate),\n };\n });\n\n const makeLoader = () =>\n new SolanaTrustedNameContextLoader(\n dataSource,\n certificateLoader,\n mockLoggerFactory,\n );\n\n describe(\"canHandle\", () => {\n it(\"returns true when SOLANA_TRUSTED_NAME is requested with valid requests\", () => {\n expect(\n makeLoader().canHandle(\n {\n deviceModelId: DeviceModelId.NANO_X,\n requests: [\n {\n address: ADDR_A,\n challenge: \"c\",\n sources: [\"sns\"],\n },\n ],\n },\n [ClearSignContextType.SOLANA_TRUSTED_NAME],\n ),\n ).toBe(true);\n });\n\n it(\"returns false when SOLANA_TRUSTED_NAME is not requested\", () => {\n expect(\n makeLoader().canHandle(\n {\n requests: [\n {\n address: ADDR_A,\n challenge: \"c\",\n sources: [\"sns\"],\n },\n ],\n } as any,\n [ClearSignContextType.SOLANA_TOKEN],\n ),\n ).toBe(false);\n });\n\n it(\"returns false on malformed input\", () => {\n const loader = makeLoader();\n const types = [ClearSignContextType.SOLANA_TRUSTED_NAME];\n expect(loader.canHandle({ requests: [] } as any, types)).toBe(false);\n expect(\n loader.canHandle(\n {\n requests: [{ address: \"\", challenge: \"c\", sources: [] }],\n } as any,\n types,\n ),\n ).toBe(false);\n expect(\n loader.canHandle(\n {\n requests: [{ address: ADDR_A, challenge: \"\", sources: [] }],\n } as any,\n types,\n ),\n ).toBe(false);\n });\n });\n\n describe(\"load\", () => {\n it(\"emits one SOLANA_TRUSTED_NAME per request with Uint8Array payload\", async () => {\n vi.spyOn(dataSource, \"getTrustedName\").mockImplementation(\n async ({ address }) =>\n Right({\n address,\n descriptor: new Uint8Array([address === ADDR_A ? 0xaa : 0xbb]),\n keyId: \"name_key\",\n keyUsage: \"trusted_name\",\n }),\n );\n\n const result = await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n requests: [\n {\n address: ADDR_A,\n challenge: \"c1\",\n sources: [\"sns\"],\n },\n {\n address: ADDR_B,\n challenge: \"c2\",\n sources: [\"cal\"],\n },\n ],\n });\n\n expect(result).toHaveLength(2);\n expect(result[0]).toMatchObject({\n type: ClearSignContextType.SOLANA_TRUSTED_NAME,\n payload: new Uint8Array([0xaa]),\n certificate: mockCertificate,\n });\n expect(result[1]).toMatchObject({\n type: ClearSignContextType.SOLANA_TRUSTED_NAME,\n payload: new Uint8Array([0xbb]),\n });\n });\n\n it(\"emits an ERROR per failing request and keeps the others\", async () => {\n vi.spyOn(dataSource, \"getTrustedName\").mockImplementation(\n async ({ address }) => {\n if (address === ADDR_A) {\n return Right({\n address,\n descriptor: new Uint8Array([0xaa]),\n keyId: \"k\",\n keyUsage: \"u\",\n });\n }\n return Left(new Error(\"upstream-404\"));\n },\n );\n\n const out = await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n requests: [\n { address: ADDR_A, challenge: \"c1\", sources: [] },\n { address: ADDR_B, challenge: \"c2\", sources: [] },\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(\"forwards default chain id 900 when input.network is omitted\", async () => {\n const spy = vi.spyOn(dataSource, \"getTrustedName\").mockResolvedValue(\n Right({\n address: ADDR_A,\n descriptor: new Uint8Array([1]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n );\n\n await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n requests: [{ address: ADDR_A, challenge: \"c\", sources: [] }],\n });\n\n expect(spy).toHaveBeenCalledWith(\n expect.objectContaining({\n network: String(SolanaTransactionScanChainId.MAINNET),\n }),\n );\n });\n\n it(\"maps a cluster name to its numeric chain id\", async () => {\n const spy = vi.spyOn(dataSource, \"getTrustedName\").mockResolvedValue(\n Right({\n address: ADDR_A,\n descriptor: new Uint8Array([1]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n );\n\n await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n network: \"solana-devnet\",\n requests: [{ address: ADDR_A, challenge: \"c\", sources: [] }],\n });\n\n expect(spy).toHaveBeenCalledWith(\n expect.objectContaining({ network: \"901\" }),\n );\n });\n });\n});\n"],
|
|
5
|
-
"mappings": "AACA,OAAS,iBAAAA,MAAqB,kCAC9B,OAAS,QAAAC,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAGrD,OAAS,gCAAAC,MAAoC,sDAE7C,OAAS,wBAAAC,MAA4B,kCAErC,OAAS,kCAAAC,MAAsC,6BAE/C,MAAMC,EAAoB,KAAO,CAC/B,MAAOJ,EAAG,GAAG,EACb,KAAMA,EAAG,GAAG,EACZ,KAAMA,EAAG,GAAG,EACZ,MAAOA,EAAG,GAAG,EACb,YAAa,CAAC,CAChB,GAEMK,EAAkB,CAAE,eAAgB,EAAG,QAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAE,EACpEC,EAAS,6CACTC,EAAS,6CAEfV,EAAS,iCAAkC,IAAM,CAC/C,IAAIW,EACAC,EAEJb,EAAW,IAAM,CACfI,EAAG,gBAAgB,EACnBQ,EAAa,CACX,eAAgBR,EAAG,GAAG,CACxB,EACAS,EAAoB,CAClB,gBAAiBT,EAAG,GAAG,EAAE,kBAAkBK,CAAe,CAC5D,CACF,CAAC,EAED,MAAMK,EAAa,IACjB,IAAIP,EACFK,EACAC,EACAL,CACF,EAEFP,EAAS,YAAa,IAAM,CAC1BE,EAAG,yEAA0E,IAAM,CACjFD,EACEY,EAAW,EAAE,UACX,CACE,cAAejB,EAAc,OAC7B,SAAU,CACR,CACE,QAASa,EACT,UAAW,IACX,QAAS,CAAC,KAAK,CACjB,CACF,CACF,EACA,CAACJ,EAAqB,mBAAmB,CAC3C,CACF,EAAE,KAAK,EAAI,CACb,CAAC,EAEDH,EAAG,0DAA2D,IAAM,CAClED,EACEY,EAAW,EAAE,UACX,CACE,SAAU,CACR,CACE,QAASJ,EACT,UAAW,IACX,QAAS,CAAC,KAAK,CACjB,CACF,CACF,EACA,CAACJ,EAAqB,YAAY,CACpC,CACF,EAAE,KAAK,EAAK,CACd,CAAC,EAEDH,EAAG,mCAAoC,IAAM,CAC3C,MAAMY,EAASD,EAAW,EACpBE,EAAQ,CAACV,EAAqB,mBAAmB,EACvDJ,EAAOa,EAAO,UAAU,CAAE,SAAU,CAAC,CAAE,EAAUC,CAAK,CAAC,EAAE,KAAK,EAAK,EACnEd,EACEa,EAAO,UACL,CACE,SAAU,CAAC,CAAE,QAAS,GAAI,UAAW,IAAK,QAAS,CAAC,CAAE,CAAC,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\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 { SolanaTransactionScanChainId } from \"@/modules/solana/model/SolanaTransactionScanChainId\";\nimport { type SolanaTrustedNameDataSource } from \"@/modules/solana/trusted-name/data/TrustedNameDataSource\";\nimport { ClearSignContextType } from \"@/shared/model/ClearSignContext\";\n\nimport { SolanaTrustedNameContextLoader } from \"./TrustedNameContextLoader\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\nconst mockCertificate = { keyUsageNumber: 4, payload: new Uint8Array([7]) };\nconst ADDR_A = \"Addr11111111111111111111111111111111111111\";\nconst ADDR_B = \"Addr22222222222222222222222222222222222222\";\n\ndescribe(\"SolanaTrustedNameContextLoader\", () => {\n let dataSource: SolanaTrustedNameDataSource;\n let certificateLoader: PkiCertificateLoader;\n\n beforeEach(() => {\n vi.restoreAllMocks();\n dataSource = {\n getTrustedName: vi.fn(),\n };\n certificateLoader = {\n loadCertificate: vi.fn().mockResolvedValue(mockCertificate),\n };\n });\n\n const makeLoader = () =>\n new SolanaTrustedNameContextLoader(\n dataSource,\n certificateLoader,\n mockLoggerFactory,\n );\n\n describe(\"canHandle\", () => {\n it(\"returns true when SOLANA_TRUSTED_NAME is requested with valid requests\", () => {\n expect(\n makeLoader().canHandle(\n {\n deviceModelId: DeviceModelId.NANO_X,\n requests: [\n {\n address: ADDR_A,\n challenge: \"c\",\n types: [\"token\", \"smart_contract\"],\n sources: [\"sns\"],\n },\n ],\n },\n [ClearSignContextType.SOLANA_TRUSTED_NAME],\n ),\n ).toBe(true);\n });\n\n it(\"returns false when SOLANA_TRUSTED_NAME is not requested\", () => {\n expect(\n makeLoader().canHandle(\n {\n requests: [\n {\n address: ADDR_A,\n challenge: \"c\",\n types: [\"token\", \"smart_contract\"],\n sources: [\"sns\"],\n },\n ],\n } as any,\n [ClearSignContextType.SOLANA_TOKEN],\n ),\n ).toBe(false);\n });\n\n it(\"returns false on malformed input\", () => {\n const loader = makeLoader();\n const types = [ClearSignContextType.SOLANA_TRUSTED_NAME];\n expect(loader.canHandle({ requests: [] } as any, types)).toBe(false);\n expect(\n loader.canHandle(\n {\n requests: [{ address: \"\", challenge: \"c\", types: [], sources: [] }],\n } as any,\n types,\n ),\n ).toBe(false);\n expect(\n loader.canHandle(\n {\n requests: [\n { address: ADDR_A, challenge: \"\", types: [], sources: [] },\n ],\n } as any,\n types,\n ),\n ).toBe(false);\n });\n });\n\n describe(\"load\", () => {\n it(\"emits one SOLANA_TRUSTED_NAME per request with Uint8Array payload\", async () => {\n vi.spyOn(dataSource, \"getTrustedName\").mockImplementation(\n async ({ address }) =>\n Right({\n address,\n descriptor: new Uint8Array([address === ADDR_A ? 0xaa : 0xbb]),\n keyId: \"name_key\",\n keyUsage: \"trusted_name\",\n }),\n );\n\n const result = await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n requests: [\n {\n address: ADDR_A,\n challenge: \"c1\",\n types: [\"token\", \"smart_contract\"],\n sources: [\"sns\"],\n },\n {\n address: ADDR_B,\n challenge: \"c2\",\n types: [\"token\", \"smart_contract\"],\n sources: [\"cal\"],\n },\n ],\n });\n\n expect(result).toHaveLength(2);\n expect(result[0]).toMatchObject({\n type: ClearSignContextType.SOLANA_TRUSTED_NAME,\n payload: new Uint8Array([0xaa]),\n certificate: mockCertificate,\n });\n expect(result[1]).toMatchObject({\n type: ClearSignContextType.SOLANA_TRUSTED_NAME,\n payload: new Uint8Array([0xbb]),\n });\n });\n\n it(\"emits an ERROR per failing request and keeps the others\", async () => {\n vi.spyOn(dataSource, \"getTrustedName\").mockImplementation(\n async ({ address }) => {\n if (address === ADDR_A) {\n return Right({\n address,\n descriptor: new Uint8Array([0xaa]),\n keyId: \"k\",\n keyUsage: \"u\",\n });\n }\n return Left(new Error(\"upstream-404\"));\n },\n );\n\n const out = await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n requests: [\n { address: ADDR_A, challenge: \"c1\", types: [], sources: [] },\n { address: ADDR_B, challenge: \"c2\", types: [], sources: [] },\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(\"forwards default chain id 900 when input.network is omitted\", async () => {\n const spy = vi.spyOn(dataSource, \"getTrustedName\").mockResolvedValue(\n Right({\n address: ADDR_A,\n descriptor: new Uint8Array([1]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n );\n\n await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n requests: [{ address: ADDR_A, challenge: \"c\", types: [], sources: [] }],\n });\n\n expect(spy).toHaveBeenCalledWith(\n expect.objectContaining({\n network: String(SolanaTransactionScanChainId.MAINNET),\n }),\n );\n });\n\n it(\"maps a cluster name to its numeric chain id\", async () => {\n const spy = vi.spyOn(dataSource, \"getTrustedName\").mockResolvedValue(\n Right({\n address: ADDR_A,\n descriptor: new Uint8Array([1]),\n keyId: \"k\",\n keyUsage: \"u\",\n }),\n );\n\n await makeLoader().load({\n deviceModelId: DeviceModelId.NANO_X,\n network: \"solana-devnet\",\n requests: [{ address: ADDR_A, challenge: \"c\", types: [], sources: [] }],\n });\n\n expect(spy).toHaveBeenCalledWith(\n expect.objectContaining({ network: \"901\" }),\n );\n });\n });\n});\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["DeviceModelId", "Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "SolanaTransactionScanChainId", "ClearSignContextType", "SolanaTrustedNameContextLoader", "mockLoggerFactory", "mockCertificate", "ADDR_A", "ADDR_B", "dataSource", "certificateLoader", "makeLoader", "loader", "types", "address", "result", "out", "spy"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DeviceModelId as e}from"@ledgerhq/device-management-kit";import{exactly as o,oneOf as d}from"purify-ts";const t=d([o(e.NANO_X),o(e.NANO_SP),o(e.STAX),o(e.FLEX)]);export{t as deviceModelIdCodec};
|
|
1
|
+
import{DeviceModelId as e}from"@ledgerhq/device-management-kit";import{exactly as o,oneOf as d}from"purify-ts";const t=d([o(e.NANO_X),o(e.NANO_SP),o(e.STAX),o(e.FLEX),o(e.APEX)]);export{t as deviceModelIdCodec};
|
|
2
2
|
//# sourceMappingURL=deviceModelIdCodec.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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
|
|
5
|
-
"mappings": "AAAA,OAAS,iBAAAA,MAAqB,kCAC9B,OAAS,WAAAC,EAAS,SAAAC,MAAa,YAMxB,MAAMC,EAAqBD,EAAM,CACtCD,EAAQD,EAAc,MAAM,EAC5BC,EAAQD,EAAc,OAAO,EAC7BC,EAAQD,EAAc,IAAI,EAC1BC,EAAQD,EAAc,IAAI,CAC5B,CAAC",
|
|
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`.\n */\nexport const deviceModelIdCodec = oneOf([\n exactly(DeviceModelId.NANO_X),\n exactly(DeviceModelId.NANO_SP),\n exactly(DeviceModelId.STAX),\n exactly(DeviceModelId.FLEX),\n exactly(DeviceModelId.APEX),\n]);\n"],
|
|
5
|
+
"mappings": "AAAA,OAAS,iBAAAA,MAAqB,kCAC9B,OAAS,WAAAC,EAAS,SAAAC,MAAa,YAMxB,MAAMC,EAAqBD,EAAM,CACtCD,EAAQD,EAAc,MAAM,EAC5BC,EAAQD,EAAc,OAAO,EAC7BC,EAAQD,EAAc,IAAI,EAC1BC,EAAQD,EAAc,IAAI,EAC1BC,EAAQD,EAAc,IAAI,CAC5B,CAAC",
|
|
6
6
|
"names": ["DeviceModelId", "exactly", "oneOf", "deviceModelIdCodec"]
|
|
7
7
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{DeviceModelId as e}from"@ledgerhq/device-management-kit";import{Right as t}from"purify-ts";import{deviceModelIdCodec as o}from"./deviceModelIdCodec";describe("deviceModelIdCodec",()=>{it.each([e.NANO_X,e.NANO_SP,e.STAX,e.FLEX])("decodes %s as Right",d=>{expect(o.decode(d)).toEqual(t(d))}),it("rejects NANO_S (unsupported for clear-signing)",()=>{expect(o.decode(e.NANO_S).isLeft()).toBe(!0)}),it.each([null,void 0,"","ledger",42,{},[]])("rejects non-model values: %s",d=>{expect(o.decode(d).isLeft()).toBe(!0)}),it("encodes a model as itself",()=>{expect(o.encode(e.NANO_X)).toBe(e.NANO_X)})});
|
|
1
|
+
import{DeviceModelId as e}from"@ledgerhq/device-management-kit";import{Right as t}from"purify-ts";import{deviceModelIdCodec as o}from"./deviceModelIdCodec";describe("deviceModelIdCodec",()=>{it.each([e.NANO_X,e.NANO_SP,e.STAX,e.FLEX,e.APEX])("decodes %s as Right",d=>{expect(o.decode(d)).toEqual(t(d))}),it("rejects NANO_S (unsupported for clear-signing)",()=>{expect(o.decode(e.NANO_S).isLeft()).toBe(!0)}),it.each([null,void 0,"","ledger",42,{},[]])("rejects non-model values: %s",d=>{expect(o.decode(d).isLeft()).toBe(!0)}),it("encodes a model as itself",()=>{expect(o.encode(e.NANO_X)).toBe(e.NANO_X)})});
|
|
2
2
|
//# sourceMappingURL=deviceModelIdCodec.test.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
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,OAAS,iBAAAA,MAAqB,kCAC9B,OAAS,SAAAC,MAAa,YAEtB,OAAS,sBAAAC,MAA0B,uBAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,KAAK,CACNF,EAAc,OACdA,EAAc,QACdA,EAAc,KACdA,EAAc,IAChB,CAAC,EAAE,sBAAwBG,GAAU,CACnC,OAAOD,EAAmB,OAAOC,CAAK,CAAC,EAAE,QAAQF,EAAME,CAAK,CAAC,CAC/D,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,OAAOD,EAAmB,OAAOF,EAAc,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CAC5E,CAAC,EAED,GAAG,KAAK,CAAC,KAAM,OAAW,GAAI,SAAU,GAAI,CAAC,EAAG,CAAC,CAAC,CAAC,EACjD,+BACCI,GAAU,CACT,OAAOF,EAAmB,OAAOE,CAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CAC7D,CACF,EAEA,GAAG,4BAA6B,IAAM,CACpC,OAAOF,EAAmB,OAAOF,EAAc,MAAM,CAAC,EAAE,KACtDA,EAAc,MAChB,CACF,CAAC,CACH,CAAC",
|
|
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 DeviceModelId.APEX,\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,OAAS,iBAAAA,MAAqB,kCAC9B,OAAS,SAAAC,MAAa,YAEtB,OAAS,sBAAAC,MAA0B,uBAEnC,SAAS,qBAAsB,IAAM,CACnC,GAAG,KAAK,CACNF,EAAc,OACdA,EAAc,QACdA,EAAc,KACdA,EAAc,KACdA,EAAc,IAChB,CAAC,EAAE,sBAAwBG,GAAU,CACnC,OAAOD,EAAmB,OAAOC,CAAK,CAAC,EAAE,QAAQF,EAAME,CAAK,CAAC,CAC/D,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,OAAOD,EAAmB,OAAOF,EAAc,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CAC5E,CAAC,EAED,GAAG,KAAK,CAAC,KAAM,OAAW,GAAI,SAAU,GAAI,CAAC,EAAG,CAAC,CAAC,CAAC,EACjD,+BACCI,GAAU,CACT,OAAOF,EAAmB,OAAOE,CAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAI,CAC7D,CACF,EAEA,GAAG,4BAA6B,IAAM,CACpC,OAAOF,EAAmB,OAAOF,EAAc,MAAM,CAAC,EAAE,KACtDA,EAAc,MAChB,CACF,CAAC,CACH,CAAC",
|
|
6
6
|
"names": ["DeviceModelId", "Right", "deviceModelIdCodec", "model", "value"]
|
|
7
7
|
}
|
package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts
CHANGED
|
@@ -21,17 +21,5 @@ export declare class SolanaTransactionCheckLoader implements TransactionCheckLoa
|
|
|
21
21
|
constructor(transactionCheckDataSource: TransactionCheckDataSource, certificateLoader: PkiCertificateLoader, loggerFactory: (tag: string) => LoggerPublisherService, bs58Encoder?: Bs58Encoder);
|
|
22
22
|
canHandle(input: unknown, expectedType: ClearSignContextType[]): input is SolanaTransactionCheckContextInput;
|
|
23
23
|
load(ctx: SolanaTransactionCheckContextInput): Promise<ClearSignContext[]>;
|
|
24
|
-
/**
|
|
25
|
-
* Wrap a serialized Solana Message into a serialized Transaction expected
|
|
26
|
-
* by the web3checks endpoint, by prepending a compact-u16 signature count
|
|
27
|
-
* and the matching number of zero-filled signature placeholders.
|
|
28
|
-
*
|
|
29
|
-
* Supports legacy and versioned messages: versioned messages start with a
|
|
30
|
-
* version prefix byte (high bit set), shifting `numRequiredSignatures` by
|
|
31
|
-
* one position.
|
|
32
|
-
*/
|
|
33
|
-
private wrapMessageAsTransaction;
|
|
34
|
-
private readNumRequiredSignatures;
|
|
35
|
-
private encodeShortVec;
|
|
36
24
|
}
|
|
37
25
|
//# sourceMappingURL=SolanaTransactionCheckLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolanaTransactionCheckLoader.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAEjG,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,wEAAwE,CAAC;AAEzH,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uEAAuE,CAAC;AAEpH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,4BAA4B,CAAC;AAIpC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,UAAU,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,6BAA6B,CAAC;CACjD,CAAC;
|
|
1
|
+
{"version":3,"file":"SolanaTransactionCheckLoader.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAEjG,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,wEAAwE,CAAC;AAEzH,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,uEAAuE,CAAC;AAEpH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,4BAA4B,CAAC;AAIpC,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,UAAU,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,6BAA6B,CAAC;CACjD,CAAC;AAeF,qBACa,4BACX,YAAW,sBAAsB,CAAC,kCAAkC,CAAC;IAMnE,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAE3C,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAGlC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAT9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAI7B,0BAA0B,EAAE,0BAA0B,EAEtD,iBAAiB,EAAE,oBAAoB,EAExD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,EACrC,WAAW,GAAE,WAAgC;IAKhE,SAAS,CACP,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,oBAAoB,EAAE,GACnC,KAAK,IAAI,kCAAkC;IAUxC,IAAI,CACR,GAAG,EAAE,kCAAkC,GACtC,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAmC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AltResolutionDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/alt-resolution/data/AltResolutionDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CACd,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;CAChD"}
|
|
1
|
+
{"version":3,"file":"AltResolutionDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/alt-resolution/data/AltResolutionDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CACd,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC;CAChD"}
|
package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpAltResolutionDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAMrF,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,2BAA2B,CAAC;AAanC,qBACa,2BAA4B,YAAW,uBAAuB;IAGvE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,MAAM,EAAE,0BAA0B,EAElC,IAAI,EAAE,gBAAgB;IAG5B,gBAAgB,CAAC,EAC5B,UAAU,EACV,UAAU,EACV,SAAS,GACV,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpAltResolutionDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAMrF,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC5B,MAAM,2BAA2B,CAAC;AAanC,qBACa,2BAA4B,YAAW,uBAAuB;IAGvE,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,MAAM,EAAE,0BAA0B,EAElC,IAAI,EAAE,gBAAgB;IAG5B,gBAAgB,CAAC,EAC5B,UAAU,EACV,UAAU,EACV,SAAS,GACV,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;CAyDxE"}
|
package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AltResolutionContextLoader.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAG5G,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AASzC,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,0BAA0B,EAAE,CAAC;CACxC,CAAC;AAaF,qBACa,0BACX,YAAW,aAAa,CAAC,+BAA+B,CAAC;IAMvD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAI7B,UAAU,EAAE,uBAAuB,EAEnC,iBAAiB,EAAE,oBAAoB,EAExD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAKjD,SAAS,CACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EAAE,GACpC,KAAK,IAAI,+BAA+B;IAY9B,IAAI,CACf,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"AltResolutionContextLoader.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC5B,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AACjG,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAG5G,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AASzC,MAAM,MAAM,0BAA0B,GAAG;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,0BAA0B,EAAE,CAAC;CACxC,CAAC;AAaF,qBACa,0BACX,YAAW,aAAa,CAAC,+BAA+B,CAAC;IAMvD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;gBAI7B,UAAU,EAAE,uBAAuB,EAEnC,iBAAiB,EAAE,oBAAoB,EAExD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAKjD,SAAS,CACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EAAE,GACpC,KAAK,IAAI,+BAA+B;IAY9B,IAAI,CACf,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,gBAAgB,EAAE,CAAC;CAyB/B"}
|
package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HttpInstructionInfoDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAIrF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAoBrC,qBACa,6BACX,YAAW,yBAAyB;IAIlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,MAAM,EAAE,0BAA0B,EAElC,IAAI,EAAE,gBAAgB;IAG5B,kBAAkB,CAAC,EAC9B,SAAS,EACT,OAAO,GACR,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"HttpInstructionInfoDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAIrF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,6BAA6B,CAAC;AAoBrC,qBACa,6BACX,YAAW,yBAAyB;IAIlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAFJ,MAAM,EAAE,0BAA0B,EAElC,IAAI,EAAE,gBAAgB;IAG5B,kBAAkB,CAAC,EAC9B,SAAS,EACT,OAAO,GACR,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;CA8F5E"}
|
|
@@ -64,7 +64,7 @@ export type CalDisplayFieldDto = CalSubstructureDto & {
|
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
66
|
export type CalInstructionDescriptorDto = {
|
|
67
|
-
discriminator_hex
|
|
67
|
+
discriminator_hex?: string;
|
|
68
68
|
instruction_name?: string;
|
|
69
69
|
descriptor: CalSignedDescriptorDto;
|
|
70
70
|
idl_descriptor?: {
|
|
@@ -95,7 +95,7 @@ export declare const calInstructionProgramCodec: Codec<{
|
|
|
95
95
|
id: string;
|
|
96
96
|
chain_id: number;
|
|
97
97
|
instructions: {
|
|
98
|
-
discriminator_hex: string;
|
|
98
|
+
discriminator_hex: string | undefined;
|
|
99
99
|
descriptor: {
|
|
100
100
|
data: string;
|
|
101
101
|
signatures: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InstructionInfoDto.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/instruction-info/data/InstructionInfoDto.ts"],"names":[],"mappings":"AAQA,OAAO,EAAS,KAAK,EAAoC,MAAM,WAAW,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;CAC3B,CAAC;AAKF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,sBAAsB,CAAC;CACpC,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,WAAW,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"InstructionInfoDto.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/instruction-info/data/InstructionInfoDto.ts"],"names":[],"mappings":"AAQA,OAAO,EAAS,KAAK,EAAoC,MAAM,WAAW,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,aAAa,CAAC;CAC3B,CAAC;AAKF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,sBAAsB,CAAC;CACpC,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,WAAW,EAAE,gBAAgB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;CACpE,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,sBAAsB,CAAC;IACnC,cAAc,CAAC,EAAE;QACf,SAAS,CAAC,EAAE,mBAAmB,EAAE,CAAC;QAClC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,gBAAgB,CAAC,EAAE,qBAAqB,CAAC;IACzC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAClE,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACzC,UAAU,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAClC,cAAc,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACvC,CAAC;AAKF,MAAM,MAAM,wBAAwB,GAAG;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,2BAA2B,EAAE,CAAC;CAC7C,CAAC;AAGF,MAAM,MAAM,6BAA6B,GAAG,wBAAwB,EAAE,CAAC;AAiCvE;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LifiContextLoader.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/lifi/domain/LifiContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAIzE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAIjG,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,2CAA2C,CAAC;AAWnD,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAMzC,qBACa,iBACX,YAAW,aAAa,CAAC,wBAAwB,CAAC;IAMhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IARrC,OAAO,CAAC,MAAM,CAAyB;gBAIpB,UAAU,EAAE,cAAc,EAE1B,MAAM,EAAE,0BAA0B,EAElC,kBAAkB,EAAE,oBAAoB,EAEzD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAKjD,SAAS,CACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EAAE,GACpC,KAAK,IAAI,wBAAwB;IAuBvB,IAAI,CACf,sBAAsB,EAAE,wBAAwB,GAC/C,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAkBhB,aAAa;IA6D3B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"LifiContextLoader.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/lifi/domain/LifiContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAIzE,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,sDAAsD,CAAC;AAIjG,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,2CAA2C,CAAC;AAWnD,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EACL,KAAK,gBAAgB,EACrB,oBAAoB,EACrB,MAAM,iCAAiC,CAAC;AAMzC,qBACa,iBACX,YAAW,aAAa,CAAC,wBAAwB,CAAC;IAMhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IARrC,OAAO,CAAC,MAAM,CAAyB;gBAIpB,UAAU,EAAE,cAAc,EAE1B,MAAM,EAAE,0BAA0B,EAElC,kBAAkB,EAAE,oBAAoB,EAEzD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAKjD,SAAS,CACd,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EAAE,GACpC,KAAK,IAAI,wBAAwB;IAuBvB,IAAI,CACf,sBAAsB,EAAE,wBAAwB,GAC/C,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAkBhB,aAAa;IA6D3B,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,oBAAoB;IAuC5B,OAAO,CAAC,uBAAuB;CAoChC"}
|
|
@@ -12,6 +12,7 @@ export type SolanaTransactionDescriptorRaw = {
|
|
|
12
12
|
export type SolanaLifiDescriptorEntry = {
|
|
13
13
|
program_id: string;
|
|
14
14
|
discriminator_hex?: string;
|
|
15
|
+
has_basis_point?: boolean;
|
|
15
16
|
descriptor: SolanaTransactionDescriptorRaw;
|
|
16
17
|
};
|
|
17
18
|
export type GetTransactionDescriptorsResponse = {
|
|
@@ -21,10 +22,13 @@ export type GetTransactionDescriptorsResponse = {
|
|
|
21
22
|
program_id: string;
|
|
22
23
|
discriminator?: number;
|
|
23
24
|
discriminator_hex?: string;
|
|
25
|
+
amount?: {
|
|
26
|
+
capped_bps?: number;
|
|
27
|
+
};
|
|
24
28
|
}>;
|
|
25
29
|
descriptors: SolanaLifiDescriptorEntry[];
|
|
26
30
|
};
|
|
27
|
-
export type SolanaTransactionDescriptorList = Record<string, SolanaTransactionDescriptor>;
|
|
31
|
+
export type SolanaTransactionDescriptorList = Record<string, SolanaTransactionDescriptor[]>;
|
|
28
32
|
export type SolanaContextSuccessType = ClearSignContextType.SOLANA_TOKEN | ClearSignContextType.SOLANA_LIFI | ClearSignContextType.SOLANA_TRANSACTION_CHECK | ClearSignContextType.SOLANA_INSTRUCTION_INFO | ClearSignContextType.SOLANA_ENUM_VARIANT | ClearSignContextType.SOLANA_TOKEN_INFO | ClearSignContextType.SOLANA_TOKEN_ACCOUNT_STATE | ClearSignContextType.SOLANA_ALT_RESOLUTION | ClearSignContextType.SOLANA_TRUSTED_NAME | ClearSignContextType.SOLANA_BASIC_TRUSTED_NAME;
|
|
29
33
|
export type SolanaContextSuccess<T extends SolanaContextSuccessType = SolanaContextSuccessType> = ClearSignContextSuccess<T>;
|
|
30
34
|
export type SolanaContextError = ClearSignContextError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolanaContextTypes.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/solana/model/SolanaContextTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACzF,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,8BAA8B,GAAG;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE;QACV,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,8BAA8B,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SolanaContextTypes.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/solana/model/SolanaContextTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,13 +9,15 @@ export type SolanaTransactionDescriptor = {
|
|
|
9
9
|
descriptorType: string;
|
|
10
10
|
descriptorVersion: string;
|
|
11
11
|
signature: string;
|
|
12
|
+
has_basis_point?: boolean;
|
|
12
13
|
};
|
|
13
14
|
export type SolanaLifiInstructionMeta = {
|
|
14
15
|
program_id: string;
|
|
15
16
|
discriminator_hex?: string;
|
|
17
|
+
has_basis_point?: boolean;
|
|
16
18
|
};
|
|
17
19
|
export type SolanaLifiPayload = {
|
|
18
|
-
descriptors: Record<string, SolanaTransactionDescriptor>;
|
|
20
|
+
descriptors: Record<string, SolanaTransactionDescriptor[]>;
|
|
19
21
|
instructions: SolanaLifiInstructionMeta[];
|
|
20
22
|
};
|
|
21
23
|
export type SolanaTransactionCheckPayload = {
|
|
@@ -141,8 +143,10 @@ export type SolanaTokenInfoPayload = {
|
|
|
141
143
|
};
|
|
142
144
|
export type SolanaTokenAccountStatePayload = {
|
|
143
145
|
descriptor: Uint8Array;
|
|
146
|
+
mint?: string;
|
|
144
147
|
};
|
|
145
148
|
export type SolanaAltResolutionPayload = {
|
|
146
149
|
descriptor: Uint8Array;
|
|
150
|
+
resolvedAddress?: string;
|
|
147
151
|
};
|
|
148
152
|
//# sourceMappingURL=SolanaPayloads.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolanaPayloads.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/solana/model/SolanaPayloads.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC5B,qBAAqB,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SolanaPayloads.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/solana/model/SolanaPayloads.ts"],"names":[],"mappings":"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"}
|