@ledgerhq/context-module 0.0.0-develop-20260312001221 → 0.0.0-develop-20260314001417

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 (69) hide show
  1. package/lib/cjs/package.json +1 -1
  2. package/lib/cjs/src/pki/model/KeyId.js +1 -1
  3. package/lib/cjs/src/pki/model/KeyId.js.map +2 -2
  4. package/lib/cjs/src/pki/model/KeyUsage.js +1 -1
  5. package/lib/cjs/src/pki/model/KeyUsage.js.map +2 -2
  6. package/lib/cjs/src/shared/model/SolanaContextTypes.js +1 -1
  7. package/lib/cjs/src/shared/model/SolanaContextTypes.js.map +1 -1
  8. package/lib/cjs/src/shared/utils/KeyUsageMapper.js +1 -1
  9. package/lib/cjs/src/shared/utils/KeyUsageMapper.js.map +2 -2
  10. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js +1 -1
  11. package/lib/cjs/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  12. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  13. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  14. package/lib/cjs/src/solana/domain/solanaContextTypes.js.map +1 -1
  15. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  16. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  17. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  18. package/lib/cjs/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  19. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js +1 -1
  20. package/lib/cjs/src/solanaLifi/data/SolanaLifiDataSource.js.map +1 -1
  21. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
  22. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
  23. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  24. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  25. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
  26. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +2 -2
  27. package/lib/esm/package.json +1 -1
  28. package/lib/esm/src/pki/model/KeyId.js +1 -1
  29. package/lib/esm/src/pki/model/KeyId.js.map +2 -2
  30. package/lib/esm/src/pki/model/KeyUsage.js +1 -1
  31. package/lib/esm/src/pki/model/KeyUsage.js.map +2 -2
  32. package/lib/esm/src/shared/model/SolanaContextTypes.js.map +1 -1
  33. package/lib/esm/src/shared/utils/KeyUsageMapper.js +1 -1
  34. package/lib/esm/src/shared/utils/KeyUsageMapper.js.map +2 -2
  35. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js +1 -1
  36. package/lib/esm/src/shared/utils/KeyUsageMapper.test.js.map +2 -2
  37. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  38. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  39. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js +1 -1
  40. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.js.map +3 -3
  41. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js +1 -1
  42. package/lib/esm/src/solanaLifi/data/HttpSolanaLifiDataSource.test.js.map +3 -3
  43. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
  44. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
  45. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  46. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  47. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
  48. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +2 -2
  49. package/lib/types/src/pki/model/KeyId.d.ts +2 -1
  50. package/lib/types/src/pki/model/KeyId.d.ts.map +1 -1
  51. package/lib/types/src/pki/model/KeyUsage.d.ts +2 -1
  52. package/lib/types/src/pki/model/KeyUsage.d.ts.map +1 -1
  53. package/lib/types/src/shared/model/SolanaContextTypes.d.ts +33 -3
  54. package/lib/types/src/shared/model/SolanaContextTypes.d.ts.map +1 -1
  55. package/lib/types/src/shared/utils/KeyUsageMapper.d.ts.map +1 -1
  56. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +4 -1
  57. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
  58. package/lib/types/src/solana/domain/solanaContextTypes.d.ts +2 -2
  59. package/lib/types/src/solana/domain/solanaContextTypes.d.ts.map +1 -1
  60. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts +3 -1
  61. package/lib/types/src/solanaLifi/data/HttpSolanaLifiDataSource.d.ts.map +1 -1
  62. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts +2 -5
  63. package/lib/types/src/solanaLifi/data/SolanaLifiDataSource.d.ts.map +1 -1
  64. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +10 -8
  65. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -1
  66. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +4 -9
  67. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -1
  68. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  69. package/package.json +4 -4
@@ -58,5 +58,5 @@
58
58
  "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
59
59
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
60
60
  },
61
- "version": "0.0.0-develop-20260312001221"
61
+ "version": "0.0.0-develop-20260314001417"
62
62
  }
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var m=(e,t)=>{for(var r in t)l(e,r,{get:t[r],enumerable:!0})},i=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let _ of g(t))!k.call(e,_)&&_!==r&&l(e,_,{get:()=>t[_],enumerable:!(n=c(t,_))||n.enumerable});return e};var s=e=>i(l({},"__esModule",{value:!0}),e);var d={};m(d,{KeyId:()=>o});module.exports=s(d);var o=(a=>(a.Test="test",a.PersoV2="persov2",a.LedgerRootV3="ledger_root_v3",a.PluginSelectorKey="plugin_selector_key",a.NftMetadataKey="nft_metadata_key",a.PartnerMetadataKey="partner_metadata_key",a.Erc20MetadataKey="erc20_metadata_key",a.DomainMetadataKey="domain_metadata_key",a.CalCalldataKey="cal_calldata_key",a.CalTrustedNameKey="cal_trusted_name_key",a.CalNetwork="cal_network",a.CalGatedSigning="cal_gated_signing",a))(o||{});0&&(module.exports={KeyId});
1
+ "use strict";var r=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var g=(t,e)=>{for(var l in e)r(t,l,{get:e[l],enumerable:!0})},s=(t,e,l,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let _ of k(e))!c.call(t,_)&&_!==l&&r(t,_,{get:()=>e[_],enumerable:!(n=m(e,_))||n.enumerable});return t};var i=t=>s(r({},"__esModule",{value:!0}),t);var p={};g(p,{KeyId:()=>o});module.exports=i(p);var o=(a=>(a.Test="test",a.PersoV2="persov2",a.LedgerRootV3="ledger_root_v3",a.PluginSelectorKey="plugin_selector_key",a.NftMetadataKey="nft_metadata_key",a.PartnerMetadataKey="partner_metadata_key",a.Erc20MetadataKey="erc20_metadata_key",a.DomainMetadataKey="domain_metadata_key",a.CalCalldataKey="cal_calldata_key",a.CalTrustedNameKey="cal_trusted_name_key",a.CalNetwork="cal_network",a.CalGatedSigning="cal_gated_signing",a.SwapTemplateKey="swap_template_key",a))(o||{});0&&(module.exports={KeyId});
2
2
  //# sourceMappingURL=KeyId.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/pki/model/KeyId.ts"],
4
- "sourcesContent": ["export enum KeyId {\n Test = \"test\",\n PersoV2 = \"persov2\",\n LedgerRootV3 = \"ledger_root_v3\",\n PluginSelectorKey = \"plugin_selector_key\",\n NftMetadataKey = \"nft_metadata_key\",\n PartnerMetadataKey = \"partner_metadata_key\",\n Erc20MetadataKey = \"erc20_metadata_key\",\n DomainMetadataKey = \"domain_metadata_key\",\n CalCalldataKey = \"cal_calldata_key\",\n CalTrustedNameKey = \"cal_trusted_name_key\",\n CalNetwork = \"cal_network\",\n CalGatedSigning = \"cal_gated_signing\",\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,IAAA,eAAAC,EAAAH,GAAO,IAAKE,OACVA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,aAAe,iBACfA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,mBAAqB,uBACrBA,EAAA,iBAAmB,qBACnBA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,kBAAoB,uBACpBA,EAAA,WAAa,cACbA,EAAA,gBAAkB,oBAZRA,OAAA",
4
+ "sourcesContent": ["export enum KeyId {\n Test = \"test\",\n PersoV2 = \"persov2\",\n LedgerRootV3 = \"ledger_root_v3\",\n PluginSelectorKey = \"plugin_selector_key\",\n NftMetadataKey = \"nft_metadata_key\",\n PartnerMetadataKey = \"partner_metadata_key\",\n Erc20MetadataKey = \"erc20_metadata_key\",\n DomainMetadataKey = \"domain_metadata_key\",\n CalCalldataKey = \"cal_calldata_key\",\n CalTrustedNameKey = \"cal_trusted_name_key\",\n CalNetwork = \"cal_network\",\n CalGatedSigning = \"cal_gated_signing\",\n SwapTemplateKey = \"swap_template_key\",\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,WAAAE,IAAA,eAAAC,EAAAH,GAAO,IAAKE,OACVA,EAAA,KAAO,OACPA,EAAA,QAAU,UACVA,EAAA,aAAe,iBACfA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,mBAAqB,uBACrBA,EAAA,iBAAmB,qBACnBA,EAAA,kBAAoB,sBACpBA,EAAA,eAAiB,mBACjBA,EAAA,kBAAoB,uBACpBA,EAAA,WAAa,cACbA,EAAA,gBAAkB,oBAClBA,EAAA,gBAAkB,oBAbRA,OAAA",
6
6
  "names": ["KeyId_exports", "__export", "KeyId", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var u=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var e=(n,i)=>{for(var o in i)u(n,o,{get:i[o],enumerable:!0})},m=(n,i,o,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of c(i))!l.call(n,r)&&r!==o&&u(n,r,{get:()=>i[r],enumerable:!(a=_(i,r))||a.enumerable});return n};var h=n=>m(u({},"__esModule",{value:!0}),n);var p={};e(p,{KeyUsage:()=>d});module.exports=h(p);var d=(t=>(t.GenuineCheck="genuine_check",t.ExchangePayload="exchange_payload",t.NftMeta="nft_meta",t.TrustedName="trusted_name",t.BackupProvider="backup_provider",t.ProtectOrchestrator="protect_orchestrator",t.PluginMeta="plugin_meta",t.CoinMeta="coin_meta",t.SeedIdAuth="seed_id_auth",t.TxSimulationSigner="tx_simu_signer",t.Calldata="calldata",t.Network="network",t.LESMultisig="les_multisig",t.GatedSigning="gated_signing",t))(d||{});0&&(module.exports={KeyUsage});
1
+ "use strict";var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var e=(n,i)=>{for(var a in i)o(n,a,{get:i[a],enumerable:!0})},m=(n,i,a,u)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of l(i))!c.call(n,r)&&r!==a&&o(n,r,{get:()=>i[r],enumerable:!(u=d(i,r))||u.enumerable});return n};var p=n=>m(o({},"__esModule",{value:!0}),n);var h={};e(h,{KeyUsage:()=>_});module.exports=p(h);var _=(t=>(t.GenuineCheck="genuine_check",t.ExchangePayload="exchange_payload",t.NftMeta="nft_meta",t.TrustedName="trusted_name",t.BackupProvider="backup_provider",t.ProtectOrchestrator="protect_orchestrator",t.PluginMeta="plugin_meta",t.CoinMeta="coin_meta",t.SeedIdAuth="seed_id_auth",t.TxSimulationSigner="tx_simu_signer",t.Calldata="calldata",t.Network="network",t.LESMultisig="les_multisig",t.GatedSigning="gated_signing",t.SwapTemplate="swap_template",t))(_||{});0&&(module.exports={KeyUsage});
2
2
  //# sourceMappingURL=KeyUsage.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/pki/model/KeyUsage.ts"],
4
- "sourcesContent": ["export enum KeyUsage {\n GenuineCheck = \"genuine_check\",\n ExchangePayload = \"exchange_payload\",\n NftMeta = \"nft_meta\",\n TrustedName = \"trusted_name\",\n BackupProvider = \"backup_provider\",\n ProtectOrchestrator = \"protect_orchestrator\",\n PluginMeta = \"plugin_meta\",\n CoinMeta = \"coin_meta\",\n SeedIdAuth = \"seed_id_auth\",\n TxSimulationSigner = \"tx_simu_signer\",\n Calldata = \"calldata\",\n Network = \"network\",\n LESMultisig = \"les_multisig\",\n GatedSigning = \"gated_signing\",\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GAAO,IAAKE,OACVA,EAAA,aAAe,gBACfA,EAAA,gBAAkB,mBAClBA,EAAA,QAAU,WACVA,EAAA,YAAc,eACdA,EAAA,eAAiB,kBACjBA,EAAA,oBAAsB,uBACtBA,EAAA,WAAa,cACbA,EAAA,SAAW,YACXA,EAAA,WAAa,eACbA,EAAA,mBAAqB,iBACrBA,EAAA,SAAW,WACXA,EAAA,QAAU,UACVA,EAAA,YAAc,eACdA,EAAA,aAAe,gBAdLA,OAAA",
4
+ "sourcesContent": ["export enum KeyUsage {\n GenuineCheck = \"genuine_check\",\n ExchangePayload = \"exchange_payload\",\n NftMeta = \"nft_meta\",\n TrustedName = \"trusted_name\",\n BackupProvider = \"backup_provider\",\n ProtectOrchestrator = \"protect_orchestrator\",\n PluginMeta = \"plugin_meta\",\n CoinMeta = \"coin_meta\",\n SeedIdAuth = \"seed_id_auth\",\n TxSimulationSigner = \"tx_simu_signer\",\n Calldata = \"calldata\",\n Network = \"network\",\n LESMultisig = \"les_multisig\",\n GatedSigning = \"gated_signing\",\n SwapTemplate = \"swap_template\",\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,cAAAE,IAAA,eAAAC,EAAAH,GAAO,IAAKE,OACVA,EAAA,aAAe,gBACfA,EAAA,gBAAkB,mBAClBA,EAAA,QAAU,WACVA,EAAA,YAAc,eACdA,EAAA,eAAiB,kBACjBA,EAAA,oBAAsB,uBACtBA,EAAA,WAAa,cACbA,EAAA,SAAW,YACXA,EAAA,WAAa,eACbA,EAAA,mBAAqB,iBACrBA,EAAA,SAAW,WACXA,EAAA,QAAU,UACVA,EAAA,YAAc,eACdA,EAAA,aAAe,gBACfA,EAAA,aAAe,gBAfLA,OAAA",
6
6
  "names": ["KeyUsage_exports", "__export", "KeyUsage", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var r=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var i=Object.prototype.hasOwnProperty;var c=(e,t)=>{for(var n in t)r(e,n,{get:t[n],enumerable:!0})},l=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of p(t))!i.call(e,a)&&a!==n&&r(e,a,{get:()=>t[a],enumerable:!(o=S(t,a))||o.enumerable});return e};var x=e=>l(r({},"__esModule",{value:!0}),e);var y={};c(y,{SolanaContextTypes:()=>s});module.exports=x(y);var s=(o=>(o.SOLANA_TOKEN="solanaToken",o.SOLANA_LIFI="solanaLifi",o.ERROR="error",o))(s||{});0&&(module.exports={SolanaContextTypes});
1
+ "use strict";var n=Object.defineProperty;var s=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var S=(e,t)=>{for(var r in t)n(e,r,{get:t[r],enumerable:!0})},l=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of p(t))!c.call(e,a)&&a!==r&&n(e,a,{get:()=>t[a],enumerable:!(o=s(t,a))||o.enumerable});return e};var x=e=>l(n({},"__esModule",{value:!0}),e);var y={};S(y,{SolanaContextTypes:()=>i});module.exports=x(y);var i=(o=>(o.SOLANA_TOKEN="solanaToken",o.SOLANA_LIFI="solanaLifi",o.ERROR="error",o))(i||{});0&&(module.exports={SolanaContextTypes});
2
2
  //# sourceMappingURL=SolanaContextTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/shared/model/SolanaContextTypes.ts"],
4
- "sourcesContent": ["import type { PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nexport enum SolanaContextTypes {\n SOLANA_TOKEN = \"solanaToken\",\n SOLANA_LIFI = \"solanaLifi\",\n ERROR = \"error\",\n}\n\nexport type SolanaTransactionDescriptor = {\n data: string;\n descriptorType: string;\n descriptorVersion: string;\n signatures: {\n prod?: string;\n test?: string;\n };\n};\n\nexport type SolanaTransactionDescriptorList = Record<\n string,\n SolanaTransactionDescriptor\n>;\n\nexport type SolanaTokenData = {\n solanaTokenDescriptor: {\n data: string;\n signature: string;\n };\n};\n\nexport type SolanaContextSuccessType = Exclude<\n SolanaContextTypes,\n SolanaContextTypes.ERROR\n>;\n\n// map from Solana success type to payload\ntype SolanaContextSuccessPayloads = {\n [SolanaContextTypes.SOLANA_TOKEN]: {\n payload: SolanaTokenData;\n certificate?: PkiCertificate;\n };\n [SolanaContextTypes.SOLANA_LIFI]: {\n payload: SolanaTransactionDescriptorList;\n };\n};\n\nexport type SolanaContextSuccess<\n T extends SolanaContextSuccessType = SolanaContextSuccessType,\n> = {\n type: T;\n} & SolanaContextSuccessPayloads[T];\n\nexport type SolanaContextError = {\n type: SolanaContextTypes.ERROR;\n error: Error;\n};\n\nexport type SolanaContext = SolanaContextSuccess | SolanaContextError;\n\nexport type SolanaTokenContextSuccess =\n SolanaContextSuccess<SolanaContextTypes.SOLANA_TOKEN>;\n\nexport type SolanaLifiContextSuccess =\n SolanaContextSuccess<SolanaContextTypes.SOLANA_LIFI>;\n\nexport type SolanaTokenContextResult =\n | SolanaTokenContextSuccess\n | SolanaContextError;\n\nexport type SolanaLifiContextResult =\n | SolanaLifiContextSuccess\n | SolanaContextError;\n\n// TODO LIFI\nexport type LoaderResult = SolanaTokenContextResult; //| SolanaLifiContextResult;\n"],
4
+ "sourcesContent": ["import type { PkiCertificate } from \"@/pki/model/PkiCertificate\";\n\nexport enum SolanaContextTypes {\n SOLANA_TOKEN = \"solanaToken\",\n SOLANA_LIFI = \"solanaLifi\",\n ERROR = \"error\",\n}\n\nexport type SolanaTransactionDescriptorRaw = {\n data: string;\n descriptorType: string;\n descriptorVersion: string;\n signatures: {\n prod?: string;\n test?: string;\n };\n};\n\nexport type SolanaTransactionDescriptor = {\n data: string;\n descriptorType: string;\n descriptorVersion: string;\n signature: string;\n};\n\nexport type SolanaLifiDescriptorEntry = {\n program_id: string;\n discriminator_hex?: string;\n descriptor: SolanaTransactionDescriptorRaw;\n};\n\nexport type GetTransactionDescriptorsResponse = {\n id: string;\n chain_id: number;\n instructions: Array<{\n program_id: string;\n discriminator?: number;\n discriminator_hex?: string;\n }>;\n descriptors: SolanaLifiDescriptorEntry[];\n};\n\nexport type SolanaTransactionDescriptorList = Record<\n string,\n SolanaTransactionDescriptor\n>;\n\nexport type SolanaLifiInstructionMeta = {\n program_id: string;\n discriminator_hex?: string;\n};\n\nexport type SolanaLifiPayload = {\n descriptors: SolanaTransactionDescriptorList;\n instructions: SolanaLifiInstructionMeta[];\n};\n\nexport type SolanaTokenData = {\n solanaTokenDescriptor: {\n data: string;\n signature: string;\n };\n};\n\nexport type SolanaContextSuccessType = Exclude<\n SolanaContextTypes,\n SolanaContextTypes.ERROR\n>;\n\n// map from Solana success type to payload\ntype SolanaContextSuccessPayloads = {\n [SolanaContextTypes.SOLANA_TOKEN]: {\n payload: SolanaTokenData;\n certificate?: PkiCertificate;\n };\n [SolanaContextTypes.SOLANA_LIFI]: {\n payload: SolanaLifiPayload;\n certificate?: PkiCertificate;\n };\n};\n\nexport type SolanaContextSuccess<\n T extends SolanaContextSuccessType = SolanaContextSuccessType,\n> = {\n type: T;\n} & SolanaContextSuccessPayloads[T];\n\nexport type SolanaContextError = {\n type: SolanaContextTypes.ERROR;\n error: Error;\n};\n\nexport type SolanaContext = SolanaContextSuccess | SolanaContextError;\n\nexport type SolanaTokenContextSuccess =\n SolanaContextSuccess<SolanaContextTypes.SOLANA_TOKEN>;\n\nexport type SolanaLifiContextSuccess =\n SolanaContextSuccess<SolanaContextTypes.SOLANA_LIFI>;\n\nexport type SolanaTokenContextResult =\n | SolanaTokenContextSuccess\n | SolanaContextError;\n\nexport type SolanaLifiContextResult =\n | SolanaLifiContextSuccess\n | SolanaContextError;\n\nexport type LoaderResult = SolanaTokenContextResult | SolanaLifiContextResult;\n"],
5
5
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAEO,IAAKE,OACVA,EAAA,aAAe,cACfA,EAAA,YAAc,aACdA,EAAA,MAAQ,QAHEA,OAAA",
6
6
  "names": ["SolanaContextTypes_exports", "__export", "SolanaContextTypes", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var o=Object.prototype.hasOwnProperty;var c=(t,a)=>{for(var i in a)s(t,i,{get:a[i],enumerable:!0})},p=(t,a,i,n)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of u(a))!o.call(t,r)&&r!==i&&s(t,r,{get:()=>a[r],enumerable:!(n=g(a,r))||n.enumerable});return t};var l=t=>p(s({},"__esModule",{value:!0}),t);var m={};c(m,{KeyUsageMapper:()=>d});module.exports=l(m);var e=require("../../pki/model/KeyUsage");class d{static keyUsageMap=new Map([[e.KeyUsage.GenuineCheck,1],[e.KeyUsage.ExchangePayload,2],[e.KeyUsage.NftMeta,3],[e.KeyUsage.TrustedName,4],[e.KeyUsage.BackupProvider,5],[e.KeyUsage.ProtectOrchestrator,6],[e.KeyUsage.PluginMeta,7],[e.KeyUsage.CoinMeta,8],[e.KeyUsage.SeedIdAuth,9],[e.KeyUsage.TxSimulationSigner,10],[e.KeyUsage.Calldata,11],[e.KeyUsage.Network,12],[e.KeyUsage.LESMultisig,14],[e.KeyUsage.GatedSigning,15]]);static mapKeyUsageForFirmware(a){return Object.values(e.KeyUsage).includes(a)?this.keyUsageMap.get(a)??-1:-1}}0&&(module.exports={KeyUsageMapper});
1
+ "use strict";var s=Object.defineProperty;var g=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var o=(t,a)=>{for(var i in a)s(t,i,{get:a[i],enumerable:!0})},c=(t,a,i,n)=>{if(a&&typeof a=="object"||typeof a=="function")for(let r of u(a))!p.call(t,r)&&r!==i&&s(t,r,{get:()=>a[r],enumerable:!(n=g(a,r))||n.enumerable});return t};var l=t=>c(s({},"__esModule",{value:!0}),t);var d={};o(d,{KeyUsageMapper:()=>m});module.exports=l(d);var e=require("../../pki/model/KeyUsage");class m{static keyUsageMap=new Map([[e.KeyUsage.GenuineCheck,1],[e.KeyUsage.ExchangePayload,2],[e.KeyUsage.NftMeta,3],[e.KeyUsage.TrustedName,4],[e.KeyUsage.BackupProvider,5],[e.KeyUsage.ProtectOrchestrator,6],[e.KeyUsage.PluginMeta,7],[e.KeyUsage.CoinMeta,8],[e.KeyUsage.SeedIdAuth,9],[e.KeyUsage.TxSimulationSigner,10],[e.KeyUsage.Calldata,11],[e.KeyUsage.Network,12],[e.KeyUsage.SwapTemplate,13],[e.KeyUsage.LESMultisig,14],[e.KeyUsage.GatedSigning,15]]);static mapKeyUsageForFirmware(a){return Object.values(e.KeyUsage).includes(a)?this.keyUsageMap.get(a)??-1:-1}}0&&(module.exports={KeyUsageMapper});
2
2
  //# sourceMappingURL=KeyUsageMapper.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/shared/utils/KeyUsageMapper.ts"],
4
- "sourcesContent": ["import { KeyUsage } from \"@/pki/model/KeyUsage\";\n\nexport class KeyUsageMapper {\n private static keyUsageMap = new Map<KeyUsage, number>([\n [KeyUsage.GenuineCheck, 1],\n [KeyUsage.ExchangePayload, 2],\n [KeyUsage.NftMeta, 3],\n [KeyUsage.TrustedName, 4],\n [KeyUsage.BackupProvider, 5],\n [KeyUsage.ProtectOrchestrator, 6],\n [KeyUsage.PluginMeta, 7],\n [KeyUsage.CoinMeta, 8],\n [KeyUsage.SeedIdAuth, 9],\n [KeyUsage.TxSimulationSigner, 10],\n [KeyUsage.Calldata, 11],\n [KeyUsage.Network, 12],\n [KeyUsage.LESMultisig, 14],\n [KeyUsage.GatedSigning, 15],\n ]);\n\n static mapKeyUsageForFirmware(keyUsage: string): number {\n if (Object.values(KeyUsage).includes(keyUsage as KeyUsage)) {\n return this.keyUsageMap.get(keyUsage as KeyUsage) ?? -1;\n }\n return -1;\n }\n}\n"],
5
- "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyB,gCAElB,MAAMF,CAAe,CAC1B,OAAe,YAAc,IAAI,IAAsB,CACrD,CAAC,WAAS,aAAc,CAAC,EACzB,CAAC,WAAS,gBAAiB,CAAC,EAC5B,CAAC,WAAS,QAAS,CAAC,EACpB,CAAC,WAAS,YAAa,CAAC,EACxB,CAAC,WAAS,eAAgB,CAAC,EAC3B,CAAC,WAAS,oBAAqB,CAAC,EAChC,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,SAAU,CAAC,EACrB,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,mBAAoB,EAAE,EAChC,CAAC,WAAS,SAAU,EAAE,EACtB,CAAC,WAAS,QAAS,EAAE,EACrB,CAAC,WAAS,YAAa,EAAE,EACzB,CAAC,WAAS,aAAc,EAAE,CAC5B,CAAC,EAED,OAAO,uBAAuBG,EAA0B,CACtD,OAAI,OAAO,OAAO,UAAQ,EAAE,SAASA,CAAoB,EAChD,KAAK,YAAY,IAAIA,CAAoB,GAAK,GAEhD,EACT,CACF",
4
+ "sourcesContent": ["import { KeyUsage } from \"@/pki/model/KeyUsage\";\n\nexport class KeyUsageMapper {\n private static keyUsageMap = new Map<KeyUsage, number>([\n [KeyUsage.GenuineCheck, 1],\n [KeyUsage.ExchangePayload, 2],\n [KeyUsage.NftMeta, 3],\n [KeyUsage.TrustedName, 4],\n [KeyUsage.BackupProvider, 5],\n [KeyUsage.ProtectOrchestrator, 6],\n [KeyUsage.PluginMeta, 7],\n [KeyUsage.CoinMeta, 8],\n [KeyUsage.SeedIdAuth, 9],\n [KeyUsage.TxSimulationSigner, 10],\n [KeyUsage.Calldata, 11],\n [KeyUsage.Network, 12],\n [KeyUsage.SwapTemplate, 13],\n [KeyUsage.LESMultisig, 14],\n [KeyUsage.GatedSigning, 15],\n ]);\n\n static mapKeyUsageForFirmware(keyUsage: string): number {\n if (Object.values(KeyUsage).includes(keyUsage as KeyUsage)) {\n return this.keyUsageMap.get(keyUsage as KeyUsage) ?? -1;\n }\n return -1;\n }\n}\n"],
5
+ "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,oBAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAyB,gCAElB,MAAMF,CAAe,CAC1B,OAAe,YAAc,IAAI,IAAsB,CACrD,CAAC,WAAS,aAAc,CAAC,EACzB,CAAC,WAAS,gBAAiB,CAAC,EAC5B,CAAC,WAAS,QAAS,CAAC,EACpB,CAAC,WAAS,YAAa,CAAC,EACxB,CAAC,WAAS,eAAgB,CAAC,EAC3B,CAAC,WAAS,oBAAqB,CAAC,EAChC,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,SAAU,CAAC,EACrB,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,mBAAoB,EAAE,EAChC,CAAC,WAAS,SAAU,EAAE,EACtB,CAAC,WAAS,QAAS,EAAE,EACrB,CAAC,WAAS,aAAc,EAAE,EAC1B,CAAC,WAAS,YAAa,EAAE,EACzB,CAAC,WAAS,aAAc,EAAE,CAC5B,CAAC,EAED,OAAO,uBAAuBG,EAA0B,CACtD,OAAI,OAAO,OAAO,UAAQ,EAAE,SAASA,CAAoB,EAChD,KAAK,YAAY,IAAIA,CAAoB,GAAK,GAEhD,EACT,CACF",
6
6
  "names": ["KeyUsageMapper_exports", "__export", "KeyUsageMapper", "__toCommonJS", "import_KeyUsage", "keyUsage"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("../../pki/model/KeyUsage"),r=require("../../shared/utils/KeyUsageMapper");describe("KeyUsageMapper",()=>{describe("mapKeyUsageForFirmware",()=>{it.each([[e.KeyUsage.GenuineCheck,1],[e.KeyUsage.ExchangePayload,2],[e.KeyUsage.NftMeta,3],[e.KeyUsage.TrustedName,4],[e.KeyUsage.BackupProvider,5],[e.KeyUsage.ProtectOrchestrator,6],[e.KeyUsage.PluginMeta,7],[e.KeyUsage.CoinMeta,8],[e.KeyUsage.SeedIdAuth,9],[e.KeyUsage.TxSimulationSigner,10],[e.KeyUsage.Calldata,11],[e.KeyUsage.Network,12],[e.KeyUsage.LESMultisig,14]])("should map key usage %s to %i",(a,t)=>{const o=r.KeyUsageMapper.mapKeyUsageForFirmware(a);expect(o).toEqual(t)}),it("should return -1 when key usage is not found",()=>{const a=r.KeyUsageMapper.mapKeyUsageForFirmware("unknown");expect(a).toEqual(-1)})})});
1
+ "use strict";var e=require("../../pki/model/KeyUsage"),r=require("../../shared/utils/KeyUsageMapper");describe("KeyUsageMapper",()=>{describe("mapKeyUsageForFirmware",()=>{it.each([[e.KeyUsage.GenuineCheck,1],[e.KeyUsage.ExchangePayload,2],[e.KeyUsage.NftMeta,3],[e.KeyUsage.TrustedName,4],[e.KeyUsage.BackupProvider,5],[e.KeyUsage.ProtectOrchestrator,6],[e.KeyUsage.PluginMeta,7],[e.KeyUsage.CoinMeta,8],[e.KeyUsage.SeedIdAuth,9],[e.KeyUsage.TxSimulationSigner,10],[e.KeyUsage.Calldata,11],[e.KeyUsage.Network,12],[e.KeyUsage.LESMultisig,14],[e.KeyUsage.SwapTemplate,13]])("should map key usage %s to %i",(a,t)=>{const o=r.KeyUsageMapper.mapKeyUsageForFirmware(a);expect(o).toEqual(t)}),it("should return -1 when key usage is not found",()=>{const a=r.KeyUsageMapper.mapKeyUsageForFirmware("unknown");expect(a).toEqual(-1)})})});
2
2
  //# sourceMappingURL=KeyUsageMapper.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/shared/utils/KeyUsageMapper.test.ts"],
4
- "sourcesContent": ["import { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { KeyUsageMapper } from \"@/shared/utils/KeyUsageMapper\";\n\ndescribe(\"KeyUsageMapper\", () => {\n describe(\"mapKeyUsageForFirmware\", () => {\n it.each([\n [KeyUsage.GenuineCheck, 1],\n [KeyUsage.ExchangePayload, 2],\n [KeyUsage.NftMeta, 3],\n [KeyUsage.TrustedName, 4],\n [KeyUsage.BackupProvider, 5],\n [KeyUsage.ProtectOrchestrator, 6],\n [KeyUsage.PluginMeta, 7],\n [KeyUsage.CoinMeta, 8],\n [KeyUsage.SeedIdAuth, 9],\n [KeyUsage.TxSimulationSigner, 10],\n [KeyUsage.Calldata, 11],\n [KeyUsage.Network, 12],\n [KeyUsage.LESMultisig, 14],\n ])(`should map key usage %s to %i`, (keyUsage, expected) => {\n // WHEN\n const result = KeyUsageMapper.mapKeyUsageForFirmware(keyUsage);\n\n // THEN\n expect(result).toEqual(expected);\n });\n\n it(\"should return -1 when key usage is not found\", () => {\n // WHEN\n const result = KeyUsageMapper.mapKeyUsageForFirmware(\n \"unknown\" as KeyUsage,\n );\n\n // THEN\n expect(result).toEqual(-1);\n });\n });\n});\n"],
5
- "mappings": "aAAA,IAAAA,EAAyB,gCACzBC,EAA+B,yCAE/B,SAAS,iBAAkB,IAAM,CAC/B,SAAS,yBAA0B,IAAM,CACvC,GAAG,KAAK,CACN,CAAC,WAAS,aAAc,CAAC,EACzB,CAAC,WAAS,gBAAiB,CAAC,EAC5B,CAAC,WAAS,QAAS,CAAC,EACpB,CAAC,WAAS,YAAa,CAAC,EACxB,CAAC,WAAS,eAAgB,CAAC,EAC3B,CAAC,WAAS,oBAAqB,CAAC,EAChC,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,SAAU,CAAC,EACrB,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,mBAAoB,EAAE,EAChC,CAAC,WAAS,SAAU,EAAE,EACtB,CAAC,WAAS,QAAS,EAAE,EACrB,CAAC,WAAS,YAAa,EAAE,CAC3B,CAAC,EAAE,gCAAiC,CAACC,EAAUC,IAAa,CAE1D,MAAMC,EAAS,iBAAe,uBAAuBF,CAAQ,EAG7D,OAAOE,CAAM,EAAE,QAAQD,CAAQ,CACjC,CAAC,EAED,GAAG,+CAAgD,IAAM,CAEvD,MAAMC,EAAS,iBAAe,uBAC5B,SACF,EAGA,OAAOA,CAAM,EAAE,QAAQ,EAAE,CAC3B,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { KeyUsageMapper } from \"@/shared/utils/KeyUsageMapper\";\n\ndescribe(\"KeyUsageMapper\", () => {\n describe(\"mapKeyUsageForFirmware\", () => {\n it.each([\n [KeyUsage.GenuineCheck, 1],\n [KeyUsage.ExchangePayload, 2],\n [KeyUsage.NftMeta, 3],\n [KeyUsage.TrustedName, 4],\n [KeyUsage.BackupProvider, 5],\n [KeyUsage.ProtectOrchestrator, 6],\n [KeyUsage.PluginMeta, 7],\n [KeyUsage.CoinMeta, 8],\n [KeyUsage.SeedIdAuth, 9],\n [KeyUsage.TxSimulationSigner, 10],\n [KeyUsage.Calldata, 11],\n [KeyUsage.Network, 12],\n [KeyUsage.LESMultisig, 14],\n [KeyUsage.SwapTemplate, 13],\n ])(`should map key usage %s to %i`, (keyUsage, expected) => {\n // WHEN\n const result = KeyUsageMapper.mapKeyUsageForFirmware(keyUsage);\n\n // THEN\n expect(result).toEqual(expected);\n });\n\n it(\"should return -1 when key usage is not found\", () => {\n // WHEN\n const result = KeyUsageMapper.mapKeyUsageForFirmware(\n \"unknown\" as KeyUsage,\n );\n\n // THEN\n expect(result).toEqual(-1);\n });\n });\n});\n"],
5
+ "mappings": "aAAA,IAAAA,EAAyB,gCACzBC,EAA+B,yCAE/B,SAAS,iBAAkB,IAAM,CAC/B,SAAS,yBAA0B,IAAM,CACvC,GAAG,KAAK,CACN,CAAC,WAAS,aAAc,CAAC,EACzB,CAAC,WAAS,gBAAiB,CAAC,EAC5B,CAAC,WAAS,QAAS,CAAC,EACpB,CAAC,WAAS,YAAa,CAAC,EACxB,CAAC,WAAS,eAAgB,CAAC,EAC3B,CAAC,WAAS,oBAAqB,CAAC,EAChC,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,SAAU,CAAC,EACrB,CAAC,WAAS,WAAY,CAAC,EACvB,CAAC,WAAS,mBAAoB,EAAE,EAChC,CAAC,WAAS,SAAU,EAAE,EACtB,CAAC,WAAS,QAAS,EAAE,EACrB,CAAC,WAAS,YAAa,EAAE,EACzB,CAAC,WAAS,aAAc,EAAE,CAC5B,CAAC,EAAE,gCAAiC,CAACC,EAAUC,IAAa,CAE1D,MAAMC,EAAS,iBAAe,uBAAuBF,CAAQ,EAG7D,OAAOE,CAAM,EAAE,QAAQD,CAAQ,CACjC,CAAC,EAED,GAAG,+CAAgD,IAAM,CAEvD,MAAMC,EAAS,iBAAe,uBAC5B,SACF,EAGA,OAAOA,CAAM,EAAE,QAAQ,EAAE,CAC3B,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["import_KeyUsage", "import_KeyUsageMapper", "keyUsage", "expected", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var h=Object.prototype.hasOwnProperty;var N=(o,e)=>{for(var r in e)m(o,r,{get:e[r],enumerable:!0})},E=(o,e,r,a)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of _(e))!h.call(o,t)&&t!==r&&m(o,t,{get:()=>e[t],enumerable:!(a=u(e,t))||a.enumerable});return o};var A=o=>E(m({},"__esModule",{value:!0}),o),L=(o,e,r,a)=>{for(var t=a>1?void 0:a?u(e,r):e,s=o.length-1,c;s>=0;s--)(c=o[s])&&(t=(a?c(e,r,t):c(t))||t);return a&&t&&m(e,r,t),t},d=(o,e)=>(r,a)=>e(r,a,o);var O={};N(O,{DefaultSolanaContextLoader:()=>l});module.exports=A(O);var n=require("inversify"),g=require("purify-ts"),S=require("../../config/di/configTypes"),y=require("../../pki/di/pkiTypes"),T=require("../../pki/model/KeyUsage"),p=require("../../shared/model/SolanaContextTypes"),C=require("../../solana/di/solanaContextTypes"),k=require("../../solanaToken/di/solanaTokenTypes");let l=class{constructor(e,r,a,t){this._dataSource=e;this._certificateLoader=r;this._solanaTokenLoader=a;this.logger=t("DefaultSolanaContextLoader")}logger;async load(e){this.logger.debug("[load] Loading solana context",{data:{input:e}});const{deviceModelId:r}=e,a=await this._certificateLoader.loadCertificate({keyId:"domain_metadata_key",keyUsage:T.KeyUsage.TrustedName,targetDevice:r});if(!a)return(0,g.Left)(new Error("[ContextModule] DefaultSolanaContextLoader: trustedNamePKICertificate is missing"));const s=[{loader:this._solanaTokenLoader,expectedType:p.SolanaContextTypes.SOLANA_TOKEN}].map(({loader:i,expectedType:f})=>{if(i.canHandle(e,f))return i.loadField(e)}).filter(i=>i!==void 0),v=(await Promise.allSettled(s)).map(i=>i.status==="fulfilled"?i.value:void 0).filter(i=>i!==void 0).sort((i,f)=>{const P=i.type===p.SolanaContextTypes.SOLANA_TOKEN?0:1,x=f.type===p.SolanaContextTypes.SOLANA_TOKEN?0:1;return P-x});return(await this._dataSource.getOwnerInfo(e)).map(({tlvDescriptor:i})=>({trustedNamePKICertificate:a,tlvDescriptor:i,loadersResults:v}))}};l=L([(0,n.injectable)(),d(0,(0,n.inject)(C.solanaContextTypes.SolanaDataSource)),d(1,(0,n.inject)(y.pkiTypes.PkiCertificateLoader)),d(2,(0,n.inject)(k.solanaTokenTypes.SolanaTokenContextLoader)),d(3,(0,n.inject)(S.configTypes.ContextModuleLoggerFactory))],l);0&&(module.exports={DefaultSolanaContextLoader});
1
+ "use strict";var f=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var h=Object.getOwnPropertyNames;var _=Object.prototype.hasOwnProperty;var N=(t,e)=>{for(var r in e)f(t,r,{get:e[r],enumerable:!0})},O=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of h(e))!_.call(t,o)&&o!==r&&f(t,o,{get:()=>e[o],enumerable:!(i=S(e,o))||i.enumerable});return t};var R=t=>O(f({},"__esModule",{value:!0}),t),g=(t,e,r,i)=>{for(var o=i>1?void 0:i?S(e,r):e,l=t.length-1,s;l>=0;l--)(s=t[l])&&(o=(i?s(e,r,o):s(o))||o);return i&&o&&f(e,r,o),o},d=(t,e)=>(r,i)=>e(r,i,t);var I={};N(I,{DefaultSolanaContextLoader:()=>p});module.exports=R(I);var n=require("inversify"),m=require("purify-ts"),T=require("../../config/di/configTypes"),y=require("../../pki/di/pkiTypes"),C=require("../../pki/model/KeyUsage"),c=require("../../shared/model/SolanaContextTypes"),k=require("../../solana/di/solanaContextTypes"),x=require("../../solanaLifi/di/solanaLifiTypes"),v=require("../../solanaToken/di/solanaTokenTypes");let p=class{constructor(e,r,i,o,l){this._dataSource=e;this._certificateLoader=r;this._solanaTokenLoader=i;this._solanaLifiLoader=l;this.logger=o("DefaultSolanaContextLoader")}logger;needsOwnerInfo(e){return!!(e.tokenAddress||e.createATA)}async load(e){this.logger.debug("[load] Loading solana context",{data:{input:e}});const{deviceModelId:r}=e,o=[{loader:this._solanaTokenLoader,expectedType:c.SolanaContextTypes.SOLANA_TOKEN},{loader:this._solanaLifiLoader,expectedType:c.SolanaContextTypes.SOLANA_LIFI}].map(({loader:a,expectedType:u})=>a.canHandle(e,u)?a.loadField(e):void 0).filter(a=>a!==void 0),s=(await Promise.allSettled(o)).map(a=>a.status==="fulfilled"?a.value:void 0).filter(a=>a!==void 0).sort((a,u)=>{const A=a.type===c.SolanaContextTypes.SOLANA_TOKEN?0:1,P=u.type===c.SolanaContextTypes.SOLANA_TOKEN?0:1;return A-P});if(!this.needsOwnerInfo(e))return this.logger.debug("[load] No tokenAddress or createATA, skipping owner info lookup"),(0,m.Right)({loadersResults:s});const L=await this._certificateLoader.loadCertificate({keyId:"domain_metadata_key",keyUsage:C.KeyUsage.TrustedName,targetDevice:r});return L?(await this._dataSource.getOwnerInfo(e)).map(({tlvDescriptor:a})=>({trustedNamePKICertificate:L,tlvDescriptor:a,loadersResults:s})):(0,m.Left)(new Error("[ContextModule] DefaultSolanaContextLoader: trustedNamePKICertificate is missing"))}};p=g([(0,n.injectable)(),d(0,(0,n.inject)(k.solanaContextTypes.SolanaDataSource)),d(1,(0,n.inject)(y.pkiTypes.PkiCertificateLoader)),d(2,(0,n.inject)(v.solanaTokenTypes.SolanaTokenContextLoader)),d(3,(0,n.inject)(T.configTypes.ContextModuleLoggerFactory)),d(4,(0,n.inject)(x.lifiTypes.SolanaLifiContextLoader))],p);0&&(module.exports={DefaultSolanaContextLoader});
2
2
  //# sourceMappingURL=DefaultSolanaContextLoader.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/domain/DefaultSolanaContextLoader.ts"],
4
- "sourcesContent": ["import { LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Left } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport {\n LoaderResult,\n SolanaContextTypes,\n} from \"@/shared/model/SolanaContextTypes\";\nimport { type SolanaDataSource } from \"@/solana/data/SolanaDataSource\";\nimport { solanaContextTypes } from \"@/solana/di/solanaContextTypes\";\n// import { lifiTypes } from \"@/solanaLifi/di/solanaLifiTypes\";\n// import { SolanaLifiContextLoader } from \"@/solanaLifi/domain/SolanaLifiContextLoader\";\nimport { solanaTokenTypes } from \"@/solanaToken/di/solanaTokenTypes\";\nimport { SolanaTokenContextLoader } from \"@/solanaToken/domain/SolanaTokenContextLoader\";\n\nimport { type SolanaContextLoader } from \"./SolanaContextLoader\";\nimport {\n SolanaTransactionContext,\n SolanaTransactionContextResult,\n} from \"./solanaContextTypes\";\n\n@injectable()\nexport class DefaultSolanaContextLoader implements SolanaContextLoader {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(solanaContextTypes.SolanaDataSource)\n private readonly _dataSource: SolanaDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n @inject(solanaTokenTypes.SolanaTokenContextLoader)\n private readonly _solanaTokenLoader: SolanaTokenContextLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n // @inject(lifiTypes.SolanaLifiContextLoader)\n // private readonly _solanaLifiLoader: SolanaLifiContextLoader,\n ) {\n this.logger = loggerFactory(\"DefaultSolanaContextLoader\");\n }\n\n async load(\n solanaContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n this.logger.debug(\"[load] Loading solana context\", {\n data: { input: solanaContext },\n });\n const { deviceModelId } = solanaContext;\n\n const trustedNamePKICertificate =\n await this._certificateLoader.loadCertificate({\n keyId: \"domain_metadata_key\",\n keyUsage: KeyUsage.TrustedName,\n targetDevice: deviceModelId,\n });\n\n if (!trustedNamePKICertificate) {\n return Left(\n new Error(\n \"[ContextModule] DefaultSolanaContextLoader: trustedNamePKICertificate is missing\",\n ),\n );\n }\n\n const loaderEntries = [\n {\n loader: this._solanaTokenLoader,\n expectedType: SolanaContextTypes.SOLANA_TOKEN,\n },\n // TODO LIFI\n // Lifi loader currently disabled as WIP\n // {\n // loader: this._solanaLifiLoader,\n // expectedType: SolanaContextTypes.SOLANA_LIFI,\n // },\n ];\n\n const loaderPromises: Promise<LoaderResult>[] = loaderEntries\n .map(({ loader, expectedType }) => {\n if (loader.canHandle(solanaContext, expectedType)) {\n return loader.loadField(solanaContext);\n }\n return undefined;\n })\n .filter((p): p is Promise<LoaderResult> => p !== undefined);\n\n const settledLoaders = await Promise.allSettled(loaderPromises);\n\n const loadersResults = settledLoaders\n .map((r) => (r.status === \"fulfilled\" ? r.value : undefined))\n .filter((v): v is LoaderResult => v !== undefined)\n // always sort with SOLANA_TOKEN first\n .sort((a, b) => {\n const A = a.type === SolanaContextTypes.SOLANA_TOKEN ? 0 : 1;\n const B = b.type === SolanaContextTypes.SOLANA_TOKEN ? 0 : 1;\n return A - B;\n });\n\n const tlvDescriptorEither =\n await this._dataSource.getOwnerInfo(solanaContext);\n\n return tlvDescriptorEither.map(({ tlvDescriptor }) => ({\n trustedNamePKICertificate,\n tlvDescriptor,\n loadersResults,\n }));\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAmC,qBACnCC,EAAqB,qBAErBC,EAA4B,mCAC5BC,EAAyB,6BAEzBC,EAAyB,gCACzBC,EAGO,6CAEPC,EAAmC,0CAGnCC,EAAiC,6CAU1B,IAAMC,EAAN,KAAgE,CAGrE,YAEmBC,EAEAC,EAEAC,EAEjBC,EAGA,CATiB,iBAAAH,EAEA,wBAAAC,EAEA,wBAAAC,EAMjB,KAAK,OAASC,EAAc,4BAA4B,CAC1D,CAfQ,OAiBR,MAAM,KACJC,EACyC,CACzC,KAAK,OAAO,MAAM,gCAAiC,CACjD,KAAM,CAAE,MAAOA,CAAc,CAC/B,CAAC,EACD,KAAM,CAAE,cAAAC,CAAc,EAAID,EAEpBE,EACJ,MAAM,KAAK,mBAAmB,gBAAgB,CAC5C,MAAO,sBACP,SAAU,WAAS,YACnB,aAAcD,CAChB,CAAC,EAEH,GAAI,CAACC,EACH,SAAO,QACL,IAAI,MACF,kFACF,CACF,EAgBF,MAAMC,EAbgB,CACpB,CACE,OAAQ,KAAK,mBACb,aAAc,qBAAmB,YACnC,CAOF,EAGG,IAAI,CAAC,CAAE,OAAAC,EAAQ,aAAAC,CAAa,IAAM,CACjC,GAAID,EAAO,UAAUJ,EAAeK,CAAY,EAC9C,OAAOD,EAAO,UAAUJ,CAAa,CAGzC,CAAC,EACA,OAAQM,GAAkCA,IAAM,MAAS,EAItDC,GAFiB,MAAM,QAAQ,WAAWJ,CAAc,GAG3D,IAAKK,GAAOA,EAAE,SAAW,YAAcA,EAAE,MAAQ,MAAU,EAC3D,OAAQC,GAAyBA,IAAM,MAAS,EAEhD,KAAK,CAACC,EAAGC,IAAM,CACd,MAAMC,EAAIF,EAAE,OAAS,qBAAmB,aAAe,EAAI,EACrDG,EAAIF,EAAE,OAAS,qBAAmB,aAAe,EAAI,EAC3D,OAAOC,EAAIC,CACb,CAAC,EAKH,OAFE,MAAM,KAAK,YAAY,aAAab,CAAa,GAExB,IAAI,CAAC,CAAE,cAAAc,CAAc,KAAO,CACrD,0BAAAZ,EACA,cAAAY,EACA,eAAAP,CACF,EAAE,CACJ,CACF,EApFaZ,EAANoB,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,qBAAmB,gBAAgB,GAE1CA,EAAA,eAAO,WAAS,oBAAoB,GAEpCA,EAAA,eAAO,mBAAiB,wBAAwB,GAEhDA,EAAA,eAAO,cAAY,0BAA0B,IAVrCrB",
6
- "names": ["DefaultSolanaContextLoader_exports", "__export", "DefaultSolanaContextLoader", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_pkiTypes", "import_KeyUsage", "import_SolanaContextTypes", "import_solanaContextTypes", "import_solanaTokenTypes", "DefaultSolanaContextLoader", "_dataSource", "_certificateLoader", "_solanaTokenLoader", "loggerFactory", "solanaContext", "deviceModelId", "trustedNamePKICertificate", "loaderPromises", "loader", "expectedType", "p", "loadersResults", "r", "v", "a", "b", "A", "B", "tlvDescriptor", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport {\n LoaderResult,\n SolanaContextTypes,\n} from \"@/shared/model/SolanaContextTypes\";\nimport { type SolanaDataSource } from \"@/solana/data/SolanaDataSource\";\nimport { solanaContextTypes } from \"@/solana/di/solanaContextTypes\";\nimport { lifiTypes } from \"@/solanaLifi/di/solanaLifiTypes\";\nimport { SolanaLifiContextLoader } from \"@/solanaLifi/domain/SolanaLifiContextLoader\";\nimport { solanaTokenTypes } from \"@/solanaToken/di/solanaTokenTypes\";\nimport { SolanaTokenContextLoader } from \"@/solanaToken/domain/SolanaTokenContextLoader\";\n\nimport { type SolanaContextLoader } from \"./SolanaContextLoader\";\nimport {\n SolanaTransactionContext,\n SolanaTransactionContextResult,\n SolanaTransactionContextResultSuccess,\n} from \"./solanaContextTypes\";\n\n@injectable()\nexport class DefaultSolanaContextLoader implements SolanaContextLoader {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(solanaContextTypes.SolanaDataSource)\n private readonly _dataSource: SolanaDataSource,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n @inject(solanaTokenTypes.SolanaTokenContextLoader)\n private readonly _solanaTokenLoader: SolanaTokenContextLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(lifiTypes.SolanaLifiContextLoader)\n private readonly _solanaLifiLoader: SolanaLifiContextLoader,\n ) {\n this.logger = loggerFactory(\"DefaultSolanaContextLoader\");\n }\n\n private needsOwnerInfo(context: SolanaTransactionContext): boolean {\n return !!(context.tokenAddress || context.createATA);\n }\n\n async load(\n solanaContext: SolanaTransactionContext,\n ): Promise<SolanaTransactionContextResult> {\n this.logger.debug(\"[load] Loading solana context\", {\n data: { input: solanaContext },\n });\n const { deviceModelId } = solanaContext;\n\n const loaderEntries = [\n {\n loader: this._solanaTokenLoader,\n expectedType: SolanaContextTypes.SOLANA_TOKEN,\n },\n {\n loader: this._solanaLifiLoader,\n expectedType: SolanaContextTypes.SOLANA_LIFI,\n },\n ];\n\n const loaderPromises = loaderEntries\n .map(({ loader, expectedType }): Promise<LoaderResult> | undefined =>\n loader.canHandle(solanaContext, expectedType)\n ? loader.loadField(solanaContext)\n : undefined,\n )\n .filter((p): p is Promise<LoaderResult> => p !== undefined);\n\n const settledLoaders = await Promise.allSettled(loaderPromises);\n\n const loadersResults = settledLoaders\n .map((r) => (r.status === \"fulfilled\" ? r.value : undefined))\n .filter((v): v is LoaderResult => v !== undefined)\n // always sort with SOLANA_TOKEN first\n .sort((a, b) => {\n const A = a.type === SolanaContextTypes.SOLANA_TOKEN ? 0 : 1;\n const B = b.type === SolanaContextTypes.SOLANA_TOKEN ? 0 : 1;\n return A - B;\n });\n\n if (!this.needsOwnerInfo(solanaContext)) {\n this.logger.debug(\n \"[load] No tokenAddress or createATA, skipping owner info lookup\",\n );\n return Right({ loadersResults });\n }\n\n const trustedNamePKICertificate: PkiCertificate | undefined =\n await this._certificateLoader.loadCertificate({\n keyId: \"domain_metadata_key\",\n keyUsage: KeyUsage.TrustedName,\n targetDevice: deviceModelId,\n });\n\n if (!trustedNamePKICertificate) {\n return Left(\n new Error(\n \"[ContextModule] DefaultSolanaContextLoader: trustedNamePKICertificate is missing\",\n ),\n );\n }\n\n const tlvDescriptorEither =\n await this._dataSource.getOwnerInfo(solanaContext);\n\n return tlvDescriptorEither.map<SolanaTransactionContextResultSuccess>(\n ({ tlvDescriptor }) => ({\n trustedNamePKICertificate,\n tlvDescriptor,\n loadersResults,\n }),\n );\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,gCAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAmC,qBACnCC,EAA4B,qBAE5BC,EAA4B,mCAC5BC,EAAyB,6BAEzBC,EAAyB,gCAEzBC,EAGO,6CAEPC,EAAmC,0CACnCC,EAA0B,2CAE1BC,EAAiC,6CAW1B,IAAMC,EAAN,KAAgE,CAGrE,YAEmBC,EAEAC,EAEAC,EAEjBC,EAEiBC,EACjB,CATiB,iBAAAJ,EAEA,wBAAAC,EAEA,wBAAAC,EAIA,uBAAAE,EAEjB,KAAK,OAASD,EAAc,4BAA4B,CAC1D,CAfQ,OAiBA,eAAeE,EAA4C,CACjE,MAAO,CAAC,EAAEA,EAAQ,cAAgBA,EAAQ,UAC5C,CAEA,MAAM,KACJC,EACyC,CACzC,KAAK,OAAO,MAAM,gCAAiC,CACjD,KAAM,CAAE,MAAOA,CAAc,CAC/B,CAAC,EACD,KAAM,CAAE,cAAAC,CAAc,EAAID,EAapBE,EAXgB,CACpB,CACE,OAAQ,KAAK,mBACb,aAAc,qBAAmB,YACnC,EACA,CACE,OAAQ,KAAK,kBACb,aAAc,qBAAmB,WACnC,CACF,EAGG,IAAI,CAAC,CAAE,OAAAC,EAAQ,aAAAC,CAAa,IAC3BD,EAAO,UAAUH,EAAeI,CAAY,EACxCD,EAAO,UAAUH,CAAa,EAC9B,MACN,EACC,OAAQK,GAAkCA,IAAM,MAAS,EAItDC,GAFiB,MAAM,QAAQ,WAAWJ,CAAc,GAG3D,IAAKK,GAAOA,EAAE,SAAW,YAAcA,EAAE,MAAQ,MAAU,EAC3D,OAAQC,GAAyBA,IAAM,MAAS,EAEhD,KAAK,CAAC,EAAGC,IAAM,CACd,MAAM,EAAI,EAAE,OAAS,qBAAmB,aAAe,EAAI,EACrDC,EAAID,EAAE,OAAS,qBAAmB,aAAe,EAAI,EAC3D,OAAO,EAAIC,CACb,CAAC,EAEH,GAAI,CAAC,KAAK,eAAeV,CAAa,EACpC,YAAK,OAAO,MACV,iEACF,KACO,SAAM,CAAE,eAAAM,CAAe,CAAC,EAGjC,MAAMK,EACJ,MAAM,KAAK,mBAAmB,gBAAgB,CAC5C,MAAO,sBACP,SAAU,WAAS,YACnB,aAAcV,CAChB,CAAC,EAEH,OAAKU,GASH,MAAM,KAAK,YAAY,aAAaX,CAAa,GAExB,IACzB,CAAC,CAAE,cAAAY,CAAc,KAAO,CACtB,0BAAAD,EACA,cAAAC,EACA,eAAAN,CACF,EACF,KAhBS,QACL,IAAI,MACF,kFACF,CACF,CAaJ,CACF,EA9Fab,EAANoB,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,qBAAmB,gBAAgB,GAE1CA,EAAA,eAAO,WAAS,oBAAoB,GAEpCA,EAAA,eAAO,mBAAiB,wBAAwB,GAEhDA,EAAA,eAAO,cAAY,0BAA0B,GAE7CA,EAAA,eAAO,YAAU,uBAAuB,IAZhCrB",
6
+ "names": ["DefaultSolanaContextLoader_exports", "__export", "DefaultSolanaContextLoader", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_pkiTypes", "import_KeyUsage", "import_SolanaContextTypes", "import_solanaContextTypes", "import_solanaLifiTypes", "import_solanaTokenTypes", "DefaultSolanaContextLoader", "_dataSource", "_certificateLoader", "_solanaTokenLoader", "loggerFactory", "_solanaLifiLoader", "context", "solanaContext", "deviceModelId", "loaderPromises", "loader", "expectedType", "p", "loadersResults", "r", "v", "b", "B", "trustedNamePKICertificate", "tlvDescriptor", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solana/domain/solanaContextTypes.ts"],
4
- "sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport {\n type SolanaLifiContextResult,\n type SolanaTokenContextResult,\n} from \"@/shared/model/SolanaContextTypes\";\n\nexport type SolanaTransactionContext = {\n deviceModelId: DeviceModelId;\n challenge?: string;\n tokenAddress?: string;\n tokenInternalId?: string;\n templateId?: string;\n createATA?: {\n address: string;\n mintAddress: string;\n };\n};\n\nexport type SolanaSPLOwnerInfo = {\n tokenAccount: string;\n owner: string;\n contract: string;\n signedDescriptor: string;\n};\n\nexport type SolanaContextLoaderResults = Array<\n SolanaTokenContextResult | SolanaLifiContextResult\n>;\n\nexport type SolanaTransactionContextResultSuccess = {\n trustedNamePKICertificate: PkiCertificate;\n tlvDescriptor: Uint8Array;\n loadersResults: SolanaContextLoaderResults;\n};\n\nexport type SolanaTransactionContextResult = Either<\n Error,\n SolanaTransactionContextResultSuccess\n>;\n"],
4
+ "sourcesContent": ["import { type DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { type Either } from \"purify-ts\";\n\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport {\n type SolanaLifiContextResult,\n type SolanaTokenContextResult,\n} from \"@/shared/model/SolanaContextTypes\";\n\nexport type SolanaTransactionContext = {\n deviceModelId: DeviceModelId;\n challenge?: string;\n tokenAddress?: string;\n tokenInternalId?: string;\n templateId?: string;\n createATA?: {\n address: string;\n mintAddress: string;\n };\n};\n\nexport type SolanaSPLOwnerInfo = {\n tokenAccount: string;\n owner: string;\n contract: string;\n signedDescriptor: string;\n};\n\nexport type SolanaContextLoaderResults = Array<\n SolanaTokenContextResult | SolanaLifiContextResult\n>;\n\nexport type SolanaTransactionContextResultSuccess = {\n trustedNamePKICertificate?: PkiCertificate;\n tlvDescriptor?: Uint8Array;\n loadersResults: SolanaContextLoaderResults;\n};\n\nexport type SolanaTransactionContextResult = Either<\n Error,\n SolanaTransactionContextResultSuccess\n>;\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["solanaContextTypes_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var T=Object.create;var s=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var x=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var _=(t,r)=>{for(var o in r)s(t,o,{get:r[o],enumerable:!0})},d=(t,r,o,i)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of G(r))!R.call(t,e)&&e!==o&&s(t,e,{get:()=>r[e],enumerable:!(i=f(r,e))||i.enumerable});return t};var l=(t,r,o)=>(o=t!=null?T(x(t)):{},d(r||!t||!t.__esModule?s(o,"default",{value:t,enumerable:!0}):o,t)),y=t=>d(s({},"__esModule",{value:!0}),t),u=(t,r,o,i)=>{for(var e=i>1?void 0:i?f(r,o):r,p=t.length-1,m;p>=0;p--)(m=t[p])&&(e=(i?m(r,o,e):m(e))||e);return i&&e&&s(r,o,e),e},E=(t,r)=>(o,i)=>r(o,i,t);var b={};_(b,{HttpSolanaLifiDataSource:()=>n});module.exports=y(b);var h=l(require("axios")),c=require("inversify"),a=require("purify-ts"),g=require("../../config/di/configTypes"),C=require("../../shared/constant/HttpHeaders"),D=l(require("../../../package.json"));let n=class{constructor(r){this.config=r}async getTransactionDescriptorsPayload({templateId:r}){try{const{data:o}=await h.default.request({method:"GET",url:`${this.config.cal.url}/swap_templates`,params:{template_id:r,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"},headers:{[C.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${D.default.version}`}});return!o||o.length===0||!o[0]?(0,a.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${r}`)):(0,a.Right)(o[0])}catch{return(0,a.Left)(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors"))}}};n=u([(0,c.injectable)(),E(0,(0,c.inject)(g.configTypes.Config))],n);0&&(module.exports={HttpSolanaLifiDataSource});
1
+ "use strict";var y=Object.create;var i=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var S=(t,r)=>{for(var e in r)i(t,e,{get:r[e],enumerable:!0})},u=(t,r,e,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of P(r))!L.call(t,o)&&o!==e&&i(t,o,{get:()=>r[o],enumerable:!(s=h(r,o))||s.enumerable});return t};var f=(t,r,e)=>(e=t!=null?y(C(t)):{},u(r||!t||!t.__esModule?i(e,"default",{value:t,enumerable:!0}):e,t)),x=t=>u(i({},"__esModule",{value:!0}),t),m=(t,r,e,s)=>{for(var o=s>1?void 0:s?h(r,e):r,g=t.length-1,p;g>=0;g--)(p=t[g])&&(o=(s?p(r,e,o):p(o))||o);return s&&o&&i(r,e,o),o},l=(t,r)=>(e,s)=>r(e,s,t);var G={};S(G,{HttpSolanaLifiDataSource:()=>a});module.exports=x(G);var D=f(require("axios")),n=require("inversify"),c=require("purify-ts"),d=require("../../config/di/configTypes"),E=require("../../shared/constant/HttpHeaders"),T=f(require("../../../package.json"));let a=class{constructor(r,e){this.config=r;this.logger=e("HttpSolanaLifiDataSource")}logger;async getTransactionDescriptorsPayload({templateId:r}){const e=`${this.config.cal.url}/swap_templates`,s={id:r,output:"id,chain_id,instructions,descriptors"};this.logger.debug("[getTransactionDescriptorsPayload] Fetching transaction descriptors",{data:{templateId:r,url:e,params:s}});try{const{data:o}=await D.default.request({method:"GET",url:e,params:s,headers:{[E.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${T.default.version}`}});return this.logger.debug("[getTransactionDescriptorsPayload] Received response",{data:{templateId:r,responseLength:o?.length??0,hasData:!!o&&o.length>0}}),!o||o.length===0||!o[0]?(this.logger.warn("[getTransactionDescriptorsPayload] No transaction descriptors found",{data:{templateId:r,responseLength:o?.length??0}}),(0,c.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${r}`))):(this.logger.info("[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors",{data:{templateId:r,descriptorsCount:o[0].descriptors?.length??0}}),(0,c.Right)(o[0]))}catch(o){return this.logger.error("[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors",{data:{templateId:r,url:e,error:o instanceof Error?o.message:String(o)}}),(0,c.Left)(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors"))}}};a=m([(0,n.injectable)(),l(0,(0,n.inject)(d.configTypes.Config)),l(1,(0,n.inject)(d.configTypes.ContextModuleLoggerFactory))],a);0&&(module.exports={HttpSolanaLifiDataSource});
2
2
  //# sourceMappingURL=HttpSolanaLifiDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaLifi/data/HttpSolanaLifiDataSource.ts"],
4
- "sourcesContent": ["import axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\n@injectable()\nexport class HttpSolanaLifiDataSource implements SolanaLifiDataSource {\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n ) {}\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n try {\n const { data } = await axios.request<GetTransactionDescriptorsResponse[]>(\n {\n method: \"GET\",\n url: `${this.config.cal.url}/swap_templates`,\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n // TODO LIFI\n // REVERT WHEN CAL SUPPORTS IT\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n },\n );\n\n if (!data || data.length === 0 || !data[0]) {\n return Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n );\n }\n\n return Right(data[0]);\n } catch (_error) {\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
- "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GAAA,IAAAI,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6C,yCAC7CC,EAAoB,iCASb,IAAMC,EAAN,KAA+D,CACpE,YAC+CC,EAC7C,CAD6C,YAAAA,CAC5C,CACH,MAAa,iCAAiC,CAC5C,WAAAC,CACF,EAEE,CACA,GAAI,CACF,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAM,EAAAC,QAAM,QAC3B,CACE,OAAQ,MACR,IAAK,GAAG,KAAK,OAAO,IAAI,GAAG,kBAC3B,OAAQ,CACN,YAAaF,EACb,OAAQ,uCAGR,IAAK,qDACP,EACA,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAG,QAAQ,OAAO,EACnE,CACF,CACF,EAEA,MAAI,CAACF,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,KAChC,QACL,IAAI,MACF,+EAA+ED,CAAU,EAC3F,CACF,KAGK,SAAMC,EAAK,CAAC,CAAC,CACtB,MAAiB,CACf,SAAO,QACL,IAAI,MACF,mFACF,CACF,CACF,CACF,CACF,EA5CaH,EAANM,EAAA,IADN,cAAW,EAGPC,EAAA,eAAO,cAAY,MAAM,IAFjBP",
6
- "names": ["HttpSolanaLifiDataSource_exports", "__export", "HttpSolanaLifiDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpSolanaLifiDataSource", "config", "templateId", "data", "axios", "PACKAGE", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport axios from \"axios\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\n@injectable()\nexport class HttpSolanaLifiDataSource implements SolanaLifiDataSource {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config) private readonly config: ContextModuleConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this.logger = loggerFactory(\"HttpSolanaLifiDataSource\");\n }\n\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n const url = `${this.config.cal.url}/swap_templates`;\n const params = {\n id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n };\n\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Fetching transaction descriptors\",\n {\n data: { templateId, url, params },\n },\n );\n\n try {\n const { data } = await axios.request<GetTransactionDescriptorsResponse[]>(\n {\n method: \"GET\",\n url,\n params,\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n },\n );\n\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Received response\",\n {\n data: {\n templateId,\n responseLength: data?.length ?? 0,\n hasData: !!data && data.length > 0,\n },\n },\n );\n\n if (!data || data.length === 0 || !data[0]) {\n this.logger.warn(\n \"[getTransactionDescriptorsPayload] No transaction descriptors found\",\n {\n data: { templateId, responseLength: data?.length ?? 0 },\n },\n );\n return Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n );\n }\n\n this.logger.info(\n \"[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors\",\n {\n data: {\n templateId,\n descriptorsCount: data[0].descriptors?.length ?? 0,\n },\n },\n );\n\n return Right(data[0]);\n } catch (error) {\n this.logger.error(\n \"[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors\",\n {\n data: {\n templateId,\n url,\n error: error instanceof Error ? error.message : String(error),\n },\n },\n );\n return Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "qtBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,8BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAkB,oBAClBC,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6C,yCAC7CC,EAAoB,iCASb,IAAMC,EAAN,KAA+D,CAGpE,YAC+CC,EAE7CC,EACA,CAH6C,YAAAD,EAI7C,KAAK,OAASC,EAAc,0BAA0B,CACxD,CARQ,OAUR,MAAa,iCAAiC,CAC5C,WAAAC,CACF,EAEE,CACA,MAAMC,EAAM,GAAG,KAAK,OAAO,IAAI,GAAG,kBAC5BC,EAAS,CACb,GAAIF,EACJ,OAAQ,sCACV,EAEA,KAAK,OAAO,MACV,sEACA,CACE,KAAM,CAAE,WAAAA,EAAY,IAAAC,EAAK,OAAAC,CAAO,CAClC,CACF,EAEA,GAAI,CACF,KAAM,CAAE,KAAAC,CAAK,EAAI,MAAM,EAAAC,QAAM,QAC3B,CACE,OAAQ,MACR,IAAAH,EACA,OAAAC,EACA,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAG,QAAQ,OAAO,EACnE,CACF,CACF,EAaA,OAXA,KAAK,OAAO,MACV,uDACA,CACE,KAAM,CACJ,WAAAL,EACA,eAAgBG,GAAM,QAAU,EAChC,QAAS,CAAC,CAACA,GAAQA,EAAK,OAAS,CACnC,CACF,CACF,EAEI,CAACA,GAAQA,EAAK,SAAW,GAAK,CAACA,EAAK,CAAC,GACvC,KAAK,OAAO,KACV,sEACA,CACE,KAAM,CAAE,WAAAH,EAAY,eAAgBG,GAAM,QAAU,CAAE,CACxD,CACF,KACO,QACL,IAAI,MACF,+EAA+EH,CAAU,EAC3F,CACF,IAGF,KAAK,OAAO,KACV,kFACA,CACE,KAAM,CACJ,WAAAA,EACA,iBAAkBG,EAAK,CAAC,EAAE,aAAa,QAAU,CACnD,CACF,CACF,KAEO,SAAMA,EAAK,CAAC,CAAC,EACtB,OAASG,EAAO,CACd,YAAK,OAAO,MACV,6EACA,CACE,KAAM,CACJ,WAAAN,EACA,IAAAC,EACA,MAAOK,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAC9D,CACF,CACF,KACO,QACL,IAAI,MACF,mFACF,CACF,CACF,CACF,CACF,EA/FaT,EAANU,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,cAAY,MAAM,GACzBA,EAAA,eAAO,cAAY,0BAA0B,IALrCX",
6
+ "names": ["HttpSolanaLifiDataSource_exports", "__export", "HttpSolanaLifiDataSource", "__toCommonJS", "import_axios", "import_inversify", "import_purify_ts", "import_configTypes", "import_HttpHeaders", "import_package", "HttpSolanaLifiDataSource", "config", "loggerFactory", "templateId", "url", "params", "data", "axios", "PACKAGE", "error", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var m=Object.create;var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var E=(a,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!w.call(a,s)&&s!==r&&c(a,s,{get:()=>t[s],enumerable:!(o=f(t,s))||o.enumerable});return a};var l=(a,t,r)=>(r=a!=null?m(h(a)):{},E(t||!a||!a.__esModule?c(r,"default",{value:a,enumerable:!0}):r,a));var n=l(require("axios")),i=require("purify-ts"),e=require("vitest"),d=require("../../shared/constant/HttpHeaders"),p=l(require("../../../package.json")),u=require("./HttpSolanaLifiDataSource");e.vi.mock("axios");(0,e.describe)("HttpSolanaLifiDataSource",()=>{let a;const t="tpl-123",r={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};(0,e.beforeAll)(()=>{a=new u.HttpSolanaLifiDataSource(r)}),(0,e.beforeEach)(()=>{e.vi.clearAllMocks()}),(0,e.it)("should call axios with the ledger client version header and correct params",async()=>{const o=e.vi.fn(()=>Promise.resolve({data:[]}));e.vi.spyOn(n.default,"request").mockImplementation(o),await a.getTransactionDescriptorsPayload({templateId:t}),(0,e.expect)(o).toHaveBeenCalledTimes(1),(0,e.expect)(o).toHaveBeenCalledWith(e.expect.objectContaining({method:"GET",url:`${r.cal.url}/swap_templates`,params:{template_id:t,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"},headers:{[d.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${p.default.version}`}}))}),(0,e.it)("should return Right(data[0]) when axios responds with a non-empty array",async()=>{const o={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};e.vi.spyOn(n.default,"request").mockResolvedValue({data:[o]});const s=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(s).toEqual((0,i.Right)(o))}),(0,e.it)("should return an error when data is undefined",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:void 0});const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when data array is empty",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:[]});const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when first element is falsy",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:[void 0]});const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when axios throws",async()=>{e.vi.spyOn(n.default,"request").mockRejectedValue(new Error("network"));const o=await a.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(o).toEqual((0,i.Left)(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors")))})});
1
+ "use strict";var m=Object.create;var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var y=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var g=(o,t,r,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of y(t))!w.call(o,s)&&s!==r&&c(o,s,{get:()=>t[s],enumerable:!(a=f(t,s))||a.enumerable});return o};var l=(o,t,r)=>(r=o!=null?m(h(o)):{},g(t||!o||!o.__esModule?c(r,"default",{value:o,enumerable:!0}):r,o));var n=l(require("axios")),i=require("purify-ts"),e=require("vitest"),d=require("../../shared/constant/HttpHeaders"),u=l(require("../../../package.json")),p=require("./HttpSolanaLifiDataSource");e.vi.mock("axios");const E=()=>({debug:e.vi.fn(),info:e.vi.fn(),warn:e.vi.fn(),error:e.vi.fn(),subscribers:[]});(0,e.describe)("HttpSolanaLifiDataSource",()=>{let o;const t="tpl-123",r={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};(0,e.beforeAll)(()=>{o=new p.HttpSolanaLifiDataSource(r,E)}),(0,e.beforeEach)(()=>{e.vi.clearAllMocks()}),(0,e.it)("should call axios with the ledger client version header and correct params",async()=>{const a=e.vi.fn(()=>Promise.resolve({data:[]}));e.vi.spyOn(n.default,"request").mockImplementation(a),await o.getTransactionDescriptorsPayload({templateId:t}),(0,e.expect)(a).toHaveBeenCalledTimes(1),(0,e.expect)(a).toHaveBeenCalledWith(e.expect.objectContaining({method:"GET",url:`${r.cal.url}/swap_templates`,params:{id:t,output:"id,chain_id,instructions,descriptors"},headers:{[d.LEDGER_CLIENT_VERSION_HEADER]:`context-module/${u.default.version}`}}))}),(0,e.it)("should return Right(data[0]) when axios responds with a non-empty array",async()=>{const a={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};e.vi.spyOn(n.default,"request").mockResolvedValue({data:[a]});const s=await o.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(s).toEqual((0,i.Right)(a))}),(0,e.it)("should return an error when data is undefined",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:void 0});const a=await o.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(a).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when data array is empty",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:[]});const a=await o.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(a).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when first element is falsy",async()=>{e.vi.spyOn(n.default,"request").mockResolvedValue({data:[void 0]});const a=await o.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(a).toEqual((0,i.Left)(new Error(`[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${t}`)))}),(0,e.it)("should return an error when axios throws",async()=>{e.vi.spyOn(n.default,"request").mockRejectedValue(new Error("network"));const a=await o.getTransactionDescriptorsPayload({templateId:t});(0,e.expect)(a).toEqual((0,i.Left)(new Error("[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors")))})});
2
2
  //# sourceMappingURL=HttpSolanaLifiDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaLifi/data/HttpSolanaLifiDataSource.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { HttpSolanaLifiDataSource } from \"./HttpSolanaLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\nvi.mock(\"axios\");\n\ndescribe(\"HttpSolanaLifiDataSource\", () => {\n let datasource: SolanaLifiDataSource;\n const templateId = \"tpl-123\";\n const config: ContextModuleConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleConfig;\n\n beforeAll(() => {\n datasource = new HttpSolanaLifiDataSource(config);\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header and correct params\", async () => {\n // given\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(requestSpy).toHaveBeenCalledTimes(1);\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"GET\",\n url: `${config.cal.url}/swap_templates`,\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n // TODO LIFI\n // REVERT WHEN CAL SUPPORTS IT\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n }),\n );\n });\n\n it(\"should return Right(data[0]) when axios responds with a non-empty array\", async () => {\n // given\n const response0: GetTransactionDescriptorsResponse = {\n descriptors: {\n swap: { programId: \"SwapProgram\", accounts: [], data: \"abcd\" } as any,\n },\n } as any;\n\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [response0] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n it(\"should return an error when data is undefined\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: undefined });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when data array is empty\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when first element is falsy\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [undefined] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when axios throws\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "wdAEA,IAAAA,EAAkB,oBAClBC,EAA4B,qBAC5BC,EAAgE,kBAGhEC,EAA6C,yCAC7CC,EAAoB,iCAEpBC,EAAyC,sCAMzC,KAAG,KAAK,OAAO,KAEf,YAAS,2BAA4B,IAAM,CACzC,IAAIC,EACJ,MAAMC,EAAa,UACbC,EAA8B,CAClC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,KAEA,aAAU,IAAM,CACdF,EAAa,IAAI,2BAAyBE,CAAM,CAClD,CAAC,KAED,cAAW,IAAM,CACf,KAAG,cAAc,CACnB,CAAC,KAED,MAAG,6EAA8E,SAAY,CAE3F,MAAMC,EAAa,KAAG,GAAG,IAAM,QAAQ,QAAQ,CAAE,KAAM,CAAC,CAAE,CAAC,CAAC,EAC5D,KAAG,MAAM,EAAAC,QAAO,SAAS,EAAE,mBAAmBD,CAAU,EAGxD,MAAMH,EAAW,iCAAiC,CAAE,WAAAC,CAAW,CAAC,KAGhE,UAAOE,CAAU,EAAE,sBAAsB,CAAC,KAC1C,UAAOA,CAAU,EAAE,qBACjB,SAAO,iBAAiB,CACtB,OAAQ,MACR,IAAK,GAAGD,EAAO,IAAI,GAAG,kBACtB,OAAQ,CACN,YAAaD,EACb,OAAQ,uCAGR,IAAK,qDACP,EACA,QAAS,CACP,CAAC,8BAA4B,EAAG,kBAAkB,EAAAI,QAAQ,OAAO,EACnE,CACF,CAAC,CACH,CACF,CAAC,KAED,MAAG,0EAA2E,SAAY,CAExF,MAAMC,EAA+C,CACnD,YAAa,CACX,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,MAAO,CAC/D,CACF,EAEA,KAAG,MAAM,EAAAF,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAACE,CAAS,CAAE,CAAC,EAGlE,MAAMC,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WAAQ,SAAMD,CAAS,CAAC,CACzC,CAAC,KAED,MAAG,gDAAiD,SAAY,CAE9D,KAAG,MAAM,EAAAF,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,MAAU,CAAC,EAGhE,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,+EAA+EN,CAAU,EAC3F,CACF,CACF,CACF,CAAC,KAED,MAAG,kDAAmD,SAAY,CAEhE,KAAG,MAAM,EAAAG,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAAC,CAAE,CAAC,EAGzD,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,+EAA+EN,CAAU,EAC3F,CACF,CACF,CACF,CAAC,KAED,MAAG,qDAAsD,SAAY,CAEnE,KAAG,MAAM,EAAAG,QAAO,SAAS,EAAE,kBAAkB,CAAE,KAAM,CAAC,MAAS,CAAE,CAAC,EAGlE,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,+EAA+EN,CAAU,EAC3F,CACF,CACF,CACF,CAAC,KAED,MAAG,2CAA4C,SAAY,CAEzD,KAAG,MAAM,EAAAG,QAAO,SAAS,EAAE,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGjE,MAAMG,EAAS,MAAMP,EAAW,iCAAiC,CAC/D,WAAAC,CACF,CAAC,KAGD,UAAOM,CAAM,EAAE,WACb,QACE,IAAI,MACF,mFACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
- "names": ["import_axios", "import_purify_ts", "import_vitest", "import_HttpHeaders", "import_package", "import_HttpSolanaLifiDataSource", "datasource", "templateId", "config", "requestSpy", "axios", "PACKAGE", "response0", "result"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport axios from \"axios\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeAll, beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { LEDGER_CLIENT_VERSION_HEADER } from \"@/shared/constant/HttpHeaders\";\nimport PACKAGE from \"@root/package.json\";\n\nimport { HttpSolanaLifiDataSource } from \"./HttpSolanaLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"./SolanaLifiDataSource\";\n\nvi.mock(\"axios\");\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"HttpSolanaLifiDataSource\", () => {\n let datasource: SolanaLifiDataSource;\n const templateId = \"tpl-123\";\n const config: ContextModuleConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleConfig;\n\n beforeAll(() => {\n datasource = new HttpSolanaLifiDataSource(config, mockLoggerFactory);\n });\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call axios with the ledger client version header and correct params\", async () => {\n // given\n const requestSpy = vi.fn(() => Promise.resolve({ data: [] }));\n vi.spyOn(axios, \"request\").mockImplementation(requestSpy);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(requestSpy).toHaveBeenCalledTimes(1);\n expect(requestSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n method: \"GET\",\n url: `${config.cal.url}/swap_templates`,\n params: {\n id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n },\n headers: {\n [LEDGER_CLIENT_VERSION_HEADER]: `context-module/${PACKAGE.version}`,\n },\n }),\n );\n });\n\n it(\"should return Right(data[0]) when axios responds with a non-empty array\", async () => {\n // given\n const response0: GetTransactionDescriptorsResponse = {\n descriptors: {\n swap: { programId: \"SwapProgram\", accounts: [], data: \"abcd\" } as any,\n },\n } as any;\n\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [response0] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(Right(response0));\n });\n\n it(\"should return an error when data is undefined\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: undefined });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when data array is empty\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when first element is falsy\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockResolvedValue({ data: [undefined] });\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n `[ContextModule] HttpSolanaLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when axios throws\", async () => {\n // given\n vi.spyOn(axios, \"request\").mockRejectedValue(new Error(\"network\"));\n\n // when\n const result = await datasource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n // then\n expect(result).toEqual(\n Left(\n new Error(\n \"[ContextModule] HttpSolanaLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["import_axios", "import_purify_ts", "import_vitest", "import_HttpHeaders", "import_package", "import_HttpSolanaLifiDataSource", "mockLoggerFactory", "datasource", "templateId", "config", "requestSpy", "axios", "PACKAGE", "response0", "result"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var n=Object.getOwnPropertyNames;var p=Object.prototype.hasOwnProperty;var c=(t,r,o,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let e of n(r))!p.call(t,e)&&e!==o&&a(t,e,{get:()=>r[e],enumerable:!(s=i(r,e))||s.enumerable});return t};var m=t=>c(a({},"__esModule",{value:!0}),t);var D={};module.exports=m(D);
1
+ "use strict";var o=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var n=Object.prototype.hasOwnProperty;var c=(e,r,a,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let t of p(r))!n.call(e,t)&&t!==a&&o(e,t,{get:()=>r[t],enumerable:!(s=i(r,t))||s.enumerable});return e};var m=e=>c(o({},"__esModule",{value:!0}),e);var D={};module.exports=m(D);
2
2
  //# sourceMappingURL=SolanaLifiDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaLifi/data/SolanaLifiDataSource.ts"],
4
- "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport { type SolanaTransactionDescriptorList } from \"@/shared/model/SolanaContextTypes\";\n\nexport type GetTransactionDescriptorsParams = {\n templateId: string;\n};\n\nexport type GetTransactionDescriptorsResponse = {\n [key: string]: unknown;\n descriptors: SolanaTransactionDescriptorList;\n};\n\nexport interface SolanaLifiDataSource {\n getTransactionDescriptorsPayload(\n params: GetTransactionDescriptorsParams,\n ): Promise<Either<Error, GetTransactionDescriptorsResponse>>;\n}\n"],
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\n\nimport type { GetTransactionDescriptorsResponse } from \"@/shared/model/SolanaContextTypes\";\n\nexport type GetTransactionDescriptorsParams = {\n templateId: string;\n};\n\nexport type { GetTransactionDescriptorsResponse };\n\nexport interface SolanaLifiDataSource {\n getTransactionDescriptorsPayload(\n params: GetTransactionDescriptorsParams,\n ): Promise<Either<Error, GetTransactionDescriptorsResponse>>;\n}\n"],
5
5
  "mappings": "+WAAA,IAAAA,EAAA,kBAAAC,EAAAD",
6
6
  "names": ["SolanaLifiDataSource_exports", "__toCommonJS"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var l=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var L=Object.prototype.hasOwnProperty;var y=(o,t)=>{for(var e in t)l(o,e,{get:t[e],enumerable:!0})},x=(o,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of m(t))!L.call(o,a)&&a!==e&&l(o,a,{get:()=>t[a],enumerable:!(i=u(t,a))||i.enumerable});return o};var T=o=>x(l({},"__esModule",{value:!0}),o),f=(o,t,e,i)=>{for(var a=i>1?void 0:i?u(t,e):t,p=o.length-1,c;p>=0;p--)(c=o[p])&&(a=(i?c(t,e,a):c(a))||a);return i&&a&&l(t,e,a),a},d=(o,t)=>(e,i)=>t(e,i,o);var F={};y(F,{SolanaLifiContextLoader:()=>n});module.exports=T(F);var r=require("inversify"),g=require("../../config/di/configTypes"),s=require("../../shared/model/SolanaContextTypes"),S=require("../../solanaLifi/di/solanaLifiTypes");let n=class{constructor(t,e){this.dataSource=t;this.logger=e("SolanaLifiContextLoader")}logger;canHandle(t,e){if(e!==s.SolanaContextTypes.SOLANA_LIFI)return!1;if(typeof t=="object"&&t!==null&&"templateId"in t){const i=t.templateId;return typeof i=="string"&&i.length>0}return!1}async loadField(t){this.logger.debug("[loadField] Loading solana Lifi context",{data:{input:t}});const{templateId:e}=t;return(await this.dataSource.getTransactionDescriptorsPayload({templateId:e})).caseOf({Left:a=>(this.logger.error("[loadField] Error loading solana Lifi context",{data:{error:a}}),{type:s.SolanaContextTypes.ERROR,error:a}),Right:a=>(this.logger.debug("[loadField] Successfully loaded solana Lifi context",{data:{payload:this.pluckTransactionData(a)}}),{type:s.SolanaContextTypes.SOLANA_LIFI,payload:this.pluckTransactionData(a)})})}pluckTransactionData(t){return{...t.descriptors}}};n=f([(0,r.injectable)(),d(0,(0,r.inject)(S.lifiTypes.SolanaLifiDataSource)),d(1,(0,r.inject)(g.configTypes.ContextModuleLoggerFactory))],n);0&&(module.exports={SolanaLifiContextLoader});
1
+ "use strict";var p=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var C=Object.prototype.hasOwnProperty;var T=(r,t)=>{for(var a in t)p(r,a,{get:t[a],enumerable:!0})},I=(r,t,a,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of x(t))!C.call(r,e)&&e!==a&&p(r,e,{get:()=>t[e],enumerable:!(i=m(t,e))||i.enumerable});return r};var b=r=>I(p({},"__esModule",{value:!0}),r),f=(r,t,a,i)=>{for(var e=i>1?void 0:i?m(t,a):t,o=r.length-1,n;o>=0;o--)(n=r[o])&&(e=(i?n(t,a,e):n(e))||e);return i&&e&&p(t,a,e),e},d=(r,t)=>(a,i)=>t(a,i,r);var k={};T(k,{SolanaLifiContextLoader:()=>l});module.exports=b(k);var s=require("inversify"),u=require("../../config/di/configTypes"),y=require("../../pki/di/pkiTypes"),S=require("../../pki/model/KeyId"),L=require("../../pki/model/KeyUsage"),c=require("../../shared/model/SolanaContextTypes"),h=require("../../solanaLifi/di/solanaLifiTypes");let l=class{constructor(t,a,i,e){this.dataSource=t;this.config=a;this._certificateLoader=i;this.logger=e("SolanaLifiContextLoader")}logger;canHandle(t,a){if(a!==c.SolanaContextTypes.SOLANA_LIFI)return this.logger.debug("[canHandle] Skipping, expected type does not match",{data:{expectedType:a,required:c.SolanaContextTypes.SOLANA_LIFI}}),!1;if(typeof t=="object"&&t!==null&&"templateId"in t){const i=t.templateId,e=typeof i=="string"&&i.length>0;return this.logger.debug("[canHandle] Field validation result",{data:{templateId:i,isValid:e}}),e}return this.logger.debug("[canHandle] Field does not contain a valid templateId",{data:{field:t}}),!1}async loadField(t){this.logger.debug("[loadField] Loading solana Lifi context",{data:{input:t}});const{templateId:a,deviceModelId:i}=t;if(!a)return{type:c.SolanaContextTypes.ERROR,error:new Error("[ContextModule] SolanaLifiContextLoader: templateId is missing")};const e=await this.dataSource.getTransactionDescriptorsPayload({templateId:a}),o=await this._certificateLoader.loadCertificate({keyId:S.KeyId.SwapTemplateKey,keyUsage:L.KeyUsage.SwapTemplate,targetDevice:i});return e.caseOf({Left:n=>(this.logger.error("[loadField] Error loading solana Lifi context",{data:{error:n}}),{type:c.SolanaContextTypes.ERROR,error:n}),Right:n=>{const g=this.buildPayload(n);return this.logger.debug("[loadField] Successfully loaded solana Lifi context",{data:{descriptors:g.descriptors,instructionsCount:g.instructions.length,certificate:o}}),{type:c.SolanaContextTypes.SOLANA_LIFI,payload:g,certificate:o}}})}buildPayload(t){return{descriptors:this.pluckTransactionData(t),instructions:this.extractInstructionsMeta(t)}}pluckTransactionData(t){const a=this.config.cal.mode||"prod",i={},e=t.descriptors??[];this.logger.debug("[pluckTransactionData] Processing descriptors",{data:{descriptorsCount:e.length,signatureKind:a}});for(const o of e){const n=`${o.program_id}:${o.discriminator_hex??""}`;i[n]={data:o.descriptor.data,descriptorType:o.descriptor.descriptorType,descriptorVersion:o.descriptor.descriptorVersion,signature:o.descriptor.signatures[a]??""},this.logger.debug("[pluckTransactionData] Mapped program descriptor",{data:{programId:o.program_id,discriminatorHex:o.discriminator_hex??"",key:n}})}return this.logger.debug("[pluckTransactionData] Completed processing",{data:{outputKeys:Object.keys(i)}}),i}extractInstructionsMeta(t){const a=t.instructions??[];this.logger.debug("[extractInstructionsMeta] Extracting instructions metadata",{data:{instructionsCount:a.length}});const i=a.map(e=>({program_id:e.program_id,...e.discriminator_hex!==void 0&&{discriminator_hex:e.discriminator_hex}}));return this.logger.debug("[extractInstructionsMeta] Completed extracting instructions metadata",{data:{meta:i.map(e=>({programId:e.program_id,discriminatorHex:e.discriminator_hex}))}}),i}};l=f([(0,s.injectable)(),d(0,(0,s.inject)(h.lifiTypes.SolanaLifiDataSource)),d(1,(0,s.inject)(u.configTypes.Config)),d(2,(0,s.inject)(y.pkiTypes.PkiCertificateLoader)),d(3,(0,s.inject)(u.configTypes.ContextModuleLoggerFactory))],l);0&&(module.exports={SolanaLifiContextLoader});
2
2
  //# sourceMappingURL=SolanaLifiContextLoader.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaLifi/domain/SolanaLifiContextLoader.ts"],
4
- "sourcesContent": ["import { LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { ContextFieldLoader } from \"@/shared/domain/ContextFieldLoader\";\nimport {\n SolanaContextTypes,\n SolanaLifiContextResult,\n SolanaTransactionDescriptorList,\n} from \"@/shared/model/SolanaContextTypes\";\nimport { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport {\n GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"@/solanaLifi/data/SolanaLifiDataSource\";\nimport { lifiTypes } from \"@/solanaLifi/di/solanaLifiTypes\";\n\ntype SolanaLifiFieldInput = SolanaTransactionContext & {\n templateId: string;\n};\n\n@injectable()\nexport class SolanaLifiContextLoader\n implements\n ContextFieldLoader<\n SolanaLifiFieldInput,\n SolanaContextTypes,\n SolanaLifiContextResult\n >\n{\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(lifiTypes.SolanaLifiDataSource)\n private readonly dataSource: SolanaLifiDataSource,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this.logger = loggerFactory(\"SolanaLifiContextLoader\");\n }\n\n public canHandle(\n field: unknown,\n expectedType: SolanaContextTypes,\n ): field is SolanaLifiFieldInput {\n if (expectedType !== SolanaContextTypes.SOLANA_LIFI) return false;\n\n if (typeof field === \"object\" && field !== null && \"templateId\" in field) {\n const templateId = (field as { templateId: unknown }).templateId;\n return typeof templateId === \"string\" && templateId.length > 0;\n }\n\n return false;\n }\n\n public async loadField(\n solanaTokenContextInput: SolanaLifiFieldInput,\n ): Promise<SolanaLifiContextResult> {\n this.logger.debug(\"[loadField] Loading solana Lifi context\", {\n data: { input: solanaTokenContextInput },\n });\n const { templateId } = solanaTokenContextInput;\n\n const payload = await this.dataSource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n return payload.caseOf({\n Left: (error): SolanaLifiContextResult => {\n this.logger.error(\"[loadField] Error loading solana Lifi context\", {\n data: { error },\n });\n\n return {\n type: SolanaContextTypes.ERROR,\n error,\n };\n },\n Right: (value): SolanaLifiContextResult => {\n this.logger.debug(\n \"[loadField] Successfully loaded solana Lifi context\",\n {\n data: { payload: this.pluckTransactionData(value) },\n },\n );\n\n return {\n type: SolanaContextTypes.SOLANA_LIFI,\n payload: this.pluckTransactionData(value),\n };\n },\n });\n }\n\n private pluckTransactionData(\n tokenData: GetTransactionDescriptorsResponse,\n ): SolanaTransactionDescriptorList {\n return {\n ...tokenData.descriptors,\n };\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,6BAAAE,IAAA,eAAAC,EAAAH,GACA,IAAAI,EAAmC,qBAEnCC,EAA4B,mCAE5BC,EAIO,6CAMPC,EAA0B,2CAOnB,IAAMC,EAAN,KAOP,CAGE,YAEmBC,EAEjBC,EACA,CAHiB,gBAAAD,EAIjB,KAAK,OAASC,EAAc,yBAAyB,CACvD,CATQ,OAWD,UACLC,EACAC,EAC+B,CAC/B,GAAIA,IAAiB,qBAAmB,YAAa,MAAO,GAE5D,GAAI,OAAOD,GAAU,UAAYA,IAAU,MAAQ,eAAgBA,EAAO,CACxE,MAAME,EAAcF,EAAkC,WACtD,OAAO,OAAOE,GAAe,UAAYA,EAAW,OAAS,CAC/D,CAEA,MAAO,EACT,CAEA,MAAa,UACXC,EACkC,CAClC,KAAK,OAAO,MAAM,0CAA2C,CAC3D,KAAM,CAAE,MAAOA,CAAwB,CACzC,CAAC,EACD,KAAM,CAAE,WAAAD,CAAW,EAAIC,EAMvB,OAJgB,MAAM,KAAK,WAAW,iCAAiC,CACrE,WAAAD,CACF,CAAC,GAEc,OAAO,CACpB,KAAOE,IACL,KAAK,OAAO,MAAM,gDAAiD,CACjE,KAAM,CAAE,MAAAA,CAAM,CAChB,CAAC,EAEM,CACL,KAAM,qBAAmB,MACzB,MAAAA,CACF,GAEF,MAAQC,IACN,KAAK,OAAO,MACV,sDACA,CACE,KAAM,CAAE,QAAS,KAAK,qBAAqBA,CAAK,CAAE,CACpD,CACF,EAEO,CACL,KAAM,qBAAmB,YACzB,QAAS,KAAK,qBAAqBA,CAAK,CAC1C,EAEJ,CAAC,CACH,CAEQ,qBACNC,EACiC,CACjC,MAAO,CACL,GAAGA,EAAU,WACf,CACF,CACF,EA/EaT,EAANU,EAAA,IADN,cAAW,EAYPC,EAAA,eAAO,YAAU,oBAAoB,GAErCA,EAAA,eAAO,cAAY,0BAA0B,IAbrCX",
6
- "names": ["SolanaLifiContextLoader_exports", "__export", "SolanaLifiContextLoader", "__toCommonJS", "import_inversify", "import_configTypes", "import_SolanaContextTypes", "import_solanaLifiTypes", "SolanaLifiContextLoader", "dataSource", "loggerFactory", "field", "expectedType", "templateId", "solanaTokenContextInput", "error", "value", "tokenData", "__decorateClass", "__decorateParam"]
4
+ "sourcesContent": ["import { LoggerPublisherService } from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport { pkiTypes } from \"@/pki/di/pkiTypes\";\nimport { type PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyId } from \"@/pki/model/KeyId\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { type PkiCertificate } from \"@/pki/model/PkiCertificate\";\nimport { ContextFieldLoader } from \"@/shared/domain/ContextFieldLoader\";\nimport {\n SolanaContextTypes,\n SolanaLifiContextResult,\n type SolanaLifiInstructionMeta,\n type SolanaLifiPayload,\n SolanaTransactionDescriptorList,\n} from \"@/shared/model/SolanaContextTypes\";\nimport { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport {\n GetTransactionDescriptorsResponse,\n type SolanaLifiDataSource,\n} from \"@/solanaLifi/data/SolanaLifiDataSource\";\nimport { lifiTypes } from \"@/solanaLifi/di/solanaLifiTypes\";\n\n@injectable()\nexport class SolanaLifiContextLoader\n implements\n ContextFieldLoader<\n SolanaTransactionContext,\n SolanaContextTypes,\n SolanaLifiContextResult\n >\n{\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(lifiTypes.SolanaLifiDataSource)\n private readonly dataSource: SolanaLifiDataSource,\n @inject(configTypes.Config)\n private readonly config: ContextModuleConfig,\n @inject(pkiTypes.PkiCertificateLoader)\n private readonly _certificateLoader: PkiCertificateLoader,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this.logger = loggerFactory(\"SolanaLifiContextLoader\");\n }\n\n public canHandle(\n field: unknown,\n expectedType: SolanaContextTypes,\n ): field is SolanaTransactionContext {\n if (expectedType !== SolanaContextTypes.SOLANA_LIFI) {\n this.logger.debug(\"[canHandle] Skipping, expected type does not match\", {\n data: { expectedType, required: SolanaContextTypes.SOLANA_LIFI },\n });\n return false;\n }\n\n if (typeof field === \"object\" && field !== null && \"templateId\" in field) {\n const templateId = (field as { templateId: unknown }).templateId;\n const isValid = typeof templateId === \"string\" && templateId.length > 0;\n this.logger.debug(\"[canHandle] Field validation result\", {\n data: { templateId, isValid },\n });\n return isValid;\n }\n\n this.logger.debug(\"[canHandle] Field does not contain a valid templateId\", {\n data: { field },\n });\n return false;\n }\n\n public async loadField(\n solanaLifiContextInput: SolanaTransactionContext,\n ): Promise<SolanaLifiContextResult> {\n this.logger.debug(\"[loadField] Loading solana Lifi context\", {\n data: { input: solanaLifiContextInput },\n });\n const { templateId, deviceModelId } = solanaLifiContextInput;\n\n if (!templateId) {\n return {\n type: SolanaContextTypes.ERROR,\n error: new Error(\n \"[ContextModule] SolanaLifiContextLoader: templateId is missing\",\n ),\n };\n }\n\n const payload = await this.dataSource.getTransactionDescriptorsPayload({\n templateId,\n });\n\n const certificate: PkiCertificate | undefined =\n await this._certificateLoader.loadCertificate({\n keyId: KeyId.SwapTemplateKey,\n keyUsage: KeyUsage.SwapTemplate,\n targetDevice: deviceModelId,\n });\n\n return payload.caseOf({\n Left: (error): SolanaLifiContextResult => {\n this.logger.error(\"[loadField] Error loading solana Lifi context\", {\n data: { error },\n });\n\n return {\n type: SolanaContextTypes.ERROR,\n error,\n };\n },\n Right: (value): SolanaLifiContextResult => {\n const lifiPayload = this.buildPayload(value);\n this.logger.debug(\n \"[loadField] Successfully loaded solana Lifi context\",\n {\n data: {\n descriptors: lifiPayload.descriptors,\n instructionsCount: lifiPayload.instructions.length,\n certificate,\n },\n },\n );\n\n return {\n type: SolanaContextTypes.SOLANA_LIFI,\n payload: lifiPayload,\n certificate,\n };\n },\n });\n }\n\n private buildPayload(\n response: GetTransactionDescriptorsResponse,\n ): SolanaLifiPayload {\n return {\n descriptors: this.pluckTransactionData(response),\n instructions: this.extractInstructionsMeta(response),\n };\n }\n\n private pluckTransactionData(\n tokenData: GetTransactionDescriptorsResponse,\n ): SolanaTransactionDescriptorList {\n const signatureKind = this.config.cal.mode || \"prod\";\n const output: SolanaTransactionDescriptorList = {};\n const descriptors = tokenData.descriptors ?? [];\n\n this.logger.debug(\"[pluckTransactionData] Processing descriptors\", {\n data: { descriptorsCount: descriptors.length, signatureKind },\n });\n\n for (const item of descriptors) {\n const key = `${item.program_id}:${item.discriminator_hex ?? \"\"}`;\n output[key] = {\n data: item.descriptor.data,\n descriptorType: item.descriptor.descriptorType,\n descriptorVersion: item.descriptor.descriptorVersion,\n signature: item.descriptor.signatures[signatureKind] ?? \"\",\n };\n this.logger.debug(\"[pluckTransactionData] Mapped program descriptor\", {\n data: {\n programId: item.program_id,\n discriminatorHex: item.discriminator_hex ?? \"\",\n key,\n },\n });\n }\n\n this.logger.debug(\"[pluckTransactionData] Completed processing\", {\n data: { outputKeys: Object.keys(output) },\n });\n\n return output;\n }\n\n private extractInstructionsMeta(\n response: GetTransactionDescriptorsResponse,\n ): SolanaLifiInstructionMeta[] {\n const instructions = response.instructions ?? [];\n\n this.logger.debug(\n \"[extractInstructionsMeta] Extracting instructions metadata\",\n {\n data: { instructionsCount: instructions.length },\n },\n );\n\n const meta = instructions.map((ix) => ({\n program_id: ix.program_id,\n ...(ix.discriminator_hex !== undefined && {\n discriminator_hex: ix.discriminator_hex,\n }),\n }));\n\n this.logger.debug(\n \"[extractInstructionsMeta] Completed extracting instructions metadata\",\n {\n data: {\n meta: meta.map((m) => ({\n programId: m.program_id,\n discriminatorHex: m.discriminator_hex,\n })),\n },\n },\n );\n\n return meta;\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["SolanaLifiContextLoader_exports", "__export", "SolanaLifiContextLoader", "__toCommonJS", "import_inversify", "import_configTypes", "import_pkiTypes", "import_KeyId", "import_KeyUsage", "import_SolanaContextTypes", "import_solanaLifiTypes", "SolanaLifiContextLoader", "dataSource", "config", "_certificateLoader", "loggerFactory", "field", "expectedType", "templateId", "isValid", "solanaLifiContextInput", "deviceModelId", "payload", "certificate", "error", "value", "lifiPayload", "response", "tokenData", "signatureKind", "output", "descriptors", "item", "key", "instructions", "meta", "ix", "m", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=require("purify-ts"),a=require("vitest"),t=require("../../shared/model/SolanaContextTypes"),d=require("./SolanaLifiContextLoader");const u=()=>({debug:a.vi.fn(),info:a.vi.fn(),warn:a.vi.fn(),error:a.vi.fn(),subscribers:[]});(0,a.describe)("SolanaLifiContextLoader",()=>{let o;const l={swap:{programId:"SomeProgram",accounts:[],data:"abc123"},bridge:{programId:"AnotherProgram",accounts:[],data:"def456"}},i={descriptors:l};(0,a.beforeEach)(()=>{a.vi.restoreAllMocks(),o={getTransactionDescriptorsPayload:a.vi.fn()}});const r=()=>new d.SolanaLifiContextLoader(o,u);(0,a.describe)("canHandle",()=>{(0,a.it)("returns true when templateId is provided",()=>{const e=r();(0,a.expect)(e.canHandle({templateId:"tpl-123",deviceModelId:"nanoS"},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!0)}),(0,a.it)("returns false when templateId is missing or falsy",()=>{const e=r();(0,a.expect)(e.canHandle({templateId:""},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!1),(0,a.expect)(e.canHandle({templateId:void 0},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!1),(0,a.expect)(e.canHandle({},t.SolanaContextTypes.SOLANA_LIFI)).toBe(!1)})}),(0,a.describe)("loadField",()=>{(0,a.it)("returns an error when datasource returns Left(error)",async()=>{const e=r(),n=new Error("boom");a.vi.spyOn(o,"getTransactionDescriptorsPayload").mockResolvedValue((0,c.Left)(n));const s={templateId:"tpl-err",deviceModelId:"nanoS"},p=await e.loadField(s);(0,a.expect)(o.getTransactionDescriptorsPayload).toHaveBeenCalledWith({templateId:"tpl-err"}),(0,a.expect)(p).toEqual({type:t.SolanaContextTypes.ERROR,error:n})}),(0,a.it)("returns SOLANA_LIFI with plucked descriptors when datasource returns Right(value)",async()=>{const e=r();a.vi.spyOn(o,"getTransactionDescriptorsPayload").mockResolvedValue((0,c.Right)(i));const n={templateId:"tpl-ok",deviceModelId:"nanoS"},s=await e.loadField(n);(0,a.expect)(o.getTransactionDescriptorsPayload).toHaveBeenCalledWith({templateId:"tpl-ok"}),(0,a.expect)(s).toEqual({type:t.SolanaContextTypes.SOLANA_LIFI,payload:l})})}),(0,a.describe)("pluckTransactionData (private)",()=>{(0,a.it)("simply returns the descriptors object from the response",()=>{const e=r(),s=e.pluckTransactionData.bind(e)(i);(0,a.expect)(s).toEqual(l)})})});
1
+ "use strict";var p=require("purify-ts"),e=require("vitest"),n=require("../../shared/model/SolanaContextTypes"),b=require("./SolanaLifiContextLoader");const k=()=>({debug:e.vi.fn(),info:e.vi.fn(),warn:e.vi.fn(),error:e.vi.fn(),subscribers:[]}),g={keyUsageNumber:13,payload:new Uint8Array([1,2])},f={cal:{url:"https://crypto-assets-service.api.ledger.com",mode:"test",branch:"main"}};(0,e.describe)("SolanaLifiContextLoader",()=>{let c,m;const i=(r,a="deadbeef")=>({data:r,descriptorType:"swap_template",descriptorVersion:"v1",signatures:{test:a,prod:`prod_${a}`}}),l=(r,a="deadbeef")=>({data:r,descriptorType:"swap_template",descriptorVersion:"v1",signature:a}),_=[{program_id:"SomeProgram",discriminator_hex:"1",descriptor:i("abc123")},{program_id:"AnotherProgram",descriptor:i("def456")}],u={"SomeProgram:1":l("abc123"),"AnotherProgram:":l("def456")},d={id:"tpl-1",chain_id:101,instructions:[{program_id:"SomeProgram",discriminator:1,discriminator_hex:"1"},{program_id:"AnotherProgram"}],descriptors:_};(0,e.beforeEach)(()=>{e.vi.restoreAllMocks(),c={getTransactionDescriptorsPayload:e.vi.fn()},m={loadCertificate:e.vi.fn().mockResolvedValue(g)}});const s=()=>new b.SolanaLifiContextLoader(c,f,m,k);(0,e.describe)("canHandle",()=>{(0,e.it)("returns true when templateId is provided",()=>{const r=s();(0,e.expect)(r.canHandle({templateId:"tpl-123",deviceModelId:"nanoS"},n.SolanaContextTypes.SOLANA_LIFI)).toBe(!0)}),(0,e.it)("returns false when templateId is missing or falsy",()=>{const r=s();(0,e.expect)(r.canHandle({templateId:""},n.SolanaContextTypes.SOLANA_LIFI)).toBe(!1),(0,e.expect)(r.canHandle({templateId:void 0},n.SolanaContextTypes.SOLANA_LIFI)).toBe(!1),(0,e.expect)(r.canHandle({},n.SolanaContextTypes.SOLANA_LIFI)).toBe(!1)})}),(0,e.describe)("loadField",()=>{(0,e.it)("returns an error when datasource returns Left(error)",async()=>{const r=s(),a=new Error("boom");e.vi.spyOn(c,"getTransactionDescriptorsPayload").mockResolvedValue((0,p.Left)(a));const o={templateId:"tpl-err",deviceModelId:"nanoS"},t=await r.loadField(o);(0,e.expect)(c.getTransactionDescriptorsPayload).toHaveBeenCalledWith({templateId:"tpl-err"}),(0,e.expect)(t).toEqual({type:n.SolanaContextTypes.ERROR,error:a})}),(0,e.it)("returns SOLANA_LIFI with plucked descriptors and certificate when datasource returns Right(value)",async()=>{const r=s();e.vi.spyOn(c,"getTransactionDescriptorsPayload").mockResolvedValue((0,p.Right)(d));const a={templateId:"tpl-ok",deviceModelId:"nanoS"},o=await r.loadField(a);(0,e.expect)(c.getTransactionDescriptorsPayload).toHaveBeenCalledWith({templateId:"tpl-ok"}),(0,e.expect)(m.loadCertificate).toHaveBeenCalledWith({keyId:"swap_template_key",keyUsage:"swap_template",targetDevice:"nanoS"}),(0,e.expect)(o).toEqual({type:n.SolanaContextTypes.SOLANA_LIFI,payload:{descriptors:u,instructions:[{program_id:"SomeProgram",discriminator_hex:"1"},{program_id:"AnotherProgram"}]},certificate:g})})}),(0,e.describe)("pluckTransactionData (private)",()=>{(0,e.it)("returns a map keyed by `${program_id}:${discriminator_hex ?? '0'}`",()=>{const r=s(),o=r.pluckTransactionData.bind(r)(d);(0,e.expect)(o).toEqual(u)})}),(0,e.describe)("extractInstructionsMeta (private)",()=>{(0,e.it)("returns instruction metadata from the API response",()=>{const r=s(),o=r.extractInstructionsMeta.bind(r)(d);(0,e.expect)(o).toEqual([{program_id:"SomeProgram",discriminator_hex:"1"},{program_id:"AnotherProgram"}])}),(0,e.it)("returns empty array when instructions are missing",()=>{const r=s(),o=r.extractInstructionsMeta.bind(r)({...d,instructions:void 0});(0,e.expect)(o).toEqual([])})}),(0,e.describe)("pluckTransactionData mode resolution (private)",()=>{(0,e.it)("resolves signature using config.cal.mode",()=>{const r=s(),o=r.pluckTransactionData.bind(r)(d);(0,e.expect)(o["SomeProgram:1"]?.signature).toBe("deadbeef")})}),(0,e.describe)("real CAL payload (LiFi template 4c694669)",()=>{const r={id:"4c694669",chain_id:101,instructions:[{program_id:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",discriminator:1,discriminator_hex:"1"},{program_id:"11111111111111111111111111111111",discriminator:2,discriminator_hex:"2"},{program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator:0x2aade37a97cb1800,discriminator_hex:"2aade37a97cb17e0"},{program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator:9339575302786589e3,discriminator_hex:"819cd641339b2148"},{program_id:"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"},{program_id:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",discriminator:1,discriminator_hex:"1"},{program_id:"3i5JeuZuUxeKtVysUnwQNGerJP2bSMX9fTFfS4Nxe3Br"},{program_id:"ComputeBudget111111111111111111111111111111",discriminator:2,discriminator_hex:"2"},{program_id:"ComputeBudget111111111111111111111111111111",discriminator:3,discriminator_hex:"3"},{program_id:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",discriminator:3,discriminator_hex:"3"},{program_id:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",discriminator:17,discriminator_hex:"11"},{program_id:"BrdgN2RPzEMWF96ZbnnJaUtQDQx7VRXYaHHbYCBvceWB"}],descriptors:[{program_id:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",discriminator_hex:"1",descriptor:i("atoken_1","sig_atoken")},{program_id:"11111111111111111111111111111111",discriminator_hex:"2",descriptor:i("system_2","sig_system")},{program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator_hex:"2aade37a97cb17e0",descriptor:i("jup_route","sig_jup_route")},{program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator_hex:"819cd641339b2148",descriptor:i("jup_shared","sig_jup_shared")},{program_id:"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr",descriptor:i("memo","sig_memo")},{program_id:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",discriminator_hex:"1",descriptor:i("atoken_1","sig_atoken")},{program_id:"3i5JeuZuUxeKtVysUnwQNGerJP2bSMX9fTFfS4Nxe3Br",descriptor:i("3i5jeu","sig_3i5jeu")},{program_id:"ComputeBudget111111111111111111111111111111",discriminator_hex:"2",descriptor:i("cb_2","sig_cb2")},{program_id:"ComputeBudget111111111111111111111111111111",discriminator_hex:"3",descriptor:i("cb_3","sig_cb3")},{program_id:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",discriminator_hex:"3",descriptor:i("tokenkeg_3","sig_tk3")},{program_id:"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",discriminator_hex:"11",descriptor:i("tokenkeg_11","sig_tk11")},{program_id:"BrdgN2RPzEMWF96ZbnnJaUtQDQx7VRXYaHHbYCBvceWB",descriptor:i("brdg","sig_brdg")}]};(0,e.it)("produces 11 unique descriptor keys (ATokenGP:1 appears twice but deduplicates)",()=>{const a=s(),t=a.pluckTransactionData.bind(a)(r),y=Object.keys(t);(0,e.expect)(y).toHaveLength(11)}),(0,e.it)("creates distinct keys for same program_id with different discriminators",()=>{const a=s(),t=a.pluckTransactionData.bind(a)(r);(0,e.expect)(t["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4:2aade37a97cb17e0"]?.data).toBe("jup_route"),(0,e.expect)(t["JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4:819cd641339b2148"]?.data).toBe("jup_shared"),(0,e.expect)(t["ComputeBudget111111111111111111111111111111:2"]?.data).toBe("cb_2"),(0,e.expect)(t["ComputeBudget111111111111111111111111111111:3"]?.data).toBe("cb_3"),(0,e.expect)(t["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA:3"]?.data).toBe("tokenkeg_3"),(0,e.expect)(t["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA:11"]?.data).toBe("tokenkeg_11")}),(0,e.it)("uses :0 suffix for programs without a discriminator",()=>{const a=s(),t=a.pluckTransactionData.bind(a)(r);(0,e.expect)(t["MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr:"]?.data).toBe("memo"),(0,e.expect)(t["3i5JeuZuUxeKtVysUnwQNGerJP2bSMX9fTFfS4Nxe3Br:"]?.data).toBe("3i5jeu"),(0,e.expect)(t["BrdgN2RPzEMWF96ZbnnJaUtQDQx7VRXYaHHbYCBvceWB:"]?.data).toBe("brdg")}),(0,e.it)("extracts 12 instruction metadata entries preserving order and discriminators",()=>{const a=s(),t=a.extractInstructionsMeta.bind(a)(r);(0,e.expect)(t).toHaveLength(12),(0,e.expect)(t[0]).toEqual({program_id:"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",discriminator_hex:"1"}),(0,e.expect)(t[2]).toEqual({program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator_hex:"2aade37a97cb17e0"}),(0,e.expect)(t[3]).toEqual({program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator_hex:"819cd641339b2148"}),(0,e.expect)(t[4]).toEqual({program_id:"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"}),(0,e.expect)(t[11]).toEqual({program_id:"BrdgN2RPzEMWF96ZbnnJaUtQDQx7VRXYaHHbYCBvceWB"})}),(0,e.it)("loadField returns full payload with descriptors and instructions from real API response",async()=>{const a=s();e.vi.spyOn(c,"getTransactionDescriptorsPayload").mockResolvedValue((0,p.Right)(r));const o={templateId:"4c694669",deviceModelId:"nanoS"},t=await a.loadField(o);(0,e.expect)(t).toMatchObject({type:n.SolanaContextTypes.SOLANA_LIFI,payload:{descriptors:e.expect.objectContaining({"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4:2aade37a97cb17e0":e.expect.objectContaining({data:"jup_route"}),"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4:819cd641339b2148":e.expect.objectContaining({data:"jup_shared"})}),instructions:e.expect.arrayContaining([e.expect.objectContaining({program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator_hex:"2aade37a97cb17e0"}),e.expect.objectContaining({program_id:"JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",discriminator_hex:"819cd641339b2148"})])}}),(0,e.expect)(Object.keys(t.payload.descriptors)).toHaveLength(11),(0,e.expect)(t.payload.instructions).toHaveLength(12)})})});
2
2
  //# sourceMappingURL=SolanaLifiContextLoader.test.js.map