@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.
Files changed (169) hide show
  1. package/lib/cjs/package.json +2 -2
  2. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
  3. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
  4. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
  5. package/lib/cjs/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
  6. package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js +1 -1
  7. package/lib/cjs/src/modules/solana/alt-resolution/data/AltResolutionDataSource.js.map +1 -1
  8. package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +1 -1
  9. package/lib/cjs/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +2 -2
  10. package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +1 -1
  11. package/lib/cjs/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +2 -2
  12. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +1 -1
  13. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +2 -2
  14. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
  15. package/lib/cjs/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +3 -3
  16. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js +1 -1
  17. package/lib/cjs/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +2 -2
  18. package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.js +1 -1
  19. package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.js.map +3 -3
  20. package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.test.js +1 -1
  21. package/lib/cjs/src/modules/solana/lifi/domain/LifiContextLoader.test.js.map +3 -3
  22. package/lib/cjs/src/modules/solana/model/SolanaContextTypes.js.map +1 -1
  23. package/lib/cjs/src/modules/solana/model/SolanaPayloads.js +1 -1
  24. package/lib/cjs/src/modules/solana/model/SolanaPayloads.js.map +2 -2
  25. package/lib/cjs/src/modules/solana/model/SolanaTransactionContext.js +1 -1
  26. package/lib/cjs/src/modules/solana/model/SolanaTransactionContext.js.map +1 -1
  27. package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js +1 -1
  28. package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js.map +2 -2
  29. package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js +1 -1
  30. package/lib/cjs/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js.map +2 -2
  31. package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.js +2 -0
  32. package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.js.map +7 -0
  33. package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.test.js +2 -0
  34. package/lib/cjs/src/modules/solana/token/data/HttpMintToIdDataSource.test.js.map +7 -0
  35. package/lib/cjs/src/modules/solana/token/data/MintToIdDataSource.js +2 -0
  36. package/lib/cjs/src/modules/solana/token/data/MintToIdDataSource.js.map +7 -0
  37. package/lib/cjs/src/modules/solana/token/di/tokenModuleFactory.js +1 -1
  38. package/lib/cjs/src/modules/solana/token/di/tokenModuleFactory.js.map +3 -3
  39. package/lib/cjs/src/modules/solana/token/di/tokenTypes.js +1 -1
  40. package/lib/cjs/src/modules/solana/token/di/tokenTypes.js.map +2 -2
  41. package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
  42. package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
  43. package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.test.js +1 -1
  44. package/lib/cjs/src/modules/solana/token/domain/TokenContextLoader.test.js.map +3 -3
  45. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +1 -1
  46. package/lib/cjs/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +2 -2
  47. package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js +1 -1
  48. package/lib/cjs/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.js.map +1 -1
  49. package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +1 -1
  50. package/lib/cjs/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +2 -2
  51. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +1 -1
  52. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +3 -3
  53. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +1 -1
  54. package/lib/cjs/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +2 -2
  55. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  56. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  57. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  58. package/lib/cjs/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
  59. package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js +1 -1
  60. package/lib/cjs/src/modules/solana/trusted-name/data/TrustedNameDataSource.js.map +1 -1
  61. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  62. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +2 -2
  63. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  64. package/lib/cjs/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +2 -2
  65. package/lib/cjs/src/shared/utils/deviceModelIdCodec.js +1 -1
  66. package/lib/cjs/src/shared/utils/deviceModelIdCodec.js.map +2 -2
  67. package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js +1 -1
  68. package/lib/cjs/src/shared/utils/deviceModelIdCodec.test.js.map +2 -2
  69. package/lib/esm/package.json +2 -2
  70. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js +1 -1
  71. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.js.map +3 -3
  72. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js +1 -1
  73. package/lib/esm/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.test.js.map +3 -3
  74. package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js +1 -1
  75. package/lib/esm/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.js.map +2 -2
  76. package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js +1 -1
  77. package/lib/esm/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.js.map +2 -2
  78. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js +1 -1
  79. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.js.map +2 -2
  80. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js +1 -1
  81. package/lib/esm/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.test.js.map +3 -3
  82. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js +1 -1
  83. package/lib/esm/src/modules/solana/instruction-info/data/InstructionInfoDto.js.map +2 -2
  84. package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.js +1 -1
  85. package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.js.map +3 -3
  86. package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.test.js +1 -1
  87. package/lib/esm/src/modules/solana/lifi/domain/LifiContextLoader.test.js.map +3 -3
  88. package/lib/esm/src/modules/solana/model/SolanaPayloads.js.map +2 -2
  89. package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js +1 -1
  90. package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.js.map +2 -2
  91. package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js +1 -1
  92. package/lib/esm/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.test.js.map +2 -2
  93. package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.js +2 -0
  94. package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.js.map +7 -0
  95. package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.test.js +2 -0
  96. package/lib/esm/src/modules/solana/token/data/HttpMintToIdDataSource.test.js.map +7 -0
  97. package/lib/esm/src/modules/solana/token/data/MintToIdDataSource.js +1 -0
  98. package/lib/esm/src/modules/solana/token/data/MintToIdDataSource.js.map +7 -0
  99. package/lib/esm/src/modules/solana/token/di/tokenModuleFactory.js +1 -1
  100. package/lib/esm/src/modules/solana/token/di/tokenModuleFactory.js.map +3 -3
  101. package/lib/esm/src/modules/solana/token/di/tokenTypes.js +1 -1
  102. package/lib/esm/src/modules/solana/token/di/tokenTypes.js.map +2 -2
  103. package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js +1 -1
  104. package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.js.map +3 -3
  105. package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.test.js +1 -1
  106. package/lib/esm/src/modules/solana/token/domain/TokenContextLoader.test.js.map +3 -3
  107. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js +1 -1
  108. package/lib/esm/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.js.map +2 -2
  109. package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js +1 -1
  110. package/lib/esm/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.js.map +3 -3
  111. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js +1 -1
  112. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.js.map +3 -3
  113. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js +1 -1
  114. package/lib/esm/src/modules/solana/token-info/data/HttpTokenInfoDataSource.test.js.map +2 -2
  115. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js +1 -1
  116. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.js.map +3 -3
  117. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js +1 -1
  118. package/lib/esm/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.test.js.map +2 -2
  119. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js +1 -1
  120. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.js.map +2 -2
  121. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js +1 -1
  122. package/lib/esm/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.test.js.map +2 -2
  123. package/lib/esm/src/shared/utils/deviceModelIdCodec.js +1 -1
  124. package/lib/esm/src/shared/utils/deviceModelIdCodec.js.map +2 -2
  125. package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js +1 -1
  126. package/lib/esm/src/shared/utils/deviceModelIdCodec.test.js.map +2 -2
  127. package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts +0 -12
  128. package/lib/types/src/modules/multichain/transaction-check/loaders/SolanaTransactionCheckLoader.d.ts.map +1 -1
  129. package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts +1 -0
  130. package/lib/types/src/modules/solana/alt-resolution/data/AltResolutionDataSource.d.ts.map +1 -1
  131. package/lib/types/src/modules/solana/alt-resolution/data/HttpAltResolutionDataSource.d.ts.map +1 -1
  132. package/lib/types/src/modules/solana/alt-resolution/domain/AltResolutionContextLoader.d.ts.map +1 -1
  133. package/lib/types/src/modules/solana/instruction-info/data/HttpInstructionInfoDataSource.d.ts.map +1 -1
  134. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts +2 -2
  135. package/lib/types/src/modules/solana/instruction-info/data/InstructionInfoDto.d.ts.map +1 -1
  136. package/lib/types/src/modules/solana/lifi/domain/LifiContextLoader.d.ts.map +1 -1
  137. package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts +5 -1
  138. package/lib/types/src/modules/solana/model/SolanaContextTypes.d.ts.map +1 -1
  139. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts +5 -1
  140. package/lib/types/src/modules/solana/model/SolanaPayloads.d.ts.map +1 -1
  141. package/lib/types/src/modules/solana/model/SolanaTransactionContext.d.ts +1 -0
  142. package/lib/types/src/modules/solana/model/SolanaTransactionContext.d.ts.map +1 -1
  143. package/lib/types/src/modules/solana/owner-info/data/HttpOwnerInfoDataSource.d.ts.map +1 -1
  144. package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.d.ts +11 -0
  145. package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.d.ts.map +1 -0
  146. package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.test.d.ts +2 -0
  147. package/lib/types/src/modules/solana/token/data/HttpMintToIdDataSource.test.d.ts.map +1 -0
  148. package/lib/types/src/modules/solana/token/data/MintToIdDataSource.d.ts +8 -0
  149. package/lib/types/src/modules/solana/token/data/MintToIdDataSource.d.ts.map +1 -0
  150. package/lib/types/src/modules/solana/token/di/tokenModuleFactory.d.ts.map +1 -1
  151. package/lib/types/src/modules/solana/token/di/tokenTypes.d.ts +1 -0
  152. package/lib/types/src/modules/solana/token/di/tokenTypes.d.ts.map +1 -1
  153. package/lib/types/src/modules/solana/token/domain/TokenContextLoader.d.ts +3 -1
  154. package/lib/types/src/modules/solana/token/domain/TokenContextLoader.d.ts.map +1 -1
  155. package/lib/types/src/modules/solana/token-account-state/data/HttpTokenAccountStateDataSource.d.ts.map +1 -1
  156. package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts +1 -0
  157. package/lib/types/src/modules/solana/token-account-state/data/TokenAccountStateDataSource.d.ts.map +1 -1
  158. package/lib/types/src/modules/solana/token-account-state/domain/TokenAccountStateContextLoader.d.ts.map +1 -1
  159. package/lib/types/src/modules/solana/token-info/data/HttpTokenInfoDataSource.d.ts.map +1 -1
  160. package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts +1 -1
  161. package/lib/types/src/modules/solana/trusted-name/data/HttpTrustedNameDataSource.d.ts.map +1 -1
  162. package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts +1 -0
  163. package/lib/types/src/modules/solana/trusted-name/data/TrustedNameDataSource.d.ts.map +1 -1
  164. package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts +1 -0
  165. package/lib/types/src/modules/solana/trusted-name/domain/TrustedNameContextLoader.d.ts.map +1 -1
  166. package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts +2 -2
  167. package/lib/types/src/shared/utils/deviceModelIdCodec.d.ts.map +1 -1
  168. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  169. 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 a,it as s,vi as i}from"vitest";import{HttpTokenInfoDataSource as u}from"./HttpTokenInfoDataSource";f("HttpTokenInfoDataSource",()=>{let r,e;const t="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",n="solana-mainnet",d={cal:{url:"https://global.api.prd.ledger.com/cal/v1",mode:"prod",branch:"main"}};p(()=>{i.clearAllMocks(),e={get:i.fn()},r=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 r.getTokenInfo({mint:t,network:n}),a(e.get).toHaveBeenCalledWith("https://global.api.prd.ledger.com/cal/v1/tokens",{params:{contract_address:t,network:n,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 r.getTokenInfo({mint:t,network:n});a(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 r.getTokenInfo({mint:t,network:n});a(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 r.getTokenInfo({mint:t,network:n});a(o.isLeft()).toBe(!0),a(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 r.getTokenInfo({mint:t,network:n});a(o).toEqual(c(new Error("[ContextModule] HttpTokenInfoDataSource: Failed to fetch token info: net")))})});
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,\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,QAAAC,EACA,OAAQ,sCACR,IAAK,aACP,CACF,CACF,CACF,CAAC,EAEDN,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",
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 h=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var g=(i,t,o,n)=>{for(var r=n>1?void 0:n?N(t,o):t,a=i.length-1,e;a>=0;a--)(e=i[a])&&(r=(n?e(t,o,r):e(r))||r);return n&&r&&h(t,o,r),r},l=(i,t)=>(o,n)=>t(o,n,i);import{inject as y,injectable as k}from"inversify";import{Codec as p,Left as c,optional as C,Right as E,string as s}from"purify-ts";import{configTypes as x}from"../../../../config/di/configTypes";import{SIGNATURE_TAG as w}from"../../../../shared/model/SignatureTags";import{networkTypes as M}from"../../../../shared/network/di/networkTypes";import{HexStringUtils as S}from"../../../../shared/utils/HexStringUtils";const $=p.interface({signedDescriptor:p.interface({data:s,signatures:p.interface({prod:C(s),test:C(s)})}),keyId:s,keyUsage:s});let u=class{constructor(t,o){this.config=t;this.http=o}async getTrustedName({address:t,network:o,challenge:n,sources:r}){let a;try{a=await this.http.get(`${this.config.metadataServiceDomain.url}/v2/names/solana/${o}/reverse/${t}`,{params:{sources:r.join(","),challenge:n}})}catch(e){const m=e instanceof Error?e.message:String(e);return c(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: Failed to fetch trusted name: ${m}`))}return $.decode(a).caseOf({Left:e=>c(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: malformed response for ${t}: ${e}`)),Right:e=>{const m=this.config.cal.mode??"prod",d=e.signedDescriptor.signatures[m];if(!d)return c(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: missing ${m} signature for ${t}`));let f;try{f=S.hexToBytes(S.appendSignatureToPayload(e.signedDescriptor.data,d,w))}catch(T){return c(new Error(`[ContextModule] HttpSolanaTrustedNameDataSource: invalid signed descriptor for ${t}: ${T.message}`))}return E({address:t,descriptor:f,keyId:e.keyId,keyUsage:e.keyUsage})}})}};u=g([k(),l(0,y(x.Config)),l(1,y(M.NetworkClient))],u);export{u as HttpSolanaTrustedNameDataSource};
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,oBAAoBH,CAAO,YAAYD,CAAO,GACtF,CACE,OAAQ,CACN,QAASG,EAAQ,KAAK,GAAG,EACzB,UAAAD,CACF,CACF,CACF,CACF,OAASG,EAAO,CACd,MAAMC,EAASD,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,EACpE,OAAOE,EACL,IAAI,MACF,kFAAkFD,CAAM,EAC1F,CACF,CACF,CAEA,OAAOb,EACJ,OAAOW,CAAG,EACV,OAA+C,CAC9C,KAAOC,GACLE,EACE,IAAI,MACF,2EAA2EP,CAAO,KAAKK,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,kBAAkBT,CAAO,EAC3F,CACF,EAGF,IAAIW,EACJ,GAAI,CACFA,EAAaC,EAAe,WAC1BA,EAAe,yBACbJ,EAAU,iBAAiB,KAC3BE,EACAG,CACF,CACF,CACF,OAASR,EAAO,CACd,OAAOE,EACL,IAAI,MACF,kFAAkFP,CAAO,KAAMK,EAAgB,OAAO,EACxH,CACF,CACF,CAEA,OAAOS,EAAM,CACX,QAAAd,EACA,WAAAW,EACA,MAAOH,EAAU,MACjB,SAAUA,EAAU,QACtB,CAAC,CACH,CACF,CAAC,CACL,CACF,EApFaX,EAANkB,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IANzBvB",
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 f,describe as k,expect as s,it as c,vi as l}from"vitest";import{SolanaTransactionScanChainId as n}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{HttpSolanaTrustedNameDataSource as w}from"./HttpTrustedNameDataSource";k("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 w(m(e),a),i=(e,p="ff00")=>({descriptorType:"name",descriptorVersion:"2",signedDescriptor:{data:p,signatures:e},keyId:"cal_trusted_name",keyUsage:"trusted_name"});f(()=>{l.clearAllMocks(),a={get:l.fn()},r=d()}),c("calls the names endpoint with network, sources and challenge (no types)",async()=>{a.get.mockResolvedValue(i({prod:"aabb"})),await r.getTrustedName({address:t,network:String(n.MAINNET),challenge:o,sources:["crypto_asset_list"]}),s(a.get).toHaveBeenCalledWith(`https://nft.api.ledger.com/v2/names/solana/${n.MAINNET}/reverse/${t}`,{params:{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,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,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,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,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,sources:[]});s(e).toEqual(g(new Error("[ContextModule] HttpSolanaTrustedNameDataSource: Failed to fetch trusted name: net")))})});
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 (no types)\", async () => {\n httpMock.get.mockResolvedValue(objectResponse({ prod: \"aabb\" }));\n\n await datasource.getTrustedName({\n address,\n network: String(SolanaTransactionScanChainId.MAINNET),\n challenge,\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 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 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 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 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 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 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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",
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 C=Object.getOwnPropertyDescriptor;var g=(a,r,o,t)=>{for(var e=t>1?void 0:t?C(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},s=(a,r)=>(o,t)=>r(o,t,a);import{inject as p,injectable as N}from"inversify";import{array as u,Codec as T,optional as y,string as d}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},m=c.MAINNET,D=T.interface({address:d,challenge:d,sources:u(d)}),A=T.interface({deviceModelId:x,network:y(d),requests:u(D)});let i=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]??m:m,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,sources:e.sources,network:t}),toContext:(e,n)=>({type:S.SOLANA_TRUSTED_NAME,payload:e.descriptor,certificate:n}),describe:e=>({address:e.address})})}};i=g([N(),s(0,p(E.SolanaTrustedNameDataSource)),s(1,p(I.PkiCertificateLoader)),s(2,p(h.ContextModuleLoggerFactory))],i);export{i as SolanaTrustedNameContextLoader};
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,QAkB/CE,EAA0BC,EAAM,UAAU,CAC9C,QAASC,EACT,UAAWA,EACX,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,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,EA1DaX,EAANc,EAAA,CADNC,EAAW,EAOPC,EAAA,EAAAC,EAAOC,EAAuB,2BAA2B,GAEzDF,EAAA,EAAAC,EAAOE,EAAS,oBAAoB,GAEpCH,EAAA,EAAAC,EAAOG,EAAY,0BAA0B,IAVrCpB",
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 p,Right as l}from"purify-ts";import{beforeEach as N,describe as u,expect as a,it as o,vi as s}from"vitest";import{SolanaTransactionScanChainId as f}from"../../../../modules/solana/model/SolanaTransactionScanChainId";import{ClearSignContextType as d}from"../../../../shared/model/ClearSignContext";import{SolanaTrustedNameContextLoader as g}from"./TrustedNameContextLoader";const k=()=>({debug:s.fn(),info:s.fn(),warn:s.fn(),error:s.fn(),subscribers:[]}),y={keyUsageNumber:4,payload:new Uint8Array([7])},t="Addr11111111111111111111111111111111111111",A="Addr22222222222222222222222222222222222222";u("SolanaTrustedNameContextLoader",()=>{let c,m;N(()=>{s.restoreAllMocks(),c={getTrustedName:s.fn()},m={loadCertificate:s.fn().mockResolvedValue(y)}});const n=()=>new g(c,m,k);u("canHandle",()=>{o("returns true when SOLANA_TRUSTED_NAME is requested with valid requests",()=>{a(n().canHandle({deviceModelId:i.NANO_X,requests:[{address:t,challenge:"c",sources:["sns"]}]},[d.SOLANA_TRUSTED_NAME])).toBe(!0)}),o("returns false when SOLANA_TRUSTED_NAME is not requested",()=>{a(n().canHandle({requests:[{address:t,challenge:"c",sources:["sns"]}]},[d.SOLANA_TOKEN])).toBe(!1)}),o("returns false on malformed input",()=>{const e=n(),r=[d.SOLANA_TRUSTED_NAME];a(e.canHandle({requests:[]},r)).toBe(!1),a(e.canHandle({requests:[{address:"",challenge:"c",sources:[]}]},r)).toBe(!1),a(e.canHandle({requests:[{address:t,challenge:"",sources:[]}]},r)).toBe(!1)})}),u("load",()=>{o("emits one SOLANA_TRUSTED_NAME per request with Uint8Array payload",async()=>{s.spyOn(c,"getTrustedName").mockImplementation(async({address:r})=>l({address:r,descriptor:new Uint8Array([r===t?170:187]),keyId:"name_key",keyUsage:"trusted_name"}));const e=await n().load({deviceModelId:i.NANO_X,requests:[{address:t,challenge:"c1",sources:["sns"]},{address:A,challenge:"c2",sources:["cal"]}]});a(e).toHaveLength(2),a(e[0]).toMatchObject({type:d.SOLANA_TRUSTED_NAME,payload:new Uint8Array([170]),certificate:y}),a(e[1]).toMatchObject({type:d.SOLANA_TRUSTED_NAME,payload:new Uint8Array([187])})}),o("emits an ERROR per failing request and keeps the others",async()=>{s.spyOn(c,"getTrustedName").mockImplementation(async({address:r})=>r===t?l({address:r,descriptor:new Uint8Array([170]),keyId:"k",keyUsage:"u"}):p(new Error("upstream-404")));const e=await n().load({deviceModelId:i.NANO_X,requests:[{address:t,challenge:"c1",sources:[]},{address:A,challenge:"c2",sources:[]}]});a(e[0]?.type).toBe(d.SOLANA_TRUSTED_NAME),a(e[1]?.type).toBe(d.ERROR)}),o("forwards default chain id 900 when input.network is omitted",async()=>{const e=s.spyOn(c,"getTrustedName").mockResolvedValue(l({address:t,descriptor:new Uint8Array([1]),keyId:"k",keyUsage:"u"}));await n().load({deviceModelId:i.NANO_X,requests:[{address:t,challenge:"c",sources:[]}]}),a(e).toHaveBeenCalledWith(a.objectContaining({network:String(f.MAINNET)}))}),o("maps a cluster name to its numeric chain id",async()=>{const e=s.spyOn(c,"getTrustedName").mockResolvedValue(l({address:t,descriptor:new Uint8Array([1]),keyId:"k",keyUsage:"u"}));await n().load({deviceModelId:i.NANO_X,network:"solana-devnet",requests:[{address:t,challenge:"c",sources:[]}]}),a(e).toHaveBeenCalledWith(a.objectContaining({network:"901"}))})})});
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": "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",
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` and `APEX`.\n */\nexport const deviceModelIdCodec = oneOf([\n exactly(DeviceModelId.NANO_X),\n exactly(DeviceModelId.NANO_SP),\n exactly(DeviceModelId.STAX),\n exactly(DeviceModelId.FLEX),\n]);\n"],
5
- "mappings": "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
  }
@@ -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;AAsBF,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;IAkD9B;;;;;;;;OAQG;IACH,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,yBAAyB;IAuBjC,OAAO,CAAC,cAAc;CAcvB"}
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"}
@@ -8,6 +8,7 @@ export type AltResolutionResult = {
8
8
  altAddress: string;
9
9
  entryIndex: number;
10
10
  descriptor: Uint8Array;
11
+ resolvedAddress?: string;
11
12
  keyId: string;
12
13
  keyUsage: string;
13
14
  };
@@ -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"}
@@ -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;CAwDxE"}
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"}
@@ -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;CAwB/B"}
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"}
@@ -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;CA4F5E"}
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: string;
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":"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"}
1
+ {"version":3,"file":"InstructionInfoDto.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/instruction-info/data/InstructionInfoDto.ts"],"names":[],"mappings":"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"}
@@ -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;IAmC5B,OAAO,CAAC,uBAAuB;CAiChC"}
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":"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"}
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":"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"}
1
+ {"version":3,"file":"SolanaPayloads.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/solana/model/SolanaPayloads.ts"],"names":[],"mappings":"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"}