@ledgerhq/device-management-kit 0.0.0-rn-ble-pairing-removed-while-reconnecting-20250807094338 → 0.0.0-rn-hid-issues-20251022142715

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 (100) hide show
  1. package/README.md +3 -3
  2. package/lib/cjs/package.json +1 -1
  3. package/lib/cjs/src/api/DeviceManagementKit.js +1 -1
  4. package/lib/cjs/src/api/DeviceManagementKit.js.map +3 -3
  5. package/lib/cjs/src/api/DeviceManagementKit.test.js +1 -1
  6. package/lib/cjs/src/api/DeviceManagementKit.test.js.map +3 -3
  7. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  8. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.js.map +2 -2
  9. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  10. package/lib/cjs/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  11. package/lib/cjs/src/api/device/DeviceModel.js +1 -1
  12. package/lib/cjs/src/api/device/DeviceModel.js.map +2 -2
  13. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js +1 -1
  14. package/lib/cjs/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  15. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  16. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +3 -3
  17. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  18. package/lib/cjs/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  19. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  20. package/lib/cjs/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  21. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  22. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  23. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  24. package/lib/cjs/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  25. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  26. package/lib/cjs/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  27. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  28. package/lib/cjs/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +2 -2
  29. package/lib/cjs/src/api/utils/HexaString.js +1 -1
  30. package/lib/cjs/src/api/utils/HexaString.js.map +3 -3
  31. package/lib/cjs/src/api/utils/HexaString.test.js +1 -1
  32. package/lib/cjs/src/api/utils/HexaString.test.js.map +2 -2
  33. package/lib/cjs/src/internal/device-session/model/DeviceSession.js +1 -1
  34. package/lib/cjs/src/internal/device-session/model/DeviceSession.js.map +3 -3
  35. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  36. package/lib/cjs/src/internal/device-session/service/DefaultApduReceiverService.js.map +2 -2
  37. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  38. package/lib/cjs/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  39. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  40. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.js.map +2 -2
  41. package/lib/esm/package.json +1 -1
  42. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  43. package/lib/esm/src/api/DeviceManagementKit.js.map +3 -3
  44. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  45. package/lib/esm/src/api/DeviceManagementKit.test.js.map +3 -3
  46. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js +1 -1
  47. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.js.map +3 -3
  48. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js +1 -1
  49. package/lib/esm/src/api/apdu/utils/ByteArrayBuilder.test.js.map +2 -2
  50. package/lib/esm/src/api/device/DeviceModel.js +1 -1
  51. package/lib/esm/src/api/device/DeviceModel.js.map +2 -2
  52. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js +1 -1
  53. package/lib/esm/src/api/device-action/model/UserInteractionRequired.js.map +2 -2
  54. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js +1 -1
  55. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.js.map +3 -3
  56. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js +1 -1
  57. package/lib/esm/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.test.js.map +2 -2
  58. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js +1 -1
  59. package/lib/esm/src/api/device-action/xstate-utils/XStateDeviceAction.js.map +2 -2
  60. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js +1 -1
  61. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.js.map +2 -2
  62. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js +1 -1
  63. package/lib/esm/src/api/device-model/data/StaticDeviceModelDataSource.test.js.map +2 -2
  64. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js +1 -1
  65. package/lib/esm/src/api/logger-subscriber/service/ConsoleLogger.js.map +3 -3
  66. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js +1 -1
  67. package/lib/esm/src/api/secure-channel/task/ConnectToSecureChannelTask.js.map +2 -2
  68. package/lib/esm/src/api/utils/HexaString.js +1 -1
  69. package/lib/esm/src/api/utils/HexaString.js.map +3 -3
  70. package/lib/esm/src/api/utils/HexaString.test.js +1 -1
  71. package/lib/esm/src/api/utils/HexaString.test.js.map +2 -2
  72. package/lib/esm/src/internal/device-session/model/DeviceSession.js +1 -1
  73. package/lib/esm/src/internal/device-session/model/DeviceSession.js.map +3 -3
  74. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js +1 -1
  75. package/lib/esm/src/internal/device-session/service/DefaultApduReceiverService.js.map +2 -2
  76. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js +1 -1
  77. package/lib/esm/src/internal/device-session/service/DefaultApduSenderService.js.map +2 -2
  78. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js +1 -1
  79. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.js.map +2 -2
  80. package/lib/types/src/api/DeviceManagementKit.d.ts +4 -0
  81. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  82. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts +38 -0
  83. package/lib/types/src/api/apdu/utils/ByteArrayBuilder.d.ts.map +1 -1
  84. package/lib/types/src/api/device/DeviceModel.d.ts +1 -1
  85. package/lib/types/src/api/device/DeviceModel.d.ts.map +1 -1
  86. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts +2 -1
  87. package/lib/types/src/api/device-action/model/UserInteractionRequired.d.ts.map +1 -1
  88. package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts +1 -1
  89. package/lib/types/src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.d.ts.map +1 -1
  90. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts +1 -0
  91. package/lib/types/src/api/device-action/xstate-utils/XStateDeviceAction.d.ts.map +1 -1
  92. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts +1 -0
  93. package/lib/types/src/api/logger-subscriber/service/ConsoleLogger.d.ts.map +1 -1
  94. package/lib/types/src/api/utils/HexaString.d.ts +4 -3
  95. package/lib/types/src/api/utils/HexaString.d.ts.map +1 -1
  96. package/lib/types/src/internal/device-session/model/DeviceSession.d.ts.map +1 -1
  97. package/lib/types/src/internal/device-session/service/DefaultApduReceiverService.d.ts.map +1 -1
  98. package/lib/types/src/internal/device-session/service/DefaultDeviceSessionService.d.ts.map +1 -1
  99. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  100. package/package.json +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/api/utils/HexaString.ts"],
4
- "sourcesContent": ["export type HexaString = `0x${string}`;\n\nexport const isHexaString = (value: unknown): value is HexaString => {\n return typeof value === \"string\" && /^0x[0-9a-fA-F]*$/.test(value);\n};\n\nexport const hexaStringToBuffer = (value: string): Uint8Array | null => {\n if (value.startsWith(\"0x\")) {\n value = value.slice(2);\n }\n if (value.length === 0) {\n return new Uint8Array();\n }\n if (value.length % 2 !== 0) {\n value = \"0\" + value;\n }\n if (/^[0-9a-fA-F]*$/.test(value) === false) {\n return null;\n }\n const bytes = value.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16));\n if (!bytes || bytes.some(isNaN)) {\n return null;\n }\n return new Uint8Array(bytes);\n};\n\nexport const bufferToHexaString = (value: Uint8Array): HexaString => {\n return `0x${Array.from(value, (byte) =>\n byte.toString(16).padStart(2, \"0\"),\n ).join(\"\")}`;\n};\n"],
5
- "mappings": "AAEO,MAAMA,EAAgBC,GACpB,OAAOA,GAAU,UAAY,mBAAmB,KAAKA,CAAK,EAGtDC,EAAsBD,GAAqC,CAItE,GAHIA,EAAM,WAAW,IAAI,IACvBA,EAAQA,EAAM,MAAM,CAAC,GAEnBA,EAAM,SAAW,EACnB,OAAO,IAAI,WAKb,GAHIA,EAAM,OAAS,IAAM,IACvBA,EAAQ,IAAMA,GAEZ,iBAAiB,KAAKA,CAAK,IAAM,GACnC,OAAO,KAET,MAAME,EAAQF,EAAM,MAAM,SAAS,GAAG,IAAKG,GAAS,SAASA,EAAM,EAAE,CAAC,EACtE,MAAI,CAACD,GAASA,EAAM,KAAK,KAAK,EACrB,KAEF,IAAI,WAAWA,CAAK,CAC7B,EAEaE,EAAsBJ,GAC1B,KAAK,MAAM,KAAKA,EAAQG,GAC7BA,EAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CACnC,EAAE,KAAK,EAAE,CAAC",
6
- "names": ["isHexaString", "value", "hexaStringToBuffer", "bytes", "byte", "bufferToHexaString"]
4
+ "sourcesContent": ["export type HexaString = `0x${string}`;\n\nexport function isHexaString(value: unknown): value is HexaString {\n return typeof value === \"string\" && /^0x[0-9a-fA-F]*$/.test(value);\n}\n\nexport function hexaStringToBuffer(value: string): Uint8Array | null {\n if (value.startsWith(\"0x\")) {\n value = value.slice(2);\n }\n if (value.length === 0) {\n return new Uint8Array();\n }\n if (value.length % 2 !== 0) {\n value = \"0\" + value;\n }\n if (/^[0-9a-fA-F]*$/.test(value) === false) {\n return null;\n }\n const bytes = value.match(/.{1,2}/g)?.map((byte) => parseInt(byte, 16));\n if (!bytes || bytes.some(isNaN)) {\n return null;\n }\n return new Uint8Array(bytes);\n}\n\nexport function bufferToHexaString(\n value: Uint8Array,\n withPrefix?: true,\n): HexaString;\nexport function bufferToHexaString(\n value: Uint8Array,\n withPrefix?: false,\n): string;\nexport function bufferToHexaString(\n value: Uint8Array,\n withPrefix: boolean = true,\n): HexaString | string {\n const prefix = withPrefix ? \"0x\" : \"\";\n return `${prefix}${Array.from(value, (byte) =>\n byte.toString(16).padStart(2, \"0\"),\n ).join(\"\")}`;\n}\n"],
5
+ "mappings": "AAEO,SAASA,EAAaC,EAAqC,CAChE,OAAO,OAAOA,GAAU,UAAY,mBAAmB,KAAKA,CAAK,CACnE,CAEO,SAASC,EAAmBD,EAAkC,CAInE,GAHIA,EAAM,WAAW,IAAI,IACvBA,EAAQA,EAAM,MAAM,CAAC,GAEnBA,EAAM,SAAW,EACnB,OAAO,IAAI,WAKb,GAHIA,EAAM,OAAS,IAAM,IACvBA,EAAQ,IAAMA,GAEZ,iBAAiB,KAAKA,CAAK,IAAM,GACnC,OAAO,KAET,MAAME,EAAQF,EAAM,MAAM,SAAS,GAAG,IAAKG,GAAS,SAASA,EAAM,EAAE,CAAC,EACtE,MAAI,CAACD,GAASA,EAAM,KAAK,KAAK,EACrB,KAEF,IAAI,WAAWA,CAAK,CAC7B,CAUO,SAASE,EACdJ,EACAK,EAAsB,GACD,CAErB,MAAO,GADQA,EAAa,KAAO,EACnB,GAAG,MAAM,KAAKL,EAAQG,GACpCA,EAAK,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CACnC,EAAE,KAAK,EAAE,CAAC,EACZ",
6
+ "names": ["isHexaString", "value", "hexaStringToBuffer", "bytes", "byte", "bufferToHexaString", "withPrefix"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{bufferToHexaString as r,hexaStringToBuffer as u,isHexaString as n}from"./HexaString";describe("HexaString",()=>{describe("isHexaString function",()=>{it("should return true if the value is a valid hex string",()=>{const t=n("0x1234abc");expect(t).toBeTruthy()}),it("should return true if no data",()=>{const t=n("0x");expect(t).toBeTruthy()}),it("should return false if the value contain an invalid letter",()=>{const t=n("0x1234z");expect(t).toBeFalsy()}),it("should return false if the value does not start with 0x",()=>{const t=n("1234abc");expect(t).toBeFalsy()}),it("should return false for an epmty string",()=>{const t=n("");expect(t).toBeFalsy()}),it.each([123,[],{},null,void 0,!0])("should return false for invalid input %p",e=>{const t=n(e);expect(t).toBeFalsy()})}),describe("hexaStringToBuffer function",()=>{it("should convert empty input to empty buffer",()=>{const t=u("");expect(t).toStrictEqual(new Uint8Array)}),it("should fail on invalid string",()=>{const t=u("bonjour");expect(t).toStrictEqual(null)}),it("should fail on invalid string with valid numbers",()=>{const t=u("0x012n34");expect(t).toStrictEqual(null)}),it("should convert correct hexadecimal string",()=>{const t=u("1a35669f0100");expect(t).toStrictEqual(new Uint8Array([26,53,102,159,1,0]))}),it("should support 0x prefix",()=>{const t=u("0x1a35");expect(t).toStrictEqual(new Uint8Array([26,53]))}),it("should be case insensitive",()=>{const t=u("0xcCDd");expect(t).toStrictEqual(new Uint8Array([204,221]))}),it("should pad with 0",()=>{const t=u("0xa35");expect(t).toStrictEqual(new Uint8Array([10,53]))})}),describe("bufferToHexaString function",()=>{it("should convert a buffer into a hexa string",()=>{const e=Uint8Array.from([0,1,2,255,254]),t=r(e);expect(t).toStrictEqual("0x000102fffe")})})});
1
+ import{bufferToHexaString as n,hexaStringToBuffer as r,isHexaString as u}from"./HexaString";describe("HexaString",()=>{describe("isHexaString function",()=>{it("should return true if the value is a valid hex string",()=>{const t=u("0x1234abc");expect(t).toBeTruthy()}),it("should return true if no data",()=>{const t=u("0x");expect(t).toBeTruthy()}),it("should return false if the value contain an invalid letter",()=>{const t=u("0x1234z");expect(t).toBeFalsy()}),it("should return false if the value does not start with 0x",()=>{const t=u("1234abc");expect(t).toBeFalsy()}),it("should return false for an epmty string",()=>{const t=u("");expect(t).toBeFalsy()}),it.each([123,[],{},null,void 0,!0])("should return false for invalid input %p",e=>{const t=u(e);expect(t).toBeFalsy()})}),describe("hexaStringToBuffer function",()=>{it("should convert empty input to empty buffer",()=>{const t=r("");expect(t).toStrictEqual(new Uint8Array)}),it("should fail on invalid string",()=>{const t=r("bonjour");expect(t).toStrictEqual(null)}),it("should fail on invalid string with valid numbers",()=>{const t=r("0x012n34");expect(t).toStrictEqual(null)}),it("should convert correct hexadecimal string",()=>{const t=r("1a35669f0100");expect(t).toStrictEqual(new Uint8Array([26,53,102,159,1,0]))}),it("should support 0x prefix",()=>{const t=r("0x1a35");expect(t).toStrictEqual(new Uint8Array([26,53]))}),it("should be case insensitive",()=>{const t=r("0xcCDd");expect(t).toStrictEqual(new Uint8Array([204,221]))}),it("should pad with 0",()=>{const t=r("0xa35");expect(t).toStrictEqual(new Uint8Array([10,53]))})}),describe("bufferToHexaString function",()=>{it("should convert a buffer into a hexa string",()=>{const e=Uint8Array.from([0,1,2,255,254]),t=n(e);expect(t).toStrictEqual("0x000102fffe")}),it("should convert a buffer into a hexa string without prefix",()=>{const e=Uint8Array.from([0,1,2,255,254]),t=n(e,!1);expect(t).toStrictEqual("000102fffe")})})});
2
2
  //# sourceMappingURL=HexaString.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/api/utils/HexaString.test.ts"],
4
- "sourcesContent": ["import {\n bufferToHexaString,\n hexaStringToBuffer,\n isHexaString,\n} from \"./HexaString\";\n\ndescribe(\"HexaString\", () => {\n describe(\"isHexaString function\", () => {\n it(\"should return true if the value is a valid hex string\", () => {\n // GIVEN\n const value = \"0x1234abc\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeTruthy();\n });\n\n it(\"should return true if no data\", () => {\n // GIVEN\n const value = \"0x\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeTruthy();\n });\n\n it(\"should return false if the value contain an invalid letter\", () => {\n // GIVEN\n const value = \"0x1234z\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n });\n\n it(\"should return false if the value does not start with 0x\", () => {\n // GIVEN\n const value = \"1234abc\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n });\n\n it(\"should return false for an epmty string\", () => {\n // GIVEN\n const value = \"\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n });\n\n it.each([123, [], {}, null, undefined, true])(\n \"should return false for invalid input %p\",\n (value) => {\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n },\n );\n });\n\n describe(\"hexaStringToBuffer function\", () => {\n it(\"should convert empty input to empty buffer\", () => {\n // GIVEN\n const value = \"\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array());\n });\n\n it(\"should fail on invalid string\", () => {\n // GIVEN\n const value = \"bonjour\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(null);\n });\n\n it(\"should fail on invalid string with valid numbers\", () => {\n // GIVEN\n const value = \"0x012n34\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(null);\n });\n\n it(\"should convert correct hexadecimal string\", () => {\n // GIVEN\n const value = \"1a35669f0100\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(\n new Uint8Array([0x1a, 0x35, 0x66, 0x9f, 0x01, 0x00]),\n );\n });\n\n it(\"should support 0x prefix\", () => {\n // GIVEN\n const value = \"0x1a35\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array([0x1a, 0x35]));\n });\n\n it(\"should be case insensitive\", () => {\n // GIVEN\n const value = \"0xcCDd\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array([0xcc, 0xdd]));\n });\n\n it(\"should pad with 0\", () => {\n // GIVEN\n const value = \"0xa35\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array([0x0a, 0x35]));\n });\n });\n\n describe(\"bufferToHexaString function\", () => {\n it(\"should convert a buffer into a hexa string\", () => {\n // GIVEN\n const value = Uint8Array.from([0, 1, 2, 0xff, 0xfe]);\n\n // WHEN\n const result = bufferToHexaString(value);\n\n // THEN\n expect(result).toStrictEqual(\"0x000102fffe\");\n });\n });\n});\n"],
5
- "mappings": "AAAA,OACE,sBAAAA,EACA,sBAAAC,EACA,gBAAAC,MACK,eAEP,SAAS,aAAc,IAAM,CAC3B,SAAS,wBAAyB,IAAM,CACtC,GAAG,wDAAyD,IAAM,CAKhE,MAAMC,EAASD,EAHD,WAGmB,EAGjC,OAAOC,CAAM,EAAE,WAAW,CAC5B,CAAC,EAED,GAAG,gCAAiC,IAAM,CAKxC,MAAMA,EAASD,EAHD,IAGmB,EAGjC,OAAOC,CAAM,EAAE,WAAW,CAC5B,CAAC,EAED,GAAG,6DAA8D,IAAM,CAKrE,MAAMA,EAASD,EAHD,SAGmB,EAGjC,OAAOC,CAAM,EAAE,UAAU,CAC3B,CAAC,EAED,GAAG,0DAA2D,IAAM,CAKlE,MAAMA,EAASD,EAHD,SAGmB,EAGjC,OAAOC,CAAM,EAAE,UAAU,CAC3B,CAAC,EAED,GAAG,0CAA2C,IAAM,CAKlD,MAAMA,EAASD,EAHD,EAGmB,EAGjC,OAAOC,CAAM,EAAE,UAAU,CAC3B,CAAC,EAED,GAAG,KAAK,CAAC,IAAK,CAAC,EAAG,CAAC,EAAG,KAAM,OAAW,EAAI,CAAC,EAC1C,2CACCC,GAAU,CAET,MAAMD,EAASD,EAAaE,CAAK,EAGjC,OAAOD,CAAM,EAAE,UAAU,CAC3B,CACF,CACF,CAAC,EAED,SAAS,8BAA+B,IAAM,CAC5C,GAAG,6CAA8C,IAAM,CAKrD,MAAMA,EAASF,EAHD,EAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,UAAY,CAC/C,CAAC,EAED,GAAG,gCAAiC,IAAM,CAKxC,MAAMA,EAASF,EAHD,SAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,CACnC,CAAC,EAED,GAAG,mDAAoD,IAAM,CAK3D,MAAMA,EAASF,EAHD,UAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,CACnC,CAAC,EAED,GAAG,4CAA6C,IAAM,CAKpD,MAAMA,EAASF,EAHD,cAGyB,EAGvC,OAAOE,CAAM,EAAE,cACb,IAAI,WAAW,CAAC,GAAM,GAAM,IAAM,IAAM,EAAM,CAAI,CAAC,CACrD,CACF,CAAC,EAED,GAAG,2BAA4B,IAAM,CAKnC,MAAMA,EAASF,EAHD,QAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,WAAW,CAAC,GAAM,EAAI,CAAC,CAAC,CAC3D,CAAC,EAED,GAAG,6BAA8B,IAAM,CAKrC,MAAMA,EAASF,EAHD,QAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,CAAC,CAC3D,CAAC,EAED,GAAG,oBAAqB,IAAM,CAK5B,MAAMA,EAASF,EAHD,OAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,WAAW,CAAC,GAAM,EAAI,CAAC,CAAC,CAC3D,CAAC,CACH,CAAC,EAED,SAAS,8BAA+B,IAAM,CAC5C,GAAG,6CAA8C,IAAM,CAErD,MAAMC,EAAQ,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,IAAM,GAAI,CAAC,EAG7CD,EAASH,EAAmBI,CAAK,EAGvC,OAAOD,CAAM,EAAE,cAAc,cAAc,CAC7C,CAAC,CACH,CAAC,CACH,CAAC",
4
+ "sourcesContent": ["import {\n bufferToHexaString,\n hexaStringToBuffer,\n isHexaString,\n} from \"./HexaString\";\n\ndescribe(\"HexaString\", () => {\n describe(\"isHexaString function\", () => {\n it(\"should return true if the value is a valid hex string\", () => {\n // GIVEN\n const value = \"0x1234abc\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeTruthy();\n });\n\n it(\"should return true if no data\", () => {\n // GIVEN\n const value = \"0x\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeTruthy();\n });\n\n it(\"should return false if the value contain an invalid letter\", () => {\n // GIVEN\n const value = \"0x1234z\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n });\n\n it(\"should return false if the value does not start with 0x\", () => {\n // GIVEN\n const value = \"1234abc\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n });\n\n it(\"should return false for an epmty string\", () => {\n // GIVEN\n const value = \"\";\n\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n });\n\n it.each([123, [], {}, null, undefined, true])(\n \"should return false for invalid input %p\",\n (value) => {\n // WHEN\n const result = isHexaString(value);\n\n // THEN\n expect(result).toBeFalsy();\n },\n );\n });\n\n describe(\"hexaStringToBuffer function\", () => {\n it(\"should convert empty input to empty buffer\", () => {\n // GIVEN\n const value = \"\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array());\n });\n\n it(\"should fail on invalid string\", () => {\n // GIVEN\n const value = \"bonjour\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(null);\n });\n\n it(\"should fail on invalid string with valid numbers\", () => {\n // GIVEN\n const value = \"0x012n34\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(null);\n });\n\n it(\"should convert correct hexadecimal string\", () => {\n // GIVEN\n const value = \"1a35669f0100\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(\n new Uint8Array([0x1a, 0x35, 0x66, 0x9f, 0x01, 0x00]),\n );\n });\n\n it(\"should support 0x prefix\", () => {\n // GIVEN\n const value = \"0x1a35\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array([0x1a, 0x35]));\n });\n\n it(\"should be case insensitive\", () => {\n // GIVEN\n const value = \"0xcCDd\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array([0xcc, 0xdd]));\n });\n\n it(\"should pad with 0\", () => {\n // GIVEN\n const value = \"0xa35\";\n\n // WHEN\n const result = hexaStringToBuffer(value);\n\n // THEN\n expect(result).toStrictEqual(new Uint8Array([0x0a, 0x35]));\n });\n });\n\n describe(\"bufferToHexaString function\", () => {\n it(\"should convert a buffer into a hexa string\", () => {\n // GIVEN\n const value = Uint8Array.from([0, 1, 2, 0xff, 0xfe]);\n\n // WHEN\n const result = bufferToHexaString(value);\n\n // THEN\n expect(result).toStrictEqual(\"0x000102fffe\");\n });\n\n it(\"should convert a buffer into a hexa string without prefix\", () => {\n // GIVEN\n const value = Uint8Array.from([0, 1, 2, 0xff, 0xfe]);\n\n // WHEN\n const result = bufferToHexaString(value, false);\n\n // THEN\n expect(result).toStrictEqual(\"000102fffe\");\n });\n });\n});\n"],
5
+ "mappings": "AAAA,OACE,sBAAAA,EACA,sBAAAC,EACA,gBAAAC,MACK,eAEP,SAAS,aAAc,IAAM,CAC3B,SAAS,wBAAyB,IAAM,CACtC,GAAG,wDAAyD,IAAM,CAKhE,MAAMC,EAASD,EAHD,WAGmB,EAGjC,OAAOC,CAAM,EAAE,WAAW,CAC5B,CAAC,EAED,GAAG,gCAAiC,IAAM,CAKxC,MAAMA,EAASD,EAHD,IAGmB,EAGjC,OAAOC,CAAM,EAAE,WAAW,CAC5B,CAAC,EAED,GAAG,6DAA8D,IAAM,CAKrE,MAAMA,EAASD,EAHD,SAGmB,EAGjC,OAAOC,CAAM,EAAE,UAAU,CAC3B,CAAC,EAED,GAAG,0DAA2D,IAAM,CAKlE,MAAMA,EAASD,EAHD,SAGmB,EAGjC,OAAOC,CAAM,EAAE,UAAU,CAC3B,CAAC,EAED,GAAG,0CAA2C,IAAM,CAKlD,MAAMA,EAASD,EAHD,EAGmB,EAGjC,OAAOC,CAAM,EAAE,UAAU,CAC3B,CAAC,EAED,GAAG,KAAK,CAAC,IAAK,CAAC,EAAG,CAAC,EAAG,KAAM,OAAW,EAAI,CAAC,EAC1C,2CACCC,GAAU,CAET,MAAMD,EAASD,EAAaE,CAAK,EAGjC,OAAOD,CAAM,EAAE,UAAU,CAC3B,CACF,CACF,CAAC,EAED,SAAS,8BAA+B,IAAM,CAC5C,GAAG,6CAA8C,IAAM,CAKrD,MAAMA,EAASF,EAHD,EAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,UAAY,CAC/C,CAAC,EAED,GAAG,gCAAiC,IAAM,CAKxC,MAAMA,EAASF,EAHD,SAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,CACnC,CAAC,EAED,GAAG,mDAAoD,IAAM,CAK3D,MAAMA,EAASF,EAHD,UAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,CACnC,CAAC,EAED,GAAG,4CAA6C,IAAM,CAKpD,MAAMA,EAASF,EAHD,cAGyB,EAGvC,OAAOE,CAAM,EAAE,cACb,IAAI,WAAW,CAAC,GAAM,GAAM,IAAM,IAAM,EAAM,CAAI,CAAC,CACrD,CACF,CAAC,EAED,GAAG,2BAA4B,IAAM,CAKnC,MAAMA,EAASF,EAHD,QAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,WAAW,CAAC,GAAM,EAAI,CAAC,CAAC,CAC3D,CAAC,EAED,GAAG,6BAA8B,IAAM,CAKrC,MAAMA,EAASF,EAHD,QAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,WAAW,CAAC,IAAM,GAAI,CAAC,CAAC,CAC3D,CAAC,EAED,GAAG,oBAAqB,IAAM,CAK5B,MAAMA,EAASF,EAHD,OAGyB,EAGvC,OAAOE,CAAM,EAAE,cAAc,IAAI,WAAW,CAAC,GAAM,EAAI,CAAC,CAAC,CAC3D,CAAC,CACH,CAAC,EAED,SAAS,8BAA+B,IAAM,CAC5C,GAAG,6CAA8C,IAAM,CAErD,MAAMC,EAAQ,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,IAAM,GAAI,CAAC,EAG7CD,EAASH,EAAmBI,CAAK,EAGvC,OAAOD,CAAM,EAAE,cAAc,cAAc,CAC7C,CAAC,EAED,GAAG,4DAA6D,IAAM,CAEpE,MAAMC,EAAQ,WAAW,KAAK,CAAC,EAAG,EAAG,EAAG,IAAM,GAAI,CAAC,EAG7CD,EAASH,EAAmBI,EAAO,EAAK,EAG9C,OAAOD,CAAM,EAAE,cAAc,YAAY,CAC3C,CAAC,CACH,CAAC,CACH,CAAC",
6
6
  "names": ["bufferToHexaString", "hexaStringToBuffer", "isHexaString", "result", "value"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{BehaviorSubject as v}from"rxjs";import{v4 as d}from"uuid";import{CommandUtils as h}from"../../../api/command/utils/CommandUtils";import{DeviceStatus as c}from"../../../api/device/DeviceStatus";import{DeviceSessionStateType as S}from"../../../api/device-session/DeviceSessionState";import{DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS as u}from"../../device-session/data/DeviceSessionRefresherConst";import{MutexService as m}from"../../device-session/service/MutexService";import{RefresherService as D}from"../../device-session/service/RefresherService";import{DevicePinger as l}from"./DevicePinger";import{DeviceSessionEventDispatcher as _,SessionEvents as n}from"./DeviceSessionEventDispatcher";import{DeviceSessionRefresher as f}from"./DeviceSessionRefresher";import{DeviceSessionStateHandler as g}from"./DeviceSessionStateHandler";class V{_id;_connectedDevice;_deviceState;_managerApiService;_secureChannelService;_logger;_refresherOptions;_pinger;_deviceSessionRefresher;_refresherService;_commandMutex=new m;_sessionEventDispatcher=new _;constructor({connectedDevice:e,id:s=d()},t,i,r,a){this._id=s,this._connectedDevice=e,this._logger=t("device-session"),this._managerApiService=i,this._secureChannelService=r,this._refresherOptions={...u,...a},this._deviceState=new v({sessionStateType:S.Connected,deviceStatus:c.CONNECTED,deviceModelId:this._connectedDevice.deviceModel.id}),this._pinger=new l(t,e,this._sessionEventDispatcher,(o,p)=>this.sendCommand(o,p)),this._deviceSessionRefresher=new f(t,this._refresherOptions,this._sessionEventDispatcher,this._connectedDevice),new g(t,this._sessionEventDispatcher,this._connectedDevice,this._deviceState,o=>this.setDeviceSessionState(o)),this._refresherService=new D(t,{start:()=>this._deviceSessionRefresher.restartRefresher(),stop:()=>this._deviceSessionRefresher.stopRefresher()})}async initialiseSession(){try{await this._pinger.ping()}catch(e){throw this._logger.error("Error while initialising session",{data:{error:e}}),e}finally{this._refresherOptions.isRefresherDisabled||this._deviceSessionRefresher.startRefresher()}}get id(){return this._id}get connectedDevice(){return this._connectedDevice}get state(){return this._deviceState.asObservable()}getDeviceSessionState(){return this._deviceState.getValue()}setDeviceSessionState(e){this._deviceState.next(e)}async sendApdu(e,s={isPolling:!1,triggersDisconnection:!1,abortTimeout:void 0}){const t=await this._commandMutex.lock();try{this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_BUSY});const i=await this._connectedDevice.sendApdu(e,s.triggersDisconnection,s.abortTimeout);return i.ifRight(r=>{h.isLockedDeviceResponse(r)?this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_LOCKED}):this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_CONNECTED})}).ifLeft(()=>{this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_CONNECTED})}),i}finally{t()}}async sendCommand(e,s){const t=e.getApdu();return(await this.sendApdu(t.getRawApdu(),{isPolling:!1,triggersDisconnection:e.triggersDisconnection??!1,abortTimeout:s})).caseOf({Left:r=>{throw r},Right:r=>e.parseResponse(r,this._connectedDevice.deviceModel.id)})}executeDeviceAction(e){const{observable:s,cancel:t}=e._execute({sendApdu:async i=>this.sendApdu(i),sendCommand:async(i,r)=>this.sendCommand(i,r),getDeviceModel:()=>this._connectedDevice.deviceModel,getDeviceSessionState:()=>this._deviceState.getValue(),getDeviceSessionStateObservable:()=>this.state,setDeviceSessionState:i=>(this.setDeviceSessionState(i),this._deviceState.getValue()),disableRefresher:i=>this._refresherService.disableRefresher(i),getManagerApiService:()=>this._managerApiService,getSecureChannelService:()=>this._secureChannelService});return{observable:s,cancel:t}}close(){this._updateDeviceStatus(c.NOT_CONNECTED),this._deviceState.complete(),this._deviceSessionRefresher.stopRefresher()}disableRefresher(e){return this._refresherService.disableRefresher(e)}_updateDeviceStatus(e){const s=this._deviceState.getValue();this._deviceState.next({...s,deviceStatus:e})}}export{V as DeviceSession};
1
+ import{BehaviorSubject as d}from"rxjs";import{v4 as h}from"uuid";import{CommandUtils as S}from"../../../api/command/utils/CommandUtils";import{DeviceStatus as a}from"../../../api/device/DeviceStatus";import{DeviceSessionStateType as u}from"../../../api/device-session/DeviceSessionState";import{bufferToHexaString as c}from"../../../api/index";import{DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS as m}from"../../device-session/data/DeviceSessionRefresherConst";import{MutexService as D}from"../../device-session/service/MutexService";import{RefresherService as l}from"../../device-session/service/RefresherService";import{DevicePinger as _}from"./DevicePinger";import{DeviceSessionEventDispatcher as f,SessionEvents as n}from"./DeviceSessionEventDispatcher";import{DeviceSessionRefresher as g}from"./DeviceSessionRefresher";import{DeviceSessionStateHandler as E}from"./DeviceSessionStateHandler";class L{_id;_connectedDevice;_deviceState;_managerApiService;_secureChannelService;_logger;_refresherOptions;_pinger;_deviceSessionRefresher;_refresherService;_commandMutex=new D;_sessionEventDispatcher=new f;constructor({connectedDevice:e,id:r=h()},t,i,s,v){this._id=r,this._connectedDevice=e,this._logger=t("device-session"),this._managerApiService=i,this._secureChannelService=s,this._refresherOptions={...m,...v},this._deviceState=new d({sessionStateType:u.Connected,deviceStatus:a.CONNECTED,deviceModelId:this._connectedDevice.deviceModel.id}),this._pinger=new _(t,e,this._sessionEventDispatcher,(o,p)=>this.sendCommand(o,p)),this._deviceSessionRefresher=new g(t,this._refresherOptions,this._sessionEventDispatcher,this._connectedDevice),new E(t,this._sessionEventDispatcher,this._connectedDevice,this._deviceState,o=>this.setDeviceSessionState(o)),this._refresherService=new l(t,{start:()=>this._deviceSessionRefresher.restartRefresher(),stop:()=>this._deviceSessionRefresher.stopRefresher()})}async initialiseSession(){try{await this._pinger.ping()}catch(e){throw this._logger.error("Error while initialising session",{data:{error:e}}),e}finally{this._refresherOptions.isRefresherDisabled||this._deviceSessionRefresher.startRefresher()}}get id(){return this._id}get connectedDevice(){return this._connectedDevice}get state(){return this._deviceState.asObservable()}getDeviceSessionState(){return this._deviceState.getValue()}setDeviceSessionState(e){this._deviceState.next(e)}async sendApdu(e,r={isPolling:!1,triggersDisconnection:!1,abortTimeout:void 0}){const t=await this._commandMutex.lock();try{this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_BUSY}),this._logger.debug(`[exchange] => ${c(e,!1)}`);const i=await this._connectedDevice.sendApdu(e,r.triggersDisconnection,r.abortTimeout);return i.ifRight(s=>{this._logger.debug(`[exchange] <= ${c(s.data,!1)}${c(s.statusCode,!1)}`),S.isLockedDeviceResponse(s)?this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_LOCKED}):this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_CONNECTED})}).ifLeft(()=>{this._sessionEventDispatcher.dispatch({eventName:n.DEVICE_STATE_UPDATE_CONNECTED})}),i}finally{t()}}async sendCommand(e,r){const t=e.getApdu();return(await this.sendApdu(t.getRawApdu(),{isPolling:!1,triggersDisconnection:e.triggersDisconnection??!1,abortTimeout:r})).caseOf({Left:s=>{throw s},Right:s=>e.parseResponse(s,this._connectedDevice.deviceModel.id)})}executeDeviceAction(e){const{observable:r,cancel:t}=e._execute({sendApdu:async i=>this.sendApdu(i),sendCommand:async(i,s)=>this.sendCommand(i,s),getDeviceModel:()=>this._connectedDevice.deviceModel,getDeviceSessionState:()=>this._deviceState.getValue(),getDeviceSessionStateObservable:()=>this.state,setDeviceSessionState:i=>(this.setDeviceSessionState(i),this._deviceState.getValue()),disableRefresher:i=>this._refresherService.disableRefresher(i),getManagerApiService:()=>this._managerApiService,getSecureChannelService:()=>this._secureChannelService});return{observable:r,cancel:t}}close(){this._updateDeviceStatus(a.NOT_CONNECTED),this._deviceState.complete(),this._deviceSessionRefresher.stopRefresher()}disableRefresher(e){return this._refresherService.disableRefresher(e)}_updateDeviceStatus(e){const r=this._deviceState.getValue();this._deviceState.next({...r,deviceStatus:e})}}export{L as DeviceSession};
2
2
  //# sourceMappingURL=DeviceSession.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/model/DeviceSession.ts"],
4
- "sourcesContent": ["import { type Either } from \"purify-ts\";\nimport { BehaviorSubject, type Observable } from \"rxjs\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type DmkError } from \"@api/Error\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { MutexService } from \"@internal/device-session/service/MutexService\";\nimport { RefresherService } from \"@internal/device-session/service/RefresherService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DevicePinger } from \"./DevicePinger\";\nimport {\n DeviceSessionEventDispatcher,\n SessionEvents,\n} from \"./DeviceSessionEventDispatcher\";\nimport { DeviceSessionRefresher } from \"./DeviceSessionRefresher\";\nimport { DeviceSessionStateHandler } from \"./DeviceSessionStateHandler\";\n\nexport type SessionConstructorArgs = {\n connectedDevice: TransportConnectedDevice;\n id?: DeviceSessionId;\n};\n\nexport type DeviceSessionRefresherOptions = {\n isRefresherDisabled: boolean;\n pollingInterval?: number;\n};\n\ntype SendApduOptions = {\n isPolling?: boolean;\n triggersDisconnection?: boolean;\n abortTimeout?: number;\n};\n\n/**\n * Represents a session with a device.\n */\nexport class DeviceSession {\n private readonly _id: DeviceSessionId;\n private readonly _connectedDevice: TransportConnectedDevice;\n private readonly _deviceState: BehaviorSubject<DeviceSessionState>;\n private readonly _managerApiService: ManagerApiService;\n private readonly _secureChannelService: SecureChannelService;\n private readonly _logger: LoggerPublisherService;\n private readonly _refresherOptions: DeviceSessionRefresherOptions;\n private _pinger: DevicePinger;\n private _deviceSessionRefresher: DeviceSessionRefresher;\n private readonly _refresherService: RefresherService;\n private _commandMutex = new MutexService();\n private _sessionEventDispatcher = new DeviceSessionEventDispatcher();\n\n constructor(\n { connectedDevice, id = uuidv4() }: SessionConstructorArgs,\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n managerApiService: ManagerApiService,\n secureChannelService: SecureChannelService,\n deviceSessionRefresherOptions: DeviceSessionRefresherOptions | undefined,\n ) {\n this._id = id;\n this._connectedDevice = connectedDevice;\n this._logger = loggerModuleFactory(\"device-session\");\n this._managerApiService = managerApiService;\n this._secureChannelService = secureChannelService;\n this._refresherOptions = {\n ...DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n ...deviceSessionRefresherOptions,\n };\n this._deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n });\n\n this._pinger = new DevicePinger(\n loggerModuleFactory,\n connectedDevice,\n this._sessionEventDispatcher,\n (command, abortTimeout) => this.sendCommand(command, abortTimeout),\n );\n this._deviceSessionRefresher = new DeviceSessionRefresher(\n loggerModuleFactory,\n this._refresherOptions,\n this._sessionEventDispatcher,\n this._connectedDevice,\n );\n new DeviceSessionStateHandler(\n loggerModuleFactory,\n this._sessionEventDispatcher,\n this._connectedDevice,\n this._deviceState,\n (state) => this.setDeviceSessionState(state),\n );\n\n this._refresherService = new RefresherService(loggerModuleFactory, {\n start: () => this._deviceSessionRefresher.restartRefresher(),\n stop: () => this._deviceSessionRefresher.stopRefresher(),\n });\n }\n\n public async initialiseSession(): Promise<void> {\n try {\n await this._pinger.ping();\n } catch (error) {\n this._logger.error(\"Error while initialising session\", {\n data: { error },\n });\n throw error;\n } finally {\n if (!this._refresherOptions.isRefresherDisabled) {\n this._deviceSessionRefresher.startRefresher();\n }\n }\n }\n\n public get id(): DeviceSessionId {\n return this._id;\n }\n\n public get connectedDevice(): TransportConnectedDevice {\n return this._connectedDevice;\n }\n\n public get state(): Observable<DeviceSessionState> {\n return this._deviceState.asObservable();\n }\n\n public getDeviceSessionState(): DeviceSessionState {\n return this._deviceState.getValue();\n }\n\n public setDeviceSessionState(state: DeviceSessionState): void {\n this._deviceState.next(state);\n }\n\n public async sendApdu(\n rawApdu: Uint8Array,\n options: SendApduOptions = {\n isPolling: false,\n triggersDisconnection: false,\n abortTimeout: undefined,\n },\n ): Promise<Either<DmkError, ApduResponse>> {\n const release = await this._commandMutex.lock();\n\n try {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_BUSY,\n });\n const result = await this._connectedDevice.sendApdu(\n rawApdu,\n options.triggersDisconnection,\n options.abortTimeout,\n );\n\n result\n .ifRight((response: ApduResponse) => {\n if (CommandUtils.isLockedDeviceResponse(response)) {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_LOCKED,\n });\n } else {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n }\n })\n .ifLeft(() => {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n });\n return result;\n } finally {\n release();\n }\n }\n\n public async sendCommand<Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n abortTimeout?: number,\n ): Promise<CommandResult<Response, ErrorStatusCodes>> {\n const apdu = command.getApdu();\n\n const response = await this.sendApdu(apdu.getRawApdu(), {\n isPolling: false,\n triggersDisconnection: command.triggersDisconnection ?? false,\n abortTimeout,\n });\n\n return response.caseOf({\n Left: (err) => {\n throw err;\n },\n Right: (r) =>\n command.parseResponse(r, this._connectedDevice.deviceModel.id),\n });\n }\n\n public executeDeviceAction<\n Output,\n Input,\n E extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n deviceAction: DeviceAction<Output, Input, E, IntermediateValue>,\n ): ExecuteDeviceActionReturnType<Output, E, IntermediateValue> {\n const { observable, cancel } = deviceAction._execute({\n sendApdu: async (apdu: Uint8Array) => this.sendApdu(apdu),\n sendCommand: async <Response, ErrorStatusCodes, Args>(\n command: Command<Response, ErrorStatusCodes, Args>,\n abortTimeout?: number,\n ) => this.sendCommand(command, abortTimeout),\n getDeviceModel: () => this._connectedDevice.deviceModel,\n getDeviceSessionState: () => this._deviceState.getValue(),\n getDeviceSessionStateObservable: () => this.state,\n setDeviceSessionState: (state: DeviceSessionState) => {\n this.setDeviceSessionState(state);\n return this._deviceState.getValue();\n },\n disableRefresher: (blockerId: string) =>\n this._refresherService.disableRefresher(blockerId),\n getManagerApiService: () => this._managerApiService,\n getSecureChannelService: () => this._secureChannelService,\n });\n return { observable, cancel };\n }\n\n public close(): void {\n this._updateDeviceStatus(DeviceStatus.NOT_CONNECTED);\n this._deviceState.complete();\n this._deviceSessionRefresher.stopRefresher();\n }\n\n public disableRefresher(id: string): () => void {\n return this._refresherService.disableRefresher(id);\n }\n\n private _updateDeviceStatus(deviceStatus: DeviceStatus): void {\n const state = this._deviceState.getValue();\n this._deviceState.next({ ...state, deviceStatus });\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["BehaviorSubject", "uuidv4", "CommandUtils", "DeviceStatus", "DeviceSessionStateType", "DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS", "MutexService", "RefresherService", "DevicePinger", "DeviceSessionEventDispatcher", "SessionEvents", "DeviceSessionRefresher", "DeviceSessionStateHandler", "DeviceSession", "connectedDevice", "id", "loggerModuleFactory", "managerApiService", "secureChannelService", "deviceSessionRefresherOptions", "command", "abortTimeout", "state", "error", "rawApdu", "options", "release", "result", "response", "apdu", "err", "deviceAction", "observable", "cancel", "blockerId", "deviceStatus"]
4
+ "sourcesContent": ["import { type Either } from \"purify-ts\";\nimport { BehaviorSubject, type Observable } from \"rxjs\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { type Command } from \"@api/command/Command\";\nimport { type CommandResult } from \"@api/command/model/CommandResult\";\nimport { CommandUtils } from \"@api/command/utils/CommandUtils\";\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n type DeviceAction,\n type DeviceActionIntermediateValue,\n type ExecuteDeviceActionReturnType,\n} from \"@api/device-action/DeviceAction\";\nimport { type ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n type DeviceSessionState,\n DeviceSessionStateType,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type DeviceSessionId } from \"@api/device-session/types\";\nimport { type DmkError } from \"@api/Error\";\nimport { bufferToHexaString } from \"@api/index\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type TransportConnectedDevice } from \"@api/transport/model/TransportConnectedDevice\";\nimport { DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS } from \"@internal/device-session/data/DeviceSessionRefresherConst\";\nimport { MutexService } from \"@internal/device-session/service/MutexService\";\nimport { RefresherService } from \"@internal/device-session/service/RefresherService\";\nimport { type ManagerApiService } from \"@internal/manager-api/service/ManagerApiService\";\nimport { type SecureChannelService } from \"@internal/secure-channel/service/SecureChannelService\";\n\nimport { DevicePinger } from \"./DevicePinger\";\nimport {\n DeviceSessionEventDispatcher,\n SessionEvents,\n} from \"./DeviceSessionEventDispatcher\";\nimport { DeviceSessionRefresher } from \"./DeviceSessionRefresher\";\nimport { DeviceSessionStateHandler } from \"./DeviceSessionStateHandler\";\n\nexport type SessionConstructorArgs = {\n connectedDevice: TransportConnectedDevice;\n id?: DeviceSessionId;\n};\n\nexport type DeviceSessionRefresherOptions = {\n isRefresherDisabled: boolean;\n pollingInterval?: number;\n};\n\ntype SendApduOptions = {\n isPolling?: boolean;\n triggersDisconnection?: boolean;\n abortTimeout?: number;\n};\n\n/**\n * Represents a session with a device.\n */\nexport class DeviceSession {\n private readonly _id: DeviceSessionId;\n private readonly _connectedDevice: TransportConnectedDevice;\n private readonly _deviceState: BehaviorSubject<DeviceSessionState>;\n private readonly _managerApiService: ManagerApiService;\n private readonly _secureChannelService: SecureChannelService;\n private readonly _logger: LoggerPublisherService;\n private readonly _refresherOptions: DeviceSessionRefresherOptions;\n private _pinger: DevicePinger;\n private _deviceSessionRefresher: DeviceSessionRefresher;\n private readonly _refresherService: RefresherService;\n private _commandMutex = new MutexService();\n private _sessionEventDispatcher = new DeviceSessionEventDispatcher();\n\n constructor(\n { connectedDevice, id = uuidv4() }: SessionConstructorArgs,\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n managerApiService: ManagerApiService,\n secureChannelService: SecureChannelService,\n deviceSessionRefresherOptions: DeviceSessionRefresherOptions | undefined,\n ) {\n this._id = id;\n this._connectedDevice = connectedDevice;\n this._logger = loggerModuleFactory(\"device-session\");\n this._managerApiService = managerApiService;\n this._secureChannelService = secureChannelService;\n this._refresherOptions = {\n ...DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS,\n ...deviceSessionRefresherOptions,\n };\n this._deviceState = new BehaviorSubject<DeviceSessionState>({\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n deviceModelId: this._connectedDevice.deviceModel.id,\n });\n\n this._pinger = new DevicePinger(\n loggerModuleFactory,\n connectedDevice,\n this._sessionEventDispatcher,\n (command, abortTimeout) => this.sendCommand(command, abortTimeout),\n );\n this._deviceSessionRefresher = new DeviceSessionRefresher(\n loggerModuleFactory,\n this._refresherOptions,\n this._sessionEventDispatcher,\n this._connectedDevice,\n );\n new DeviceSessionStateHandler(\n loggerModuleFactory,\n this._sessionEventDispatcher,\n this._connectedDevice,\n this._deviceState,\n (state) => this.setDeviceSessionState(state),\n );\n\n this._refresherService = new RefresherService(loggerModuleFactory, {\n start: () => this._deviceSessionRefresher.restartRefresher(),\n stop: () => this._deviceSessionRefresher.stopRefresher(),\n });\n }\n\n public async initialiseSession(): Promise<void> {\n try {\n await this._pinger.ping();\n } catch (error) {\n this._logger.error(\"Error while initialising session\", {\n data: { error },\n });\n throw error;\n } finally {\n if (!this._refresherOptions.isRefresherDisabled) {\n this._deviceSessionRefresher.startRefresher();\n }\n }\n }\n\n public get id(): DeviceSessionId {\n return this._id;\n }\n\n public get connectedDevice(): TransportConnectedDevice {\n return this._connectedDevice;\n }\n\n public get state(): Observable<DeviceSessionState> {\n return this._deviceState.asObservable();\n }\n\n public getDeviceSessionState(): DeviceSessionState {\n return this._deviceState.getValue();\n }\n\n public setDeviceSessionState(state: DeviceSessionState): void {\n this._deviceState.next(state);\n }\n\n public async sendApdu(\n rawApdu: Uint8Array,\n options: SendApduOptions = {\n isPolling: false,\n triggersDisconnection: false,\n abortTimeout: undefined,\n },\n ): Promise<Either<DmkError, ApduResponse>> {\n const release = await this._commandMutex.lock();\n\n try {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_BUSY,\n });\n\n this._logger.debug(`[exchange] => ${bufferToHexaString(rawApdu, false)}`);\n const result = await this._connectedDevice.sendApdu(\n rawApdu,\n options.triggersDisconnection,\n options.abortTimeout,\n );\n\n result\n .ifRight((response: ApduResponse) => {\n this._logger.debug(\n `[exchange] <= ${bufferToHexaString(response.data, false)}${bufferToHexaString(response.statusCode, false)}`,\n );\n if (CommandUtils.isLockedDeviceResponse(response)) {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_LOCKED,\n });\n } else {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n }\n })\n .ifLeft(() => {\n this._sessionEventDispatcher.dispatch({\n eventName: SessionEvents.DEVICE_STATE_UPDATE_CONNECTED,\n });\n });\n return result;\n } finally {\n release();\n }\n }\n\n public async sendCommand<Response, Args, ErrorStatusCodes>(\n command: Command<Response, Args, ErrorStatusCodes>,\n abortTimeout?: number,\n ): Promise<CommandResult<Response, ErrorStatusCodes>> {\n const apdu = command.getApdu();\n\n const response = await this.sendApdu(apdu.getRawApdu(), {\n isPolling: false,\n triggersDisconnection: command.triggersDisconnection ?? false,\n abortTimeout,\n });\n\n return response.caseOf({\n Left: (err) => {\n throw err;\n },\n Right: (r) =>\n command.parseResponse(r, this._connectedDevice.deviceModel.id),\n });\n }\n\n public executeDeviceAction<\n Output,\n Input,\n E extends DmkError,\n IntermediateValue extends DeviceActionIntermediateValue,\n >(\n deviceAction: DeviceAction<Output, Input, E, IntermediateValue>,\n ): ExecuteDeviceActionReturnType<Output, E, IntermediateValue> {\n const { observable, cancel } = deviceAction._execute({\n sendApdu: async (apdu: Uint8Array) => this.sendApdu(apdu),\n sendCommand: async <Response, ErrorStatusCodes, Args>(\n command: Command<Response, ErrorStatusCodes, Args>,\n abortTimeout?: number,\n ) => this.sendCommand(command, abortTimeout),\n getDeviceModel: () => this._connectedDevice.deviceModel,\n getDeviceSessionState: () => this._deviceState.getValue(),\n getDeviceSessionStateObservable: () => this.state,\n setDeviceSessionState: (state: DeviceSessionState) => {\n this.setDeviceSessionState(state);\n return this._deviceState.getValue();\n },\n disableRefresher: (blockerId: string) =>\n this._refresherService.disableRefresher(blockerId),\n getManagerApiService: () => this._managerApiService,\n getSecureChannelService: () => this._secureChannelService,\n });\n return { observable, cancel };\n }\n\n public close(): void {\n this._updateDeviceStatus(DeviceStatus.NOT_CONNECTED);\n this._deviceState.complete();\n this._deviceSessionRefresher.stopRefresher();\n }\n\n public disableRefresher(id: string): () => void {\n return this._refresherService.disableRefresher(id);\n }\n\n private _updateDeviceStatus(deviceStatus: DeviceStatus): void {\n const state = this._deviceState.getValue();\n this._deviceState.next({ ...state, deviceStatus });\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["BehaviorSubject", "uuidv4", "CommandUtils", "DeviceStatus", "DeviceSessionStateType", "bufferToHexaString", "DEVICE_SESSION_REFRESHER_DEFAULT_OPTIONS", "MutexService", "RefresherService", "DevicePinger", "DeviceSessionEventDispatcher", "SessionEvents", "DeviceSessionRefresher", "DeviceSessionStateHandler", "DeviceSession", "connectedDevice", "id", "loggerModuleFactory", "managerApiService", "secureChannelService", "deviceSessionRefresherOptions", "command", "abortTimeout", "state", "error", "rawApdu", "options", "release", "result", "response", "apdu", "err", "r", "deviceAction", "observable", "cancel", "blockerId", "deviceStatus"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var R=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var d=(s,e,r,t)=>{for(var n=t>1?void 0:t?S(e,r):e,i=s.length-1,a;i>=0;i--)(a=s[i])&&(n=(t?a(e,r,n):a(n))||n);return t&&n&&R(e,r,n),n},l=(s,e)=>(r,t)=>e(r,t,s);import{inject as N,injectable as T}from"inversify";import{Just as u,Left as F,Maybe as U,Nothing as p,Right as H}from"purify-ts";import{v4 as C}from"uuid";import{ApduResponse as D}from"../../../api/device-session/ApduResponse";import{APDU_DATA_LENGTH_LENGTH as G,CHANNEL_LENGTH as P,HEAD_TAG_LENGTH as o,INDEX_LENGTH as g}from"../../../api/device-session/data/FramerConst";import{FramerUtils as h}from"../../../api/device-session/utils/FramerUtils";import{APDU_RESPONSE_STATUS_CODE_LENGTH as _}from"../../device-session/data/ApduResponseConst";import{ReceiverApduError as f}from"../../device-session/model/Errors";import{Frame as z}from"../../device-session/model/Frame";import{FrameHeader as x}from"../../device-session/model/FrameHeader";import{loggerTypes as B}from"../../logger-publisher/di/loggerTypes";let c=class{_channel;_logger;_pendingFrames;constructor({channel:e=U.zero()},r){this._channel=e,this._logger=r("ApduReceiverService"),this._pendingFrames=[]}handleFrame(e){return this.getFrameFromBytes(e).map(t=>{if(this._logger.debug("handle frame",{data:{frame:t.getRawData()}}),this._pendingFrames.push(t),!this._pendingFrames[0])return p;const n=this._pendingFrames[0].getHeader().getDataLength();return this.getCompleteFrame(n)})}getCompleteFrame(e){return e.chain(r=>{if(!this.isComplete(r))return this._logger.debug("frame is not complete, waiting for more"),p;const t=h.getFirstBytesFrom(this.concatFrames(this._pendingFrames),r),n=h.getFirstBytesFrom(t,t.length-_),i=h.getLastBytesFrom(t,_);return this._pendingFrames=[],u(new D({data:n,statusCode:i}))})}getFrameFromBytes(e){const r=this._channel.caseOf({Just:()=>P,Nothing:()=>0}),t=e.slice(r,r+o),n=e.slice(r+o,r+o+g),i=n.reduce((v,L)=>v+L,0)===0;if(!i&&this._pendingFrames.length===0)return F(new f);const a=r+o+g,m=i?G:0;if(e.length<r+o+g+m)return F(new f("Unable to parse header from apdu"));const A=i?u(e.slice(a,a+m)):p,y=a+m,E=e.slice(y),b=new z({header:new x({uuid:C(),channel:this._channel,dataSize:A,headTag:t,index:n,length:r+o+g+m}),data:E});return H(b)}isComplete(e){return this._pendingFrames.reduce((t,n)=>t+n.getData().length,0)>=e}concatFrames(e){return e.reduce((r,t)=>Uint8Array.from([...r,...t.getData()]),new Uint8Array(0))}};c=d([T(),l(1,N(B.LoggerPublisherServiceFactory))],c);export{c as DefaultApduReceiverService};
1
+ var S=Object.defineProperty;var N=Object.getOwnPropertyDescriptor;var d=(s,e,r,t)=>{for(var n=t>1?void 0:t?N(e,r):e,i=s.length-1,a;i>=0;i--)(a=s[i])&&(n=(t?a(e,r,n):a(n))||n);return t&&n&&S(e,r,n),n},l=(s,e)=>(r,t)=>e(r,t,s);import{inject as R,injectable as T}from"inversify";import{Just as u,Left as F,Maybe as U,Nothing as p,Right as H}from"purify-ts";import{v4 as C}from"uuid";import{ApduResponse as D}from"../../../api/device-session/ApduResponse";import{APDU_DATA_LENGTH_LENGTH as G,CHANNEL_LENGTH as P,HEAD_TAG_LENGTH as o,INDEX_LENGTH as c}from"../../../api/device-session/data/FramerConst";import{FramerUtils as h}from"../../../api/device-session/utils/FramerUtils";import{APDU_RESPONSE_STATUS_CODE_LENGTH as _}from"../../device-session/data/ApduResponseConst";import{ReceiverApduError as A}from"../../device-session/model/Errors";import{Frame as z}from"../../device-session/model/Frame";import{FrameHeader as x}from"../../device-session/model/FrameHeader";import{loggerTypes as B}from"../../logger-publisher/di/loggerTypes";let g=class{_channel;_logger;_pendingFrames;constructor({channel:e=U.zero()},r){this._channel=e,this._logger=r("ApduReceiverService"),this._pendingFrames=[]}handleFrame(e){return this.getFrameFromBytes(e).map(t=>{if(this._pendingFrames.push(t),!this._pendingFrames[0])return p;const n=this._pendingFrames[0].getHeader().getDataLength();return this.getCompleteFrame(n)})}getCompleteFrame(e){return e.chain(r=>{if(!this.isComplete(r))return this._logger.debug("frame is not complete, waiting for more"),p;const t=h.getFirstBytesFrom(this.concatFrames(this._pendingFrames),r),n=h.getFirstBytesFrom(t,t.length-_),i=h.getLastBytesFrom(t,_);return this._pendingFrames=[],u(new D({data:n,statusCode:i}))})}getFrameFromBytes(e){const r=this._channel.caseOf({Just:()=>P,Nothing:()=>0}),t=e.slice(r,r+o),n=e.slice(r+o,r+o+c),i=n.reduce((L,b)=>L+b,0)===0;if(!i&&this._pendingFrames.length===0)return F(new A);const a=r+o+c,m=i?G:0;if(e.length<r+o+c+m)return F(new A("Unable to parse header from apdu"));const f=i?u(e.slice(a,a+m)):p,y=a+m,v=e.slice(y),E=new z({header:new x({uuid:C(),channel:this._channel,dataSize:f,headTag:t,index:n,length:r+o+c+m}),data:v});return H(E)}isComplete(e){return this._pendingFrames.reduce((t,n)=>t+n.getData().length,0)>=e}concatFrames(e){return e.reduce((r,t)=>Uint8Array.from([...r,...t.getData()]),new Uint8Array(0))}};g=d([T(),l(1,R(B.LoggerPublisherServiceFactory))],g);export{g as DefaultApduReceiverService};
2
2
  //# sourceMappingURL=DefaultApduReceiverService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/service/DefaultApduReceiverService.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\nimport { v4 } from \"uuid\";\n\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n APDU_DATA_LENGTH_LENGTH,\n CHANNEL_LENGTH,\n HEAD_TAG_LENGTH,\n INDEX_LENGTH,\n} from \"@api/device-session/data/FramerConst\";\nimport {\n type ApduReceiverConstructorArgs,\n ApduReceiverService,\n} from \"@api/device-session/service/ApduReceiverService\";\nimport { FramerUtils } from \"@api/device-session/utils/FramerUtils\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { APDU_RESPONSE_STATUS_CODE_LENGTH } from \"@internal/device-session/data/ApduResponseConst\";\nimport { ReceiverApduError } from \"@internal/device-session/model/Errors\";\nimport { Frame } from \"@internal/device-session/model/Frame\";\nimport { FrameHeader } from \"@internal/device-session/model/FrameHeader\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\n@injectable()\nexport class DefaultApduReceiverService implements ApduReceiverService {\n private readonly _channel: Maybe<Uint8Array>;\n private readonly _logger: LoggerPublisherService;\n private _pendingFrames: Frame[];\n\n constructor(\n { channel = Maybe.zero() }: ApduReceiverConstructorArgs,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._channel = channel;\n this._logger = loggerModuleFactory(\"ApduReceiverService\");\n this._pendingFrames = [];\n }\n\n /*\n * Return\n * - A complete ApduResponse\n * - Or a Nothing if not all the data has been received\n * - Or a ReceiverApduError if the apdu is not formatted correctly\n *\n * @param Uint8Array\n */\n public handleFrame(\n frameBytes: Uint8Array,\n ): Either<ReceiverApduError, Maybe<ApduResponse>> {\n const frame = this.getFrameFromBytes(frameBytes);\n\n return frame.map((value) => {\n this._logger.debug(\"handle frame\", {\n data: { frame: value.getRawData() },\n });\n this._pendingFrames.push(value);\n if (!this._pendingFrames[0]) {\n return Nothing;\n }\n const dataSize = this._pendingFrames[0].getHeader().getDataLength();\n return this.getCompleteFrame(dataSize);\n });\n }\n\n /*\n * Return\n * - A complete ApduResponse\n * - Or a Nothing if not all the data has been received\n *\n * @param Maybe<number>\n */\n private getCompleteFrame(dataSize: Maybe<number>): Maybe<ApduResponse> {\n return dataSize.chain((value) => {\n if (!this.isComplete(value)) {\n this._logger.debug(\"frame is not complete, waiting for more\");\n return Nothing;\n }\n\n const concatenatedFramesData = FramerUtils.getFirstBytesFrom(\n this.concatFrames(this._pendingFrames),\n value,\n );\n const data = FramerUtils.getFirstBytesFrom(\n concatenatedFramesData,\n concatenatedFramesData.length - APDU_RESPONSE_STATUS_CODE_LENGTH,\n );\n const statusCode = FramerUtils.getLastBytesFrom(\n concatenatedFramesData,\n APDU_RESPONSE_STATUS_CODE_LENGTH,\n );\n\n this._pendingFrames = [];\n\n return Just(\n new ApduResponse({\n data: data,\n statusCode,\n }),\n );\n });\n }\n\n /*\n * Parse an Uint8Array to a Frame\n * Return an error if the frame is not formatted correctly\n *\n * @param Uint8Array\n */\n private getFrameFromBytes(\n rawFrame: Uint8Array,\n ): Either<ReceiverApduError, Frame> {\n const channelSize = this._channel.caseOf({\n Just: () => CHANNEL_LENGTH,\n Nothing: () => 0,\n });\n\n const headTag = rawFrame.slice(channelSize, channelSize + HEAD_TAG_LENGTH);\n const index = rawFrame.slice(\n channelSize + HEAD_TAG_LENGTH,\n channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH,\n );\n\n const isFirstIndex = index.reduce((curr, val) => curr + val, 0) === 0;\n\n if (!isFirstIndex && this._pendingFrames.length === 0) {\n return Left(new ReceiverApduError());\n }\n\n const dataSizeIndex = channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH;\n const dataSizeLength = isFirstIndex ? APDU_DATA_LENGTH_LENGTH : 0;\n\n if (\n rawFrame.length <\n channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH + dataSizeLength\n ) {\n return Left(new ReceiverApduError(\"Unable to parse header from apdu\"));\n }\n\n const dataSize = isFirstIndex\n ? Just(rawFrame.slice(dataSizeIndex, dataSizeIndex + dataSizeLength))\n : Nothing;\n\n const dataIndex = dataSizeIndex + dataSizeLength;\n const data = rawFrame.slice(dataIndex);\n\n const frame = new Frame({\n header: new FrameHeader({\n uuid: v4(),\n channel: this._channel,\n dataSize,\n headTag,\n index,\n length: channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH + dataSizeLength,\n }),\n data,\n });\n\n return Right(frame);\n }\n\n /*\n * Return true if all the datas has been received\n *\n * @param number\n */\n private isComplete(dataSize: number): boolean {\n const totalReceiveLength = this._pendingFrames.reduce(\n (prev, curr) => prev + curr.getData().length,\n 0,\n );\n\n return totalReceiveLength >= dataSize;\n }\n\n private concatFrames(frames: Frame[]): Uint8Array {\n return frames.reduce(\n (prev: Uint8Array, curr: Frame) =>\n Uint8Array.from([...prev, ...curr.getData()]),\n new Uint8Array(0),\n );\n }\n}\n"],
5
- "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAiB,QAAAC,EAAM,QAAAC,EAAM,SAAAC,EAAO,WAAAC,EAAS,SAAAC,MAAa,YAC1D,OAAS,MAAAC,MAAU,OAEnB,OAAS,gBAAAC,MAAoB,mCAC7B,OACE,2BAAAC,EACA,kBAAAC,EACA,mBAAAC,EACA,gBAAAC,MACK,uCAKP,OAAS,eAAAC,MAAmB,wCAE5B,OAAS,oCAAAC,MAAwC,kDACjD,OAAS,qBAAAC,MAAyB,wCAClC,OAAS,SAAAC,MAAa,uCACtB,OAAS,eAAAC,MAAmB,6CAC5B,OAAS,eAAAC,MAAmB,4CAGrB,IAAMC,EAAN,KAAgE,CACpD,SACA,QACT,eAER,YACE,CAAE,QAAAC,EAAUC,EAAM,KAAK,CAAE,EAEzBC,EACA,CACA,KAAK,SAAWF,EAChB,KAAK,QAAUE,EAAoB,qBAAqB,EACxD,KAAK,eAAiB,CAAC,CACzB,CAUO,YACLC,EACgD,CAGhD,OAFc,KAAK,kBAAkBA,CAAU,EAElC,IAAKC,GAAU,CAK1B,GAJA,KAAK,QAAQ,MAAM,eAAgB,CACjC,KAAM,CAAE,MAAOA,EAAM,WAAW,CAAE,CACpC,CAAC,EACD,KAAK,eAAe,KAAKA,CAAK,EAC1B,CAAC,KAAK,eAAe,CAAC,EACxB,OAAOC,EAET,MAAMC,EAAW,KAAK,eAAe,CAAC,EAAE,UAAU,EAAE,cAAc,EAClE,OAAO,KAAK,iBAAiBA,CAAQ,CACvC,CAAC,CACH,CASQ,iBAAiBA,EAA8C,CACrE,OAAOA,EAAS,MAAOF,GAAU,CAC/B,GAAI,CAAC,KAAK,WAAWA,CAAK,EACxB,YAAK,QAAQ,MAAM,yCAAyC,EACrDC,EAGT,MAAME,EAAyBC,EAAY,kBACzC,KAAK,aAAa,KAAK,cAAc,EACrCJ,CACF,EACMK,EAAOD,EAAY,kBACvBD,EACAA,EAAuB,OAASG,CAClC,EACMC,EAAaH,EAAY,iBAC7BD,EACAG,CACF,EAEA,YAAK,eAAiB,CAAC,EAEhBE,EACL,IAAIC,EAAa,CACf,KAAMJ,EACN,WAAAE,CACF,CAAC,CACH,CACF,CAAC,CACH,CAQQ,kBACNG,EACkC,CAClC,MAAMC,EAAc,KAAK,SAAS,OAAO,CACvC,KAAM,IAAMC,EACZ,QAAS,IAAM,CACjB,CAAC,EAEKC,EAAUH,EAAS,MAAMC,EAAaA,EAAcG,CAAe,EACnEC,EAAQL,EAAS,MACrBC,EAAcG,EACdH,EAAcG,EAAkBE,CAClC,EAEMC,EAAeF,EAAM,OAAO,CAACG,EAAMC,IAAQD,EAAOC,EAAK,CAAC,IAAM,EAEpE,GAAI,CAACF,GAAgB,KAAK,eAAe,SAAW,EAClD,OAAOG,EAAK,IAAIC,CAAmB,EAGrC,MAAMC,EAAgBX,EAAcG,EAAkBE,EAChDO,EAAiBN,EAAeO,EAA0B,EAEhE,GACEd,EAAS,OACTC,EAAcG,EAAkBE,EAAeO,EAE/C,OAAOH,EAAK,IAAIC,EAAkB,kCAAkC,CAAC,EAGvE,MAAMnB,EAAWe,EACbT,EAAKE,EAAS,MAAMY,EAAeA,EAAgBC,CAAc,CAAC,EAClEtB,EAEEwB,EAAYH,EAAgBC,EAC5BlB,EAAOK,EAAS,MAAMe,CAAS,EAE/BC,EAAQ,IAAIC,EAAM,CACtB,OAAQ,IAAIC,EAAY,CACtB,KAAMC,EAAG,EACT,QAAS,KAAK,SACd,SAAA3B,EACA,QAAAW,EACA,MAAAE,EACA,OAAQJ,EAAcG,EAAkBE,EAAeO,CACzD,CAAC,EACD,KAAAlB,CACF,CAAC,EAED,OAAOyB,EAAMJ,CAAK,CACpB,CAOQ,WAAWxB,EAA2B,CAM5C,OAL2B,KAAK,eAAe,OAC7C,CAAC6B,EAAMb,IAASa,EAAOb,EAAK,QAAQ,EAAE,OACtC,CACF,GAE6BhB,CAC/B,CAEQ,aAAa8B,EAA6B,CAChD,OAAOA,EAAO,OACZ,CAACD,EAAkBb,IACjB,WAAW,KAAK,CAAC,GAAGa,EAAM,GAAGb,EAAK,QAAQ,CAAC,CAAC,EAC9C,IAAI,WAAW,CAAC,CAClB,CACF,CACF,EA9JavB,EAANsC,EAAA,CADNC,EAAW,EAQPC,EAAA,EAAAC,EAAOC,EAAY,6BAA6B,IAPxC1C",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either, Just, Left, Maybe, Nothing, Right } from \"purify-ts\";\nimport { v4 } from \"uuid\";\n\nimport { ApduResponse } from \"@api/device-session/ApduResponse\";\nimport {\n APDU_DATA_LENGTH_LENGTH,\n CHANNEL_LENGTH,\n HEAD_TAG_LENGTH,\n INDEX_LENGTH,\n} from \"@api/device-session/data/FramerConst\";\nimport {\n type ApduReceiverConstructorArgs,\n ApduReceiverService,\n} from \"@api/device-session/service/ApduReceiverService\";\nimport { FramerUtils } from \"@api/device-session/utils/FramerUtils\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { APDU_RESPONSE_STATUS_CODE_LENGTH } from \"@internal/device-session/data/ApduResponseConst\";\nimport { ReceiverApduError } from \"@internal/device-session/model/Errors\";\nimport { Frame } from \"@internal/device-session/model/Frame\";\nimport { FrameHeader } from \"@internal/device-session/model/FrameHeader\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\n@injectable()\nexport class DefaultApduReceiverService implements ApduReceiverService {\n private readonly _channel: Maybe<Uint8Array>;\n private readonly _logger: LoggerPublisherService;\n private _pendingFrames: Frame[];\n\n constructor(\n { channel = Maybe.zero() }: ApduReceiverConstructorArgs,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._channel = channel;\n this._logger = loggerModuleFactory(\"ApduReceiverService\");\n this._pendingFrames = [];\n }\n\n /*\n * Return\n * - A complete ApduResponse\n * - Or a Nothing if not all the data has been received\n * - Or a ReceiverApduError if the apdu is not formatted correctly\n *\n * @param Uint8Array\n */\n public handleFrame(\n frameBytes: Uint8Array,\n ): Either<ReceiverApduError, Maybe<ApduResponse>> {\n const frame = this.getFrameFromBytes(frameBytes);\n\n return frame.map((value) => {\n this._pendingFrames.push(value);\n if (!this._pendingFrames[0]) {\n return Nothing;\n }\n const dataSize = this._pendingFrames[0].getHeader().getDataLength();\n return this.getCompleteFrame(dataSize);\n });\n }\n\n /*\n * Return\n * - A complete ApduResponse\n * - Or a Nothing if not all the data has been received\n *\n * @param Maybe<number>\n */\n private getCompleteFrame(dataSize: Maybe<number>): Maybe<ApduResponse> {\n return dataSize.chain((value) => {\n if (!this.isComplete(value)) {\n this._logger.debug(\"frame is not complete, waiting for more\");\n return Nothing;\n }\n\n const concatenatedFramesData = FramerUtils.getFirstBytesFrom(\n this.concatFrames(this._pendingFrames),\n value,\n );\n const data = FramerUtils.getFirstBytesFrom(\n concatenatedFramesData,\n concatenatedFramesData.length - APDU_RESPONSE_STATUS_CODE_LENGTH,\n );\n const statusCode = FramerUtils.getLastBytesFrom(\n concatenatedFramesData,\n APDU_RESPONSE_STATUS_CODE_LENGTH,\n );\n\n this._pendingFrames = [];\n\n return Just(\n new ApduResponse({\n data: data,\n statusCode,\n }),\n );\n });\n }\n\n /*\n * Parse an Uint8Array to a Frame\n * Return an error if the frame is not formatted correctly\n *\n * @param Uint8Array\n */\n private getFrameFromBytes(\n rawFrame: Uint8Array,\n ): Either<ReceiverApduError, Frame> {\n const channelSize = this._channel.caseOf({\n Just: () => CHANNEL_LENGTH,\n Nothing: () => 0,\n });\n\n const headTag = rawFrame.slice(channelSize, channelSize + HEAD_TAG_LENGTH);\n const index = rawFrame.slice(\n channelSize + HEAD_TAG_LENGTH,\n channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH,\n );\n\n const isFirstIndex = index.reduce((curr, val) => curr + val, 0) === 0;\n\n if (!isFirstIndex && this._pendingFrames.length === 0) {\n return Left(new ReceiverApduError());\n }\n\n const dataSizeIndex = channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH;\n const dataSizeLength = isFirstIndex ? APDU_DATA_LENGTH_LENGTH : 0;\n\n if (\n rawFrame.length <\n channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH + dataSizeLength\n ) {\n return Left(new ReceiverApduError(\"Unable to parse header from apdu\"));\n }\n\n const dataSize = isFirstIndex\n ? Just(rawFrame.slice(dataSizeIndex, dataSizeIndex + dataSizeLength))\n : Nothing;\n\n const dataIndex = dataSizeIndex + dataSizeLength;\n const data = rawFrame.slice(dataIndex);\n\n const frame = new Frame({\n header: new FrameHeader({\n uuid: v4(),\n channel: this._channel,\n dataSize,\n headTag,\n index,\n length: channelSize + HEAD_TAG_LENGTH + INDEX_LENGTH + dataSizeLength,\n }),\n data,\n });\n\n return Right(frame);\n }\n\n /*\n * Return true if all the datas has been received\n *\n * @param number\n */\n private isComplete(dataSize: number): boolean {\n const totalReceiveLength = this._pendingFrames.reduce(\n (prev, curr) => prev + curr.getData().length,\n 0,\n );\n\n return totalReceiveLength >= dataSize;\n }\n\n private concatFrames(frames: Frame[]): Uint8Array {\n return frames.reduce(\n (prev: Uint8Array, curr: Frame) =>\n Uint8Array.from([...prev, ...curr.getData()]),\n new Uint8Array(0),\n );\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["inject", "injectable", "Just", "Left", "Maybe", "Nothing", "Right", "v4", "ApduResponse", "APDU_DATA_LENGTH_LENGTH", "CHANNEL_LENGTH", "HEAD_TAG_LENGTH", "INDEX_LENGTH", "FramerUtils", "APDU_RESPONSE_STATUS_CODE_LENGTH", "ReceiverApduError", "Frame", "FrameHeader", "loggerTypes", "DefaultApduReceiverService", "channel", "Maybe", "loggerModuleFactory", "frameBytes", "value", "Nothing", "dataSize", "concatenatedFramesData", "FramerUtils", "data", "APDU_RESPONSE_STATUS_CODE_LENGTH", "statusCode", "Just", "ApduResponse", "rawFrame", "channelSize", "CHANNEL_LENGTH", "headTag", "HEAD_TAG_LENGTH", "index", "INDEX_LENGTH", "isFirstIndex", "curr", "val", "Left", "ReceiverApduError", "dataSizeIndex", "dataSizeLength", "APDU_DATA_LENGTH_LENGTH", "dataIndex", "frame", "Frame", "FrameHeader", "v4", "Right", "prev", "frames", "__decorateClass", "injectable", "__decorateParam", "inject", "loggerTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var A=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var c=(m,r,t,e)=>{for(var i=e>1?void 0:e?_(r,t):r,a=m.length-1,n;a>=0;a--)(n=m[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&A(r,t,i),i},d=(m,r)=>(t,e)=>r(t,e,m);import{inject as b,injectable as H}from"inversify";import{Left as l,Maybe as s,Right as z}from"purify-ts";import{v4 as v}from"uuid";import{APDU_DATA_LENGTH_LENGTH as p,CHANNEL_LENGTH as u,HEAD_TAG as y,HEAD_TAG_LENGTH as E,INDEX_LENGTH as f}from"../../../api/device-session/data/FramerConst";import{FramerUtils as g}from"../../../api/device-session/utils/FramerUtils";import{FramerApduError as L,FramerOverflowError as F}from"../../device-session/model/Errors";import{Frame as T}from"../../device-session/model/Frame";import{FrameHeader as w}from"../../device-session/model/FrameHeader";import{loggerTypes as N}from"../../logger-publisher/di/loggerTypes";let o=class{_frameSize;_channel;_padding;_logger;constructor({frameSize:r,channel:t=s.zero(),padding:e=!1},i){this._frameSize=r,this._channel=t,this._padding=e,this._logger=i("DefaultApduSenderService")}getFrames(r){const t=[];let e=0,i=this.getFrameAtIndex(r,e);for(;i.isRight();)t.push(i.extract()),e+=1,i=this.getFrameAtIndex(r,e).mapLeft(a=>(a instanceof F?this._logger.debug("Frames parsed",{data:{count:e}}):this._logger.error("Error while parsing frame",{data:{error:a}}),a));return t}getFrameAtIndex(r,t){const e=this.getFrameHeaderFrom(t,r.length),i=t===0?0:t*this._frameSize-this.getHeaderSizeSumFrom(t);if(i>=r.length)return l(new F);if(e.getLength()>this._frameSize)return l(new L);const a=this._frameSize-e.getLength(),n=r.slice(i,i+this._frameSize-e.getLength()),h=this._padding?new Uint8Array(a).fill(0):new Uint8Array(n.length<a?n.length:a);h.set(n,0);const S=new T({header:e,data:h});return z(S)}getFrameHeaderFrom(r,t){const e=new w({uuid:v(),channel:this._channel.map(i=>g.getLastBytesFrom(i,u)),headTag:new Uint8Array([y]),index:g.numberToByteArray(r,f),length:this.getFrameHeaderSizeFromIndex(r),dataSize:s.zero()});return r===0&&e.setDataSize(s.of(g.numberToByteArray(t,p))),e}getHeaderSizeSumFrom(r){let t=this.getFrameHeaderSizeFromIndex(0),e=1;for(;e<r;)t+=this.getFrameHeaderSizeFromIndex(e),e+=1;return t}getFrameHeaderSizeFromIndex(r){return this._channel.caseOf({Just:()=>u,Nothing:()=>0})+f+E+(r===0?p:0)}};o=c([H(),d(1,b(N.LoggerPublisherServiceFactory))],o);export{o as DefaultApduSenderService};
1
+ var A=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var c=(m,r,t,e)=>{for(var i=e>1?void 0:e?_(r,t):r,a=m.length-1,n;a>=0;a--)(n=m[a])&&(i=(e?n(r,t,i):n(i))||i);return e&&i&&A(r,t,i),i},d=(m,r)=>(t,e)=>r(t,e,m);import{inject as b,injectable as H}from"inversify";import{Left as l,Maybe as s,Right as z}from"purify-ts";import{v4 as v}from"uuid";import{APDU_DATA_LENGTH_LENGTH as p,CHANNEL_LENGTH as u,HEAD_TAG as y,HEAD_TAG_LENGTH as E,INDEX_LENGTH as f}from"../../../api/device-session/data/FramerConst";import{FramerUtils as g}from"../../../api/device-session/utils/FramerUtils";import{FramerApduError as L,FramerOverflowError as F}from"../../device-session/model/Errors";import{Frame as T}from"../../device-session/model/Frame";import{FrameHeader as w}from"../../device-session/model/FrameHeader";import{loggerTypes as N}from"../../logger-publisher/di/loggerTypes";let o=class{_frameSize;_channel;_padding;_logger;constructor({frameSize:r,channel:t=s.zero(),padding:e=!1},i){this._frameSize=r,this._channel=t,this._padding=e,this._logger=i("DefaultApduSenderService")}getFrames(r){const t=[];let e=0,i=this.getFrameAtIndex(r,e);for(;i.isRight();)t.push(i.extract()),e+=1,i=this.getFrameAtIndex(r,e).mapLeft(a=>(a instanceof F||this._logger.error("Error while parsing frame",{data:{error:a}}),a));return t}getFrameAtIndex(r,t){const e=this.getFrameHeaderFrom(t,r.length),i=t===0?0:t*this._frameSize-this.getHeaderSizeSumFrom(t);if(i>=r.length)return l(new F);if(e.getLength()>this._frameSize)return l(new L);const a=this._frameSize-e.getLength(),n=r.slice(i,i+this._frameSize-e.getLength()),h=this._padding?new Uint8Array(a).fill(0):new Uint8Array(n.length<a?n.length:a);h.set(n,0);const S=new T({header:e,data:h});return z(S)}getFrameHeaderFrom(r,t){const e=new w({uuid:v(),channel:this._channel.map(i=>g.getLastBytesFrom(i,u)),headTag:new Uint8Array([y]),index:g.numberToByteArray(r,f),length:this.getFrameHeaderSizeFromIndex(r),dataSize:s.zero()});return r===0&&e.setDataSize(s.of(g.numberToByteArray(t,p))),e}getHeaderSizeSumFrom(r){let t=this.getFrameHeaderSizeFromIndex(0),e=1;for(;e<r;)t+=this.getFrameHeaderSizeFromIndex(e),e+=1;return t}getFrameHeaderSizeFromIndex(r){return this._channel.caseOf({Just:()=>u,Nothing:()=>0})+f+E+(r===0?p:0)}};o=c([H(),d(1,b(N.LoggerPublisherServiceFactory))],o);export{o as DefaultApduSenderService};
2
2
  //# sourceMappingURL=DefaultApduSenderService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/service/DefaultApduSenderService.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\nimport { v4 } from \"uuid\";\n\nimport {\n APDU_DATA_LENGTH_LENGTH,\n CHANNEL_LENGTH,\n HEAD_TAG,\n HEAD_TAG_LENGTH,\n INDEX_LENGTH,\n} from \"@api/device-session/data/FramerConst\";\nimport type {\n ApduSenderService,\n ApduSenderServiceConstructorArgs,\n} from \"@api/device-session/service/ApduSenderService\";\nimport { FramerUtils } from \"@api/device-session/utils/FramerUtils\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport {\n FramerApduError,\n FramerOverflowError,\n} from \"@internal/device-session/model/Errors\";\nimport { Frame } from \"@internal/device-session/model/Frame\";\nimport { FrameHeader } from \"@internal/device-session/model/FrameHeader\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { DmkError } from \"@root/src/api/Error\";\n/**\n * Default implementation of ApduSenderService\n *\n * Split APDU in an array of frames readies to send to a TransportConnectedDevice\n */\n@injectable()\nexport class DefaultApduSenderService implements ApduSenderService {\n protected _frameSize: number;\n protected _channel: Maybe<Uint8Array>;\n protected _padding: boolean;\n private _logger: LoggerPublisherService;\n\n /**\n * Constructor\n *\n * @param frameSize\n * @param channel\n * @param padding\n * @param loggerServiceFactory\n */\n constructor(\n {\n frameSize,\n channel = Maybe.zero(),\n padding = false,\n }: ApduSenderServiceConstructorArgs,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerServiceFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._frameSize = frameSize;\n this._channel = channel;\n this._padding = padding;\n this._logger = loggerServiceFactory(\"DefaultApduSenderService\");\n }\n\n /**\n * Get frames from apdu\n *\n * @param apdu\n */\n public getFrames(apdu: Uint8Array): Frame[] {\n const frames: Frame[] = [];\n let count = 0;\n let frame = this.getFrameAtIndex(apdu, count);\n\n while (frame.isRight()) {\n frames.push(frame.extract());\n count += 1;\n frame = this.getFrameAtIndex(apdu, count).mapLeft((error) => {\n if (error instanceof FramerOverflowError) {\n this._logger.debug(\"Frames parsed\", { data: { count } });\n } else {\n this._logger.error(\"Error while parsing frame\", { data: { error } });\n }\n return error;\n });\n }\n return frames;\n }\n\n /**\n * Get apdu frame at index\n * Split every {{PACKET_SIZE - HEADER_SIZE}} bytes of apdu\n * @param apdu\n * @param frameIndex\n * @private\n */\n private getFrameAtIndex(\n apdu: Uint8Array,\n frameIndex: number,\n ): Either<DmkError, Frame> {\n const header = this.getFrameHeaderFrom(frameIndex, apdu.length);\n const frameOffset =\n frameIndex === 0\n ? 0\n : frameIndex * this._frameSize - this.getHeaderSizeSumFrom(frameIndex);\n\n if (frameOffset >= apdu.length) {\n return Left(new FramerOverflowError());\n }\n if (header.getLength() > this._frameSize) {\n return Left(new FramerApduError());\n }\n const dataMaxSize = this._frameSize - header.getLength();\n const data = apdu.slice(\n frameOffset,\n frameOffset + this._frameSize - header.getLength(),\n );\n const frameData = this._padding\n ? new Uint8Array(dataMaxSize).fill(0)\n : new Uint8Array(data.length < dataMaxSize ? data.length : dataMaxSize);\n frameData.set(data, 0);\n const frame = new Frame({\n header,\n data: frameData,\n });\n return Right(frame);\n }\n\n /**\n * Get frame header\n * @param frameIndex\n * @param apduSize\n * @private\n */\n private getFrameHeaderFrom(\n frameIndex: number,\n apduSize: number,\n ): FrameHeader {\n const header = new FrameHeader({\n uuid: v4(),\n channel: this._channel.map((channel) =>\n FramerUtils.getLastBytesFrom(channel, CHANNEL_LENGTH),\n ),\n headTag: new Uint8Array([HEAD_TAG]),\n index: FramerUtils.numberToByteArray(frameIndex, INDEX_LENGTH),\n length: this.getFrameHeaderSizeFromIndex(frameIndex),\n dataSize: Maybe.zero(),\n });\n if (frameIndex === 0) {\n header.setDataSize(\n Maybe.of(\n FramerUtils.numberToByteArray(apduSize, APDU_DATA_LENGTH_LENGTH),\n ),\n );\n }\n return header;\n }\n\n /**\n * Get frame offset\n * First frame has more bytes of header\n * Padding append means a 0 bytes is added at the end of each frame\n * @private\n * @param frameIndex\n */\n private getHeaderSizeSumFrom(frameIndex: number): number {\n let sum = this.getFrameHeaderSizeFromIndex(0);\n let i = 1;\n while (i < frameIndex) {\n sum += this.getFrameHeaderSizeFromIndex(i);\n i += 1;\n }\n return sum;\n }\n\n /**\n * Get frame header size\n * @private\n * @param frameIndex\n */\n private getFrameHeaderSizeFromIndex(frameIndex: number): number {\n return (\n this._channel.caseOf({\n Just: () => CHANNEL_LENGTH,\n Nothing: () => 0,\n }) +\n INDEX_LENGTH +\n HEAD_TAG_LENGTH +\n (frameIndex === 0 ? APDU_DATA_LENGTH_LENGTH : 0)\n );\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Either, Left, Maybe, Right } from \"purify-ts\";\nimport { v4 } from \"uuid\";\n\nimport {\n APDU_DATA_LENGTH_LENGTH,\n CHANNEL_LENGTH,\n HEAD_TAG,\n HEAD_TAG_LENGTH,\n INDEX_LENGTH,\n} from \"@api/device-session/data/FramerConst\";\nimport type {\n ApduSenderService,\n ApduSenderServiceConstructorArgs,\n} from \"@api/device-session/service/ApduSenderService\";\nimport { FramerUtils } from \"@api/device-session/utils/FramerUtils\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport {\n FramerApduError,\n FramerOverflowError,\n} from \"@internal/device-session/model/Errors\";\nimport { Frame } from \"@internal/device-session/model/Frame\";\nimport { FrameHeader } from \"@internal/device-session/model/FrameHeader\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { DmkError } from \"@root/src/api/Error\";\n/**\n * Default implementation of ApduSenderService\n *\n * Split APDU in an array of frames readies to send to a TransportConnectedDevice\n */\n@injectable()\nexport class DefaultApduSenderService implements ApduSenderService {\n protected _frameSize: number;\n protected _channel: Maybe<Uint8Array>;\n protected _padding: boolean;\n private _logger: LoggerPublisherService;\n\n /**\n * Constructor\n *\n * @param frameSize\n * @param channel\n * @param padding\n * @param loggerServiceFactory\n */\n constructor(\n {\n frameSize,\n channel = Maybe.zero(),\n padding = false,\n }: ApduSenderServiceConstructorArgs,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerServiceFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._frameSize = frameSize;\n this._channel = channel;\n this._padding = padding;\n this._logger = loggerServiceFactory(\"DefaultApduSenderService\");\n }\n\n /**\n * Get frames from apdu\n *\n * @param apdu\n */\n public getFrames(apdu: Uint8Array): Frame[] {\n const frames: Frame[] = [];\n let count = 0;\n let frame = this.getFrameAtIndex(apdu, count);\n\n while (frame.isRight()) {\n frames.push(frame.extract());\n count += 1;\n frame = this.getFrameAtIndex(apdu, count).mapLeft((error) => {\n if (error instanceof FramerOverflowError) {\n // do nothing\n } else {\n this._logger.error(\"Error while parsing frame\", { data: { error } });\n }\n return error;\n });\n }\n return frames;\n }\n\n /**\n * Get apdu frame at index\n * Split every {{PACKET_SIZE - HEADER_SIZE}} bytes of apdu\n * @param apdu\n * @param frameIndex\n * @private\n */\n private getFrameAtIndex(\n apdu: Uint8Array,\n frameIndex: number,\n ): Either<DmkError, Frame> {\n const header = this.getFrameHeaderFrom(frameIndex, apdu.length);\n const frameOffset =\n frameIndex === 0\n ? 0\n : frameIndex * this._frameSize - this.getHeaderSizeSumFrom(frameIndex);\n\n if (frameOffset >= apdu.length) {\n return Left(new FramerOverflowError());\n }\n if (header.getLength() > this._frameSize) {\n return Left(new FramerApduError());\n }\n const dataMaxSize = this._frameSize - header.getLength();\n const data = apdu.slice(\n frameOffset,\n frameOffset + this._frameSize - header.getLength(),\n );\n const frameData = this._padding\n ? new Uint8Array(dataMaxSize).fill(0)\n : new Uint8Array(data.length < dataMaxSize ? data.length : dataMaxSize);\n frameData.set(data, 0);\n const frame = new Frame({\n header,\n data: frameData,\n });\n return Right(frame);\n }\n\n /**\n * Get frame header\n * @param frameIndex\n * @param apduSize\n * @private\n */\n private getFrameHeaderFrom(\n frameIndex: number,\n apduSize: number,\n ): FrameHeader {\n const header = new FrameHeader({\n uuid: v4(),\n channel: this._channel.map((channel) =>\n FramerUtils.getLastBytesFrom(channel, CHANNEL_LENGTH),\n ),\n headTag: new Uint8Array([HEAD_TAG]),\n index: FramerUtils.numberToByteArray(frameIndex, INDEX_LENGTH),\n length: this.getFrameHeaderSizeFromIndex(frameIndex),\n dataSize: Maybe.zero(),\n });\n if (frameIndex === 0) {\n header.setDataSize(\n Maybe.of(\n FramerUtils.numberToByteArray(apduSize, APDU_DATA_LENGTH_LENGTH),\n ),\n );\n }\n return header;\n }\n\n /**\n * Get frame offset\n * First frame has more bytes of header\n * Padding append means a 0 bytes is added at the end of each frame\n * @private\n * @param frameIndex\n */\n private getHeaderSizeSumFrom(frameIndex: number): number {\n let sum = this.getFrameHeaderSizeFromIndex(0);\n let i = 1;\n while (i < frameIndex) {\n sum += this.getFrameHeaderSizeFromIndex(i);\n i += 1;\n }\n return sum;\n }\n\n /**\n * Get frame header size\n * @private\n * @param frameIndex\n */\n private getFrameHeaderSizeFromIndex(frameIndex: number): number {\n return (\n this._channel.caseOf({\n Just: () => CHANNEL_LENGTH,\n Nothing: () => 0,\n }) +\n INDEX_LENGTH +\n HEAD_TAG_LENGTH +\n (frameIndex === 0 ? APDU_DATA_LENGTH_LENGTH : 0)\n );\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["inject", "injectable", "Left", "Maybe", "Right", "v4", "APDU_DATA_LENGTH_LENGTH", "CHANNEL_LENGTH", "HEAD_TAG", "HEAD_TAG_LENGTH", "INDEX_LENGTH", "FramerUtils", "FramerApduError", "FramerOverflowError", "Frame", "FrameHeader", "loggerTypes", "DefaultApduSenderService", "frameSize", "channel", "Maybe", "padding", "loggerServiceFactory", "apdu", "frames", "count", "frame", "error", "FramerOverflowError", "frameIndex", "header", "frameOffset", "Left", "FramerApduError", "dataMaxSize", "data", "frameData", "Frame", "Right", "apduSize", "FrameHeader", "v4", "FramerUtils", "CHANNEL_LENGTH", "HEAD_TAG", "INDEX_LENGTH", "APDU_DATA_LENGTH_LENGTH", "sum", "i", "HEAD_TAG_LENGTH", "__decorateClass", "injectable", "__decorateParam", "inject", "loggerTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- var d=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var g=(t,e,i,s)=>{for(var o=s>1?void 0:s?l(e,i):e,n=t.length-1,c;n>=0;n--)(c=t[n])&&(o=(s?c(e,i,o):c(o))||o);return s&&o&&d(e,i,o),o},v=(t,e)=>(i,s)=>e(i,s,t);import{inject as u,injectable as S}from"inversify";import{Maybe as a}from"purify-ts";import{ReplaySubject as b}from"rxjs";import{DeviceSessionNotFound as h}from"../../device-session/model/Errors";import{loggerTypes as m}from"../../logger-publisher/di/loggerTypes";let r=class{_sessions;_logger;_sessionsSubject;constructor(e){this._sessions=[],this._sessionsSubject=new b,this._logger=e("DeviceSessionService")}get sessionsObs(){return this._sessionsSubject.asObservable()}addDeviceSession(e){return this._sessions.find(s=>s.id===e.id)?(this._logger.warn("DeviceSession already exists",{data:{deviceSession:e}}),this):(this._sessions.push(e),this._sessionsSubject.next(e),this._logger.info("DeviceSession added",{data:{deviceSession:e}}),this)}removeDeviceSession(e){const i=this._sessions.find(s=>s.id===e);return i?(i.close(),this._sessions=this._sessions.filter(s=>s.id!==e),this._logger.info("DeviceSession removed",{data:{sessionId:e}}),this):(this._logger.warn("DeviceSession not found",{data:{sessionId:e}}),this)}getDeviceSessionById(e){return a.fromNullable(this._sessions.find(s=>s.id===e)).toEither(new h)}getDeviceSessionByDeviceId(e){return a.fromNullable(this._sessions.find(s=>s.connectedDevice.id===e)).toEither(new h)}getDeviceSessions(){return this._sessions}};r=g([S(),v(0,u(m.LoggerPublisherServiceFactory))],r);export{r as DefaultDeviceSessionService};
1
+ var h=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var g=(t,e,i,s)=>{for(var o=s>1?void 0:s?l(e,i):e,n=t.length-1,c;n>=0;n--)(c=t[n])&&(o=(s?c(e,i,o):c(o))||o);return s&&o&&h(e,i,o),o},d=(t,e)=>(i,s)=>e(i,s,t);import{inject as u,injectable as S}from"inversify";import{Maybe as v}from"purify-ts";import{ReplaySubject as b}from"rxjs";import{DeviceSessionNotFound as a}from"../../device-session/model/Errors";import{loggerTypes as m}from"../../logger-publisher/di/loggerTypes";let r=class{_sessions;_logger;_sessionsSubject;constructor(e){this._sessions=[],this._sessionsSubject=new b,this._logger=e("DeviceSessionService")}get sessionsObs(){return this._sessionsSubject.asObservable()}addDeviceSession(e){return this._sessions.find(s=>s.id===e.id)?(this._logger.warn("DeviceSession already exists",{data:{deviceSession:e}}),this):(this._sessions.push(e),this._sessionsSubject.next(e),this._logger.info("DeviceSession added",{data:{sessionId:e.id}}),this)}removeDeviceSession(e){const i=this._sessions.find(s=>s.id===e);return i?(i.close(),this._sessions=this._sessions.filter(s=>s.id!==e),this._logger.info("DeviceSession removed",{data:{sessionId:e}}),this):(this._logger.warn("DeviceSession not found",{data:{sessionId:e}}),this)}getDeviceSessionById(e){return v.fromNullable(this._sessions.find(s=>s.id===e)).toEither(new a)}getDeviceSessionByDeviceId(e){return v.fromNullable(this._sessions.find(s=>s.connectedDevice.id===e)).toEither(new a)}getDeviceSessions(){return this._sessions}};r=g([S(),d(0,u(m.LoggerPublisherServiceFactory))],r);export{r as DefaultDeviceSessionService};
2
2
  //# sourceMappingURL=DefaultDeviceSessionService.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/device-session/service/DefaultDeviceSessionService.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Maybe } from \"purify-ts\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { DeviceSessionNotFound } from \"@internal/device-session/model/Errors\";\nimport { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\n@injectable()\nexport class DefaultDeviceSessionService implements DeviceSessionService {\n private _sessions: DeviceSession[];\n private readonly _logger: LoggerPublisherService;\n private _sessionsSubject: ReplaySubject<DeviceSession>;\n\n constructor(\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessions = [];\n this._sessionsSubject = new ReplaySubject();\n this._logger = loggerModuleFactory(\"DeviceSessionService\");\n }\n\n public get sessionsObs(): Observable<DeviceSession> {\n return this._sessionsSubject.asObservable();\n }\n\n addDeviceSession(deviceSession: DeviceSession) {\n const found = this._sessions.find((s) => s.id === deviceSession.id);\n if (found) {\n this._logger.warn(\"DeviceSession already exists\", {\n data: { deviceSession },\n });\n return this;\n }\n\n this._sessions.push(deviceSession);\n this._sessionsSubject.next(deviceSession);\n this._logger.info(\"DeviceSession added\", { data: { deviceSession } });\n return this;\n }\n\n removeDeviceSession(sessionId: string) {\n const found = this._sessions.find((s) => s.id === sessionId);\n if (found) {\n found.close();\n this._sessions = this._sessions.filter((s) => s.id !== sessionId);\n this._logger.info(\"DeviceSession removed\", { data: { sessionId } });\n return this;\n }\n\n this._logger.warn(\"DeviceSession not found\", { data: { sessionId } });\n return this;\n }\n\n getDeviceSessionById(sessionId: string) {\n const deviceSession = Maybe.fromNullable(\n this._sessions.find((s) => s.id === sessionId),\n );\n\n return deviceSession.toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessionByDeviceId(deviceId: string) {\n const deviceSession = Maybe.fromNullable(\n this._sessions.find((s) => s.connectedDevice.id === deviceId),\n );\n\n return deviceSession.toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessions() {\n return this._sessions;\n }\n}\n"],
5
- "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,MAAa,YACtB,OAAqB,iBAAAC,MAAqB,OAI1C,OAAS,yBAAAC,MAA6B,wCAEtC,OAAS,eAAAC,MAAmB,4CAGrB,IAAMC,EAAN,KAAkE,CAC/D,UACS,QACT,iBAER,YAEEC,EACA,CACA,KAAK,UAAY,CAAC,EAClB,KAAK,iBAAmB,IAAIC,EAC5B,KAAK,QAAUD,EAAoB,sBAAsB,CAC3D,CAEA,IAAW,aAAyC,CAClD,OAAO,KAAK,iBAAiB,aAAa,CAC5C,CAEA,iBAAiBE,EAA8B,CAE7C,OADc,KAAK,UAAU,KAAM,GAAM,EAAE,KAAOA,EAAc,EAAE,GAEhE,KAAK,QAAQ,KAAK,+BAAgC,CAChD,KAAM,CAAE,cAAAA,CAAc,CACxB,CAAC,EACM,OAGT,KAAK,UAAU,KAAKA,CAAa,EACjC,KAAK,iBAAiB,KAAKA,CAAa,EACxC,KAAK,QAAQ,KAAK,sBAAuB,CAAE,KAAM,CAAE,cAAAA,CAAc,CAAE,CAAC,EAC7D,KACT,CAEA,oBAAoBC,EAAmB,CACrC,MAAMC,EAAQ,KAAK,UAAU,KAAM,GAAM,EAAE,KAAOD,CAAS,EAC3D,OAAIC,GACFA,EAAM,MAAM,EACZ,KAAK,UAAY,KAAK,UAAU,OAAQ,GAAM,EAAE,KAAOD,CAAS,EAChE,KAAK,QAAQ,KAAK,wBAAyB,CAAE,KAAM,CAAE,UAAAA,CAAU,CAAE,CAAC,EAC3D,OAGT,KAAK,QAAQ,KAAK,0BAA2B,CAAE,KAAM,CAAE,UAAAA,CAAU,CAAE,CAAC,EAC7D,KACT,CAEA,qBAAqBA,EAAmB,CAKtC,OAJsBE,EAAM,aAC1B,KAAK,UAAU,KAAM,GAAM,EAAE,KAAOF,CAAS,CAC/C,EAEqB,SAAS,IAAIG,CAAuB,CAC3D,CAEA,2BAA2BC,EAAkB,CAK3C,OAJsBF,EAAM,aAC1B,KAAK,UAAU,KAAM,GAAM,EAAE,gBAAgB,KAAOE,CAAQ,CAC9D,EAEqB,SAAS,IAAID,CAAuB,CAC3D,CAEA,mBAAoB,CAClB,OAAO,KAAK,SACd,CACF,EAjEaP,EAANS,EAAA,CADNC,EAAW,EAOPC,EAAA,EAAAC,EAAOC,EAAY,6BAA6B,IANxCb",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport { Maybe } from \"purify-ts\";\nimport { Observable, ReplaySubject } from \"rxjs\";\n\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { DeviceSessionNotFound } from \"@internal/device-session/model/Errors\";\nimport { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\n\n@injectable()\nexport class DefaultDeviceSessionService implements DeviceSessionService {\n private _sessions: DeviceSession[];\n private readonly _logger: LoggerPublisherService;\n private _sessionsSubject: ReplaySubject<DeviceSession>;\n\n constructor(\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerModuleFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._sessions = [];\n this._sessionsSubject = new ReplaySubject();\n this._logger = loggerModuleFactory(\"DeviceSessionService\");\n }\n\n public get sessionsObs(): Observable<DeviceSession> {\n return this._sessionsSubject.asObservable();\n }\n\n addDeviceSession(deviceSession: DeviceSession) {\n const found = this._sessions.find((s) => s.id === deviceSession.id);\n if (found) {\n this._logger.warn(\"DeviceSession already exists\", {\n data: { deviceSession },\n });\n return this;\n }\n\n this._sessions.push(deviceSession);\n this._sessionsSubject.next(deviceSession);\n this._logger.info(\"DeviceSession added\", {\n data: { sessionId: deviceSession.id },\n });\n return this;\n }\n\n removeDeviceSession(sessionId: string) {\n const found = this._sessions.find((s) => s.id === sessionId);\n if (found) {\n found.close();\n this._sessions = this._sessions.filter((s) => s.id !== sessionId);\n this._logger.info(\"DeviceSession removed\", { data: { sessionId } });\n return this;\n }\n\n this._logger.warn(\"DeviceSession not found\", { data: { sessionId } });\n return this;\n }\n\n getDeviceSessionById(sessionId: string) {\n const deviceSession = Maybe.fromNullable(\n this._sessions.find((s) => s.id === sessionId),\n );\n\n return deviceSession.toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessionByDeviceId(deviceId: string) {\n const deviceSession = Maybe.fromNullable(\n this._sessions.find((s) => s.connectedDevice.id === deviceId),\n );\n\n return deviceSession.toEither(new DeviceSessionNotFound());\n }\n\n getDeviceSessions() {\n return this._sessions;\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAS,SAAAC,MAAa,YACtB,OAAqB,iBAAAC,MAAqB,OAI1C,OAAS,yBAAAC,MAA6B,wCAEtC,OAAS,eAAAC,MAAmB,4CAGrB,IAAMC,EAAN,KAAkE,CAC/D,UACS,QACT,iBAER,YAEEC,EACA,CACA,KAAK,UAAY,CAAC,EAClB,KAAK,iBAAmB,IAAIC,EAC5B,KAAK,QAAUD,EAAoB,sBAAsB,CAC3D,CAEA,IAAW,aAAyC,CAClD,OAAO,KAAK,iBAAiB,aAAa,CAC5C,CAEA,iBAAiBE,EAA8B,CAE7C,OADc,KAAK,UAAU,KAAM,GAAM,EAAE,KAAOA,EAAc,EAAE,GAEhE,KAAK,QAAQ,KAAK,+BAAgC,CAChD,KAAM,CAAE,cAAAA,CAAc,CACxB,CAAC,EACM,OAGT,KAAK,UAAU,KAAKA,CAAa,EACjC,KAAK,iBAAiB,KAAKA,CAAa,EACxC,KAAK,QAAQ,KAAK,sBAAuB,CACvC,KAAM,CAAE,UAAWA,EAAc,EAAG,CACtC,CAAC,EACM,KACT,CAEA,oBAAoBC,EAAmB,CACrC,MAAMC,EAAQ,KAAK,UAAU,KAAM,GAAM,EAAE,KAAOD,CAAS,EAC3D,OAAIC,GACFA,EAAM,MAAM,EACZ,KAAK,UAAY,KAAK,UAAU,OAAQ,GAAM,EAAE,KAAOD,CAAS,EAChE,KAAK,QAAQ,KAAK,wBAAyB,CAAE,KAAM,CAAE,UAAAA,CAAU,CAAE,CAAC,EAC3D,OAGT,KAAK,QAAQ,KAAK,0BAA2B,CAAE,KAAM,CAAE,UAAAA,CAAU,CAAE,CAAC,EAC7D,KACT,CAEA,qBAAqBA,EAAmB,CAKtC,OAJsBE,EAAM,aAC1B,KAAK,UAAU,KAAM,GAAM,EAAE,KAAOF,CAAS,CAC/C,EAEqB,SAAS,IAAIG,CAAuB,CAC3D,CAEA,2BAA2BC,EAAkB,CAK3C,OAJsBF,EAAM,aAC1B,KAAK,UAAU,KAAM,GAAM,EAAE,gBAAgB,KAAOE,CAAQ,CAC9D,EAEqB,SAAS,IAAID,CAAuB,CAC3D,CAEA,mBAAoB,CAClB,OAAO,KAAK,SACd,CACF,EAnEaP,EAANS,EAAA,CADNC,EAAW,EAOPC,EAAA,EAAAC,EAAOC,EAAY,6BAA6B,IANxCb",
6
6
  "names": ["inject", "injectable", "Maybe", "ReplaySubject", "DeviceSessionNotFound", "loggerTypes", "DefaultDeviceSessionService", "loggerModuleFactory", "ReplaySubject", "deviceSession", "sessionId", "found", "Maybe", "DeviceSessionNotFound", "deviceId", "__decorateClass", "injectable", "__decorateParam", "inject", "loggerTypes"]
7
7
  }
@@ -131,5 +131,9 @@ export declare class DeviceManagementKit {
131
131
  * Returns the current provider value from the manager API data source.
132
132
  */
133
133
  getProvider(): number;
134
+ /**
135
+ * Check if the current environment is supported by any transport.
136
+ */
137
+ isEnvironmentSupported(): boolean;
134
138
  }
135
139
  //# sourceMappingURL=DeviceManagementKit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceManagementKit.d.ts","sourceRoot":"","sources":["../../../../src/api/DeviceManagementKit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DeviceManagementKit.d.ts","sourceRoot":"","sources":["../../../../src/api/DeviceManagementKit.ts"],"names":[],"mappings":"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"}
@@ -151,6 +151,15 @@ export declare class ByteArrayBuilder {
151
151
  * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder
152
152
  */
153
153
  encodeInLVFromAscii: (value: string) => ByteArrayBuilder;
154
+ /**
155
+ * Add a Tag-Length-Value encoded ascii string to the data field if it has enough remaining space
156
+ * Length-Value encoding is a way to encode data in a binary format with the first byte
157
+ * being the length of the data and the following bytes being the data itself
158
+ * @param tag: number - The tag to add to the data
159
+ * @param value: string - The value to add to the data
160
+ * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder
161
+ */
162
+ encodeInTLVFromAscii: (tag: number, value: string) => ByteArrayBuilder;
154
163
  /**
155
164
  * Add a Tag-Length-Value encoded hexadecimal string to the data field if it has enough remaining space
156
165
  * Length-Value encoding is a way to encode data in a binary format with the first byte
@@ -169,6 +178,35 @@ export declare class ByteArrayBuilder {
169
178
  * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder
170
179
  */
171
180
  encodeInTLVFromBuffer: (tag: number, value: Uint8Array) => ByteArrayBuilder;
181
+ /**
182
+ * Add a Tag-Length-Value encoded uint8 to the data field if it has enough remaining space
183
+ * Length-Value encoding is a way to encode data in a binary format with the first byte
184
+ * being the length of the data and the following bytes being the data itself
185
+ * @param tag: number - The tag to add to the data
186
+ * @param value: number - The number to add
187
+ * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder
188
+ */
189
+ encodeInTLVFromUInt8: (tag: number, value: number) => ByteArrayBuilder;
190
+ /**
191
+ * Add a Tag-Length-Value encoded uint16 to the data field if it has enough remaining space
192
+ * Length-Value encoding is a way to encode data in a binary format with the first byte
193
+ * being the length of the data and the following bytes being the data itself
194
+ * @param tag: number - The tag to add to the data
195
+ * @param value: number | bigint - The number to add
196
+ * @param bigEndian: boolean - Endianness used to encode the number
197
+ * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder
198
+ */
199
+ encodeInTLVFromUInt16: (tag: number, value: number | bigint, bigEndian?: boolean) => ByteArrayBuilder;
200
+ /**
201
+ * Add a Tag-Length-Value encoded uint32 to the data field if it has enough remaining space
202
+ * Length-Value encoding is a way to encode data in a binary format with the first byte
203
+ * being the length of the data and the following bytes being the data itself
204
+ * @param tag: number - The tag to add to the data
205
+ * @param value: number | bigint - The number to add
206
+ * @param bigEndian: boolean - Endianness used to encode the number
207
+ * @returns {ByteArrayBuilder} - Returns the current instance of ByteArrayBuilder
208
+ */
209
+ encodeInTLVFromUInt32: (tag: number, value: number | bigint, bigEndian?: boolean) => ByteArrayBuilder;
172
210
  /**
173
211
  * Add a Tag-Length-Value encoded uint64 to the data field if it has enough remaining space
174
212
  * Length-Value encoding is a way to encode data in a binary format with the first byte
@@ -1 +1 @@
1
- {"version":3,"file":"ByteArrayBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/api/apdu/utils/ByteArrayBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ByteArrayBuilder.d.ts","sourceRoot":"","sources":["../../../../../../src/api/apdu/utils/ByteArrayBuilder.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export declare enum DeviceModelId {
4
4
  NANO_X = "nanoX",
5
5
  STAX = "stax",
6
6
  FLEX = "flex",
7
- APEX = "apex"
7
+ APEX = "apexp"
8
8
  }
9
9
  /**
10
10
  * Unique identifier for a device.
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceModel.d.ts","sourceRoot":"","sources":["../../../../../src/api/device/DeviceModel.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,MAAM,UAAU;IAChB,OAAO,WAAW;IAClB,MAAM,UAAU;IAChB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;CACd;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,WAAW;IACtB,SAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7B,SAAgB,KAAK,EAAE,aAAa,CAAC;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,eAAe;CAKjD;AAED,eAAO,MAAM,gBAAgB,QAAS,CAAC"}
1
+ {"version":3,"file":"DeviceModel.d.ts","sourceRoot":"","sources":["../../../../../src/api/device/DeviceModel.ts"],"names":[],"mappings":"AAAA,oBAAY,aAAa;IACvB,MAAM,UAAU;IAChB,OAAO,WAAW;IAClB,MAAM,UAAU;IAChB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,UAAU;CACf;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,WAAW;IACtB,SAAgB,EAAE,EAAE,QAAQ,CAAC;IAC7B,SAAgB,KAAK,EAAE,aAAa,CAAC;IACrC,SAAgB,IAAI,EAAE,MAAM,CAAC;gBAEjB,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,eAAe;CAKjD;AAED,eAAO,MAAM,gBAAgB,QAAS,CAAC"}
@@ -13,6 +13,7 @@ export declare enum UserInteractionRequired {
13
13
  VerifyAddress = "verify-address",
14
14
  SignPersonalMessage = "sign-personal-message",
15
15
  SignDelegationAuthorization = "sign-delegation-authorization",
16
- Web3ChecksOptIn = "web3-checks-opt-in"
16
+ Web3ChecksOptIn = "web3-checks-opt-in",
17
+ VerifySafeAddress = "verify-safe-address"
17
18
  }
18
19
  //# sourceMappingURL=UserInteractionRequired.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserInteractionRequired.d.ts","sourceRoot":"","sources":["../../../../../../src/api/device-action/model/UserInteractionRequired.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,uBAAuB;IACjC,IAAI,SAAS;IACb,YAAY,kBAAkB;IAC9B,qBAAqB,4BAA4B;IACjD,cAAc,qBAAqB;IACnC,eAAe,qBAAqB;IACpC,aAAa,oBAAoB;IACjC,aAAa,oBAAoB;IACjC,aAAa,mBAAmB;IAChC,mBAAmB,0BAA0B;IAC7C,2BAA2B,kCAAkC;IAC7D,eAAe,uBAAuB;CACvC"}
1
+ {"version":3,"file":"UserInteractionRequired.d.ts","sourceRoot":"","sources":["../../../../../../src/api/device-action/model/UserInteractionRequired.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,uBAAuB;IACjC,IAAI,SAAS;IACb,YAAY,kBAAkB;IAC9B,qBAAqB,4BAA4B;IACjD,cAAc,qBAAqB;IACnC,eAAe,qBAAqB;IACpC,aAAa,oBAAoB;IACjC,aAAa,oBAAoB;IACjC,aAAa,mBAAmB;IAChC,mBAAmB,0BAA0B;IAC7C,2BAA2B,kCAAkC;IAC7D,eAAe,uBAAuB;IACtC,iBAAiB,wBAAwB;CAC1C"}
@@ -1,4 +1,4 @@
1
- import { Observable } from "rxjs";
1
+ import { type Observable } from "rxjs";
2
2
  import { type GetAppAndVersionCommandResult } from "../../../command/os/GetAppAndVersionCommand";
3
3
  import { type InternalApi } from "../../../device-action/DeviceAction";
4
4
  import { type DeviceActionStateMachine, XStateDeviceAction } from "../../../device-action/xstate-utils/XStateDeviceAction";
@@ -1 +1 @@
1
- {"version":3,"file":"GetDeviceStatusDeviceAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAKlC,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAQnE,OAAO,EACL,KAAK,wBAAwB,EAC7B,kBAAkB,EACnB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,uBAAuB,EAC7B,MAAM,SAAS,CAAC;AAEjB,KAAK,mCAAmC,GAAG;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACxE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;IACzD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE;QACnC,KAAK,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC;KAClC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,qBAAqB,EAAE,CAC9B,KAAK,EAAE,kBAAkB,KACtB,kBAAkB,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,OAAO,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CACvC,WAAW,EAAE,WAAW,KACrB,mBAAmB,CAAC;AAEzB,qBAAa,2BAA4B,SAAQ,kBAAkB,CACjE,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,kCAAkC,EAClC,mCAAmC,CACpC;IACC,gBAAgB,CACd,WAAW,EAAE,WAAW,GACvB,wBAAwB,CACzB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,kCAAkC,EAClC,mCAAmC,CACpC;IAuQD,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;CAqCnE"}
1
+ {"version":3,"file":"GetDeviceStatusDeviceAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/device-action/os/GetDeviceStatus/GetDeviceStatusDeviceAction.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,UAAU,EAIhB,MAAM,MAAM,CAAC;AAKd,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAQnE,OAAO,EACL,KAAK,wBAAwB,EAC7B,kBAAkB,EACnB,MAAM,oDAAoD,CAAC;AAC5D,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EACL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACvC,KAAK,uBAAuB,EAC7B,MAAM,SAAS,CAAC;AAEjB,KAAK,mCAAmC,GAAG;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC/C,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,6BAA6B,CAAC,CAAC;IACxE,QAAQ,CAAC,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;IACzD,QAAQ,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE;QACnC,KAAK,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,CAAC;KAClC,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,qBAAqB,EAAE,CAC9B,KAAK,EAAE,kBAAkB,KACtB,kBAAkB,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,OAAO,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG,CACvC,WAAW,EAAE,WAAW,KACrB,mBAAmB,CAAC;AAEzB,qBAAa,2BAA4B,SAAQ,kBAAkB,CACjE,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,kCAAkC,EAClC,mCAAmC,CACpC;IACC,gBAAgB,CACd,WAAW,EAAE,WAAW,GACvB,wBAAwB,CACzB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,kCAAkC,EAClC,mCAAmC,CACpC;IAuQD,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,mBAAmB;CAqCnE"}
@@ -35,6 +35,7 @@ export declare abstract class XStateDeviceAction<Output, Input, Error extends Dm
35
35
  });
36
36
  protected abstract makeStateMachine(internalAPI: InternalApi): DeviceActionStateMachine<Output, Input, Error, IntermediateValue, InternalState>;
37
37
  _execute(internalApi: InternalApi): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue>;
38
+ protected _subscribeToStateMachine(stateMachine: DeviceActionStateMachine<Output, Input, Error, IntermediateValue, InternalState>): ExecuteDeviceActionReturnType<Output, Error, IntermediateValue>;
38
39
  private _exhaustiveMatchingGuard;
39
40
  }
40
41
  //# sourceMappingURL=XStateDeviceAction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"XStateDeviceAction.d.ts","sourceRoot":"","sources":["../../../../../../src/api/device-action/xstate-utils/XStateDeviceAction.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,wBAAwB,CAClC,MAAM,EACN,KAAK,EACL,KAAK,SAAS,QAAQ,EACtB,iBAAiB,SAAS,6BAA6B,EACvD,aAAa,IACX,YAAY,CACd,iBAAiB,CACf,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd,CAAC,SAAS,CAAC,EAAE,UAAU;AACxB;;;GAGG;AAEH,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,WAAW;AAChB,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,SAAS;AACd,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,cAAc;AACnB,GAAG,EAAE,MAAM;AAEX,iBAAiB,CACf,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd,CAAC,OAAO,CAAC,EACV,iBAAiB,CACf,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd,CAAC,QAAQ,CAAC,EAEX,GAAG,EACH,GAAG,EAEH,WAAW,CACZ,CAAC;AAEF;;;;GAIG;AACH,8BAAsB,kBAAkB,CACtC,MAAM,EACN,KAAK,EACL,KAAK,SAAS,QAAQ,EACtB,iBAAiB,SAAS,6BAA6B,EACvD,aAAa,CACb,YAAW,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC;IAEhE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAS;IAElC;;;;OAIG;gBACS,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAKrD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CACjC,WAAW,EAAE,WAAW,GACvB,wBAAwB,CACzB,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd;IAED,QAAQ,CACN,WAAW,EAAE,WAAW,GACvB,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC;IAuFlE,OAAO,CAAC,wBAAwB;CAIjC"}
1
+ {"version":3,"file":"XStateDeviceAction.d.ts","sourceRoot":"","sources":["../../../../../../src/api/device-action/xstate-utils/XStateDeviceAction.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EAClC,KAAK,WAAW,EACjB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,wBAAwB,CAClC,MAAM,EACN,KAAK,EACL,KAAK,SAAS,QAAQ,EACtB,iBAAiB,SAAS,6BAA6B,EACvD,aAAa,IACX,YAAY,CACd,iBAAiB,CACf,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd,CAAC,SAAS,CAAC,EAAE,UAAU;AACxB;;;GAGG;AAEH,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,WAAW;AAChB,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,SAAS;AACd,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,QAAQ;AACb,GAAG,EAAE,cAAc;AACnB,GAAG,EAAE,MAAM;AAEX,iBAAiB,CACf,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd,CAAC,OAAO,CAAC,EACV,iBAAiB,CACf,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd,CAAC,QAAQ,CAAC,EAEX,GAAG,EACH,GAAG,EAEH,WAAW,CACZ,CAAC;AAEF;;;;GAIG;AACH,8BAAsB,kBAAkB,CACtC,MAAM,EACN,KAAK,EACL,KAAK,SAAS,QAAQ,EACtB,iBAAiB,SAAS,6BAA6B,EACvD,aAAa,CACb,YAAW,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC;IAEhE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAS;IAElC;;;;OAIG;gBACS,IAAI,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;IAKrD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CACjC,WAAW,EAAE,WAAW,GACvB,wBAAwB,CACzB,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd;IAED,QAAQ,CACN,WAAW,EAAE,WAAW,GACvB,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC;IAKlE,SAAS,CAAC,wBAAwB,CAChC,YAAY,EAAE,wBAAwB,CACpC,MAAM,EACN,KAAK,EACL,KAAK,EACL,iBAAiB,EACjB,aAAa,CACd,GACA,6BAA6B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC;IAqFlE,OAAO,CAAC,wBAAwB;CAIjC"}
@@ -5,5 +5,6 @@ export declare class ConsoleLogger implements LoggerSubscriberService {
5
5
  private readonly maxLevel;
6
6
  constructor(level?: LogLevel);
7
7
  log(level: LogLevel | null, message: string, options: LogSubscriberOptions): void;
8
+ private logWithData;
8
9
  }
9
10
  //# sourceMappingURL=ConsoleLogger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../../../src/api/logger-subscriber/service/ConsoleLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AAEtG,qBAAa,aAAc,YAAW,uBAAuB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,KAAK,GAAE,QAAyB;IAI5C,GAAG,CACD,KAAK,EAAE,QAAQ,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAC5B,IAAI;CAsCR"}
1
+ {"version":3,"file":"ConsoleLogger.d.ts","sourceRoot":"","sources":["../../../../../../src/api/logger-subscriber/service/ConsoleLogger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACjE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,wDAAwD,CAAC;AAEtG,qBAAa,aAAc,YAAW,uBAAuB;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;gBAExB,KAAK,GAAE,QAAyB;IAI5C,GAAG,CACD,KAAK,EAAE,QAAQ,GAAG,IAAI,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,oBAAoB,GAC5B,IAAI;IAuCP,OAAO,CAAC,WAAW;CAYpB"}
@@ -1,5 +1,6 @@
1
1
  export type HexaString = `0x${string}`;
2
- export declare const isHexaString: (value: unknown) => value is HexaString;
3
- export declare const hexaStringToBuffer: (value: string) => Uint8Array | null;
4
- export declare const bufferToHexaString: (value: Uint8Array) => HexaString;
2
+ export declare function isHexaString(value: unknown): value is HexaString;
3
+ export declare function hexaStringToBuffer(value: string): Uint8Array | null;
4
+ export declare function bufferToHexaString(value: Uint8Array, withPrefix?: true): HexaString;
5
+ export declare function bufferToHexaString(value: Uint8Array, withPrefix?: false): string;
5
6
  //# sourceMappingURL=HexaString.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HexaString.d.ts","sourceRoot":"","sources":["../../../../../src/api/utils/HexaString.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,MAAM,EAAE,CAAC;AAEvC,eAAO,MAAM,YAAY,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,UAEtD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,MAAM,KAAG,UAAU,GAAG,IAkB/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,UAAU,KAAG,UAItD,CAAC"}
1
+ {"version":3,"file":"HexaString.d.ts","sourceRoot":"","sources":["../../../../../src/api/utils/HexaString.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,KAAK,MAAM,EAAE,CAAC;AAEvC,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,UAAU,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAkBnE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,UAAU,CAAC,EAAE,IAAI,GAChB,UAAU,CAAC;AACd,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,UAAU,EACjB,UAAU,CAAC,EAAE,KAAK,GACjB,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DeviceSession.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/device-session/model/DeviceSession.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAGxD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAGtE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,6BAA6B,EAClC,KAAK,6BAA6B,EACnC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,KAAK,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAI9F,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,uDAAuD,CAAC;AAUlG,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,wBAAwB,CAAC;IAC1C,EAAE,CAAC,EAAE,eAAe,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA2B;IAC5D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsC;IACnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IACvD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAC7D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAgC;IAClE,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,uBAAuB,CAAyB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,uBAAuB,CAAsC;gBAGnE,EAAE,eAAe,EAAE,EAAa,EAAE,EAAE,sBAAsB,EAC1D,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB,EAC5D,iBAAiB,EAAE,iBAAiB,EACpC,oBAAoB,EAAE,oBAAoB,EAC1C,6BAA6B,EAAE,6BAA6B,GAAG,SAAS;IA2C7D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/C,IAAW,EAAE,IAAI,eAAe,CAE/B;IAED,IAAW,eAAe,IAAI,wBAAwB,CAErD;IAED,IAAW,KAAK,IAAI,UAAU,CAAC,kBAAkB,CAAC,CAEjD;IAEM,qBAAqB,IAAI,kBAAkB;IAI3C,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAIhD,QAAQ,CACnB,OAAO,EAAE,UAAU,EACnB,OAAO,GAAE,eAIR,GACA,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAoC7B,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EACvD,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAClD,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAkB9C,mBAAmB,CACxB,MAAM,EACN,KAAK,EACL,CAAC,SAAS,QAAQ,EAClB,iBAAiB,SAAS,6BAA6B,EAEvD,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,iBAAiB,CAAC,GAC9D,6BAA6B,CAAC,MAAM,EAAE,CAAC,EAAE,iBAAiB,CAAC;IAsBvD,KAAK,IAAI,IAAI;IAMb,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,IAAI;IAI/C,OAAO,CAAC,mBAAmB;CAI5B"}
1
+ {"version":3,"file":"DeviceSession.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/device-session/model/DeviceSession.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultApduReceiverService.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/device-session/service/DefaultApduReceiverService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAc,KAAK,EAAkB,MAAM,WAAW,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAOhE,OAAO,EACL,KAAK,2BAA2B,EAChC,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAK1E,qBACa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAU;gBAG9B,EAAE,OAAsB,EAAE,EAAE,2BAA2B,EAEvD,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAevD,WAAW,CAChB,UAAU,EAAE,UAAU,GACrB,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAuBjD,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,iBAAiB;IAyDzB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,YAAY;CAOrB"}
1
+ {"version":3,"file":"DefaultApduReceiverService.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/device-session/service/DefaultApduReceiverService.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAc,KAAK,EAAkB,MAAM,WAAW,CAAC;AAGtE,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAOhE,OAAO,EACL,KAAK,2BAA2B,EAChC,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAE9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAK1E,qBACa,0BAA2B,YAAW,mBAAmB;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;IACjD,OAAO,CAAC,cAAc,CAAU;gBAG9B,EAAE,OAAsB,EAAE,EAAE,2BAA2B,EAEvD,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAevD,WAAW,CAChB,UAAU,EAAE,UAAU,GACrB,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAoBjD,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,iBAAiB;IAyDzB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,YAAY;CAOrB"}