@ledgerhq/context-module 0.0.0-develop-20260105001119 → 0.0.0-develop-20260107000932

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 (79) hide show
  1. package/lib/cjs/package.json +1 -1
  2. package/lib/cjs/src/ContextModuleBuilder.js +1 -1
  3. package/lib/cjs/src/ContextModuleBuilder.js.map +3 -3
  4. package/lib/cjs/src/ContextModuleBuilder.test.js +1 -1
  5. package/lib/cjs/src/ContextModuleBuilder.test.js.map +3 -3
  6. package/lib/cjs/src/DefaultContextModule.test.js +1 -1
  7. package/lib/cjs/src/DefaultContextModule.test.js.map +3 -3
  8. package/lib/cjs/src/config/di/configTypes.js +1 -1
  9. package/lib/cjs/src/config/di/configTypes.js.map +2 -2
  10. package/lib/cjs/src/config/model/ContextModuleBuildArgs.js +1 -1
  11. package/lib/cjs/src/config/model/ContextModuleBuildArgs.js.map +1 -1
  12. package/lib/cjs/src/config/model/ContextModuleConfig.js +1 -1
  13. package/lib/cjs/src/config/model/ContextModuleConfig.js.map +1 -1
  14. package/lib/cjs/src/di.js +1 -1
  15. package/lib/cjs/src/di.js.map +3 -3
  16. package/lib/cjs/src/shared/utils/NullLoggerFactory.js +2 -0
  17. package/lib/cjs/src/shared/utils/NullLoggerFactory.js.map +7 -0
  18. package/lib/cjs/src/shared/utils/NullLoggerFactory.test.js +2 -0
  19. package/lib/cjs/src/shared/utils/NullLoggerFactory.test.js.map +7 -0
  20. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  21. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  22. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  23. package/lib/cjs/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  24. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
  25. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
  26. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  27. package/lib/cjs/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  28. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
  29. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.js.map +3 -3
  30. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js +1 -1
  31. package/lib/cjs/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +3 -3
  32. package/lib/esm/package.json +1 -1
  33. package/lib/esm/src/ContextModuleBuilder.js +1 -1
  34. package/lib/esm/src/ContextModuleBuilder.js.map +3 -3
  35. package/lib/esm/src/ContextModuleBuilder.test.js +1 -1
  36. package/lib/esm/src/ContextModuleBuilder.test.js.map +3 -3
  37. package/lib/esm/src/DefaultContextModule.test.js +1 -1
  38. package/lib/esm/src/DefaultContextModule.test.js.map +3 -3
  39. package/lib/esm/src/config/di/configTypes.js +1 -1
  40. package/lib/esm/src/config/di/configTypes.js.map +2 -2
  41. package/lib/esm/src/di.js +1 -1
  42. package/lib/esm/src/di.js.map +3 -3
  43. package/lib/esm/src/shared/utils/NullLoggerFactory.js +2 -0
  44. package/lib/esm/src/shared/utils/NullLoggerFactory.js.map +7 -0
  45. package/lib/esm/src/shared/utils/NullLoggerFactory.test.js +2 -0
  46. package/lib/esm/src/shared/utils/NullLoggerFactory.test.js.map +7 -0
  47. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js +1 -1
  48. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.js.map +3 -3
  49. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js +1 -1
  50. package/lib/esm/src/solana/domain/DefaultSolanaContextLoader.test.js.map +3 -3
  51. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js +1 -1
  52. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.js.map +3 -3
  53. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js +1 -1
  54. package/lib/esm/src/solanaLifi/domain/SolanaLifiContextLoader.test.js.map +3 -3
  55. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js +1 -1
  56. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.js.map +3 -3
  57. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js +1 -1
  58. package/lib/esm/src/solanaToken/domain/SolanaTokenContextLoader.test.js.map +3 -3
  59. package/lib/types/src/ContextModuleBuilder.d.ts +9 -1
  60. package/lib/types/src/ContextModuleBuilder.d.ts.map +1 -1
  61. package/lib/types/src/config/di/configTypes.d.ts +1 -0
  62. package/lib/types/src/config/di/configTypes.d.ts.map +1 -1
  63. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts +2 -0
  64. package/lib/types/src/config/model/ContextModuleBuildArgs.d.ts.map +1 -1
  65. package/lib/types/src/config/model/ContextModuleConfig.d.ts +2 -0
  66. package/lib/types/src/config/model/ContextModuleConfig.d.ts.map +1 -1
  67. package/lib/types/src/di.d.ts.map +1 -1
  68. package/lib/types/src/shared/utils/NullLoggerFactory.d.ts +3 -0
  69. package/lib/types/src/shared/utils/NullLoggerFactory.d.ts.map +1 -0
  70. package/lib/types/src/shared/utils/NullLoggerFactory.test.d.ts +2 -0
  71. package/lib/types/src/shared/utils/NullLoggerFactory.test.d.ts.map +1 -0
  72. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts +3 -1
  73. package/lib/types/src/solana/domain/DefaultSolanaContextLoader.d.ts.map +1 -1
  74. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts +3 -1
  75. package/lib/types/src/solanaLifi/domain/SolanaLifiContextLoader.d.ts.map +1 -1
  76. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts +3 -2
  77. package/lib/types/src/solanaToken/domain/SolanaTokenContextLoader.d.ts.map +1 -1
  78. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  79. package/package.json +5 -5
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/solanaToken/domain/SolanaTokenContextLoader.test.ts"],
4
- "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport type { PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { SolanaContextTypes } from \"@/shared/model/SolanaContextTypes\";\nimport type { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport {\n type SolanaTokenDataSource,\n type TokenDataResponse,\n} from \"@/solanaToken/data/SolanaTokenDataSource\";\n\nimport { SolanaTokenContextLoader } from \"./SolanaTokenContextLoader\";\n\ndescribe(\"SolanaTokenContextLoader\", () => {\n let mockDataSource: SolanaTokenDataSource;\n let mockCertLoader: PkiCertificateLoader;\n\n const bytes = new Uint8Array([0xf0, 0xca, 0xcc, 0x1a]);\n\n const tokenDataResponse: TokenDataResponse = {\n descriptor: {\n // The loader just forwards this; exact shape isn't important for the test\n data: { symbol: \"SOL\", name: \"Solana\", decimals: 9 } as any,\n signatures: {\n prod: \"prod-sig\",\n test: \"test-sig\",\n } as any,\n },\n } as any;\n\n const baseCtx = {\n tokenInternalId: \"token-1\",\n deviceModelId: DeviceModelId.FLEX,\n };\n\n beforeEach(() => {\n vi.restoreAllMocks();\n\n mockDataSource = {\n getTokenInfosPayload: vi.fn(),\n } as unknown as SolanaTokenDataSource;\n\n mockCertLoader = {\n loadCertificate: vi.fn(),\n } as unknown as PkiCertificateLoader;\n });\n\n const makeLoader = (mode?: string) => {\n const config = { cal: { mode } } as unknown as ContextModuleConfig;\n return new SolanaTokenContextLoader(mockDataSource, config, mockCertLoader);\n };\n\n describe(\"canHandle\", () => {\n it(\"returns true when tokenInternalId is provided\", () => {\n const loader = makeLoader(\"prod\");\n\n expect(\n loader.canHandle(\n {\n tokenInternalId: \"abc123\",\n } as SolanaTransactionContext,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(true);\n });\n\n it(\"returns false when tokenInternalId is missing or falsy\", () => {\n const loader = makeLoader(\"prod\");\n\n expect(\n loader.canHandle(\n { tokenInternalId: \"\" } as any,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(false);\n expect(\n loader.canHandle(\n { tokenInternalId: undefined } as any,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(false);\n expect(loader.canHandle({} as any, SolanaContextTypes.SOLANA_TOKEN)).toBe(\n false,\n );\n });\n });\n\n describe(\"loadField\", () => {\n it(\"returns an error when datasource returns Left(error) (certificate still retrieved)\", async () => {\n const loader = makeLoader(\"prod\");\n const error = new Error(\"datasource failed\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(error),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 0,\n payload: bytes,\n });\n\n const result = await loader.loadField(baseCtx);\n\n expect(mockDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n tokenInternalId: \"token-1\",\n });\n expect(mockCertLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: \"token_metadata_key\",\n keyUsage: KeyUsage.CoinMeta,\n targetDevice: baseCtx.deviceModelId,\n });\n expect(result).toEqual({\n type: SolanaContextTypes.ERROR,\n error,\n });\n });\n\n it(\"returns SOLANA_TOKEN with prod signature by default (falsy mode) and includes certificate\", async () => {\n const loader = makeLoader(\"\"); // falsy -> default 'prod'\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 0,\n payload: bytes,\n });\n\n const result = await loader.loadField({\n ...baseCtx,\n tokenInternalId: \"token-2\",\n });\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n },\n certificate: { keyUsageNumber: 0, payload: bytes },\n });\n });\n\n it(\"returns SOLANA_TOKEN with signature matching config.cal.mode\", async () => {\n const loader = makeLoader(\"test\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 1,\n payload: bytes,\n });\n\n const result = await loader.loadField({\n ...baseCtx,\n tokenInternalId: \"token-3\",\n });\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"test-sig\",\n },\n },\n certificate: { keyUsageNumber: 1, payload: bytes },\n });\n });\n\n it(\"works even if certificate loader returns undefined (certificate omitted)\", async () => {\n const loader = makeLoader(\"prod\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue(undefined);\n\n const result = await loader.loadField(baseCtx);\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n },\n certificate: undefined,\n });\n });\n });\n\n describe(\"pluckTokenData (private)\", () => {\n it(\"picks the signature for the configured mode\", () => {\n const loader = makeLoader(\"test\");\n const pluck = (loader as any).pluckTokenData.bind(loader);\n\n const result = pluck(tokenDataResponse);\n\n expect(result).toEqual({\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"test-sig\",\n },\n });\n });\n\n it(\"falls back to 'prod' when config.cal.mode is falsy\", () => {\n const loader = makeLoader(undefined as any);\n const result = (loader as any).pluckTokenData(tokenDataResponse);\n\n expect(result).toEqual({\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n });\n });\n });\n});\n"],
5
- "mappings": "AAIA,OAAS,iBAAAA,MAAqB,kCAC9B,OAAS,QAAAC,EAAM,SAAAC,MAAa,YAC5B,OAAS,cAAAC,EAAY,YAAAC,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIrD,OAAS,YAAAC,MAAgB,uBACzB,OAAS,sBAAAC,MAA0B,oCAOnC,OAAS,4BAAAC,MAAgC,6BAEzCN,EAAS,2BAA4B,IAAM,CACzC,IAAIO,EACAC,EAEJ,MAAMC,EAAQ,IAAI,WAAW,CAAC,IAAM,IAAM,IAAM,EAAI,CAAC,EAE/CC,EAAuC,CAC3C,WAAY,CAEV,KAAM,CAAE,OAAQ,MAAO,KAAM,SAAU,SAAU,CAAE,EACnD,WAAY,CACV,KAAM,WACN,KAAM,UACR,CACF,CACF,EAEMC,EAAU,CACd,gBAAiB,UACjB,cAAef,EAAc,IAC/B,EAEAG,EAAW,IAAM,CACfI,EAAG,gBAAgB,EAEnBI,EAAiB,CACf,qBAAsBJ,EAAG,GAAG,CAC9B,EAEAK,EAAiB,CACf,gBAAiBL,EAAG,GAAG,CACzB,CACF,CAAC,EAED,MAAMS,EAAcC,GAAkB,CACpC,MAAMC,EAAS,CAAE,IAAK,CAAE,KAAAD,CAAK,CAAE,EAC/B,OAAO,IAAIP,EAAyBC,EAAgBO,EAAQN,CAAc,CAC5E,EAEAR,EAAS,YAAa,IAAM,CAC1BE,EAAG,gDAAiD,IAAM,CACxD,MAAMa,EAASH,EAAW,MAAM,EAEhCX,EACEc,EAAO,UACL,CACE,gBAAiB,QACnB,EACAV,EAAmB,YACrB,CACF,EAAE,KAAK,EAAI,CACb,CAAC,EAEDH,EAAG,yDAA0D,IAAM,CACjE,MAAMa,EAASH,EAAW,MAAM,EAEhCX,EACEc,EAAO,UACL,CAAE,gBAAiB,EAAG,EACtBV,EAAmB,YACrB,CACF,EAAE,KAAK,EAAK,EACZJ,EACEc,EAAO,UACL,CAAE,gBAAiB,MAAU,EAC7BV,EAAmB,YACrB,CACF,EAAE,KAAK,EAAK,EACZJ,EAAOc,EAAO,UAAU,CAAC,EAAUV,EAAmB,YAAY,CAAC,EAAE,KACnE,EACF,CACF,CAAC,CACH,CAAC,EAEDL,EAAS,YAAa,IAAM,CAC1BE,EAAG,qFAAsF,SAAY,CACnG,MAAMa,EAASH,EAAW,MAAM,EAC1BI,EAAQ,IAAI,MAAM,mBAAmB,EAE3Cb,EAAG,MAAMI,EAAgB,sBAAsB,EAAE,kBAC/CV,EAAKmB,CAAK,CACZ,EACAb,EAAG,MAAMK,EAAgB,iBAAiB,EAAE,kBAAkB,CAC5D,eAAgB,EAChB,QAASC,CACX,CAAC,EAED,MAAMQ,EAAS,MAAMF,EAAO,UAAUJ,CAAO,EAE7CV,EAAOM,EAAe,oBAAoB,EAAE,qBAAqB,CAC/D,gBAAiB,SACnB,CAAC,EACDN,EAAOO,EAAe,eAAe,EAAE,qBAAqB,CAC1D,MAAO,qBACP,SAAUJ,EAAS,SACnB,aAAcO,EAAQ,aACxB,CAAC,EACDV,EAAOgB,CAAM,EAAE,QAAQ,CACrB,KAAMZ,EAAmB,MACzB,MAAAW,CACF,CAAC,CACH,CAAC,EAEDd,EAAG,4FAA6F,SAAY,CAC1G,MAAMa,EAASH,EAAW,EAAE,EAE5BT,EAAG,MAAMI,EAAgB,sBAAsB,EAAE,kBAC/CT,EAAMY,CAAiB,CACzB,EACAP,EAAG,MAAMK,EAAgB,iBAAiB,EAAE,kBAAkB,CAC5D,eAAgB,EAChB,QAASC,CACX,CAAC,EAED,MAAMQ,EAAS,MAAMF,EAAO,UAAU,CACpC,GAAGJ,EACH,gBAAiB,SACnB,CAAC,EAEDV,EAAOgB,CAAM,EAAE,QAAQ,CACrB,KAAMZ,EAAmB,aACzB,QAAS,CACP,sBAAuB,CACrB,KAAMK,EAAkB,WAAW,KACnC,UAAW,UACb,CACF,EACA,YAAa,CAAE,eAAgB,EAAG,QAASD,CAAM,CACnD,CAAC,CACH,CAAC,EAEDP,EAAG,+DAAgE,SAAY,CAC7E,MAAMa,EAASH,EAAW,MAAM,EAEhCT,EAAG,MAAMI,EAAgB,sBAAsB,EAAE,kBAC/CT,EAAMY,CAAiB,CACzB,EACAP,EAAG,MAAMK,EAAgB,iBAAiB,EAAE,kBAAkB,CAC5D,eAAgB,EAChB,QAASC,CACX,CAAC,EAED,MAAMQ,EAAS,MAAMF,EAAO,UAAU,CACpC,GAAGJ,EACH,gBAAiB,SACnB,CAAC,EAEDV,EAAOgB,CAAM,EAAE,QAAQ,CACrB,KAAMZ,EAAmB,aACzB,QAAS,CACP,sBAAuB,CACrB,KAAMK,EAAkB,WAAW,KACnC,UAAW,UACb,CACF,EACA,YAAa,CAAE,eAAgB,EAAG,QAASD,CAAM,CACnD,CAAC,CACH,CAAC,EAEDP,EAAG,2EAA4E,SAAY,CACzF,MAAMa,EAASH,EAAW,MAAM,EAEhCT,EAAG,MAAMI,EAAgB,sBAAsB,EAAE,kBAC/CT,EAAMY,CAAiB,CACzB,EACAP,EAAG,MAAMK,EAAgB,iBAAiB,EAAE,kBAAkB,MAAS,EAEvE,MAAMS,EAAS,MAAMF,EAAO,UAAUJ,CAAO,EAE7CV,EAAOgB,CAAM,EAAE,QAAQ,CACrB,KAAMZ,EAAmB,aACzB,QAAS,CACP,sBAAuB,CACrB,KAAMK,EAAkB,WAAW,KACnC,UAAW,UACb,CACF,EACA,YAAa,MACf,CAAC,CACH,CAAC,CACH,CAAC,EAEDV,EAAS,2BAA4B,IAAM,CACzCE,EAAG,8CAA+C,IAAM,CACtD,MAAMa,EAASH,EAAW,MAAM,EAG1BK,EAFSF,EAAe,eAAe,KAAKA,CAAM,EAEnCL,CAAiB,EAEtCT,EAAOgB,CAAM,EAAE,QAAQ,CACrB,sBAAuB,CACrB,KAAMP,EAAkB,WAAW,KACnC,UAAW,UACb,CACF,CAAC,CACH,CAAC,EAEDR,EAAG,qDAAsD,IAAM,CAE7D,MAAMe,EADSL,EAAW,MAAgB,EACX,eAAeF,CAAiB,EAE/DT,EAAOgB,CAAM,EAAE,QAAQ,CACrB,sBAAuB,CACrB,KAAMP,EAAkB,WAAW,KACnC,UAAW,UACb,CACF,CAAC,CACH,CAAC,CACH,CAAC,CACH,CAAC",
6
- "names": ["DeviceModelId", "Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "KeyUsage", "SolanaContextTypes", "SolanaTokenContextLoader", "mockDataSource", "mockCertLoader", "bytes", "tokenDataResponse", "baseCtx", "makeLoader", "mode", "config", "loader", "error", "result"]
4
+ "sourcesContent": ["/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\nimport { DeviceModelId } from \"@ledgerhq/device-management-kit\";\nimport { Left, Right } from \"purify-ts\";\nimport { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { type ContextModuleConfig } from \"@/config/model/ContextModuleConfig\";\nimport type { PkiCertificateLoader } from \"@/pki/domain/PkiCertificateLoader\";\nimport { KeyUsage } from \"@/pki/model/KeyUsage\";\nimport { SolanaContextTypes } from \"@/shared/model/SolanaContextTypes\";\nimport { NullLoggerFactory } from \"@/shared/utils/NullLoggerFactory\";\nimport type { SolanaTransactionContext } from \"@/solana/domain/solanaContextTypes\";\nimport {\n type SolanaTokenDataSource,\n type TokenDataResponse,\n} from \"@/solanaToken/data/SolanaTokenDataSource\";\n\nimport { SolanaTokenContextLoader } from \"./SolanaTokenContextLoader\";\n\ndescribe(\"SolanaTokenContextLoader\", () => {\n let mockDataSource: SolanaTokenDataSource;\n let mockCertLoader: PkiCertificateLoader;\n\n const bytes = new Uint8Array([0xf0, 0xca, 0xcc, 0x1a]);\n\n const tokenDataResponse: TokenDataResponse = {\n descriptor: {\n // The loader just forwards this; exact shape isn't important for the test\n data: { symbol: \"SOL\", name: \"Solana\", decimals: 9 } as any,\n signatures: {\n prod: \"prod-sig\",\n test: \"test-sig\",\n } as any,\n },\n } as any;\n\n const baseCtx = {\n tokenInternalId: \"token-1\",\n deviceModelId: DeviceModelId.FLEX,\n };\n\n beforeEach(() => {\n vi.restoreAllMocks();\n\n mockDataSource = {\n getTokenInfosPayload: vi.fn(),\n } as unknown as SolanaTokenDataSource;\n\n mockCertLoader = {\n loadCertificate: vi.fn(),\n } as unknown as PkiCertificateLoader;\n });\n\n const makeLoader = (mode?: string) => {\n const config = { cal: { mode } } as unknown as ContextModuleConfig;\n return new SolanaTokenContextLoader(\n mockDataSource,\n config,\n mockCertLoader,\n NullLoggerFactory,\n );\n };\n\n describe(\"canHandle\", () => {\n it(\"returns true when tokenInternalId is provided\", () => {\n const loader = makeLoader(\"prod\");\n\n expect(\n loader.canHandle(\n {\n tokenInternalId: \"abc123\",\n } as SolanaTransactionContext,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(true);\n });\n\n it(\"returns false when tokenInternalId is missing or falsy\", () => {\n const loader = makeLoader(\"prod\");\n\n expect(\n loader.canHandle(\n { tokenInternalId: \"\" } as any,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(false);\n expect(\n loader.canHandle(\n { tokenInternalId: undefined } as any,\n SolanaContextTypes.SOLANA_TOKEN,\n ),\n ).toBe(false);\n expect(loader.canHandle({} as any, SolanaContextTypes.SOLANA_TOKEN)).toBe(\n false,\n );\n });\n });\n\n describe(\"loadField\", () => {\n it(\"returns an error when datasource returns Left(error) (certificate still retrieved)\", async () => {\n const loader = makeLoader(\"prod\");\n const error = new Error(\"datasource failed\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Left(error),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 0,\n payload: bytes,\n });\n\n const result = await loader.loadField(baseCtx);\n\n expect(mockDataSource.getTokenInfosPayload).toHaveBeenCalledWith({\n tokenInternalId: \"token-1\",\n });\n expect(mockCertLoader.loadCertificate).toHaveBeenCalledWith({\n keyId: \"token_metadata_key\",\n keyUsage: KeyUsage.CoinMeta,\n targetDevice: baseCtx.deviceModelId,\n });\n expect(result).toEqual({\n type: SolanaContextTypes.ERROR,\n error,\n });\n });\n\n it(\"returns SOLANA_TOKEN with prod signature by default (falsy mode) and includes certificate\", async () => {\n const loader = makeLoader(\"\"); // falsy -> default 'prod'\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 0,\n payload: bytes,\n });\n\n const result = await loader.loadField({\n ...baseCtx,\n tokenInternalId: \"token-2\",\n });\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n },\n certificate: { keyUsageNumber: 0, payload: bytes },\n });\n });\n\n it(\"returns SOLANA_TOKEN with signature matching config.cal.mode\", async () => {\n const loader = makeLoader(\"test\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue({\n keyUsageNumber: 1,\n payload: bytes,\n });\n\n const result = await loader.loadField({\n ...baseCtx,\n tokenInternalId: \"token-3\",\n });\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"test-sig\",\n },\n },\n certificate: { keyUsageNumber: 1, payload: bytes },\n });\n });\n\n it(\"works even if certificate loader returns undefined (certificate omitted)\", async () => {\n const loader = makeLoader(\"prod\");\n\n vi.spyOn(mockDataSource, \"getTokenInfosPayload\").mockResolvedValue(\n Right(tokenDataResponse),\n );\n vi.spyOn(mockCertLoader, \"loadCertificate\").mockResolvedValue(undefined);\n\n const result = await loader.loadField(baseCtx);\n\n expect(result).toEqual({\n type: SolanaContextTypes.SOLANA_TOKEN,\n payload: {\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n },\n certificate: undefined,\n });\n });\n });\n\n describe(\"pluckTokenData (private)\", () => {\n it(\"picks the signature for the configured mode\", () => {\n const loader = makeLoader(\"test\");\n const pluck = (loader as any).pluckTokenData.bind(loader);\n\n const result = pluck(tokenDataResponse);\n\n expect(result).toEqual({\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"test-sig\",\n },\n });\n });\n\n it(\"falls back to 'prod' when config.cal.mode is falsy\", () => {\n const loader = makeLoader(undefined as any);\n const result = (loader as any).pluckTokenData(tokenDataResponse);\n\n expect(result).toEqual({\n solanaTokenDescriptor: {\n data: tokenDataResponse.descriptor.data,\n signature: \"prod-sig\",\n },\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["DeviceModelId", "Left", "Right", "beforeEach", "describe", "expect", "it", "vi", "KeyUsage", "SolanaContextTypes", "NullLoggerFactory", "SolanaTokenContextLoader", "mockDataSource", "mockCertLoader", "bytes", "tokenDataResponse", "baseCtx", "makeLoader", "mode", "config", "loader", "error", "result"]
7
7
  }
@@ -1,3 +1,4 @@
1
+ import { type LoggerPublisherService } from "@ledgerhq/device-management-kit";
1
2
  import { type ContextModuleConstructorArgs } from "./config/model/ContextModuleBuildArgs";
2
3
  import { type ContextModuleCalConfig, type ContextModuleConfig, type ContextModuleDatasourceConfig, type ContextModuleMetadataServiceConfig, type ContextModuleWeb3ChecksConfig } from "./config/model/ContextModuleConfig";
3
4
  import { type ContextLoader } from "./shared/domain/ContextLoader";
@@ -8,7 +9,7 @@ export declare const DEFAULT_CONFIG: ContextModuleConfig;
8
9
  export declare class ContextModuleBuilder {
9
10
  private config;
10
11
  private originToken?;
11
- constructor({ originToken }?: ContextModuleConstructorArgs);
12
+ constructor({ originToken, loggerFactory, }?: ContextModuleConstructorArgs);
12
13
  /**
13
14
  * Remove default loaders from the list of loaders
14
15
  *
@@ -64,6 +65,13 @@ export declare class ContextModuleBuilder {
64
65
  * @returns this
65
66
  */
66
67
  setDatasourceConfig(datasourceConfig: ContextModuleDatasourceConfig): this;
68
+ /**
69
+ * Set a custom logger factory
70
+ *
71
+ * @param loggerFactory
72
+ * @returns this
73
+ */
74
+ setLoggerFactory(loggerFactory: (tag: string) => LoggerPublisherService): this;
67
75
  /**
68
76
  * Build the context module
69
77
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ContextModuleBuilder.d.ts","sourceRoot":"","sources":["../../../src/ContextModuleBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EACnC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOrD,eAAO,MAAM,cAAc,EAAE,mBAkB5B,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,EAAE,WAAW,EAAE,GAAE,4BAAiC;IAI9D;;;;OAIG;IACH,oBAAoB;IAKpB;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa;IAK/B;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,sBAAsB;IAKjD;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,mBAAmB;IAK3C;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,sBAAsB;IAK9C;;;;;OAKG;IACH,wBAAwB,CACtB,qBAAqB,EAAE,kCAAkC;IAM3D;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,6BAA6B;IAKnE;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,6BAA6B;IAKnE;;;;OAIG;IACH,KAAK,IAAI,aAAa;CAIvB"}
1
+ {"version":3,"file":"ContextModuleBuilder.d.ts","sourceRoot":"","sources":["../../../src/ContextModuleBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAC1F,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,6BAA6B,EAClC,KAAK,kCAAkC,EACvC,KAAK,6BAA6B,EACnC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAOrD,eAAO,MAAM,cAAc,EAAE,mBAmB5B,CAAC;AAEF,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAuC;IACrD,OAAO,CAAC,WAAW,CAAC,CAAS;gBAEjB,EACV,WAAW,EACX,aAAa,GACd,GAAE,4BAAiC;IAQpC;;;;OAIG;IACH,oBAAoB;IAKpB;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa;IAK/B;;;;;OAKG;IACH,kBAAkB,CAAC,MAAM,EAAE,sBAAsB;IAKjD;;;;;OAKG;IACH,eAAe,CAAC,MAAM,EAAE,mBAAmB;IAK3C;;;;;OAKG;IACH,YAAY,CAAC,SAAS,EAAE,sBAAsB;IAK9C;;;;;OAKG;IACH,wBAAwB,CACtB,qBAAqB,EAAE,kCAAkC;IAM3D;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,6BAA6B;IAKnE;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,EAAE,6BAA6B;IAKnE;;;;;OAKG;IACH,gBAAgB,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAKvE;;;;OAIG;IACH,KAAK,IAAI,aAAa;CAIvB"}
@@ -1,5 +1,6 @@
1
1
  export declare const configTypes: {
2
2
  Config: symbol;
3
3
  OriginToken: symbol;
4
+ ContextModuleLoggerFactory: symbol;
4
5
  };
5
6
  //# sourceMappingURL=configTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configTypes.d.ts","sourceRoot":"","sources":["../../../../../src/config/di/configTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;CAGvB,CAAC"}
1
+ {"version":3,"file":"configTypes.d.ts","sourceRoot":"","sources":["../../../../../src/config/di/configTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;CAIvB,CAAC"}
@@ -1,4 +1,6 @@
1
+ import { type LoggerPublisherService } from "@ledgerhq/device-management-kit";
1
2
  export type ContextModuleConstructorArgs = {
2
3
  originToken?: string;
4
+ loggerFactory?: (tag: string) => LoggerPublisherService;
3
5
  };
4
6
  //# sourceMappingURL=ContextModuleBuildArgs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextModuleBuildArgs.d.ts","sourceRoot":"","sources":["../../../../../src/config/model/ContextModuleBuildArgs.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC"}
1
+ {"version":3,"file":"ContextModuleBuildArgs.d.ts","sourceRoot":"","sources":["../../../../../src/config/model/ContextModuleBuildArgs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E,MAAM,MAAM,4BAA4B,GAAG;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;CACzD,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type LoggerPublisherService } from "@ledgerhq/device-management-kit";
1
2
  import { type ContextFieldLoader } from "../../shared/domain/ContextFieldLoader";
2
3
  import { type ContextLoader } from "../../shared/domain/ContextLoader";
3
4
  import { type SolanaContextLoader } from "../../solana/domain/SolanaContextLoader";
@@ -26,6 +27,7 @@ export type ContextModuleConfig = {
26
27
  defaultFieldLoaders: boolean;
27
28
  customFieldLoaders: ContextFieldLoader[];
28
29
  customLoaders: ContextLoader[];
30
+ loggerFactory: (tag: string) => LoggerPublisherService;
29
31
  customTypedDataLoader?: TypedDataContextLoader;
30
32
  customSolanaLoader?: SolanaContextLoader;
31
33
  originToken?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ContextModuleConfig.d.ts","sourceRoot":"","sources":["../../../../../src/config/model/ContextModuleConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEzF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AACnD,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,sBAAsB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,sBAAsB,CAAC;IAC5B,UAAU,EAAE,6BAA6B,CAAC;IAC1C,qBAAqB,EAAE,kCAAkC,CAAC;IAC1D,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,6BAA6B,CAAC;CAC5C,CAAC"}
1
+ {"version":3,"file":"ContextModuleConfig.d.ts","sourceRoot":"","sources":["../../../../../src/config/model/ContextModuleConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,4CAA4C,CAAC;AAEzF,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,CAAC;AACnD,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE9D,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,EAAE,sBAAsB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG;IAC/C,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,EAAE,sBAAsB,CAAC;IAC5B,UAAU,EAAE,6BAA6B,CAAC;IAC1C,qBAAqB,EAAE,kCAAkC,CAAC;IAC1D,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,kBAAkB,EAAE,CAAC;IACzC,aAAa,EAAE,aAAa,EAAE,CAAC;IAC/B,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,CAAC;IACvD,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,kBAAkB,CAAC,EAAE,mBAAmB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,6BAA6B,CAAC;CAC5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../../../src/di.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAItC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAgB9E,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,YAAY,iBAAiB,cAuB1D,CAAC"}
1
+ {"version":3,"file":"di.d.ts","sourceRoot":"","sources":["../../../src/di.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAKtC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAgB9E,KAAK,iBAAiB,GAAG;IACvB,MAAM,EAAE,mBAAmB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,YAAY,iBAAiB,cA+B1D,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { LoggerPublisherService } from "@ledgerhq/device-management-kit";
2
+ export declare const NullLoggerFactory: (tag: string) => LoggerPublisherService;
3
+ //# sourceMappingURL=NullLoggerFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NullLoggerFactory.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/NullLoggerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9E,eAAO,MAAM,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAgB/C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NullLoggerFactory.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NullLoggerFactory.test.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/NullLoggerFactory.test.ts"],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import { LoggerPublisherService } from "@ledgerhq/device-management-kit";
1
2
  import { type PkiCertificateLoader } from "../../pki/domain/PkiCertificateLoader";
2
3
  import { type SolanaDataSource } from "../../solana/data/SolanaDataSource";
3
4
  import { SolanaTokenContextLoader } from "../../solanaToken/domain/SolanaTokenContextLoader";
@@ -7,7 +8,8 @@ export declare class DefaultSolanaContextLoader implements SolanaContextLoader {
7
8
  private readonly _dataSource;
8
9
  private readonly _certificateLoader;
9
10
  private readonly _solanaTokenLoader;
10
- constructor(_dataSource: SolanaDataSource, _certificateLoader: PkiCertificateLoader, _solanaTokenLoader: SolanaTokenContextLoader);
11
+ private logger;
12
+ constructor(_dataSource: SolanaDataSource, _certificateLoader: PkiCertificateLoader, _solanaTokenLoader: SolanaTokenContextLoader, loggerFactory: (tag: string) => LoggerPublisherService);
11
13
  load(solanaContext: SolanaTransactionContext): Promise<SolanaTransactionContextResult>;
12
14
  }
13
15
  //# sourceMappingURL=DefaultSolanaContextLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultSolanaContextLoader.d.ts","sourceRoot":"","sources":["../../../../../src/solana/domain/DefaultSolanaContextLoader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAM9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAEzF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,qBACa,0BAA2B,YAAW,mBAAmB;IAGlE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAJlB,WAAW,EAAE,gBAAgB,EAE7B,kBAAkB,EAAE,oBAAoB,EAExC,kBAAkB,EAAE,wBAAwB;IAKzD,IAAI,CACR,aAAa,EAAE,wBAAwB,GACtC,OAAO,CAAC,8BAA8B,CAAC;CA6D3C"}
1
+ {"version":3,"file":"DefaultSolanaContextLoader.d.ts","sourceRoot":"","sources":["../../../../../src/solana/domain/DefaultSolanaContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAMzE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAM9E,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAKvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAEzF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,wBAAwB,EACxB,8BAA8B,EAC/B,MAAM,sBAAsB,CAAC;AAE9B,qBACa,0BAA2B,YAAW,mBAAmB;IAKlE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IARrC,OAAO,CAAC,MAAM,CAAyB;gBAIpB,WAAW,EAAE,gBAAgB,EAE7B,kBAAkB,EAAE,oBAAoB,EAExC,kBAAkB,EAAE,wBAAwB,EAE7D,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAOlD,IAAI,CACR,aAAa,EAAE,wBAAwB,GACtC,OAAO,CAAC,8BAA8B,CAAC;CAgE3C"}
@@ -1,3 +1,4 @@
1
+ import { LoggerPublisherService } from "@ledgerhq/device-management-kit";
1
2
  import { ContextFieldLoader } from "../../shared/domain/ContextFieldLoader";
2
3
  import { SolanaContextTypes, SolanaLifiContextResult } from "../../shared/model/SolanaContextTypes";
3
4
  import { SolanaTransactionContext } from "../../solana/domain/solanaContextTypes";
@@ -7,7 +8,8 @@ type SolanaLifiFieldInput = SolanaTransactionContext & {
7
8
  };
8
9
  export declare class SolanaLifiContextLoader implements ContextFieldLoader<SolanaLifiFieldInput, SolanaContextTypes, SolanaLifiContextResult> {
9
10
  private readonly dataSource;
10
- constructor(dataSource: SolanaLifiDataSource);
11
+ private logger;
12
+ constructor(dataSource: SolanaLifiDataSource, loggerFactory: (tag: string) => LoggerPublisherService);
11
13
  canHandle(field: unknown, expectedType: SolanaContextTypes): field is SolanaLifiFieldInput;
12
14
  loadField(solanaTokenContextInput: SolanaLifiFieldInput): Promise<SolanaLifiContextResult>;
13
15
  private pluckTransactionData;
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaLifiContextLoader.d.ts","sourceRoot":"","sources":["../../../../../src/solanaLifi/domain/SolanaLifiContextLoader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,wCAAwC,CAAC;AAGhD,KAAK,oBAAoB,GAAG,wBAAwB,GAAG;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBACa,uBACX,YACE,kBAAkB,CAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,CACxB;IAID,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,oBAAoB;IAG5C,SAAS,CACd,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,kBAAkB,GAC/B,KAAK,IAAI,oBAAoB;IAWnB,SAAS,CACpB,uBAAuB,EAAE,oBAAoB,GAC5C,OAAO,CAAC,uBAAuB,CAAC;IAmBnC,OAAO,CAAC,oBAAoB;CAO7B"}
1
+ {"version":3,"file":"SolanaLifiContextLoader.d.ts","sourceRoot":"","sources":["../../../../../src/solanaLifi/domain/SolanaLifiContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAIzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EAExB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,wCAAwC,CAAC;AAGhD,KAAK,oBAAoB,GAAG,wBAAwB,GAAG;IACrD,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,qBACa,uBACX,YACE,kBAAkB,CAChB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,CACxB;IAMD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,MAAM,CAAyB;gBAIpB,UAAU,EAAE,oBAAoB,EAEjD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAKjD,SAAS,CACd,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,kBAAkB,GAC/B,KAAK,IAAI,oBAAoB;IAWnB,SAAS,CACpB,uBAAuB,EAAE,oBAAoB,GAC5C,OAAO,CAAC,uBAAuB,CAAC;IAqCnC,OAAO,CAAC,oBAAoB;CAO7B"}
@@ -1,4 +1,4 @@
1
- import { DeviceModelId } from "@ledgerhq/device-management-kit";
1
+ import { DeviceModelId, LoggerPublisherService } from "@ledgerhq/device-management-kit";
2
2
  import { type ContextModuleConfig } from "../../config/model/ContextModuleConfig";
3
3
  import { type PkiCertificateLoader } from "../../pki/domain/PkiCertificateLoader";
4
4
  import { ContextFieldLoader } from "../../shared/domain/ContextFieldLoader";
@@ -13,7 +13,8 @@ export declare class SolanaTokenContextLoader implements ContextFieldLoader<Sola
13
13
  private readonly dataSource;
14
14
  private readonly config;
15
15
  private readonly _certificateLoader;
16
- constructor(dataSource: SolanaTokenDataSource, config: ContextModuleConfig, _certificateLoader: PkiCertificateLoader);
16
+ private logger;
17
+ constructor(dataSource: SolanaTokenDataSource, config: ContextModuleConfig, _certificateLoader: PkiCertificateLoader, loggerFactory: (tag: string) => LoggerPublisherService);
17
18
  canHandle(field: unknown, expectedType: SolanaContextTypes): field is SolanaTokenFieldInput;
18
19
  loadField(solanaTokenContextInput: SolanaTokenFieldInput): Promise<SolanaTokenContextResult>;
19
20
  private pluckTokenData;
@@ -1 +1 @@
1
- {"version":3,"file":"SolanaTokenContextLoader.d.ts","sourceRoot":"","sources":["../../../../../src/solanaToken/domain/SolanaTokenContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,0CAA0C,CAAC;AAGlD,KAAK,qBAAqB,GAAG,wBAAwB,GAAG;IACtD,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,qBACa,wBACX,YACE,kBAAkB,CAChB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,CACzB;IAID,OAAO,CAAC,QAAQ,CAAC,UAAU;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAHlB,UAAU,EAAE,qBAAqB,EACL,MAAM,EAAE,mBAAmB,EAEvD,kBAAkB,EAAE,oBAAoB;IAGpD,SAAS,CACd,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,kBAAkB,GAC/B,KAAK,IAAI,qBAAqB;IAmBpB,SAAS,CACpB,uBAAuB,EAAE,qBAAqB,GAC7C,OAAO,CAAC,wBAAwB,CAAC;IA2BpC,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"SolanaTokenContextLoader.d.ts","sourceRoot":"","sources":["../../../../../src/solanaToken/domain/SolanaTokenContextLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAE9E,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAG9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,0CAA0C,CAAC;AAGlD,KAAK,qBAAqB,GAAG,wBAAwB,GAAG;IACtD,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,qBACa,wBACX,YACE,kBAAkB,CAChB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,CACzB;IAMD,OAAO,CAAC,QAAQ,CAAC,UAAU;IACC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEnD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAPrC,OAAO,CAAC,MAAM,CAAyB;gBAIpB,UAAU,EAAE,qBAAqB,EACL,MAAM,EAAE,mBAAmB,EAEvD,kBAAkB,EAAE,oBAAoB,EAEzD,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAKjD,SAAS,CACd,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,kBAAkB,GAC/B,KAAK,IAAI,qBAAqB;IAmBpB,SAAS,CACpB,uBAAuB,EAAE,qBAAqB,GAC7C,OAAO,CAAC,wBAAwB,CAAC;IA6CpC,OAAO,CAAC,cAAc;CASvB"}