@ledgerhq/context-module 0.0.0-develop-20260518121501 → 0.0.0-develop-20260520003327

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.
@@ -57,5 +57,5 @@
57
57
  "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
58
58
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
59
59
  },
60
- "version": "0.0.0-develop-20260518121501"
60
+ "version": "0.0.0-develop-20260520003327"
61
61
  }
@@ -1,2 +1,2 @@
1
- "use strict";var c=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var y=(e,t)=>{for(var r in t)c(e,r,{get:t[r],enumerable:!0})},T=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of m(t))!D.call(e,o)&&o!==r&&c(e,o,{get:()=>t[o],enumerable:!(s=f(t,o))||s.enumerable});return e};var C=e=>T(c({},"__esModule",{value:!0}),e),h=(e,t,r,s)=>{for(var o=s>1?void 0:s?f(t,r):t,p=e.length-1,l;p>=0;p--)(l=e[p])&&(o=(s?l(t,r,o):l(o))||o);return s&&o&&c(t,r,o),o},g=(e,t)=>(r,s)=>t(r,s,e);var P={};y(P,{HttpLifiDataSource:()=>a});module.exports=C(P);var i=require("inversify"),n=require("purify-ts"),d=require("../../../../config/di/configTypes"),u=require("../../../../shared/network/di/networkTypes");let a=class{constructor(t,r,s){this.config=t;this.http=s;this.logger=r("HttpLifiDataSource")}logger;async getTransactionDescriptorsPayload({templateId:t}){this.logger.debug("[getTransactionDescriptorsPayload] Fetching transaction descriptors",{data:{templateId:t}});try{const r=await this.http.get(`${this.config.cal.url}/swap_templates`,{params:{template_id:t,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"}});return this.logger.debug("[getTransactionDescriptorsPayload] Received response",{data:{templateId:t,responseLength:r?.length??0,hasData:!!r&&r.length>0}}),!r||r.length===0||!r[0]?(this.logger.warn("[getTransactionDescriptorsPayload] No transaction descriptors found",{data:{templateId:t,responseLength:r?.length??0}}),(0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${t}`))):(this.logger.info("[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors",{data:{templateId:t,descriptorsCount:r[0].descriptors?.length??0}}),(0,n.Right)(r[0]))}catch(r){return this.logger.error("[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors",{data:{templateId:t,error:r instanceof Error?r.message:String(r)}}),(0,n.Left)(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors"))}}};a=h([(0,i.injectable)(),g(0,(0,i.inject)(d.configTypes.Config)),g(1,(0,i.inject)(d.configTypes.ContextModuleLoggerFactory)),g(2,(0,i.inject)(u.networkTypes.NetworkClient))],a);0&&(module.exports={HttpLifiDataSource});
1
+ "use strict";var c=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var y=(e,t)=>{for(var r in t)c(e,r,{get:t[r],enumerable:!0})},T=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of m(t))!D.call(e,o)&&o!==r&&c(e,o,{get:()=>t[o],enumerable:!(s=h(t,o))||s.enumerable});return e};var C=e=>T(c({},"__esModule",{value:!0}),e),f=(e,t,r,s)=>{for(var o=s>1?void 0:s?h(t,r):t,p=e.length-1,l;p>=0;p--)(l=e[p])&&(o=(s?l(t,r,o):l(o))||o);return s&&o&&c(t,r,o),o},g=(e,t)=>(r,s)=>t(r,s,e);var P={};y(P,{HttpLifiDataSource:()=>a});module.exports=C(P);var i=require("inversify"),n=require("purify-ts"),d=require("../../../../config/di/configTypes"),u=require("../../../../shared/network/di/networkTypes");let a=class{constructor(t,r,s){this.config=t;this.http=s;this.logger=r("HttpLifiDataSource")}logger;async getTransactionDescriptorsPayload({templateId:t}){this.logger.debug("[getTransactionDescriptorsPayload] Fetching transaction descriptors",{data:{templateId:t}});try{const r=await this.http.get(`${this.config.cal.url}/swap_templates`,{params:{template_id:t,output:"id,chain_id,instructions,descriptors"}});return this.logger.debug("[getTransactionDescriptorsPayload] Received response",{data:{templateId:t,responseLength:r?.length??0,hasData:!!r&&r.length>0}}),!r||r.length===0||!r[0]?(this.logger.warn("[getTransactionDescriptorsPayload] No transaction descriptors found",{data:{templateId:t,responseLength:r?.length??0}}),(0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${t}`))):(this.logger.info("[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors",{data:{templateId:t,descriptorsCount:r[0].descriptors?.length??0}}),(0,n.Right)(r[0]))}catch(r){return this.logger.error("[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors",{data:{templateId:t,error:r instanceof Error?r.message:String(r)}}),(0,n.Left)(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors"))}}};a=f([(0,i.injectable)(),g(0,(0,i.inject)(d.configTypes.Config)),g(1,(0,i.inject)(d.configTypes.ContextModuleLoggerFactory)),g(2,(0,i.inject)(u.networkTypes.NetworkClient))],a);0&&(module.exports={HttpLifiDataSource});
2
2
  //# sourceMappingURL=HttpLifiDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/lifi/data/HttpLifiDataSource.ts"],
4
- "sourcesContent": ["import {\n DmkNetworkClient,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n LifiDataSource,\n} from \"./LifiDataSource\";\n\n@injectable()\nexport class HttpLifiDataSource implements LifiDataSource {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {\n this.logger = loggerFactory(\"HttpLifiDataSource\");\n }\n\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Fetching transaction descriptors\",\n {\n data: { templateId },\n },\n );\n\n try {\n const data = (await this.http.get(\n `${this.config.cal.url}/swap_templates`,\n {\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 },\n )) as GetTransactionDescriptorsResponse[];\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] HttpLifiDataSource: 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 error: error instanceof Error ? error.message : String(error),\n },\n },\n );\n return Left(\n new Error(\n \"[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
- "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAIA,IAAAI,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6B,4CAStB,IAAMC,EAAN,KAAmD,CAGxD,YAEmBC,EAEjBC,EAEiBC,EACjB,CALiB,YAAAF,EAIA,UAAAE,EAEjB,KAAK,OAASD,EAAc,oBAAoB,CAClD,CAXQ,OAaR,MAAa,iCAAiC,CAC5C,WAAAE,CACF,EAEE,CACA,KAAK,OAAO,MACV,sEACA,CACE,KAAM,CAAE,WAAAA,CAAW,CACrB,CACF,EAEA,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,IAAI,GAAG,kBACtB,CACE,OAAQ,CACN,YAAaD,EACb,OAAQ,uCAGR,IAAK,qDACP,CACF,CACF,EAaA,OAXA,KAAK,OAAO,MACV,uDACA,CACE,KAAM,CACJ,WAAAA,EACA,eAAgBC,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,WAAAD,EAAY,eAAgBC,GAAM,QAAU,CAAE,CACxD,CACF,KACO,QACL,IAAI,MACF,yEAAyED,CAAU,EACrF,CACF,IAGF,KAAK,OAAO,KACV,kFACA,CACE,KAAM,CACJ,WAAAA,EACA,iBAAkBC,EAAK,CAAC,EAAE,aAAa,QAAU,CACnD,CACF,CACF,KAEO,SAAMA,EAAK,CAAC,CAAC,EACtB,OAASC,EAAO,CACd,YAAK,OAAO,MACV,6EACA,CACE,KAAM,CACJ,WAAAF,EACA,MAAOE,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAC9D,CACF,CACF,KACO,QACL,IAAI,MACF,6EACF,CACF,CACF,CACF,CACF,EA7FaN,EAANO,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,cAAY,0BAA0B,GAE7CA,EAAA,eAAO,eAAa,aAAa,IARzBR",
4
+ "sourcesContent": ["import {\n DmkNetworkClient,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n LifiDataSource,\n} from \"./LifiDataSource\";\n\n@injectable()\nexport class HttpLifiDataSource implements LifiDataSource {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {\n this.logger = loggerFactory(\"HttpLifiDataSource\");\n }\n\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Fetching transaction descriptors\",\n {\n data: { templateId },\n },\n );\n\n try {\n const data = (await this.http.get(\n `${this.config.cal.url}/swap_templates`,\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n },\n },\n )) as GetTransactionDescriptorsResponse[];\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] HttpLifiDataSource: 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 error: error instanceof Error ? error.message : String(error),\n },\n },\n );\n return Left(\n new Error(\n \"[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "okBAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,wBAAAE,IAAA,eAAAC,EAAAH,GAIA,IAAAI,EAAmC,qBACnCC,EAAoC,qBAEpCC,EAA4B,mCAE5BC,EAA6B,4CAStB,IAAMC,EAAN,KAAmD,CAGxD,YAEmBC,EAEjBC,EAEiBC,EACjB,CALiB,YAAAF,EAIA,UAAAE,EAEjB,KAAK,OAASD,EAAc,oBAAoB,CAClD,CAXQ,OAaR,MAAa,iCAAiC,CAC5C,WAAAE,CACF,EAEE,CACA,KAAK,OAAO,MACV,sEACA,CACE,KAAM,CAAE,WAAAA,CAAW,CACrB,CACF,EAEA,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,IAAI,GAAG,kBACtB,CACE,OAAQ,CACN,YAAaD,EACb,OAAQ,sCACV,CACF,CACF,EAaA,OAXA,KAAK,OAAO,MACV,uDACA,CACE,KAAM,CACJ,WAAAA,EACA,eAAgBC,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,WAAAD,EAAY,eAAgBC,GAAM,QAAU,CAAE,CACxD,CACF,KACO,QACL,IAAI,MACF,yEAAyED,CAAU,EACrF,CACF,IAGF,KAAK,OAAO,KACV,kFACA,CACE,KAAM,CACJ,WAAAA,EACA,iBAAkBC,EAAK,CAAC,EAAE,aAAa,QAAU,CACnD,CACF,CACF,KAEO,SAAMA,EAAK,CAAC,CAAC,EACtB,OAASC,EAAO,CACd,YAAK,OAAO,MACV,6EACA,CACE,KAAM,CACJ,WAAAF,EACA,MAAOE,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAC9D,CACF,CACF,KACO,QACL,IAAI,MACF,6EACF,CACF,CACF,CACF,CACF,EA1FaN,EAANO,EAAA,IADN,cAAW,EAKPC,EAAA,eAAO,cAAY,MAAM,GAEzBA,EAAA,eAAO,cAAY,0BAA0B,GAE7CA,EAAA,eAAO,eAAa,aAAa,IARzBR",
6
6
  "names": ["HttpLifiDataSource_exports", "__export", "HttpLifiDataSource", "__toCommonJS", "import_inversify", "import_purify_ts", "import_configTypes", "import_networkTypes", "HttpLifiDataSource", "config", "loggerFactory", "http", "templateId", "data", "error", "__decorateClass", "__decorateParam"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";var n=require("purify-ts"),e=require("vitest"),s=require("./HttpLifiDataSource");const l=()=>({debug:e.vi.fn(),info:e.vi.fn(),warn:e.vi.fn(),error:e.vi.fn(),subscribers:[]});(0,e.describe)("HttpLifiDataSource",()=>{let a,t;const o="tpl-123",i={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};(0,e.beforeEach)(()=>{e.vi.clearAllMocks(),t={get:e.vi.fn()},a=new s.HttpLifiDataSource(i,l,t)}),(0,e.it)("should call the network client with the expected URL and params",async()=>{t.get.mockResolvedValue([]),await a.getTransactionDescriptorsPayload({templateId:o}),(0,e.expect)(t.get).toHaveBeenCalledTimes(1),(0,e.expect)(t.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/v1/swap_templates",{params:{template_id:o,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"}})}),(0,e.it)("should return Right(data[0]) when the network client responds with a non-empty array",async()=>{const r={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};t.get.mockResolvedValue([r]);const c=await a.getTransactionDescriptorsPayload({templateId:o});(0,e.expect)(c).toEqual((0,n.Right)(r))}),(0,e.it)("should return an error when data is undefined",async()=>{t.get.mockResolvedValue(null);const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,e.expect)(r).toEqual((0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${o}`)))}),(0,e.it)("should return an error when data array is empty",async()=>{t.get.mockResolvedValue([]);const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,e.expect)(r).toEqual((0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${o}`)))}),(0,e.it)("should return an error when first element is falsy",async()=>{t.get.mockResolvedValue([null]);const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,e.expect)(r).toEqual((0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${o}`)))}),(0,e.it)("should return an error when the network client throws",async()=>{t.get.mockRejectedValue(new Error("network"));const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,e.expect)(r).toEqual((0,n.Left)(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors")))})});
1
+ "use strict";var n=require("purify-ts"),t=require("vitest"),s=require("./HttpLifiDataSource");const l=()=>({debug:t.vi.fn(),info:t.vi.fn(),warn:t.vi.fn(),error:t.vi.fn(),subscribers:[]});(0,t.describe)("HttpLifiDataSource",()=>{let a,e;const o="tpl-123",i={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};(0,t.beforeEach)(()=>{t.vi.clearAllMocks(),e={get:t.vi.fn()},a=new s.HttpLifiDataSource(i,l,e)}),(0,t.it)("should call the network client with the expected URL and params",async()=>{e.get.mockResolvedValue([]),await a.getTransactionDescriptorsPayload({templateId:o}),(0,t.expect)(e.get).toHaveBeenCalledTimes(1),(0,t.expect)(e.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/v1/swap_templates",{params:{template_id:o,output:"id,chain_id,instructions,descriptors"}})}),(0,t.it)("should return Right(data[0]) when the network client responds with a non-empty array",async()=>{const r={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};e.get.mockResolvedValue([r]);const c=await a.getTransactionDescriptorsPayload({templateId:o});(0,t.expect)(c).toEqual((0,n.Right)(r))}),(0,t.it)("should return an error when data is undefined",async()=>{e.get.mockResolvedValue(null);const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,t.expect)(r).toEqual((0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${o}`)))}),(0,t.it)("should return an error when data array is empty",async()=>{e.get.mockResolvedValue([]);const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,t.expect)(r).toEqual((0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${o}`)))}),(0,t.it)("should return an error when first element is falsy",async()=>{e.get.mockResolvedValue([null]);const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,t.expect)(r).toEqual((0,n.Left)(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${o}`)))}),(0,t.it)("should return an error when the network client throws",async()=>{e.get.mockRejectedValue(new Error("network"));const r=await a.getTransactionDescriptorsPayload({templateId:o});(0,t.expect)(r).toEqual((0,n.Left)(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors")))})});
2
2
  //# sourceMappingURL=HttpLifiDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/lifi/data/HttpLifiDataSource.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpLifiDataSource } from \"./HttpLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type LifiDataSource,\n} from \"./LifiDataSource\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"HttpLifiDataSource\", () => {\n let datasource: LifiDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const templateId = \"tpl-123\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpLifiDataSource(\n config,\n mockLoggerFactory,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"should call the network client with the expected URL and params\", async () => {\n // given\n httpMock.get.mockResolvedValue([]);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/v1/swap_templates\",\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n },\n );\n });\n\n it(\"should return Right(data[0]) when the network client 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 httpMock.get.mockResolvedValue([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 httpMock.get.mockResolvedValue(null);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([]);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([null]);\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] HttpLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when the network client throws\", async () => {\n // given\n httpMock.get.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] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "aAGA,IAAAA,EAA4B,qBAC5BC,EAAqD,kBAIrDC,EAAmC,gCAMnC,MAAMC,EAAoB,KAAO,CAC/B,MAAO,KAAG,GAAG,EACb,KAAM,KAAG,GAAG,EACZ,KAAM,KAAG,GAAG,EACZ,MAAO,KAAG,GAAG,EACb,YAAa,CAAC,CAChB,MAEA,YAAS,qBAAsB,IAAM,CACnC,IAAIC,EACAC,EACJ,MAAMC,EAAa,UACbC,EAAqC,CACzC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,KAEA,cAAW,IAAM,CACf,KAAG,cAAc,EACjBF,EAAW,CAAE,IAAK,KAAG,GAAG,CAAE,EAC1BD,EAAa,IAAI,qBACfG,EACAJ,EACAE,CACF,CACF,CAAC,KAED,MAAG,kEAAmE,SAAY,CAEhFA,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMD,EAAW,iCAAiC,CAAE,WAAAE,CAAW,CAAC,KAGhE,UAAOD,EAAS,GAAG,EAAE,sBAAsB,CAAC,KAC5C,UAAOA,EAAS,GAAG,EAAE,qBACnB,iEACA,CACE,OAAQ,CACN,YAAaC,EACb,OAAQ,uCACR,IAAK,qDACP,CACF,CACF,CACF,CAAC,KAED,MAAG,uFAAwF,SAAY,CAErG,MAAME,EAA+C,CACnD,YAAa,CACX,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,MAAO,CAC/D,CACF,EAEAH,EAAS,IAAI,kBAAkB,CAACG,CAAS,CAAC,EAG1C,MAAMC,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WAAQ,SAAMD,CAAS,CAAC,CACzC,CAAC,KAED,MAAG,gDAAiD,SAAY,CAE9DH,EAAS,IAAI,kBAAkB,IAAI,EAGnC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,yEAAyEH,CAAU,EACrF,CACF,CACF,CACF,CAAC,KAED,MAAG,kDAAmD,SAAY,CAEhED,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,yEAAyEH,CAAU,EACrF,CACF,CACF,CACF,CAAC,KAED,MAAG,qDAAsD,SAAY,CAEnED,EAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAGrC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,yEAAyEH,CAAU,EACrF,CACF,CACF,CACF,CAAC,KAED,MAAG,wDAAyD,SAAY,CAEtED,EAAS,IAAI,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGnD,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,6EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpLifiDataSource } from \"./HttpLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type LifiDataSource,\n} from \"./LifiDataSource\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"HttpLifiDataSource\", () => {\n let datasource: LifiDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const templateId = \"tpl-123\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpLifiDataSource(\n config,\n mockLoggerFactory,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"should call the network client with the expected URL and params\", async () => {\n // given\n httpMock.get.mockResolvedValue([]);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/v1/swap_templates\",\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n },\n },\n );\n });\n\n it(\"should return Right(data[0]) when the network client 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 httpMock.get.mockResolvedValue([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 httpMock.get.mockResolvedValue(null);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([]);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([null]);\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] HttpLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when the network client throws\", async () => {\n // given\n httpMock.get.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] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "aAGA,IAAAA,EAA4B,qBAC5BC,EAAqD,kBAIrDC,EAAmC,gCAMnC,MAAMC,EAAoB,KAAO,CAC/B,MAAO,KAAG,GAAG,EACb,KAAM,KAAG,GAAG,EACZ,KAAM,KAAG,GAAG,EACZ,MAAO,KAAG,GAAG,EACb,YAAa,CAAC,CAChB,MAEA,YAAS,qBAAsB,IAAM,CACnC,IAAIC,EACAC,EACJ,MAAMC,EAAa,UACbC,EAAqC,CACzC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,KAEA,cAAW,IAAM,CACf,KAAG,cAAc,EACjBF,EAAW,CAAE,IAAK,KAAG,GAAG,CAAE,EAC1BD,EAAa,IAAI,qBACfG,EACAJ,EACAE,CACF,CACF,CAAC,KAED,MAAG,kEAAmE,SAAY,CAEhFA,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMD,EAAW,iCAAiC,CAAE,WAAAE,CAAW,CAAC,KAGhE,UAAOD,EAAS,GAAG,EAAE,sBAAsB,CAAC,KAC5C,UAAOA,EAAS,GAAG,EAAE,qBACnB,iEACA,CACE,OAAQ,CACN,YAAaC,EACb,OAAQ,sCACV,CACF,CACF,CACF,CAAC,KAED,MAAG,uFAAwF,SAAY,CAErG,MAAME,EAA+C,CACnD,YAAa,CACX,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,MAAO,CAC/D,CACF,EAEAH,EAAS,IAAI,kBAAkB,CAACG,CAAS,CAAC,EAG1C,MAAMC,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WAAQ,SAAMD,CAAS,CAAC,CACzC,CAAC,KAED,MAAG,gDAAiD,SAAY,CAE9DH,EAAS,IAAI,kBAAkB,IAAI,EAGnC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,yEAAyEH,CAAU,EACrF,CACF,CACF,CACF,CAAC,KAED,MAAG,kDAAmD,SAAY,CAEhED,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,yEAAyEH,CAAU,EACrF,CACF,CACF,CACF,CAAC,KAED,MAAG,qDAAsD,SAAY,CAEnED,EAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAGrC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,yEAAyEH,CAAU,EACrF,CACF,CACF,CACF,CAAC,KAED,MAAG,wDAAyD,SAAY,CAEtED,EAAS,IAAI,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGnD,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,KAGD,UAAOG,CAAM,EAAE,WACb,QACE,IAAI,MACF,6EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
6
  "names": ["import_purify_ts", "import_vitest", "import_HttpLifiDataSource", "mockLoggerFactory", "datasource", "httpMock", "templateId", "config", "response0", "result"]
7
7
  }
@@ -57,5 +57,5 @@
57
57
  "watch:builds": "pnpm ldmk-tool watch --entryPoints index.ts,src/**/*.ts --tsconfig tsconfig.prod.json",
58
58
  "watch:types": "concurrently \"tsc --watch -p tsconfig.prod.json\" \"tsc-alias --watch -p tsconfig.prod.json\""
59
59
  },
60
- "version": "0.0.0-develop-20260518121501"
60
+ "version": "0.0.0-develop-20260520003327"
61
61
  }
@@ -1,2 +1,2 @@
1
- var f=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var p=(s,t,r,e)=>{for(var o=e>1?void 0:e?h(t,r):t,n=s.length-1,c;n>=0;n--)(c=s[n])&&(o=(e?c(t,r,o):c(o))||o);return e&&o&&f(t,r,o),o},i=(s,t)=>(r,e)=>t(r,e,s);import{inject as g,injectable as u}from"inversify";import{Left as l,Right as m}from"purify-ts";import{configTypes as d}from"../../../../config/di/configTypes";import{networkTypes as D}from"../../../../shared/network/di/networkTypes";let a=class{constructor(t,r,e){this.config=t;this.http=e;this.logger=r("HttpLifiDataSource")}logger;async getTransactionDescriptorsPayload({templateId:t}){this.logger.debug("[getTransactionDescriptorsPayload] Fetching transaction descriptors",{data:{templateId:t}});try{const r=await this.http.get(`${this.config.cal.url}/swap_templates`,{params:{template_id:t,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"}});return this.logger.debug("[getTransactionDescriptorsPayload] Received response",{data:{templateId:t,responseLength:r?.length??0,hasData:!!r&&r.length>0}}),!r||r.length===0||!r[0]?(this.logger.warn("[getTransactionDescriptorsPayload] No transaction descriptors found",{data:{templateId:t,responseLength:r?.length??0}}),l(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${t}`))):(this.logger.info("[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors",{data:{templateId:t,descriptorsCount:r[0].descriptors?.length??0}}),m(r[0]))}catch(r){return this.logger.error("[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors",{data:{templateId:t,error:r instanceof Error?r.message:String(r)}}),l(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors"))}}};a=p([u(),i(0,g(d.Config)),i(1,g(d.ContextModuleLoggerFactory)),i(2,g(D.NetworkClient))],a);export{a as HttpLifiDataSource};
1
+ var h=Object.defineProperty;var f=Object.getOwnPropertyDescriptor;var p=(s,t,r,e)=>{for(var o=e>1?void 0:e?f(t,r):t,n=s.length-1,c;n>=0;n--)(c=s[n])&&(o=(e?c(t,r,o):c(o))||o);return e&&o&&h(t,r,o),o},i=(s,t)=>(r,e)=>t(r,e,s);import{inject as g,injectable as u}from"inversify";import{Left as l,Right as m}from"purify-ts";import{configTypes as d}from"../../../../config/di/configTypes";import{networkTypes as D}from"../../../../shared/network/di/networkTypes";let a=class{constructor(t,r,e){this.config=t;this.http=e;this.logger=r("HttpLifiDataSource")}logger;async getTransactionDescriptorsPayload({templateId:t}){this.logger.debug("[getTransactionDescriptorsPayload] Fetching transaction descriptors",{data:{templateId:t}});try{const r=await this.http.get(`${this.config.cal.url}/swap_templates`,{params:{template_id:t,output:"id,chain_id,instructions,descriptors"}});return this.logger.debug("[getTransactionDescriptorsPayload] Received response",{data:{templateId:t,responseLength:r?.length??0,hasData:!!r&&r.length>0}}),!r||r.length===0||!r[0]?(this.logger.warn("[getTransactionDescriptorsPayload] No transaction descriptors found",{data:{templateId:t,responseLength:r?.length??0}}),l(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${t}`))):(this.logger.info("[getTransactionDescriptorsPayload] Successfully fetched transaction descriptors",{data:{templateId:t,descriptorsCount:r[0].descriptors?.length??0}}),m(r[0]))}catch(r){return this.logger.error("[getTransactionDescriptorsPayload] Failed to fetch transaction descriptors",{data:{templateId:t,error:r instanceof Error?r.message:String(r)}}),l(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors"))}}};a=p([u(),i(0,g(d.Config)),i(1,g(d.ContextModuleLoggerFactory)),i(2,g(D.NetworkClient))],a);export{a as HttpLifiDataSource};
2
2
  //# sourceMappingURL=HttpLifiDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/lifi/data/HttpLifiDataSource.ts"],
4
- "sourcesContent": ["import {\n DmkNetworkClient,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n LifiDataSource,\n} from \"./LifiDataSource\";\n\n@injectable()\nexport class HttpLifiDataSource implements LifiDataSource {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {\n this.logger = loggerFactory(\"HttpLifiDataSource\");\n }\n\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Fetching transaction descriptors\",\n {\n data: { templateId },\n },\n );\n\n try {\n const data = (await this.http.get(\n `${this.config.cal.url}/swap_templates`,\n {\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 },\n )) as GetTransactionDescriptorsResponse[];\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] HttpLifiDataSource: 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 error: error instanceof Error ? error.message : String(error),\n },\n },\n );\n return Left(\n new Error(\n \"[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
- "mappings": "iOAIA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,mCAStB,IAAMC,EAAN,KAAmD,CAGxD,YAEmBC,EAEjBC,EAEiBC,EACjB,CALiB,YAAAF,EAIA,UAAAE,EAEjB,KAAK,OAASD,EAAc,oBAAoB,CAClD,CAXQ,OAaR,MAAa,iCAAiC,CAC5C,WAAAE,CACF,EAEE,CACA,KAAK,OAAO,MACV,sEACA,CACE,KAAM,CAAE,WAAAA,CAAW,CACrB,CACF,EAEA,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,IAAI,GAAG,kBACtB,CACE,OAAQ,CACN,YAAaD,EACb,OAAQ,uCAGR,IAAK,qDACP,CACF,CACF,EAaA,OAXA,KAAK,OAAO,MACV,uDACA,CACE,KAAM,CACJ,WAAAA,EACA,eAAgBC,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,WAAAD,EAAY,eAAgBC,GAAM,QAAU,CAAE,CACxD,CACF,EACOC,EACL,IAAI,MACF,yEAAyEF,CAAU,EACrF,CACF,IAGF,KAAK,OAAO,KACV,kFACA,CACE,KAAM,CACJ,WAAAA,EACA,iBAAkBC,EAAK,CAAC,EAAE,aAAa,QAAU,CACnD,CACF,CACF,EAEOE,EAAMF,EAAK,CAAC,CAAC,EACtB,OAASG,EAAO,CACd,YAAK,OAAO,MACV,6EACA,CACE,KAAM,CACJ,WAAAJ,EACA,MAAOI,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAC9D,CACF,CACF,EACOF,EACL,IAAI,MACF,6EACF,CACF,CACF,CACF,CACF,EA7FaN,EAANS,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOC,EAAY,0BAA0B,GAE7CF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IARzBd",
4
+ "sourcesContent": ["import {\n DmkNetworkClient,\n LoggerPublisherService,\n} from \"@ledgerhq/device-management-kit\";\nimport { inject, injectable } from \"inversify\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { configTypes } from \"@/config/di/configTypes\";\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\nimport { networkTypes } from \"@/shared/network/di/networkTypes\";\n\nimport {\n GetTransactionDescriptorsParams,\n GetTransactionDescriptorsResponse,\n LifiDataSource,\n} from \"./LifiDataSource\";\n\n@injectable()\nexport class HttpLifiDataSource implements LifiDataSource {\n private logger: LoggerPublisherService;\n\n constructor(\n @inject(configTypes.Config)\n private readonly config: ContextModuleServiceConfig,\n @inject(configTypes.ContextModuleLoggerFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n @inject(networkTypes.NetworkClient)\n private readonly http: DmkNetworkClient,\n ) {\n this.logger = loggerFactory(\"HttpLifiDataSource\");\n }\n\n public async getTransactionDescriptorsPayload({\n templateId,\n }: GetTransactionDescriptorsParams): Promise<\n Either<Error, GetTransactionDescriptorsResponse>\n > {\n this.logger.debug(\n \"[getTransactionDescriptorsPayload] Fetching transaction descriptors\",\n {\n data: { templateId },\n },\n );\n\n try {\n const data = (await this.http.get(\n `${this.config.cal.url}/swap_templates`,\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n },\n },\n )) as GetTransactionDescriptorsResponse[];\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] HttpLifiDataSource: 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 error: error instanceof Error ? error.message : String(error),\n },\n },\n );\n return Left(\n new Error(\n \"[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n );\n }\n }\n}\n"],
5
+ "mappings": "iOAIA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAEpC,OAAS,eAAAC,MAAmB,0BAE5B,OAAS,gBAAAC,MAAoB,mCAStB,IAAMC,EAAN,KAAmD,CAGxD,YAEmBC,EAEjBC,EAEiBC,EACjB,CALiB,YAAAF,EAIA,UAAAE,EAEjB,KAAK,OAASD,EAAc,oBAAoB,CAClD,CAXQ,OAaR,MAAa,iCAAiC,CAC5C,WAAAE,CACF,EAEE,CACA,KAAK,OAAO,MACV,sEACA,CACE,KAAM,CAAE,WAAAA,CAAW,CACrB,CACF,EAEA,GAAI,CACF,MAAMC,EAAQ,MAAM,KAAK,KAAK,IAC5B,GAAG,KAAK,OAAO,IAAI,GAAG,kBACtB,CACE,OAAQ,CACN,YAAaD,EACb,OAAQ,sCACV,CACF,CACF,EAaA,OAXA,KAAK,OAAO,MACV,uDACA,CACE,KAAM,CACJ,WAAAA,EACA,eAAgBC,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,WAAAD,EAAY,eAAgBC,GAAM,QAAU,CAAE,CACxD,CACF,EACOC,EACL,IAAI,MACF,yEAAyEF,CAAU,EACrF,CACF,IAGF,KAAK,OAAO,KACV,kFACA,CACE,KAAM,CACJ,WAAAA,EACA,iBAAkBC,EAAK,CAAC,EAAE,aAAa,QAAU,CACnD,CACF,CACF,EAEOE,EAAMF,EAAK,CAAC,CAAC,EACtB,OAASG,EAAO,CACd,YAAK,OAAO,MACV,6EACA,CACE,KAAM,CACJ,WAAAJ,EACA,MAAOI,aAAiB,MAAQA,EAAM,QAAU,OAAOA,CAAK,CAC9D,CACF,CACF,EACOF,EACL,IAAI,MACF,6EACF,CACF,CACF,CACF,CACF,EA1FaN,EAANS,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAY,MAAM,GAEzBF,EAAA,EAAAC,EAAOC,EAAY,0BAA0B,GAE7CF,EAAA,EAAAC,EAAOE,EAAa,aAAa,IARzBd",
6
6
  "names": ["inject", "injectable", "Left", "Right", "configTypes", "networkTypes", "HttpLifiDataSource", "config", "loggerFactory", "http", "templateId", "data", "Left", "Right", "error", "__decorateClass", "injectable", "__decorateParam", "inject", "configTypes", "networkTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Left as i,Right as d}from"purify-ts";import{beforeEach as p,describe as u,expect as a,it as n,vi as s}from"vitest";import{HttpLifiDataSource as f}from"./HttpLifiDataSource";const m=()=>({debug:s.fn(),info:s.fn(),warn:s.fn(),error:s.fn(),subscribers:[]});u("HttpLifiDataSource",()=>{let r,e;const t="tpl-123",c={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};p(()=>{s.clearAllMocks(),e={get:s.fn()},r=new f(c,m,e)}),n("should call the network client with the expected URL and params",async()=>{e.get.mockResolvedValue([]),await r.getTransactionDescriptorsPayload({templateId:t}),a(e.get).toHaveBeenCalledTimes(1),a(e.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/v1/swap_templates",{params:{template_id:t,output:"id,chain_id,instructions,descriptors",ref:"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784"}})}),n("should return Right(data[0]) when the network client responds with a non-empty array",async()=>{const o={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};e.get.mockResolvedValue([o]);const l=await r.getTransactionDescriptorsPayload({templateId:t});a(l).toEqual(d(o))}),n("should return an error when data is undefined",async()=>{e.get.mockResolvedValue(null);const o=await r.getTransactionDescriptorsPayload({templateId:t});a(o).toEqual(i(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${t}`)))}),n("should return an error when data array is empty",async()=>{e.get.mockResolvedValue([]);const o=await r.getTransactionDescriptorsPayload({templateId:t});a(o).toEqual(i(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${t}`)))}),n("should return an error when first element is falsy",async()=>{e.get.mockResolvedValue([null]);const o=await r.getTransactionDescriptorsPayload({templateId:t});a(o).toEqual(i(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${t}`)))}),n("should return an error when the network client throws",async()=>{e.get.mockRejectedValue(new Error("network"));const o=await r.getTransactionDescriptorsPayload({templateId:t});a(o).toEqual(i(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors")))})});
1
+ import{Left as i,Right as d}from"purify-ts";import{beforeEach as p,describe as u,expect as a,it as n,vi as s}from"vitest";import{HttpLifiDataSource as m}from"./HttpLifiDataSource";const f=()=>({debug:s.fn(),info:s.fn(),warn:s.fn(),error:s.fn(),subscribers:[]});u("HttpLifiDataSource",()=>{let r,t;const e="tpl-123",c={cal:{url:"https://crypto-assets-service.api.ledger.com/v1",mode:"prod",branch:"main"}};p(()=>{s.clearAllMocks(),t={get:s.fn()},r=new m(c,f,t)}),n("should call the network client with the expected URL and params",async()=>{t.get.mockResolvedValue([]),await r.getTransactionDescriptorsPayload({templateId:e}),a(t.get).toHaveBeenCalledTimes(1),a(t.get).toHaveBeenCalledWith("https://crypto-assets-service.api.ledger.com/v1/swap_templates",{params:{template_id:e,output:"id,chain_id,instructions,descriptors"}})}),n("should return Right(data[0]) when the network client responds with a non-empty array",async()=>{const o={descriptors:{swap:{programId:"SwapProgram",accounts:[],data:"abcd"}}};t.get.mockResolvedValue([o]);const l=await r.getTransactionDescriptorsPayload({templateId:e});a(l).toEqual(d(o))}),n("should return an error when data is undefined",async()=>{t.get.mockResolvedValue(null);const o=await r.getTransactionDescriptorsPayload({templateId:e});a(o).toEqual(i(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${e}`)))}),n("should return an error when data array is empty",async()=>{t.get.mockResolvedValue([]);const o=await r.getTransactionDescriptorsPayload({templateId:e});a(o).toEqual(i(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${e}`)))}),n("should return an error when first element is falsy",async()=>{t.get.mockResolvedValue([null]);const o=await r.getTransactionDescriptorsPayload({templateId:e});a(o).toEqual(i(new Error(`[ContextModule] HttpLifiDataSource: no transaction descriptors for id ${e}`)))}),n("should return an error when the network client throws",async()=>{t.get.mockRejectedValue(new Error("network"));const o=await r.getTransactionDescriptorsPayload({templateId:e});a(o).toEqual(i(new Error("[ContextModule] HttpLifiDataSource: Failed to fetch transaction descriptors")))})});
2
2
  //# sourceMappingURL=HttpLifiDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/modules/solana/lifi/data/HttpLifiDataSource.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpLifiDataSource } from \"./HttpLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type LifiDataSource,\n} from \"./LifiDataSource\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"HttpLifiDataSource\", () => {\n let datasource: LifiDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const templateId = \"tpl-123\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpLifiDataSource(\n config,\n mockLoggerFactory,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"should call the network client with the expected URL and params\", async () => {\n // given\n httpMock.get.mockResolvedValue([]);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/v1/swap_templates\",\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n ref: \"ref=commit:866b6e7633a7a806fab7f9941bcc3df7ee640784\",\n },\n },\n );\n });\n\n it(\"should return Right(data[0]) when the network client 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 httpMock.get.mockResolvedValue([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 httpMock.get.mockResolvedValue(null);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([]);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([null]);\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] HttpLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when the network client throws\", async () => {\n // given\n httpMock.get.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] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
- "mappings": "AAGA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIrD,OAAS,sBAAAC,MAA0B,uBAMnC,MAAMC,EAAoB,KAAO,CAC/B,MAAOF,EAAG,GAAG,EACb,KAAMA,EAAG,GAAG,EACZ,KAAMA,EAAG,GAAG,EACZ,MAAOA,EAAG,GAAG,EACb,YAAa,CAAC,CAChB,GAEAH,EAAS,qBAAsB,IAAM,CACnC,IAAIM,EACAC,EACJ,MAAMC,EAAa,UACbC,EAAqC,CACzC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,EAEAV,EAAW,IAAM,CACfI,EAAG,cAAc,EACjBI,EAAW,CAAE,IAAKJ,EAAG,GAAG,CAAE,EAC1BG,EAAa,IAAIF,EACfK,EACAJ,EACAE,CACF,CACF,CAAC,EAEDL,EAAG,kEAAmE,SAAY,CAEhFK,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMD,EAAW,iCAAiC,CAAE,WAAAE,CAAW,CAAC,EAGhEP,EAAOM,EAAS,GAAG,EAAE,sBAAsB,CAAC,EAC5CN,EAAOM,EAAS,GAAG,EAAE,qBACnB,iEACA,CACE,OAAQ,CACN,YAAaC,EACb,OAAQ,uCACR,IAAK,qDACP,CACF,CACF,CACF,CAAC,EAEDN,EAAG,uFAAwF,SAAY,CAErG,MAAMQ,EAA+C,CACnD,YAAa,CACX,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,MAAO,CAC/D,CACF,EAEAH,EAAS,IAAI,kBAAkB,CAACG,CAAS,CAAC,EAG1C,MAAMC,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QAAQb,EAAMY,CAAS,CAAC,CACzC,CAAC,EAEDR,EAAG,gDAAiD,SAAY,CAE9DK,EAAS,IAAI,kBAAkB,IAAI,EAGnC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,yEAAyEW,CAAU,EACrF,CACF,CACF,CACF,CAAC,EAEDN,EAAG,kDAAmD,SAAY,CAEhEK,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,yEAAyEW,CAAU,EACrF,CACF,CACF,CACF,CAAC,EAEDN,EAAG,qDAAsD,SAAY,CAEnEK,EAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAGrC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,yEAAyEW,CAAU,EACrF,CACF,CACF,CACF,CAAC,EAEDN,EAAG,wDAAyD,SAAY,CAEtEK,EAAS,IAAI,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGnD,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,6EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { type DmkNetworkClient } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleServiceConfig } from \"@/config/model/ContextModuleConfig\";\n\nimport { HttpLifiDataSource } from \"./HttpLifiDataSource\";\nimport {\n type GetTransactionDescriptorsResponse,\n type LifiDataSource,\n} from \"./LifiDataSource\";\n\nconst mockLoggerFactory = () => ({\n debug: vi.fn(),\n info: vi.fn(),\n warn: vi.fn(),\n error: vi.fn(),\n subscribers: [],\n});\n\ndescribe(\"HttpLifiDataSource\", () => {\n let datasource: LifiDataSource;\n let httpMock: { get: ReturnType<typeof vi.fn> };\n const templateId = \"tpl-123\";\n const config: ContextModuleServiceConfig = {\n cal: {\n url: \"https://crypto-assets-service.api.ledger.com/v1\",\n mode: \"prod\",\n branch: \"main\",\n },\n } as ContextModuleServiceConfig;\n\n beforeEach(() => {\n vi.clearAllMocks();\n httpMock = { get: vi.fn() };\n datasource = new HttpLifiDataSource(\n config,\n mockLoggerFactory,\n httpMock as unknown as DmkNetworkClient,\n );\n });\n\n it(\"should call the network client with the expected URL and params\", async () => {\n // given\n httpMock.get.mockResolvedValue([]);\n\n // when\n await datasource.getTransactionDescriptorsPayload({ templateId });\n\n // then\n expect(httpMock.get).toHaveBeenCalledTimes(1);\n expect(httpMock.get).toHaveBeenCalledWith(\n \"https://crypto-assets-service.api.ledger.com/v1/swap_templates\",\n {\n params: {\n template_id: templateId,\n output: \"id,chain_id,instructions,descriptors\",\n },\n },\n );\n });\n\n it(\"should return Right(data[0]) when the network client 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 httpMock.get.mockResolvedValue([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 httpMock.get.mockResolvedValue(null);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([]);\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] HttpLifiDataSource: 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 httpMock.get.mockResolvedValue([null]);\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] HttpLifiDataSource: no transaction descriptors for id ${templateId}`,\n ),\n ),\n );\n });\n\n it(\"should return an error when the network client throws\", async () => {\n // given\n httpMock.get.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] HttpLifiDataSource: Failed to fetch transaction descriptors\",\n ),\n ),\n );\n });\n});\n"],
5
+ "mappings": "AAGA,OAAS,QAAAA,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIrD,OAAS,sBAAAC,MAA0B,uBAMnC,MAAMC,EAAoB,KAAO,CAC/B,MAAOF,EAAG,GAAG,EACb,KAAMA,EAAG,GAAG,EACZ,KAAMA,EAAG,GAAG,EACZ,MAAOA,EAAG,GAAG,EACb,YAAa,CAAC,CAChB,GAEAH,EAAS,qBAAsB,IAAM,CACnC,IAAIM,EACAC,EACJ,MAAMC,EAAa,UACbC,EAAqC,CACzC,IAAK,CACH,IAAK,kDACL,KAAM,OACN,OAAQ,MACV,CACF,EAEAV,EAAW,IAAM,CACfI,EAAG,cAAc,EACjBI,EAAW,CAAE,IAAKJ,EAAG,GAAG,CAAE,EAC1BG,EAAa,IAAIF,EACfK,EACAJ,EACAE,CACF,CACF,CAAC,EAEDL,EAAG,kEAAmE,SAAY,CAEhFK,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMD,EAAW,iCAAiC,CAAE,WAAAE,CAAW,CAAC,EAGhEP,EAAOM,EAAS,GAAG,EAAE,sBAAsB,CAAC,EAC5CN,EAAOM,EAAS,GAAG,EAAE,qBACnB,iEACA,CACE,OAAQ,CACN,YAAaC,EACb,OAAQ,sCACV,CACF,CACF,CACF,CAAC,EAEDN,EAAG,uFAAwF,SAAY,CAErG,MAAMQ,EAA+C,CACnD,YAAa,CACX,KAAM,CAAE,UAAW,cAAe,SAAU,CAAC,EAAG,KAAM,MAAO,CAC/D,CACF,EAEAH,EAAS,IAAI,kBAAkB,CAACG,CAAS,CAAC,EAG1C,MAAMC,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QAAQb,EAAMY,CAAS,CAAC,CACzC,CAAC,EAEDR,EAAG,gDAAiD,SAAY,CAE9DK,EAAS,IAAI,kBAAkB,IAAI,EAGnC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,yEAAyEW,CAAU,EACrF,CACF,CACF,CACF,CAAC,EAEDN,EAAG,kDAAmD,SAAY,CAEhEK,EAAS,IAAI,kBAAkB,CAAC,CAAC,EAGjC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,yEAAyEW,CAAU,EACrF,CACF,CACF,CACF,CAAC,EAEDN,EAAG,qDAAsD,SAAY,CAEnEK,EAAS,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAGrC,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,yEAAyEW,CAAU,EACrF,CACF,CACF,CACF,CAAC,EAEDN,EAAG,wDAAyD,SAAY,CAEtEK,EAAS,IAAI,kBAAkB,IAAI,MAAM,SAAS,CAAC,EAGnD,MAAMI,EAAS,MAAML,EAAW,iCAAiC,CAC/D,WAAAE,CACF,CAAC,EAGDP,EAAOU,CAAM,EAAE,QACbd,EACE,IAAI,MACF,6EACF,CACF,CACF,CACF,CAAC,CACH,CAAC",
6
6
  "names": ["Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "HttpLifiDataSource", "mockLoggerFactory", "datasource", "httpMock", "templateId", "config", "response0", "result"]
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HttpLifiDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/lifi/data/HttpLifiDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGrF,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,EACjC,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,qBACa,kBAAmB,YAAW,cAAc;IAKrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAIvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,OAAO,CAAC,MAAM,CAAyB;gBAIpB,MAAM,EAAE,0BAA0B,EAEnD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,EAErC,IAAI,EAAE,gBAAgB;IAK5B,gCAAgC,CAAC,EAC5C,UAAU,GACX,EAAE,+BAA+B,GAAG,OAAO,CAC1C,MAAM,CAAC,KAAK,EAAE,iCAAiC,CAAC,CACjD;CA2EF"}
1
+ {"version":3,"file":"HttpLifiDataSource.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/solana/lifi/data/HttpLifiDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAe,MAAM,WAAW,CAAC;AAGhD,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGrF,OAAO,EACL,+BAA+B,EAC/B,iCAAiC,EACjC,cAAc,EACf,MAAM,kBAAkB,CAAC;AAE1B,qBACa,kBAAmB,YAAW,cAAc;IAKrD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAIvB,OAAO,CAAC,QAAQ,CAAC,IAAI;IARvB,OAAO,CAAC,MAAM,CAAyB;gBAIpB,MAAM,EAAE,0BAA0B,EAEnD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,EAErC,IAAI,EAAE,gBAAgB;IAK5B,gCAAgC,CAAC,EAC5C,UAAU,GACX,EAAE,+BAA+B,GAAG,OAAO,CAC1C,MAAM,CAAC,KAAK,EAAE,iCAAiC,CAAC,CACjD;CAwEF"}