@ledgerhq/device-management-kit 1.9.1 → 1.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +44 -0
  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/DmkConfig.js.map +1 -1
  8. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  9. package/lib/cjs/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  10. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  11. package/lib/cjs/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +2 -2
  12. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  13. package/lib/cjs/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +2 -2
  14. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  15. package/lib/cjs/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +2 -2
  16. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  17. package/lib/cjs/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +2 -2
  18. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  19. package/lib/cjs/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  20. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  21. package/lib/cjs/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +2 -2
  22. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  23. package/lib/cjs/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +2 -2
  24. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  25. package/lib/cjs/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +2 -2
  26. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.js +1 -1
  27. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.js.map +3 -3
  28. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.test.js +1 -1
  29. package/lib/cjs/src/internal/manager-api/data/HttpManagerApiDataSource.test.js.map +3 -3
  30. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js +1 -1
  31. package/lib/cjs/src/internal/manager-api/data/ManagerApiDataSource.js.map +1 -1
  32. package/lib/cjs/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js +1 -1
  33. package/lib/cjs/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js.map +2 -2
  34. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js +1 -1
  35. package/lib/cjs/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  36. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  37. package/lib/cjs/src/internal/manager-api/di/managerApiModule.test.js.map +3 -3
  38. package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js +1 -1
  39. package/lib/cjs/src/internal/manager-api/di/managerApiTypes.js.map +2 -2
  40. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  41. package/lib/cjs/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +2 -2
  42. package/lib/cjs/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.js +2 -0
  43. package/lib/cjs/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.js.map +7 -0
  44. package/lib/cjs/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.test.js +2 -0
  45. package/lib/cjs/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.test.js.map +7 -0
  46. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js +1 -1
  47. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js.map +2 -2
  48. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js +1 -1
  49. package/lib/cjs/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js.map +2 -2
  50. package/lib/cjs/src/internal/secure-channel/data/SecureChannelDataSource.js +1 -1
  51. package/lib/cjs/src/internal/secure-channel/data/SecureChannelDataSource.js.map +1 -1
  52. package/lib/cjs/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js +1 -1
  53. package/lib/cjs/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js.map +2 -2
  54. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  55. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  56. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  57. package/lib/cjs/src/internal/secure-channel/di/secureChannelModule.test.js.map +3 -3
  58. package/lib/cjs/src/internal/secure-channel/di/secureChannelTypes.js +1 -1
  59. package/lib/cjs/src/internal/secure-channel/di/secureChannelTypes.js.map +2 -2
  60. package/lib/cjs/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.js +2 -0
  61. package/lib/cjs/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.js.map +7 -0
  62. package/lib/cjs/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.test.js +2 -0
  63. package/lib/cjs/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.test.js.map +7 -0
  64. package/lib/esm/package.json +1 -1
  65. package/lib/esm/src/api/DeviceManagementKit.js +1 -1
  66. package/lib/esm/src/api/DeviceManagementKit.js.map +3 -3
  67. package/lib/esm/src/api/DeviceManagementKit.test.js +1 -1
  68. package/lib/esm/src/api/DeviceManagementKit.test.js.map +3 -3
  69. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js +1 -1
  70. package/lib/esm/src/api/command/use-case/SendCommandUseCase.test.js.map +2 -2
  71. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js +1 -1
  72. package/lib/esm/src/api/device-session/use-case/DisableDeviceSessionRefresher.test.js.map +2 -2
  73. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js +1 -1
  74. package/lib/esm/src/internal/device-session/service/DefaultDeviceSessionService.test.js.map +2 -2
  75. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js +1 -1
  76. package/lib/esm/src/internal/device-session/use-case/CloseSessionsUseCase.test.js.map +2 -2
  77. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js +1 -1
  78. package/lib/esm/src/internal/device-session/use-case/GetDeviceSessionStateUseCase.test.js.map +2 -2
  79. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js +1 -1
  80. package/lib/esm/src/internal/discovery/use-case/DisconnectUseCase.test.js.map +2 -2
  81. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js +1 -1
  82. package/lib/esm/src/internal/discovery/use-case/GetConnectedDeviceUseCase.test.js.map +2 -2
  83. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js +1 -1
  84. package/lib/esm/src/internal/discovery/use-case/ListConnectedDevicesUseCase.test.js.map +2 -2
  85. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js +1 -1
  86. package/lib/esm/src/internal/discovery/use-case/ListenToConnectedDeviceUseCase.test.js.map +2 -2
  87. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.js +1 -1
  88. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.js.map +3 -3
  89. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.test.js +1 -1
  90. package/lib/esm/src/internal/manager-api/data/HttpManagerApiDataSource.test.js.map +3 -3
  91. package/lib/esm/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js +1 -1
  92. package/lib/esm/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.js.map +2 -2
  93. package/lib/esm/src/internal/manager-api/di/managerApiModule.js +1 -1
  94. package/lib/esm/src/internal/manager-api/di/managerApiModule.js.map +3 -3
  95. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js +1 -1
  96. package/lib/esm/src/internal/manager-api/di/managerApiModule.test.js.map +3 -3
  97. package/lib/esm/src/internal/manager-api/di/managerApiTypes.js +1 -1
  98. package/lib/esm/src/internal/manager-api/di/managerApiTypes.js.map +2 -2
  99. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js +1 -1
  100. package/lib/esm/src/internal/manager-api/service/DefaultManagerApiService.test.js.map +2 -2
  101. package/lib/esm/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.js +2 -0
  102. package/lib/esm/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.js.map +7 -0
  103. package/lib/esm/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.test.js +2 -0
  104. package/lib/esm/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.test.js.map +7 -0
  105. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js +1 -1
  106. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.js.map +2 -2
  107. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js +1 -1
  108. package/lib/esm/src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.js.map +2 -2
  109. package/lib/esm/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js +1 -1
  110. package/lib/esm/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.js.map +2 -2
  111. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js +1 -1
  112. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.js.map +3 -3
  113. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js +1 -1
  114. package/lib/esm/src/internal/secure-channel/di/secureChannelModule.test.js.map +3 -3
  115. package/lib/esm/src/internal/secure-channel/di/secureChannelTypes.js +1 -1
  116. package/lib/esm/src/internal/secure-channel/di/secureChannelTypes.js.map +2 -2
  117. package/lib/esm/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.js +2 -0
  118. package/lib/esm/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.js.map +7 -0
  119. package/lib/esm/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.test.js +2 -0
  120. package/lib/esm/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.test.js.map +7 -0
  121. package/lib/types/src/api/DeviceManagementKit.d.ts +26 -0
  122. package/lib/types/src/api/DeviceManagementKit.d.ts.map +1 -1
  123. package/lib/types/src/api/DmkConfig.d.ts +4 -0
  124. package/lib/types/src/api/DmkConfig.d.ts.map +1 -1
  125. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.d.ts +5 -1
  126. package/lib/types/src/internal/manager-api/data/HttpManagerApiDataSource.d.ts.map +1 -1
  127. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts +11 -0
  128. package/lib/types/src/internal/manager-api/data/ManagerApiDataSource.d.ts.map +1 -1
  129. package/lib/types/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.d.ts +2 -0
  130. package/lib/types/src/internal/manager-api/data/__mocks__/HttpManagerApiDataSource.d.ts.map +1 -1
  131. package/lib/types/src/internal/manager-api/di/managerApiModule.d.ts.map +1 -1
  132. package/lib/types/src/internal/manager-api/di/managerApiTypes.d.ts +1 -0
  133. package/lib/types/src/internal/manager-api/di/managerApiTypes.d.ts.map +1 -1
  134. package/lib/types/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.d.ts +16 -0
  135. package/lib/types/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.d.ts.map +1 -0
  136. package/lib/types/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.test.d.ts +2 -0
  137. package/lib/types/src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.test.d.ts.map +1 -0
  138. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.d.ts +3 -1
  139. package/lib/types/src/internal/secure-channel/data/DefaultSecureChannelDataSource.d.ts.map +1 -1
  140. package/lib/types/src/internal/secure-channel/data/SecureChannelDataSource.d.ts +10 -0
  141. package/lib/types/src/internal/secure-channel/data/SecureChannelDataSource.d.ts.map +1 -1
  142. package/lib/types/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.d.ts +2 -0
  143. package/lib/types/src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.d.ts.map +1 -1
  144. package/lib/types/src/internal/secure-channel/di/secureChannelModule.d.ts.map +1 -1
  145. package/lib/types/src/internal/secure-channel/di/secureChannelTypes.d.ts +1 -0
  146. package/lib/types/src/internal/secure-channel/di/secureChannelTypes.d.ts.map +1 -1
  147. package/lib/types/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.d.ts +10 -0
  148. package/lib/types/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.d.ts.map +1 -0
  149. package/lib/types/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.test.d.ts +2 -0
  150. package/lib/types/src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.test.d.ts.map +1 -0
  151. package/lib/types/tsconfig.prod.tsbuildinfo +1 -1
  152. package/package.json +3 -3
@@ -1,2 +1,2 @@
1
- import{Left as n,Right as i}from"purify-ts";import{getOsVersionCommandResponseMockBuilder as c}from"../../../api/command/os/__mocks__/GetOsVersionCommand";import{DeviceModelId as p}from"../../../api/device/DeviceModel";import{BTC_APP as s,BTC_APP_METADATA as o,ETH_APP as l,ETH_APP_METADATA as d}from"../../../api/device-action/__test-utils__/data";import{HttpManagerApiDataSource as m}from"../../manager-api/data/HttpManagerApiDataSource";import{HttpFetchApiError as h}from"../../manager-api/model/Errors";import{DefaultManagerApiService as u}from"./DefaultManagerApiService";vi.mock("@internal/manager-api/data/HttpManagerApiDataSource");let t,r;describe("ManagerApiService",()=>{beforeEach(()=>{t=new m({}),r=new u(t)}),describe("getAppList",()=>{it("should call api with the correct parameters",()=>{const e=c(p.STAX);r.getAppList(e),expect(t.getAppList).toHaveBeenCalledWith({targetId:"857735172",firmwareVersionName:"1.3.0"})})}),describe("getAppsByHash",()=>{describe("success cases",()=>{it("with no apps, should return an empty list",async()=>{t.getAppsByHash.mockResolvedValue(i([])),expect(await r.getAppsByHash([])).toEqual(i([]))}),it("with one app, should return the metadata",async()=>{t.getAppsByHash.mockResolvedValue(i([o])),expect(await r.getAppsByHash([s.appFullHash])).toEqual(i([o]))}),it("with two app, should return the metadata of both apps",async()=>{t.getAppsByHash.mockResolvedValue(i([o,d])),expect(await r.getAppsByHash([s,l].map(e=>e.appFullHash))).toEqual(i([o,d]))}),it("with one app and one without `appFullHash`, should return the metadata of the correct app",async()=>{t.getAppsByHash.mockResolvedValue(i([o]));const e={...l,appFullHash:""};expect(await r.getAppsByHash([s,e].map(a=>a.appFullHash))).toEqual(i([o]))})}),describe("error cases",()=>{it("should return an error when the data source fails with a known error",async()=>{const e=new h(new Error("Failed to fetch data"));t.getAppsByHash.mockRejectedValue(e),expect(await r.getAppsByHash([s.appFullHash])).toEqual(n(e))}),it("should return an error when the data source fails with an unknown error",async()=>{const e=new Error("unkown error");t.getAppsByHash.mockRejectedValue(e),expect(await r.getAppsByHash([s.appFullHash])).toEqual(n(new h(e)))})})}),describe("getDeviceVersion",()=>{it("should call api with the correct parameters",()=>{const e=c(p.STAX);r.getDeviceVersion(e),expect(t.getDeviceVersion).toHaveBeenCalledWith({targetId:"857735172"})})}),describe("getFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a=c(p.STAX);r.getFirmwareVersion(a,e),expect(t.getFirmwareVersion).toHaveBeenCalledWith({deviceId:17,version:"1.3.0"})})}),describe("getOsuFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a=c(p.STAX);r.getOsuFirmwareVersion(a,e),expect(t.getOsuFirmwareVersion).toHaveBeenCalledWith({deviceId:17,version:"1.3.0"})})}),describe("getLatestFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a={id:159};r.getLatestFirmwareVersion(a,e),expect(t.getLatestFirmwareVersion).toHaveBeenCalledWith({currentFinalFirmwareId:159,deviceId:17})})}),describe("getNextFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={nextFinalFirmware:159};r.getNextFirmwareVersion(e),expect(t.getFirmwareVersionById).toHaveBeenCalledWith(159)})}),describe("getLanguagePackages",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a={id:159};r.getLanguagePackages(e,a),expect(t.getLanguagePackages).toHaveBeenCalledWith({deviceId:17,currentFinalFirmwareId:159})})}),describe("getMcuList",()=>{it("should call api with the correct parameters",()=>{r.getMcuList(),expect(t.getMcuList).toHaveBeenCalled()})}),describe("getProvider",()=>{it("should return the provider",()=>{t.getProvider.mockReturnValue(1);const e=r.getProvider();expect(e).toEqual(1)})})});
1
+ import{Left as n,Right as i}from"purify-ts";import{getOsVersionCommandResponseMockBuilder as c}from"../../../api/command/os/__mocks__/GetOsVersionCommand";import{DeviceModelId as p}from"../../../api/device/DeviceModel";import{BTC_APP as s,BTC_APP_METADATA as o,ETH_APP as l,ETH_APP_METADATA as d}from"../../../api/device-action/__test-utils__/data";import{HttpManagerApiDataSource as m}from"../../manager-api/data/HttpManagerApiDataSource";import{HttpFetchApiError as h}from"../../manager-api/model/Errors";import{DefaultManagerApiService as u}from"./DefaultManagerApiService";vi.mock("@internal/manager-api/data/HttpManagerApiDataSource");let t,r;describe("ManagerApiService",()=>{beforeEach(()=>{t=new m({},vi.fn()),r=new u(t)}),describe("getAppList",()=>{it("should call api with the correct parameters",()=>{const e=c(p.STAX);r.getAppList(e),expect(t.getAppList).toHaveBeenCalledWith({targetId:"857735172",firmwareVersionName:"1.3.0"})})}),describe("getAppsByHash",()=>{describe("success cases",()=>{it("with no apps, should return an empty list",async()=>{t.getAppsByHash.mockResolvedValue(i([])),expect(await r.getAppsByHash([])).toEqual(i([]))}),it("with one app, should return the metadata",async()=>{t.getAppsByHash.mockResolvedValue(i([o])),expect(await r.getAppsByHash([s.appFullHash])).toEqual(i([o]))}),it("with two app, should return the metadata of both apps",async()=>{t.getAppsByHash.mockResolvedValue(i([o,d])),expect(await r.getAppsByHash([s,l].map(e=>e.appFullHash))).toEqual(i([o,d]))}),it("with one app and one without `appFullHash`, should return the metadata of the correct app",async()=>{t.getAppsByHash.mockResolvedValue(i([o]));const e={...l,appFullHash:""};expect(await r.getAppsByHash([s,e].map(a=>a.appFullHash))).toEqual(i([o]))})}),describe("error cases",()=>{it("should return an error when the data source fails with a known error",async()=>{const e=new h(new Error("Failed to fetch data"));t.getAppsByHash.mockRejectedValue(e),expect(await r.getAppsByHash([s.appFullHash])).toEqual(n(e))}),it("should return an error when the data source fails with an unknown error",async()=>{const e=new Error("unkown error");t.getAppsByHash.mockRejectedValue(e),expect(await r.getAppsByHash([s.appFullHash])).toEqual(n(new h(e)))})})}),describe("getDeviceVersion",()=>{it("should call api with the correct parameters",()=>{const e=c(p.STAX);r.getDeviceVersion(e),expect(t.getDeviceVersion).toHaveBeenCalledWith({targetId:"857735172"})})}),describe("getFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a=c(p.STAX);r.getFirmwareVersion(a,e),expect(t.getFirmwareVersion).toHaveBeenCalledWith({deviceId:17,version:"1.3.0"})})}),describe("getOsuFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a=c(p.STAX);r.getOsuFirmwareVersion(a,e),expect(t.getOsuFirmwareVersion).toHaveBeenCalledWith({deviceId:17,version:"1.3.0"})})}),describe("getLatestFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a={id:159};r.getLatestFirmwareVersion(a,e),expect(t.getLatestFirmwareVersion).toHaveBeenCalledWith({currentFinalFirmwareId:159,deviceId:17})})}),describe("getNextFirmwareVersion",()=>{it("should call api with the correct parameters",()=>{const e={nextFinalFirmware:159};r.getNextFirmwareVersion(e),expect(t.getFirmwareVersionById).toHaveBeenCalledWith(159)})}),describe("getLanguagePackages",()=>{it("should call api with the correct parameters",()=>{const e={id:17,target_id:"857735172"},a={id:159};r.getLanguagePackages(e,a),expect(t.getLanguagePackages).toHaveBeenCalledWith({deviceId:17,currentFinalFirmwareId:159})})}),describe("getMcuList",()=>{it("should call api with the correct parameters",()=>{r.getMcuList(),expect(t.getMcuList).toHaveBeenCalled()})}),describe("getProvider",()=>{it("should return the provider",()=>{t.getProvider.mockReturnValue(1);const e=r.getProvider();expect(e).toEqual(1)})})});
2
2
  //# sourceMappingURL=DefaultManagerApiService.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/manager-api/service/DefaultManagerApiService.test.ts"],
4
- "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { type Mocked } from \"vitest\";\n\nimport { getOsVersionCommandResponseMockBuilder } from \"@api/command/os/__mocks__/GetOsVersionCommand\";\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport {\n BTC_APP,\n BTC_APP_METADATA,\n ETH_APP,\n ETH_APP_METADATA,\n} from \"@api/device-action/__test-utils__/data\";\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { HttpManagerApiDataSource } from \"@internal/manager-api/data/HttpManagerApiDataSource\";\nimport { HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\nimport {\n type FinalFirmware,\n type OsuFirmware,\n} from \"@internal/manager-api/model/Firmware\";\n\nimport { DefaultManagerApiService } from \"./DefaultManagerApiService\";\nimport { type ManagerApiService } from \"./ManagerApiService\";\n\nvi.mock(\"@internal/manager-api/data/HttpManagerApiDataSource\");\nlet dataSource: Mocked<HttpManagerApiDataSource>;\nlet service: ManagerApiService;\ndescribe(\"ManagerApiService\", () => {\n beforeEach(() => {\n dataSource = new HttpManagerApiDataSource(\n {} as DmkConfig,\n ) as Mocked<HttpManagerApiDataSource>;\n service = new DefaultManagerApiService(dataSource);\n });\n\n describe(\"getAppList\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getAppList(deviceInfo);\n // then\n expect(dataSource.getAppList).toHaveBeenCalledWith({\n targetId: \"857735172\",\n firmwareVersionName: \"1.3.0\",\n });\n });\n });\n\n describe(\"getAppsByHash\", () => {\n describe(\"success cases\", () => {\n it(\"with no apps, should return an empty list\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(Right([]));\n expect(await service.getAppsByHash([])).toEqual(Right([]));\n });\n\n it(\"with one app, should return the metadata\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(Right([BTC_APP_METADATA]));\n expect(await service.getAppsByHash([BTC_APP.appFullHash])).toEqual(\n Right([BTC_APP_METADATA]),\n );\n });\n\n it(\"with two app, should return the metadata of both apps\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(\n Right([BTC_APP_METADATA, ETH_APP_METADATA]),\n );\n expect(\n await service.getAppsByHash(\n [BTC_APP, ETH_APP].map((app) => app.appFullHash),\n ),\n ).toEqual(Right([BTC_APP_METADATA, ETH_APP_METADATA]));\n });\n\n it(\"with one app and one without `appFullHash`, should return the metadata of the correct app\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(Right([BTC_APP_METADATA]));\n const APP_WITH_NO_HASH = { ...ETH_APP, appFullHash: \"\" };\n expect(\n await service.getAppsByHash(\n [BTC_APP, APP_WITH_NO_HASH].map((app) => app.appFullHash),\n ),\n ).toEqual(Right([BTC_APP_METADATA]));\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should return an error when the data source fails with a known error\", async () => {\n const error = new HttpFetchApiError(new Error(\"Failed to fetch data\"));\n dataSource.getAppsByHash.mockRejectedValue(error);\n expect(await service.getAppsByHash([BTC_APP.appFullHash])).toEqual(\n Left(error),\n );\n });\n\n it(\"should return an error when the data source fails with an unknown error\", async () => {\n const error = new Error(\"unkown error\");\n dataSource.getAppsByHash.mockRejectedValue(error);\n expect(await service.getAppsByHash([BTC_APP.appFullHash])).toEqual(\n Left(new HttpFetchApiError(error)),\n );\n });\n });\n });\n\n describe(\"getDeviceVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getDeviceVersion(deviceInfo);\n // then\n expect(dataSource.getDeviceVersion).toHaveBeenCalledWith({\n targetId: \"857735172\",\n });\n });\n });\n\n describe(\"getFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const mockGetDeviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getFirmwareVersion(deviceInfo, mockGetDeviceVersion);\n // then\n expect(dataSource.getFirmwareVersion).toHaveBeenCalledWith({\n deviceId: 17,\n version: \"1.3.0\",\n });\n });\n });\n\n describe(\"getOsuFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const mockGetDeviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getOsuFirmwareVersion(deviceInfo, mockGetDeviceVersion);\n // then\n expect(dataSource.getOsuFirmwareVersion).toHaveBeenCalledWith({\n deviceId: 17,\n version: \"1.3.0\",\n });\n });\n });\n\n describe(\"getLatestFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const currentFirmware = {\n id: 159,\n } as FinalFirmware;\n // when\n service.getLatestFirmwareVersion(currentFirmware, deviceVersion);\n // then\n expect(dataSource.getLatestFirmwareVersion).toHaveBeenCalledWith({\n currentFinalFirmwareId: 159,\n deviceId: 17,\n });\n });\n });\n\n describe(\"getNextFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const osuFirmware = {\n nextFinalFirmware: 159,\n } as OsuFirmware;\n // when\n service.getNextFirmwareVersion(osuFirmware);\n // then\n expect(dataSource.getFirmwareVersionById).toHaveBeenCalledWith(159);\n });\n });\n\n describe(\"getLanguagePackages\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const currentFirmware = {\n id: 159,\n } as FinalFirmware;\n // when\n service.getLanguagePackages(deviceVersion, currentFirmware);\n // then\n expect(dataSource.getLanguagePackages).toHaveBeenCalledWith({\n deviceId: 17,\n currentFinalFirmwareId: 159,\n });\n });\n });\n\n describe(\"getMcuList\", () => {\n it(\"should call api with the correct parameters\", () => {\n // when\n service.getMcuList();\n // then\n expect(dataSource.getMcuList).toHaveBeenCalled();\n });\n });\n\n describe(\"getProvider\", () => {\n it(\"should return the provider\", () => {\n // given\n dataSource.getProvider.mockReturnValue(1);\n // when\n const provider = service.getProvider();\n // then\n expect(provider).toEqual(1);\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { Left, Right } from \"purify-ts\";\nimport { type Mocked } from \"vitest\";\n\nimport { getOsVersionCommandResponseMockBuilder } from \"@api/command/os/__mocks__/GetOsVersionCommand\";\nimport { DeviceModelId } from \"@api/device/DeviceModel\";\nimport {\n BTC_APP,\n BTC_APP_METADATA,\n ETH_APP,\n ETH_APP_METADATA,\n} from \"@api/device-action/__test-utils__/data\";\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { HttpManagerApiDataSource } from \"@internal/manager-api/data/HttpManagerApiDataSource\";\nimport { HttpFetchApiError } from \"@internal/manager-api/model/Errors\";\nimport {\n type FinalFirmware,\n type OsuFirmware,\n} from \"@internal/manager-api/model/Firmware\";\n\nimport { DefaultManagerApiService } from \"./DefaultManagerApiService\";\nimport { type ManagerApiService } from \"./ManagerApiService\";\n\nvi.mock(\"@internal/manager-api/data/HttpManagerApiDataSource\");\nlet dataSource: Mocked<HttpManagerApiDataSource>;\nlet service: ManagerApiService;\ndescribe(\"ManagerApiService\", () => {\n beforeEach(() => {\n dataSource = new HttpManagerApiDataSource(\n {} as DmkConfig,\n vi.fn(),\n ) as Mocked<HttpManagerApiDataSource>;\n service = new DefaultManagerApiService(dataSource);\n });\n\n describe(\"getAppList\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getAppList(deviceInfo);\n // then\n expect(dataSource.getAppList).toHaveBeenCalledWith({\n targetId: \"857735172\",\n firmwareVersionName: \"1.3.0\",\n });\n });\n });\n\n describe(\"getAppsByHash\", () => {\n describe(\"success cases\", () => {\n it(\"with no apps, should return an empty list\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(Right([]));\n expect(await service.getAppsByHash([])).toEqual(Right([]));\n });\n\n it(\"with one app, should return the metadata\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(Right([BTC_APP_METADATA]));\n expect(await service.getAppsByHash([BTC_APP.appFullHash])).toEqual(\n Right([BTC_APP_METADATA]),\n );\n });\n\n it(\"with two app, should return the metadata of both apps\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(\n Right([BTC_APP_METADATA, ETH_APP_METADATA]),\n );\n expect(\n await service.getAppsByHash(\n [BTC_APP, ETH_APP].map((app) => app.appFullHash),\n ),\n ).toEqual(Right([BTC_APP_METADATA, ETH_APP_METADATA]));\n });\n\n it(\"with one app and one without `appFullHash`, should return the metadata of the correct app\", async () => {\n dataSource.getAppsByHash.mockResolvedValue(Right([BTC_APP_METADATA]));\n const APP_WITH_NO_HASH = { ...ETH_APP, appFullHash: \"\" };\n expect(\n await service.getAppsByHash(\n [BTC_APP, APP_WITH_NO_HASH].map((app) => app.appFullHash),\n ),\n ).toEqual(Right([BTC_APP_METADATA]));\n });\n });\n\n describe(\"error cases\", () => {\n it(\"should return an error when the data source fails with a known error\", async () => {\n const error = new HttpFetchApiError(new Error(\"Failed to fetch data\"));\n dataSource.getAppsByHash.mockRejectedValue(error);\n expect(await service.getAppsByHash([BTC_APP.appFullHash])).toEqual(\n Left(error),\n );\n });\n\n it(\"should return an error when the data source fails with an unknown error\", async () => {\n const error = new Error(\"unkown error\");\n dataSource.getAppsByHash.mockRejectedValue(error);\n expect(await service.getAppsByHash([BTC_APP.appFullHash])).toEqual(\n Left(new HttpFetchApiError(error)),\n );\n });\n });\n });\n\n describe(\"getDeviceVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getDeviceVersion(deviceInfo);\n // then\n expect(dataSource.getDeviceVersion).toHaveBeenCalledWith({\n targetId: \"857735172\",\n });\n });\n });\n\n describe(\"getFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const mockGetDeviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getFirmwareVersion(deviceInfo, mockGetDeviceVersion);\n // then\n expect(dataSource.getFirmwareVersion).toHaveBeenCalledWith({\n deviceId: 17,\n version: \"1.3.0\",\n });\n });\n });\n\n describe(\"getOsuFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const mockGetDeviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const deviceInfo = getOsVersionCommandResponseMockBuilder(\n DeviceModelId.STAX,\n );\n // when\n service.getOsuFirmwareVersion(deviceInfo, mockGetDeviceVersion);\n // then\n expect(dataSource.getOsuFirmwareVersion).toHaveBeenCalledWith({\n deviceId: 17,\n version: \"1.3.0\",\n });\n });\n });\n\n describe(\"getLatestFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const currentFirmware = {\n id: 159,\n } as FinalFirmware;\n // when\n service.getLatestFirmwareVersion(currentFirmware, deviceVersion);\n // then\n expect(dataSource.getLatestFirmwareVersion).toHaveBeenCalledWith({\n currentFinalFirmwareId: 159,\n deviceId: 17,\n });\n });\n });\n\n describe(\"getNextFirmwareVersion\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const osuFirmware = {\n nextFinalFirmware: 159,\n } as OsuFirmware;\n // when\n service.getNextFirmwareVersion(osuFirmware);\n // then\n expect(dataSource.getFirmwareVersionById).toHaveBeenCalledWith(159);\n });\n });\n\n describe(\"getLanguagePackages\", () => {\n it(\"should call api with the correct parameters\", () => {\n // given\n const deviceVersion = {\n id: 17,\n target_id: \"857735172\",\n };\n const currentFirmware = {\n id: 159,\n } as FinalFirmware;\n // when\n service.getLanguagePackages(deviceVersion, currentFirmware);\n // then\n expect(dataSource.getLanguagePackages).toHaveBeenCalledWith({\n deviceId: 17,\n currentFinalFirmwareId: 159,\n });\n });\n });\n\n describe(\"getMcuList\", () => {\n it(\"should call api with the correct parameters\", () => {\n // when\n service.getMcuList();\n // then\n expect(dataSource.getMcuList).toHaveBeenCalled();\n });\n });\n\n describe(\"getProvider\", () => {\n it(\"should return the provider\", () => {\n // given\n dataSource.getProvider.mockReturnValue(1);\n // when\n const provider = service.getProvider();\n // then\n expect(provider).toEqual(1);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["Left", "Right", "getOsVersionCommandResponseMockBuilder", "DeviceModelId", "BTC_APP", "BTC_APP_METADATA", "ETH_APP", "ETH_APP_METADATA", "HttpManagerApiDataSource", "HttpFetchApiError", "DefaultManagerApiService", "dataSource", "service", "deviceInfo", "app", "APP_WITH_NO_HASH", "error", "mockGetDeviceVersion", "deviceVersion", "currentFirmware", "osuFirmware", "provider"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ var S=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var p=(s,e,t,i)=>{for(var r=i>1?void 0:i?m(e,t):e,o=s.length-1,c;o>=0;o--)(c=s[o])&&(r=(i?c(e,t,r):c(r))||r);return i&&r&&S(e,t,r),r},a=(s,e)=>(t,i)=>e(t,i,s);import{inject as g,injectable as v}from"inversify";import{DeviceSessionStateType as d}from"../../../api/device-session/DeviceSessionState";import{deviceSessionTypes as u}from"../../device-session/di/deviceSessionTypes";import{loggerTypes as f}from"../../logger-publisher/di/loggerTypes";import{managerApiTypes as l}from"../../manager-api/di/managerApiTypes";let n=class{constructor(e,t,i){this.sessionService=e;this.managerApiDataSource=t;this._logger=i("SetFirmwareDistributionSaltUseCase")}_logger;execute(e){if(e.trim()===""){this._logger.warn("Ignoring empty firmware distribution salt");return}const t=this.managerApiDataSource.getFirmwareDistributionSalt();if(e===t){this._logger.debug("Firmware distribution salt unchanged",{data:{salt:e}});return}this.managerApiDataSource.setFirmwareDistributionSalt(e);let i=0;for(const r of this.sessionService.getDeviceSessions()){const o=r.getDeviceSessionState();o.sessionStateType!==d.Connected&&o.firmwareUpdateContext!==void 0&&(r.setDeviceSessionState({...o,firmwareUpdateContext:void 0}),i++)}this._logger.info("Firmware distribution salt updated",{data:{previousSalt:t,salt:e,invalidatedSessions:i}})}};n=p([v(),a(0,g(u.DeviceSessionService)),a(1,g(l.ManagerApiDataSource)),a(2,g(f.LoggerPublisherServiceFactory))],n);export{n as SetFirmwareDistributionSaltUseCase};
2
+ //# sourceMappingURL=SetFirmwareDistributionSaltUseCase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { DeviceSessionStateType } from \"@api/device-session/DeviceSessionState\";\nimport { LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { deviceSessionTypes } from \"@internal/device-session/di/deviceSessionTypes\";\nimport type { DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { loggerTypes } from \"@internal/logger-publisher/di/loggerTypes\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { managerApiTypes } from \"@internal/manager-api/di/managerApiTypes\";\n\n/**\n * Use case to set the firmware distribution salt at runtime. During a\n * progressive OS rollout, users with different salts can see different latest\n * OS versions.\n */\n@injectable()\nexport class SetFirmwareDistributionSaltUseCase {\n private readonly _logger: LoggerPublisherService;\n\n constructor(\n @inject(deviceSessionTypes.DeviceSessionService)\n private readonly sessionService: DeviceSessionService,\n @inject(managerApiTypes.ManagerApiDataSource)\n private readonly managerApiDataSource: ManagerApiDataSource,\n @inject(loggerTypes.LoggerPublisherServiceFactory)\n loggerFactory: (tag: string) => LoggerPublisherService,\n ) {\n this._logger = loggerFactory(\"SetFirmwareDistributionSaltUseCase\");\n }\n\n execute(salt: string) {\n if (salt.trim() === \"\") {\n this._logger.warn(\"Ignoring empty firmware distribution salt\");\n return;\n }\n\n const previousSalt =\n this.managerApiDataSource.getFirmwareDistributionSalt();\n if (salt === previousSalt) {\n this._logger.debug(\"Firmware distribution salt unchanged\", {\n data: { salt },\n });\n return;\n }\n\n // Update the salt first, so that any refetch triggered by the session\n // state changes below already uses it\n this.managerApiDataSource.setFirmwareDistributionSalt(salt);\n\n // Invalidate the cached firmware update context, as the latest firmware\n // depends on the salt. The next device action that needs it will fetch it\n // again. Sessions without a cached context are left untouched.\n let invalidatedSessions = 0;\n for (const session of this.sessionService.getDeviceSessions()) {\n const state = session.getDeviceSessionState();\n if (\n state.sessionStateType !== DeviceSessionStateType.Connected &&\n state.firmwareUpdateContext !== undefined\n ) {\n session.setDeviceSessionState({\n ...state,\n firmwareUpdateContext: undefined,\n });\n invalidatedSessions++;\n }\n }\n\n this._logger.info(\"Firmware distribution salt updated\", {\n data: { previousSalt, salt, invalidatedSessions },\n });\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAEnC,OAAS,0BAAAC,MAA8B,yCAEvC,OAAS,sBAAAC,MAA0B,iDAEnC,OAAS,eAAAC,MAAmB,4CAE5B,OAAS,mBAAAC,MAAuB,2CAQzB,IAAMC,EAAN,KAAyC,CAG9C,YAEmBC,EAEAC,EAEjBC,EACA,CALiB,oBAAAF,EAEA,0BAAAC,EAIjB,KAAK,QAAUC,EAAc,oCAAoC,CACnE,CAXiB,QAajB,QAAQC,EAAc,CACpB,GAAIA,EAAK,KAAK,IAAM,GAAI,CACtB,KAAK,QAAQ,KAAK,2CAA2C,EAC7D,MACF,CAEA,MAAMC,EACJ,KAAK,qBAAqB,4BAA4B,EACxD,GAAID,IAASC,EAAc,CACzB,KAAK,QAAQ,MAAM,uCAAwC,CACzD,KAAM,CAAE,KAAAD,CAAK,CACf,CAAC,EACD,MACF,CAIA,KAAK,qBAAqB,4BAA4BA,CAAI,EAK1D,IAAIE,EAAsB,EAC1B,UAAWC,KAAW,KAAK,eAAe,kBAAkB,EAAG,CAC7D,MAAMC,EAAQD,EAAQ,sBAAsB,EAE1CC,EAAM,mBAAqBC,EAAuB,WAClDD,EAAM,wBAA0B,SAEhCD,EAAQ,sBAAsB,CAC5B,GAAGC,EACH,sBAAuB,MACzB,CAAC,EACDF,IAEJ,CAEA,KAAK,QAAQ,KAAK,qCAAsC,CACtD,KAAM,CAAE,aAAAD,EAAc,KAAAD,EAAM,oBAAAE,CAAoB,CAClD,CAAC,CACH,CACF,EAvDaN,EAANU,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAmB,oBAAoB,GAE9CF,EAAA,EAAAC,EAAOE,EAAgB,oBAAoB,GAE3CH,EAAA,EAAAC,EAAOG,EAAY,6BAA6B,IARxChB",
6
+ "names": ["inject", "injectable", "DeviceSessionStateType", "deviceSessionTypes", "loggerTypes", "managerApiTypes", "SetFirmwareDistributionSaltUseCase", "sessionService", "managerApiDataSource", "loggerFactory", "salt", "previousSalt", "invalidatedSessions", "session", "state", "DeviceSessionStateType", "__decorateClass", "injectable", "__decorateParam", "inject", "deviceSessionTypes", "managerApiTypes", "loggerTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{beforeEach as C,describe as D,expect as e,it as d,vi as s}from"vitest";import{DeviceStatus as p}from"../../../api/device/DeviceStatus";import{DeviceSessionStateType as m}from"../../../api/device-session/DeviceSessionState";import{DefaultLoggerPublisherService as f}from"../../logger-publisher/service/DefaultLoggerPublisherService";import{SetFirmwareDistributionSaltUseCase as g}from"./SetFirmwareDistributionSaltUseCase";const r={sessionStateType:m.ReadyWithoutSecureChannel,deviceStatus:p.CONNECTED,firmwareVersion:"firmwareVersion",firmwareUpdateContext:"firmwareUpdateContext",installedApps:"apps",appsUpdates:"appsUpdates",catalog:"catalog"},h={sessionStateType:m.Connected,deviceStatus:p.CONNECTED};D("SetFirmwareDistributionSaltUseCase",()=>{const i=s.fn(),v={getDeviceSessions:i},u=s.fn(),l=s.fn(),w={getFirmwareDistributionSalt:u,setFirmwareDistributionSalt:l};let a,n;const o=t=>({getDeviceSessionState:s.fn().mockReturnValue(t),setDeviceSessionState:s.fn()});C(()=>{s.clearAllMocks(),a=new f([],"SetFirmwareDistributionSaltUseCaseTest"),s.spyOn(a,"info"),s.spyOn(a,"warn"),s.spyOn(a,"debug"),u.mockReturnValue("previous-salt"),i.mockReturnValue([]),n=new g(v,w,()=>a)}),d("should set the salt on the data source and log the change",()=>{n.execute("new-salt"),e(l).toHaveBeenCalledWith("new-salt"),e(a.info).toHaveBeenCalledWith("Firmware distribution salt updated",{data:{previousSalt:"previous-salt",salt:"new-salt",invalidatedSessions:0}})}),d("should only invalidate ready sessions with a cached firmware update context",()=>{const t=o(r),c=o({...r,firmwareUpdateContext:void 0}),S=o(h);i.mockReturnValue([t,c,S]),n.execute("new-salt"),e(t.setDeviceSessionState).toHaveBeenCalledWith({...r,firmwareUpdateContext:void 0}),e(c.setDeviceSessionState).not.toHaveBeenCalled(),e(S.setDeviceSessionState).not.toHaveBeenCalled(),e(a.info).toHaveBeenCalledWith("Firmware distribution salt updated",{data:{previousSalt:"previous-salt",salt:"new-salt",invalidatedSessions:1}})}),d("should set the salt before invalidating the sessions",()=>{const t=o(r);i.mockReturnValue([t]),n.execute("new-salt"),e(l.mock.invocationCallOrder[0]).toBeLessThan(s.mocked(t.setDeviceSessionState).mock.invocationCallOrder[0])}),d("should do nothing if the salt is unchanged",()=>{const t=o(r);i.mockReturnValue([t]),n.execute("previous-salt"),e(l).not.toHaveBeenCalled(),e(t.setDeviceSessionState).not.toHaveBeenCalled(),e(a.info).not.toHaveBeenCalled(),e(a.debug).toHaveBeenCalledWith("Firmware distribution salt unchanged",{data:{salt:"previous-salt"}})}),d.each([""," "])("should ignore an empty salt (%j) and log a warning",t=>{const c=o(r);i.mockReturnValue([c]),n.execute(t),e(l).not.toHaveBeenCalled(),e(c.setDeviceSessionState).not.toHaveBeenCalled(),e(a.warn).toHaveBeenCalledWith("Ignoring empty firmware distribution salt")})});
2
+ //# sourceMappingURL=SetFirmwareDistributionSaltUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/manager-api/use-case/SetFirmwareDistributionSaltUseCase.test.ts"],
4
+ "sourcesContent": ["import { beforeEach, describe, expect, it, vi } from \"vitest\";\n\nimport { DeviceStatus } from \"@api/device/DeviceStatus\";\nimport {\n type Catalog,\n type DeviceSessionState,\n DeviceSessionStateType,\n type FirmwareUpdateContext,\n type FirmwareVersion,\n} from \"@api/device-session/DeviceSessionState\";\nimport { type LoggerPublisherService } from \"@api/logger-publisher/service/LoggerPublisherService\";\nimport { type DeviceSession } from \"@internal/device-session/model/DeviceSession\";\nimport { type DeviceSessionService } from \"@internal/device-session/service/DeviceSessionService\";\nimport { DefaultLoggerPublisherService } from \"@internal/logger-publisher/service/DefaultLoggerPublisherService\";\nimport { type ManagerApiDataSource } from \"@internal/manager-api/data/ManagerApiDataSource\";\nimport { type Application } from \"@internal/manager-api/model/Application\";\n\nimport { SetFirmwareDistributionSaltUseCase } from \"./SetFirmwareDistributionSaltUseCase\";\n\nconst readyState = {\n sessionStateType: DeviceSessionStateType.ReadyWithoutSecureChannel,\n deviceStatus: DeviceStatus.CONNECTED,\n firmwareVersion: \"firmwareVersion\" as unknown as FirmwareVersion,\n firmwareUpdateContext:\n \"firmwareUpdateContext\" as unknown as FirmwareUpdateContext,\n installedApps: \"apps\" as unknown as Application[],\n appsUpdates: \"appsUpdates\" as unknown as Application[],\n catalog: \"catalog\" as unknown as Catalog,\n} as DeviceSessionState;\n\nconst connectedState = {\n sessionStateType: DeviceSessionStateType.Connected,\n deviceStatus: DeviceStatus.CONNECTED,\n} as DeviceSessionState;\n\ndescribe(\"SetFirmwareDistributionSaltUseCase\", () => {\n const getDeviceSessionsMock = vi.fn();\n const sessionService = {\n getDeviceSessions: getDeviceSessionsMock,\n } as unknown as DeviceSessionService;\n\n const getFirmwareDistributionSaltMock = vi.fn();\n const setFirmwareDistributionSaltMock = vi.fn();\n const managerApiDataSource = {\n getFirmwareDistributionSalt: getFirmwareDistributionSaltMock,\n setFirmwareDistributionSalt: setFirmwareDistributionSaltMock,\n } as unknown as ManagerApiDataSource;\n\n let logger: LoggerPublisherService;\n let useCase: SetFirmwareDistributionSaltUseCase;\n\n const makeSession = (state: DeviceSessionState) =>\n ({\n getDeviceSessionState: vi.fn().mockReturnValue(state),\n setDeviceSessionState: vi.fn(),\n }) as unknown as DeviceSession;\n\n beforeEach(() => {\n vi.clearAllMocks();\n logger = new DefaultLoggerPublisherService(\n [],\n \"SetFirmwareDistributionSaltUseCaseTest\",\n );\n vi.spyOn(logger, \"info\");\n vi.spyOn(logger, \"warn\");\n vi.spyOn(logger, \"debug\");\n getFirmwareDistributionSaltMock.mockReturnValue(\"previous-salt\");\n getDeviceSessionsMock.mockReturnValue([]);\n useCase = new SetFirmwareDistributionSaltUseCase(\n sessionService,\n managerApiDataSource,\n () => logger,\n );\n });\n\n it(\"should set the salt on the data source and log the change\", () => {\n // WHEN\n useCase.execute(\"new-salt\");\n\n // THEN\n expect(setFirmwareDistributionSaltMock).toHaveBeenCalledWith(\"new-salt\");\n expect(logger.info).toHaveBeenCalledWith(\n \"Firmware distribution salt updated\",\n {\n data: {\n previousSalt: \"previous-salt\",\n salt: \"new-salt\",\n invalidatedSessions: 0,\n },\n },\n );\n });\n\n it(\"should only invalidate ready sessions with a cached firmware update context\", () => {\n // GIVEN\n const readySession = makeSession(readyState);\n const readySessionWithoutContext = makeSession({\n ...readyState,\n firmwareUpdateContext: undefined,\n } as DeviceSessionState);\n const connectedSession = makeSession(connectedState);\n getDeviceSessionsMock.mockReturnValue([\n readySession,\n readySessionWithoutContext,\n connectedSession,\n ]);\n\n // WHEN\n useCase.execute(\"new-salt\");\n\n // THEN\n expect(readySession.setDeviceSessionState).toHaveBeenCalledWith({\n ...readyState,\n firmwareUpdateContext: undefined,\n });\n expect(\n readySessionWithoutContext.setDeviceSessionState,\n ).not.toHaveBeenCalled();\n expect(connectedSession.setDeviceSessionState).not.toHaveBeenCalled();\n expect(logger.info).toHaveBeenCalledWith(\n \"Firmware distribution salt updated\",\n {\n data: {\n previousSalt: \"previous-salt\",\n salt: \"new-salt\",\n invalidatedSessions: 1,\n },\n },\n );\n });\n\n it(\"should set the salt before invalidating the sessions\", () => {\n // GIVEN\n const readySession = makeSession(readyState);\n getDeviceSessionsMock.mockReturnValue([readySession]);\n\n // WHEN\n useCase.execute(\"new-salt\");\n\n // THEN\n expect(\n setFirmwareDistributionSaltMock.mock.invocationCallOrder[0],\n ).toBeLessThan(\n vi.mocked(readySession.setDeviceSessionState).mock\n .invocationCallOrder[0]!,\n );\n });\n\n it(\"should do nothing if the salt is unchanged\", () => {\n // GIVEN\n const readySession = makeSession(readyState);\n getDeviceSessionsMock.mockReturnValue([readySession]);\n\n // WHEN\n useCase.execute(\"previous-salt\");\n\n // THEN\n expect(setFirmwareDistributionSaltMock).not.toHaveBeenCalled();\n expect(readySession.setDeviceSessionState).not.toHaveBeenCalled();\n expect(logger.info).not.toHaveBeenCalled();\n expect(logger.debug).toHaveBeenCalledWith(\n \"Firmware distribution salt unchanged\",\n { data: { salt: \"previous-salt\" } },\n );\n });\n\n it.each([\"\", \" \"])(\n \"should ignore an empty salt (%j) and log a warning\",\n (salt) => {\n // GIVEN\n const readySession = makeSession(readyState);\n getDeviceSessionsMock.mockReturnValue([readySession]);\n\n // WHEN\n useCase.execute(salt);\n\n // THEN\n expect(setFirmwareDistributionSaltMock).not.toHaveBeenCalled();\n expect(readySession.setDeviceSessionState).not.toHaveBeenCalled();\n expect(logger.warn).toHaveBeenCalledWith(\n \"Ignoring empty firmware distribution salt\",\n );\n },\n );\n});\n"],
5
+ "mappings": "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",
6
+ "names": ["beforeEach", "describe", "expect", "it", "vi", "DeviceStatus", "DeviceSessionStateType", "DefaultLoggerPublisherService", "SetFirmwareDistributionSaltUseCase", "readyState", "connectedState", "getDeviceSessionsMock", "sessionService", "getFirmwareDistributionSaltMock", "setFirmwareDistributionSaltMock", "managerApiDataSource", "logger", "useCase", "makeSession", "state", "readySession", "readySessionWithoutContext", "connectedSession", "salt"]
7
+ }
@@ -1,2 +1,2 @@
1
- var b=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var l=(n,e,t,o)=>{for(var r=o>1?void 0:o?m(e,t):e,i=n.length-1,a;i>=0;i--)(a=n[i])&&(r=(o?a(e,t,r):a(r))||r);return o&&r&&b(e,t,r),r},p=(n,e)=>(t,o)=>e(t,o,n);import{inject as k,injectable as S}from"inversify";import h from"isomorphic-ws";import{Left as d,Right as u}from"purify-ts";import{buildUrl as s}from"../../../api/network/DmkNetworkClientHelpers";import{secureChannelTypes as W}from"../../secure-channel/di/secureChannelTypes";import{WebSocketConnectionError as U}from"../../secure-channel/model/Errors";let c=class{webSocketBaseUrl;constructor({webSocketUrl:e}){this.webSocketBaseUrl=e}genuineCheck(e){const t=s({baseUrl:this.webSocketBaseUrl,url:"/genuine",params:e});return this._connectWebSocket(t)}installApp(e){const t=s({baseUrl:this.webSocketBaseUrl,url:"/install",params:e});return this._connectWebSocket(t)}listInstalledApps(e){const t=s({baseUrl:this.webSocketBaseUrl,url:"/apps/list",params:e});return this._connectWebSocket(t)}uninstallApp(e){const t=s({baseUrl:this.webSocketBaseUrl,url:"/install",params:e});return this._connectWebSocket(t)}updateFirmware(e){const t=s({baseUrl:this.webSocketBaseUrl,url:"/install",params:e});return this._connectWebSocket(t)}updateMcu(e){const t=s({baseUrl:this.webSocketBaseUrl,url:"/mcu",params:e});return this._connectWebSocket(t)}_connectWebSocket(e){try{return u(new h(e))}catch(t){return d(new U(t))}}};c=l([S(),p(0,k(W.DmkConfig))],c);export{c as DefaultSecureChannelDataSource};
1
+ var k=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var l=(n,e,t,s)=>{for(var r=s>1?void 0:s?p(e,t):e,i=n.length-1,a;i>=0;i--)(a=n[i])&&(r=(s?a(e,t,r):a(r))||r);return s&&r&&k(e,t,r),r},b=(n,e)=>(t,s)=>e(t,s,n);import{inject as m,injectable as S}from"inversify";import h from"isomorphic-ws";import{Left as u,Right as W}from"purify-ts";import{buildUrl as o}from"../../../api/network/DmkNetworkClientHelpers";import{secureChannelTypes as U}from"../../secure-channel/di/secureChannelTypes";import{WebSocketConnectionError as d}from"../../secure-channel/model/Errors";let c=class{webSocketBaseUrl;constructor({webSocketUrl:e}){this.webSocketBaseUrl=e}setWebSocketUrl(e){this.webSocketBaseUrl===e||e.length===0||(this.webSocketBaseUrl=e)}getWebSocketUrl(){return this.webSocketBaseUrl}genuineCheck(e){const t=o({baseUrl:this.webSocketBaseUrl,url:"/genuine",params:e});return this._connectWebSocket(t)}installApp(e){const t=o({baseUrl:this.webSocketBaseUrl,url:"/install",params:e});return this._connectWebSocket(t)}listInstalledApps(e){const t=o({baseUrl:this.webSocketBaseUrl,url:"/apps/list",params:e});return this._connectWebSocket(t)}uninstallApp(e){const t=o({baseUrl:this.webSocketBaseUrl,url:"/install",params:e});return this._connectWebSocket(t)}updateFirmware(e){const t=o({baseUrl:this.webSocketBaseUrl,url:"/install",params:e});return this._connectWebSocket(t)}updateMcu(e){const t=o({baseUrl:this.webSocketBaseUrl,url:"/mcu",params:e});return this._connectWebSocket(t)}_connectWebSocket(e){try{return W(new h(e))}catch(t){return u(new d(t))}}};c=l([S(),b(0,m(U.DmkConfig))],c);export{c as DefaultSecureChannelDataSource};
2
2
  //# sourceMappingURL=DefaultSecureChannelDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/data/DefaultSecureChannelDataSource.ts"],
4
- "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport WebSocket from \"isomorphic-ws\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { buildUrl } from \"@api/network/DmkNetworkClientHelpers\";\nimport { secureChannelTypes } from \"@internal/secure-channel/di/secureChannelTypes\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\nimport { SecureChannelDataSource } from \"./SecureChannelDataSource\";\n\n@injectable()\nexport class DefaultSecureChannelDataSource implements SecureChannelDataSource {\n private readonly webSocketBaseUrl: string;\n\n constructor(\n @inject(secureChannelTypes.DmkConfig)\n { webSocketUrl }: DmkConfig,\n ) {\n this.webSocketBaseUrl = webSocketUrl;\n }\n\n genuineCheck(\n params: GenuineCheckParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/genuine\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n installApp(\n params: InstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/install\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n listInstalledApps(\n params: ListInstalledAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/apps/list\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n uninstallApp(\n params: UninstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/install\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n updateFirmware(\n params: UpdateFirmwareParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/install\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n updateMcu(\n params: UpdateMcuParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/mcu\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n _connectWebSocket(\n address: string,\n ): Either<WebSocketConnectionError, WebSocket> {\n try {\n return Right(new WebSocket(address));\n } catch (error) {\n return Left(new WebSocketConnectionError(error));\n }\n }\n}\n"],
5
- "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAOC,MAAe,gBACtB,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAGpC,OAAS,YAAAC,MAAgB,uCACzB,OAAS,sBAAAC,MAA0B,iDACnC,OAAS,4BAAAC,MAAgC,wCAalC,IAAMC,EAAN,KAAwE,CAC5D,iBAEjB,YAEE,CAAE,aAAAC,CAAa,EACf,CACA,KAAK,iBAAmBA,CAC1B,CAEA,aACEC,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,WACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,aACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,aACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,eACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,UACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,OACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACEA,EAC6C,CAC7C,GAAI,CACF,OAAOE,EAAM,IAAIC,EAAUH,CAAO,CAAC,CACrC,OAASI,EAAO,CACd,OAAOC,EAAK,IAAIC,EAAyBF,CAAK,CAAC,CACjD,CACF,CACF,EArFaP,EAANU,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAmB,SAAS,IAJ3Bd",
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\nimport WebSocket from \"isomorphic-ws\";\nimport { Either, Left, Right } from \"purify-ts\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { buildUrl } from \"@api/network/DmkNetworkClientHelpers\";\nimport { secureChannelTypes } from \"@internal/secure-channel/di/secureChannelTypes\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\nimport {\n GenuineCheckParams,\n InstallAppsParams,\n ListInstalledAppsParams,\n UninstallAppsParams,\n UpdateFirmwareParams,\n UpdateMcuParams,\n} from \"@internal/secure-channel/model/Params\";\n\nimport { SecureChannelDataSource } from \"./SecureChannelDataSource\";\n\n@injectable()\nexport class DefaultSecureChannelDataSource implements SecureChannelDataSource {\n private webSocketBaseUrl: string;\n\n constructor(\n @inject(secureChannelTypes.DmkConfig)\n { webSocketUrl }: DmkConfig,\n ) {\n this.webSocketBaseUrl = webSocketUrl;\n }\n\n setWebSocketUrl(webSocketUrl: string): void {\n if (this.webSocketBaseUrl === webSocketUrl || webSocketUrl.length === 0) {\n return;\n }\n this.webSocketBaseUrl = webSocketUrl;\n }\n\n getWebSocketUrl(): string {\n return this.webSocketBaseUrl;\n }\n\n genuineCheck(\n params: GenuineCheckParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/genuine\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n installApp(\n params: InstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/install\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n listInstalledApps(\n params: ListInstalledAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/apps/list\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n uninstallApp(\n params: UninstallAppsParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/install\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n updateFirmware(\n params: UpdateFirmwareParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/install\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n updateMcu(\n params: UpdateMcuParams,\n ): Either<WebSocketConnectionError, WebSocket> {\n const address = buildUrl({\n baseUrl: this.webSocketBaseUrl,\n url: \"/mcu\",\n params,\n });\n return this._connectWebSocket(address);\n }\n\n _connectWebSocket(\n address: string,\n ): Either<WebSocketConnectionError, WebSocket> {\n try {\n return Right(new WebSocket(address));\n } catch (error) {\n return Left(new WebSocketConnectionError(error));\n }\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YACnC,OAAOC,MAAe,gBACtB,OAAiB,QAAAC,EAAM,SAAAC,MAAa,YAGpC,OAAS,YAAAC,MAAgB,uCACzB,OAAS,sBAAAC,MAA0B,iDACnC,OAAS,4BAAAC,MAAgC,wCAalC,IAAMC,EAAN,KAAwE,CACrE,iBAER,YAEE,CAAE,aAAAC,CAAa,EACf,CACA,KAAK,iBAAmBA,CAC1B,CAEA,gBAAgBA,EAA4B,CACtC,KAAK,mBAAqBA,GAAgBA,EAAa,SAAW,IAGtE,KAAK,iBAAmBA,EAC1B,CAEA,iBAA0B,CACxB,OAAO,KAAK,gBACd,CAEA,aACEC,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,WACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,aACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,aACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,eACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,WACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,UACED,EAC6C,CAC7C,MAAMC,EAAUC,EAAS,CACvB,QAAS,KAAK,iBACd,IAAK,OACL,OAAAF,CACF,CAAC,EACD,OAAO,KAAK,kBAAkBC,CAAO,CACvC,CAEA,kBACEA,EAC6C,CAC7C,GAAI,CACF,OAAOE,EAAM,IAAIC,EAAUH,CAAO,CAAC,CACrC,OAASI,EAAO,CACd,OAAOC,EAAK,IAAIC,EAAyBF,CAAK,CAAC,CACjD,CACF,CACF,EAhGaP,EAANU,EAAA,CADNC,EAAW,EAKPC,EAAA,EAAAC,EAAOC,EAAmB,SAAS,IAJ3Bd",
6
6
  "names": ["inject", "injectable", "WebSocket", "Left", "Right", "buildUrl", "secureChannelTypes", "WebSocketConnectionError", "DefaultSecureChannelDataSource", "webSocketUrl", "params", "address", "buildUrl", "Right", "WebSocket", "error", "Left", "WebSocketConnectionError", "__decorateClass", "injectable", "__decorateParam", "inject", "secureChannelTypes"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import c from"isomorphic-ws";import{Right as t}from"purify-ts";import{WebSocketConnectionError as o}from"../../secure-channel/model/Errors";import{DefaultSecureChannelDataSource as a}from"./DefaultSecureChannelDataSource";vi.mock("isomorphic-ws",()=>({default:vi.fn().mockImplementationOnce(()=>{}).mockImplementationOnce(()=>{throw new Error("WebSocket connection failed")})}));describe("Secure Channel Data Source",()=>{describe("Connection establishment",()=>{afterEach(()=>{vi.clearAllMocks()}),it("should return a WebSocket if the WebSocket connection succeeds",()=>{const r=new a({webSocketUrl:"wss://test-websocket-url"})._connectWebSocket("wss://test-websocket-url/test");expect(c).toHaveBeenCalledWith("wss://test-websocket-url/test"),expect(r.extract()).toBeInstanceOf(c)}),it("should return an error if the WebSocket connection fails",()=>{const r=new a({webSocketUrl:"wss://test-websocket-url"})._connectWebSocket("wss://test-websocket-url/test");expect(r.extract()).toBeInstanceOf(o)})}),describe("Connections with different pathname",()=>{let e;beforeEach(()=>{e=new a({webSocketUrl:"wss://test-websocket-url"})}),afterEach(()=>{vi.clearAllMocks()}),it("should call _connectWebSocket with parameters for genuineCheck",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.genuineCheck({targetId:"targetId",perso:"perso"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/genuine?targetId=targetId&perso=perso")}),it("GIVEN a trailing slash base URL and special query characters WHEN genuineCheck connects THEN it builds one encoded URL string",()=>{e=new a({webSocketUrl:"wss://test-websocket-url/"}),vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.genuineCheck({targetId:"target id",perso:"perso&value"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/genuine?targetId=target%20id&perso=perso%26value")}),it("should call _connectWebSocket with parameters for listInstalledApps",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.listInstalledApps({targetId:"targetId",perso:"perso"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/apps/list?targetId=targetId&perso=perso")}),it("should call _connectWebSocket with parameters for updateMcu",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.updateMcu({targetId:"targetId",version:"version"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/mcu?targetId=targetId&version=version")}),it("should call _connectWebSocket with parameters for updateFirmware",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.updateFirmware({targetId:"targetId",perso:"perso",firmware:"firmware",firmwareKey:"firmwareKey"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey")}),it("should call _connectWebSocket with parameters for installApp",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.installApp({targetId:"targetId",perso:"perso",firmware:"firmware",firmwareKey:"firmwareKey",hash:"hash"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash")}),it("should call _connectWebSocket with parameters for uninstallApp",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.uninstallApp({targetId:"targetId",perso:"perso",firmware:"firmware",firmwareKey:"firmwareKey",hash:"hash"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash")})})});
1
+ import c from"isomorphic-ws";import{Right as t}from"purify-ts";import{WebSocketConnectionError as o}from"../../secure-channel/model/Errors";import{DefaultSecureChannelDataSource as r}from"./DefaultSecureChannelDataSource";vi.mock("isomorphic-ws",()=>({default:vi.fn().mockImplementationOnce(()=>{}).mockImplementationOnce(()=>{throw new Error("WebSocket connection failed")})}));describe("Secure Channel Data Source",()=>{describe("Connection establishment",()=>{afterEach(()=>{vi.clearAllMocks()}),it("should return a WebSocket if the WebSocket connection succeeds",()=>{const a=new r({webSocketUrl:"wss://test-websocket-url"})._connectWebSocket("wss://test-websocket-url/test");expect(c).toHaveBeenCalledWith("wss://test-websocket-url/test"),expect(a.extract()).toBeInstanceOf(c)}),it("should return an error if the WebSocket connection fails",()=>{const a=new r({webSocketUrl:"wss://test-websocket-url"})._connectWebSocket("wss://test-websocket-url/test");expect(a.extract()).toBeInstanceOf(o)})}),describe("Connections with different pathname",()=>{let e;beforeEach(()=>{e=new r({webSocketUrl:"wss://test-websocket-url"})}),afterEach(()=>{vi.clearAllMocks()}),it("should call _connectWebSocket with parameters for genuineCheck",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.genuineCheck({targetId:"targetId",perso:"perso"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/genuine?targetId=targetId&perso=perso")}),it("GIVEN a trailing slash base URL and special query characters WHEN genuineCheck connects THEN it builds one encoded URL string",()=>{e=new r({webSocketUrl:"wss://test-websocket-url/"}),vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.genuineCheck({targetId:"target id",perso:"perso&value"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/genuine?targetId=target%20id&perso=perso%26value")}),it("should call _connectWebSocket with parameters for listInstalledApps",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.listInstalledApps({targetId:"targetId",perso:"perso"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/apps/list?targetId=targetId&perso=perso")}),it("should call _connectWebSocket with parameters for updateMcu",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.updateMcu({targetId:"targetId",version:"version"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/mcu?targetId=targetId&version=version")}),it("should call _connectWebSocket with parameters for updateFirmware",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.updateFirmware({targetId:"targetId",perso:"perso",firmware:"firmware",firmwareKey:"firmwareKey"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey")}),it("should call _connectWebSocket with parameters for installApp",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.installApp({targetId:"targetId",perso:"perso",firmware:"firmware",firmwareKey:"firmwareKey",hash:"hash"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash")}),it("should call _connectWebSocket with parameters for uninstallApp",()=>{vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({})),e.uninstallApp({targetId:"targetId",perso:"perso",firmware:"firmware",firmwareKey:"firmwareKey",hash:"hash"}),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash")})}),describe("Given a configured WebSocket base URL",()=>{let e;beforeEach(()=>{e=new r({webSocketUrl:"wss://test-websocket-url"}),vi.spyOn(e,"_connectWebSocket").mockReturnValue(t({}))}),afterEach(()=>{vi.clearAllMocks()}),describe("When getWebSocketUrl is called",()=>{it("Then it should return the configured URL",()=>{expect(e.getWebSocketUrl()).toBe("wss://test-websocket-url")})}),describe("When setWebSocketUrl is called with a different URL",()=>{it("Then it should use the new URL for subsequent connections",()=>{e.setWebSocketUrl("wss://overridden-websocket-url"),e.genuineCheck({targetId:"targetId",perso:"perso"}),expect(e.getWebSocketUrl()).toBe("wss://overridden-websocket-url"),expect(e._connectWebSocket).toHaveBeenCalledWith("wss://overridden-websocket-url/genuine?targetId=targetId&perso=perso")})}),describe("When setWebSocketUrl is called with an empty string",()=>{it("Then it should keep the current URL",()=>{e.setWebSocketUrl(""),expect(e.getWebSocketUrl()).toBe("wss://test-websocket-url")})}),describe("When setWebSocketUrl is called with the same URL",()=>{it("Then it should keep the current URL",()=>{e.setWebSocketUrl("wss://test-websocket-url"),expect(e.getWebSocketUrl()).toBe("wss://test-websocket-url")})})})});
2
2
  //# sourceMappingURL=DefaultSecureChannelDataSource.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/data/DefaultSecureChannelDataSource.test.ts"],
4
- "sourcesContent": ["import WebSocket from \"isomorphic-ws\";\nimport { Right } from \"purify-ts\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\n\nimport { DefaultSecureChannelDataSource } from \"./DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"./SecureChannelDataSource\";\n\nvi.mock(\"isomorphic-ws\", () => {\n // The chained mockImplementationOnce is used to simulate the WebSocket connection success and failure respectively, the order is important\n return {\n default: vi\n .fn()\n .mockImplementationOnce(() => {})\n .mockImplementationOnce(() => {\n throw new Error(\"WebSocket connection failed\");\n }),\n };\n});\n\ndescribe(\"Secure Channel Data Source\", () => {\n describe(\"Connection establishment\", () => {\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should return a WebSocket if the WebSocket connection succeeds\", () => {\n // given\n const api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url\",\n } as DmkConfig);\n\n // when\n const res = api._connectWebSocket(\"wss://test-websocket-url/test\");\n\n // then\n expect(WebSocket).toHaveBeenCalledWith(\"wss://test-websocket-url/test\");\n expect(res.extract()).toBeInstanceOf(WebSocket);\n });\n\n it(\"should return an error if the WebSocket connection fails\", () => {\n // given\n const api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url\",\n } as DmkConfig);\n\n // when\n const res = api._connectWebSocket(\"wss://test-websocket-url/test\");\n\n // then\n expect(res.extract()).toBeInstanceOf(WebSocketConnectionError);\n });\n });\n describe(\"Connections with different pathname\", () => {\n let api: SecureChannelDataSource;\n\n beforeEach(() => {\n api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url\",\n } as DmkConfig);\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call _connectWebSocket with parameters for genuineCheck\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.genuineCheck({\n targetId: \"targetId\",\n perso: \"perso\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/genuine?targetId=targetId&perso=perso\",\n );\n });\n\n it(\"GIVEN a trailing slash base URL and special query characters WHEN genuineCheck connects THEN it builds one encoded URL string\", () => {\n // given\n api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url/\",\n } as DmkConfig);\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.genuineCheck({\n targetId: \"target id\",\n perso: \"perso&value\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/genuine?targetId=target%20id&perso=perso%26value\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for listInstalledApps\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.listInstalledApps({\n targetId: \"targetId\",\n perso: \"perso\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/apps/list?targetId=targetId&perso=perso\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for updateMcu\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.updateMcu({\n targetId: \"targetId\",\n version: \"version\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/mcu?targetId=targetId&version=version\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for updateFirmware\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.updateFirmware({\n targetId: \"targetId\",\n perso: \"perso\",\n firmware: \"firmware\",\n firmwareKey: \"firmwareKey\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for installApp\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.installApp({\n targetId: \"targetId\",\n perso: \"perso\",\n firmware: \"firmware\",\n firmwareKey: \"firmwareKey\",\n hash: \"hash\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for uninstallApp\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.uninstallApp({\n targetId: \"targetId\",\n perso: \"perso\",\n firmware: \"firmware\",\n firmwareKey: \"firmwareKey\",\n hash: \"hash\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash\",\n );\n });\n });\n});\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import WebSocket from \"isomorphic-ws\";\nimport { Right } from \"purify-ts\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { WebSocketConnectionError } from \"@internal/secure-channel/model/Errors\";\n\nimport { DefaultSecureChannelDataSource } from \"./DefaultSecureChannelDataSource\";\nimport { type SecureChannelDataSource } from \"./SecureChannelDataSource\";\n\nvi.mock(\"isomorphic-ws\", () => {\n // The chained mockImplementationOnce is used to simulate the WebSocket connection success and failure respectively, the order is important\n return {\n default: vi\n .fn()\n .mockImplementationOnce(() => {})\n .mockImplementationOnce(() => {\n throw new Error(\"WebSocket connection failed\");\n }),\n };\n});\n\ndescribe(\"Secure Channel Data Source\", () => {\n describe(\"Connection establishment\", () => {\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should return a WebSocket if the WebSocket connection succeeds\", () => {\n // given\n const api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url\",\n } as DmkConfig);\n\n // when\n const res = api._connectWebSocket(\"wss://test-websocket-url/test\");\n\n // then\n expect(WebSocket).toHaveBeenCalledWith(\"wss://test-websocket-url/test\");\n expect(res.extract()).toBeInstanceOf(WebSocket);\n });\n\n it(\"should return an error if the WebSocket connection fails\", () => {\n // given\n const api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url\",\n } as DmkConfig);\n\n // when\n const res = api._connectWebSocket(\"wss://test-websocket-url/test\");\n\n // then\n expect(res.extract()).toBeInstanceOf(WebSocketConnectionError);\n });\n });\n describe(\"Connections with different pathname\", () => {\n let api: SecureChannelDataSource;\n\n beforeEach(() => {\n api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url\",\n } as DmkConfig);\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call _connectWebSocket with parameters for genuineCheck\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.genuineCheck({\n targetId: \"targetId\",\n perso: \"perso\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/genuine?targetId=targetId&perso=perso\",\n );\n });\n\n it(\"GIVEN a trailing slash base URL and special query characters WHEN genuineCheck connects THEN it builds one encoded URL string\", () => {\n // given\n api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url/\",\n } as DmkConfig);\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.genuineCheck({\n targetId: \"target id\",\n perso: \"perso&value\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/genuine?targetId=target%20id&perso=perso%26value\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for listInstalledApps\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.listInstalledApps({\n targetId: \"targetId\",\n perso: \"perso\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/apps/list?targetId=targetId&perso=perso\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for updateMcu\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.updateMcu({\n targetId: \"targetId\",\n version: \"version\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/mcu?targetId=targetId&version=version\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for updateFirmware\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.updateFirmware({\n targetId: \"targetId\",\n perso: \"perso\",\n firmware: \"firmware\",\n firmwareKey: \"firmwareKey\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for installApp\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.installApp({\n targetId: \"targetId\",\n perso: \"perso\",\n firmware: \"firmware\",\n firmwareKey: \"firmwareKey\",\n hash: \"hash\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash\",\n );\n });\n\n it(\"should call _connectWebSocket with parameters for uninstallApp\", () => {\n // given\n vi.spyOn(\n api as DefaultSecureChannelDataSource,\n \"_connectWebSocket\",\n ).mockReturnValue(Right({} as WebSocket));\n\n // when\n api.uninstallApp({\n targetId: \"targetId\",\n perso: \"perso\",\n firmware: \"firmware\",\n firmwareKey: \"firmwareKey\",\n hash: \"hash\",\n });\n\n // then\n expect(\n (api as DefaultSecureChannelDataSource)._connectWebSocket,\n ).toHaveBeenCalledWith(\n \"wss://test-websocket-url/install?targetId=targetId&perso=perso&firmware=firmware&firmwareKey=firmwareKey&hash=hash\",\n );\n });\n });\n\n describe(\"Given a configured WebSocket base URL\", () => {\n let api: DefaultSecureChannelDataSource;\n\n beforeEach(() => {\n api = new DefaultSecureChannelDataSource({\n webSocketUrl: \"wss://test-websocket-url\",\n } as DmkConfig);\n vi.spyOn(api, \"_connectWebSocket\").mockReturnValue(\n Right({} as WebSocket),\n );\n });\n\n afterEach(() => {\n vi.clearAllMocks();\n });\n\n describe(\"When getWebSocketUrl is called\", () => {\n it(\"Then it should return the configured URL\", () => {\n expect(api.getWebSocketUrl()).toBe(\"wss://test-websocket-url\");\n });\n });\n\n describe(\"When setWebSocketUrl is called with a different URL\", () => {\n it(\"Then it should use the new URL for subsequent connections\", () => {\n api.setWebSocketUrl(\"wss://overridden-websocket-url\");\n\n api.genuineCheck({\n targetId: \"targetId\",\n perso: \"perso\",\n });\n\n expect(api.getWebSocketUrl()).toBe(\"wss://overridden-websocket-url\");\n expect(api._connectWebSocket).toHaveBeenCalledWith(\n \"wss://overridden-websocket-url/genuine?targetId=targetId&perso=perso\",\n );\n });\n });\n\n describe(\"When setWebSocketUrl is called with an empty string\", () => {\n it(\"Then it should keep the current URL\", () => {\n api.setWebSocketUrl(\"\");\n\n expect(api.getWebSocketUrl()).toBe(\"wss://test-websocket-url\");\n });\n });\n\n describe(\"When setWebSocketUrl is called with the same URL\", () => {\n it(\"Then it should keep the current URL\", () => {\n api.setWebSocketUrl(\"wss://test-websocket-url\");\n\n expect(api.getWebSocketUrl()).toBe(\"wss://test-websocket-url\");\n });\n });\n });\n});\n"],
5
+ "mappings": "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",
6
6
  "names": ["WebSocket", "Right", "WebSocketConnectionError", "DefaultSecureChannelDataSource", "res", "api"]
7
7
  }
@@ -1,2 +1,2 @@
1
- class n{genuineCheck=vi.fn();listInstalledApps=vi.fn();updateMcu=vi.fn();updateFirmware=vi.fn();installApp=vi.fn();uninstallApp=vi.fn()}export{n as DefaultSecureChannelDataSource};
1
+ class n{genuineCheck=vi.fn();listInstalledApps=vi.fn();updateMcu=vi.fn();updateFirmware=vi.fn();installApp=vi.fn();uninstallApp=vi.fn();setWebSocketUrl=vi.fn();getWebSocketUrl=vi.fn()}export{n as DefaultSecureChannelDataSource};
2
2
  //# sourceMappingURL=DefaultSecureChannelDataSource.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../../src/internal/secure-channel/data/__mocks__/DefaultSecureChannelDataSource.ts"],
4
- "sourcesContent": ["import { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\n\nexport class DefaultSecureChannelDataSource implements SecureChannelDataSource {\n genuineCheck = vi.fn();\n listInstalledApps = vi.fn();\n updateMcu = vi.fn();\n updateFirmware = vi.fn();\n installApp = vi.fn();\n uninstallApp = vi.fn();\n}\n"],
5
- "mappings": "AAEO,MAAMA,CAAkE,CAC7E,aAAe,GAAG,GAAG,EACrB,kBAAoB,GAAG,GAAG,EAC1B,UAAY,GAAG,GAAG,EAClB,eAAiB,GAAG,GAAG,EACvB,WAAa,GAAG,GAAG,EACnB,aAAe,GAAG,GAAG,CACvB",
4
+ "sourcesContent": ["import { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\n\nexport class DefaultSecureChannelDataSource implements SecureChannelDataSource {\n genuineCheck = vi.fn();\n listInstalledApps = vi.fn();\n updateMcu = vi.fn();\n updateFirmware = vi.fn();\n installApp = vi.fn();\n uninstallApp = vi.fn();\n setWebSocketUrl = vi.fn();\n getWebSocketUrl = vi.fn();\n}\n"],
5
+ "mappings": "AAEO,MAAMA,CAAkE,CAC7E,aAAe,GAAG,GAAG,EACrB,kBAAoB,GAAG,GAAG,EAC1B,UAAY,GAAG,GAAG,EAClB,eAAiB,GAAG,GAAG,EACvB,WAAa,GAAG,GAAG,EACnB,aAAe,GAAG,GAAG,EACrB,gBAAkB,GAAG,GAAG,EACxB,gBAAkB,GAAG,GAAG,CAC1B",
6
6
  "names": ["DefaultSecureChannelDataSource"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{ContainerModule as n}from"inversify";import{DefaultSecureChannelDataSource as a}from"../../secure-channel/data/DefaultSecureChannelDataSource";import{DefaultSecureChannelService as c}from"../../secure-channel/service/DefaultSecureChannelService";import{secureChannelTypes as o}from"./secureChannelTypes";const i=({stub:r,config:t})=>new n(({bind:e})=>{e(o.DmkConfig).toConstantValue(t),e(o.SecureChannelDataSource).to(a),e(o.SecureChannelService).to(c)});export{i as secureChannelModuleFactory};
1
+ import{ContainerModule as n}from"inversify";import{DefaultSecureChannelDataSource as c}from"../../secure-channel/data/DefaultSecureChannelDataSource";import{DefaultSecureChannelService as m}from"../../secure-channel/service/DefaultSecureChannelService";import{SetWebSocketUrlUseCase as S}from"../../secure-channel/use-case/SetWebSocketUrlUseCase";import{StubUseCase as l}from"../../../../src/di.stub";import{secureChannelTypes as e}from"./secureChannelTypes";const D=({stub:t,config:r})=>new n(({bind:o,rebindSync:a})=>{o(e.DmkConfig).toConstantValue(r),o(e.SecureChannelDataSource).to(c).inSingletonScope(),o(e.SecureChannelService).to(m),o(e.SetWebSocketUrlUseCase).to(S),t&&a(e.SetWebSocketUrlUseCase).to(l)});export{D as secureChannelModuleFactory};
2
2
  //# sourceMappingURL=secureChannelModule.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/di/secureChannelModule.ts"],
4
- "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\n\nimport { secureChannelTypes } from \"./secureChannelTypes\";\n\ntype FactoryProps = {\n stub?: boolean;\n config: DmkConfig;\n};\n\nexport const secureChannelModuleFactory = ({ stub, config }: FactoryProps) =>\n new ContainerModule(({ bind }) => {\n bind(secureChannelTypes.DmkConfig).toConstantValue(config);\n\n bind(secureChannelTypes.SecureChannelDataSource).to(\n DefaultSecureChannelDataSource,\n );\n bind(secureChannelTypes.SecureChannelService).to(\n DefaultSecureChannelService,\n );\n\n if (stub) {\n /* empty */\n }\n });\n"],
5
- "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAGhC,OAAS,kCAAAC,MAAsC,+DAC/C,OAAS,+BAAAC,MAAmC,+DAE5C,OAAS,sBAAAC,MAA0B,uBAO5B,MAAMC,EAA6B,CAAC,CAAE,KAAAC,EAAM,OAAAC,CAAO,IACxD,IAAIN,EAAgB,CAAC,CAAE,KAAAO,CAAK,IAAM,CAChCA,EAAKJ,EAAmB,SAAS,EAAE,gBAAgBG,CAAM,EAEzDC,EAAKJ,EAAmB,uBAAuB,EAAE,GAC/CF,CACF,EACAM,EAAKJ,EAAmB,oBAAoB,EAAE,GAC5CD,CACF,CAKF,CAAC",
6
- "names": ["ContainerModule", "DefaultSecureChannelDataSource", "DefaultSecureChannelService", "secureChannelTypes", "secureChannelModuleFactory", "stub", "config", "bind"]
4
+ "sourcesContent": ["import { ContainerModule } from \"inversify\";\n\nimport { type DmkConfig } from \"@api/DmkConfig\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { SetWebSocketUrlUseCase } from \"@internal/secure-channel/use-case/SetWebSocketUrlUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { secureChannelTypes } from \"./secureChannelTypes\";\n\ntype FactoryProps = {\n stub?: boolean;\n config: DmkConfig;\n};\n\nexport const secureChannelModuleFactory = ({ stub, config }: FactoryProps) =>\n new ContainerModule(({ bind, rebindSync }) => {\n bind(secureChannelTypes.DmkConfig).toConstantValue(config);\n\n bind(secureChannelTypes.SecureChannelDataSource)\n .to(DefaultSecureChannelDataSource)\n .inSingletonScope();\n bind(secureChannelTypes.SecureChannelService).to(\n DefaultSecureChannelService,\n );\n bind(secureChannelTypes.SetWebSocketUrlUseCase).to(SetWebSocketUrlUseCase);\n\n if (stub) {\n rebindSync(secureChannelTypes.SetWebSocketUrlUseCase).to(StubUseCase);\n }\n });\n"],
5
+ "mappings": "AAAA,OAAS,mBAAAA,MAAuB,YAGhC,OAAS,kCAAAC,MAAsC,+DAC/C,OAAS,+BAAAC,MAAmC,+DAC5C,OAAS,0BAAAC,MAA8B,2DACvC,OAAS,eAAAC,MAAmB,oBAE5B,OAAS,sBAAAC,MAA0B,uBAO5B,MAAMC,EAA6B,CAAC,CAAE,KAAAC,EAAM,OAAAC,CAAO,IACxD,IAAIR,EAAgB,CAAC,CAAE,KAAAS,EAAM,WAAAC,CAAW,IAAM,CAC5CD,EAAKJ,EAAmB,SAAS,EAAE,gBAAgBG,CAAM,EAEzDC,EAAKJ,EAAmB,uBAAuB,EAC5C,GAAGJ,CAA8B,EACjC,iBAAiB,EACpBQ,EAAKJ,EAAmB,oBAAoB,EAAE,GAC5CH,CACF,EACAO,EAAKJ,EAAmB,sBAAsB,EAAE,GAAGF,CAAsB,EAErEI,GACFG,EAAWL,EAAmB,sBAAsB,EAAE,GAAGD,CAAW,CAExE,CAAC",
6
+ "names": ["ContainerModule", "DefaultSecureChannelDataSource", "DefaultSecureChannelService", "SetWebSocketUrlUseCase", "StubUseCase", "secureChannelTypes", "secureChannelModuleFactory", "stub", "config", "bind", "rebindSync"]
7
7
  }
@@ -1,2 +1,2 @@
1
- import{Container as u}from"inversify";import{DefaultSecureChannelDataSource as l}from"../../secure-channel/data/DefaultSecureChannelDataSource";import{DefaultSecureChannelService as s}from"../../secure-channel/service/DefaultSecureChannelService";import{secureChannelModuleFactory as f}from"./secureChannelModule";import{secureChannelTypes as o}from"./secureChannelTypes";describe("secureChannelModuleFactory default use case",()=>{const n={webSocketUrl:"http://fake-websocket.url"};let e,t;beforeEach(()=>{t=f({stub:!1,config:n}),e=new u,e.loadSync(t)}),it("the secure channel module should be defined",()=>{expect(t).toBeDefined()}),it("should return default use cases instead of stub",()=>{const c=e.get(o.DmkConfig);expect(c).toEqual({webSocketUrl:"http://fake-websocket.url"});const r=e.get(o.SecureChannelDataSource);expect(r).toBeInstanceOf(l);const a=e.get(o.SecureChannelService);expect(a).toBeInstanceOf(s)})});
1
+ import{Container as a}from"inversify";import{DefaultSecureChannelDataSource as f}from"../../secure-channel/data/DefaultSecureChannelDataSource";import{DefaultSecureChannelService as i}from"../../secure-channel/service/DefaultSecureChannelService";import{SetWebSocketUrlUseCase as C}from"../../secure-channel/use-case/SetWebSocketUrlUseCase";import{StubUseCase as S}from"../../../../src/di.stub";import{secureChannelModuleFactory as s}from"./secureChannelModule";import{secureChannelTypes as o}from"./secureChannelTypes";describe("secureChannelModuleFactory default use case",()=>{const n={webSocketUrl:"http://fake-websocket.url"};let e,t;beforeEach(()=>{t=s({stub:!1,config:n}),e=new a,e.loadSync(t)}),it("the secure channel module should be defined",()=>{expect(t).toBeDefined()}),it("should return default use cases instead of stub",()=>{const c=e.get(o.DmkConfig);expect(c).toEqual({webSocketUrl:"http://fake-websocket.url"});const r=e.get(o.SecureChannelDataSource);expect(r).toBeInstanceOf(f),expect(e.get(o.SecureChannelDataSource)).toBe(r);const u=e.get(o.SecureChannelService);expect(u).toBeInstanceOf(i);const l=e.get(o.SetWebSocketUrlUseCase);expect(l).toBeInstanceOf(C)})});describe("secureChannelModuleFactory stubbed",()=>{const n={webSocketUrl:"http://fake-websocket.url"};let e,t;beforeEach(()=>{t=s({stub:!0,config:n}),e=new a,e.loadSync(t)}),it("should return a stubbed SetWebSocketUrlUseCase",()=>{const c=e.get(o.SetWebSocketUrlUseCase);expect(c).toBeInstanceOf(S)})});
2
2
  //# sourceMappingURL=secureChannelModule.test.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/di/secureChannelModule.test.ts"],
4
- "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { type DmkConfig } from \"@api/index\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\n\nimport { secureChannelModuleFactory } from \"./secureChannelModule\";\nimport { secureChannelTypes } from \"./secureChannelTypes\";\n\ndescribe(\"secureChannelModuleFactory default use case\", () => {\n const mockDmkConfig = {\n webSocketUrl: \"http://fake-websocket.url\",\n } as DmkConfig;\n\n let container: Container;\n let mod: ReturnType<typeof secureChannelModuleFactory>;\n\n beforeEach(() => {\n mod = secureChannelModuleFactory({\n stub: false,\n config: mockDmkConfig,\n });\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"the secure channel module should be defined\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should return default use cases instead of stub\", () => {\n const config = container.get(secureChannelTypes.DmkConfig);\n expect(config).toEqual({\n webSocketUrl: \"http://fake-websocket.url\",\n });\n\n const secureChannelDataSource = container.get(\n secureChannelTypes.SecureChannelDataSource,\n );\n expect(secureChannelDataSource).toBeInstanceOf(\n DefaultSecureChannelDataSource,\n );\n\n const secureChannelService = container.get(\n secureChannelTypes.SecureChannelService,\n );\n expect(secureChannelService).toBeInstanceOf(DefaultSecureChannelService);\n });\n});\n"],
5
- "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAG1B,OAAS,kCAAAC,MAAsC,+DAC/C,OAAS,+BAAAC,MAAmC,+DAE5C,OAAS,8BAAAC,MAAkC,wBAC3C,OAAS,sBAAAC,MAA0B,uBAEnC,SAAS,8CAA+C,IAAM,CAC5D,MAAMC,EAAgB,CACpB,aAAc,2BAChB,EAEA,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACfA,EAAMJ,EAA2B,CAC/B,KAAM,GACN,OAAQE,CACV,CAAC,EACDC,EAAY,IAAIN,EAChBM,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,8CAA+C,IAAM,CACtD,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,kDAAmD,IAAM,CAC1D,MAAMC,EAASF,EAAU,IAAIF,EAAmB,SAAS,EACzD,OAAOI,CAAM,EAAE,QAAQ,CACrB,aAAc,2BAChB,CAAC,EAED,MAAMC,EAA0BH,EAAU,IACxCF,EAAmB,uBACrB,EACA,OAAOK,CAAuB,EAAE,eAC9BR,CACF,EAEA,MAAMS,EAAuBJ,EAAU,IACrCF,EAAmB,oBACrB,EACA,OAAOM,CAAoB,EAAE,eAAeR,CAA2B,CACzE,CAAC,CACH,CAAC",
6
- "names": ["Container", "DefaultSecureChannelDataSource", "DefaultSecureChannelService", "secureChannelModuleFactory", "secureChannelTypes", "mockDmkConfig", "container", "mod", "config", "secureChannelDataSource", "secureChannelService"]
4
+ "sourcesContent": ["import { Container } from \"inversify\";\n\nimport { type DmkConfig } from \"@api/index\";\nimport { DefaultSecureChannelDataSource } from \"@internal/secure-channel/data/DefaultSecureChannelDataSource\";\nimport { DefaultSecureChannelService } from \"@internal/secure-channel/service/DefaultSecureChannelService\";\nimport { SetWebSocketUrlUseCase } from \"@internal/secure-channel/use-case/SetWebSocketUrlUseCase\";\nimport { StubUseCase } from \"@root/src/di.stub\";\n\nimport { secureChannelModuleFactory } from \"./secureChannelModule\";\nimport { secureChannelTypes } from \"./secureChannelTypes\";\n\ndescribe(\"secureChannelModuleFactory default use case\", () => {\n const mockDmkConfig = {\n webSocketUrl: \"http://fake-websocket.url\",\n } as DmkConfig;\n\n let container: Container;\n let mod: ReturnType<typeof secureChannelModuleFactory>;\n\n beforeEach(() => {\n mod = secureChannelModuleFactory({\n stub: false,\n config: mockDmkConfig,\n });\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"the secure channel module should be defined\", () => {\n expect(mod).toBeDefined();\n });\n\n it(\"should return default use cases instead of stub\", () => {\n const config = container.get(secureChannelTypes.DmkConfig);\n expect(config).toEqual({\n webSocketUrl: \"http://fake-websocket.url\",\n });\n\n const secureChannelDataSource = container.get(\n secureChannelTypes.SecureChannelDataSource,\n );\n expect(secureChannelDataSource).toBeInstanceOf(\n DefaultSecureChannelDataSource,\n );\n expect(container.get(secureChannelTypes.SecureChannelDataSource)).toBe(\n secureChannelDataSource,\n );\n\n const secureChannelService = container.get(\n secureChannelTypes.SecureChannelService,\n );\n expect(secureChannelService).toBeInstanceOf(DefaultSecureChannelService);\n\n const setWebSocketUrlUseCase = container.get(\n secureChannelTypes.SetWebSocketUrlUseCase,\n );\n expect(setWebSocketUrlUseCase).toBeInstanceOf(SetWebSocketUrlUseCase);\n });\n});\n\ndescribe(\"secureChannelModuleFactory stubbed\", () => {\n const mockDmkConfig = {\n webSocketUrl: \"http://fake-websocket.url\",\n } as DmkConfig;\n\n let container: Container;\n let mod: ReturnType<typeof secureChannelModuleFactory>;\n\n beforeEach(() => {\n mod = secureChannelModuleFactory({\n stub: true,\n config: mockDmkConfig,\n });\n container = new Container();\n container.loadSync(mod);\n });\n\n it(\"should return a stubbed SetWebSocketUrlUseCase\", () => {\n const setWebSocketUrlUseCase = container.get(\n secureChannelTypes.SetWebSocketUrlUseCase,\n );\n expect(setWebSocketUrlUseCase).toBeInstanceOf(StubUseCase);\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,aAAAA,MAAiB,YAG1B,OAAS,kCAAAC,MAAsC,+DAC/C,OAAS,+BAAAC,MAAmC,+DAC5C,OAAS,0BAAAC,MAA8B,2DACvC,OAAS,eAAAC,MAAmB,oBAE5B,OAAS,8BAAAC,MAAkC,wBAC3C,OAAS,sBAAAC,MAA0B,uBAEnC,SAAS,8CAA+C,IAAM,CAC5D,MAAMC,EAAgB,CACpB,aAAc,2BAChB,EAEA,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACfA,EAAMJ,EAA2B,CAC/B,KAAM,GACN,OAAQE,CACV,CAAC,EACDC,EAAY,IAAIR,EAChBQ,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,8CAA+C,IAAM,CACtD,OAAOA,CAAG,EAAE,YAAY,CAC1B,CAAC,EAED,GAAG,kDAAmD,IAAM,CAC1D,MAAMC,EAASF,EAAU,IAAIF,EAAmB,SAAS,EACzD,OAAOI,CAAM,EAAE,QAAQ,CACrB,aAAc,2BAChB,CAAC,EAED,MAAMC,EAA0BH,EAAU,IACxCF,EAAmB,uBACrB,EACA,OAAOK,CAAuB,EAAE,eAC9BV,CACF,EACA,OAAOO,EAAU,IAAIF,EAAmB,uBAAuB,CAAC,EAAE,KAChEK,CACF,EAEA,MAAMC,EAAuBJ,EAAU,IACrCF,EAAmB,oBACrB,EACA,OAAOM,CAAoB,EAAE,eAAeV,CAA2B,EAEvE,MAAMW,EAAyBL,EAAU,IACvCF,EAAmB,sBACrB,EACA,OAAOO,CAAsB,EAAE,eAAeV,CAAsB,CACtE,CAAC,CACH,CAAC,EAED,SAAS,qCAAsC,IAAM,CACnD,MAAMI,EAAgB,CACpB,aAAc,2BAChB,EAEA,IAAIC,EACAC,EAEJ,WAAW,IAAM,CACfA,EAAMJ,EAA2B,CAC/B,KAAM,GACN,OAAQE,CACV,CAAC,EACDC,EAAY,IAAIR,EAChBQ,EAAU,SAASC,CAAG,CACxB,CAAC,EAED,GAAG,iDAAkD,IAAM,CACzD,MAAMI,EAAyBL,EAAU,IACvCF,EAAmB,sBACrB,EACA,OAAOO,CAAsB,EAAE,eAAeT,CAAW,CAC3D,CAAC,CACH,CAAC",
6
+ "names": ["Container", "DefaultSecureChannelDataSource", "DefaultSecureChannelService", "SetWebSocketUrlUseCase", "StubUseCase", "secureChannelModuleFactory", "secureChannelTypes", "mockDmkConfig", "container", "mod", "config", "secureChannelDataSource", "secureChannelService", "setWebSocketUrlUseCase"]
7
7
  }
@@ -1,2 +1,2 @@
1
- const e={SecureChannelService:Symbol.for("SecureChannelService"),SecureChannelDataSource:Symbol.for("SecureChannelDataSource"),DmkConfig:Symbol.for("SecureChannelDmkConfig")};export{e as secureChannelTypes};
1
+ const e={SecureChannelService:Symbol.for("SecureChannelService"),SecureChannelDataSource:Symbol.for("SecureChannelDataSource"),DmkConfig:Symbol.for("SecureChannelDmkConfig"),SetWebSocketUrlUseCase:Symbol.for("SetWebSocketUrlUseCase")};export{e as secureChannelTypes};
2
2
  //# sourceMappingURL=secureChannelTypes.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../../src/internal/secure-channel/di/secureChannelTypes.ts"],
4
- "sourcesContent": ["export const secureChannelTypes = {\n SecureChannelService: Symbol.for(\"SecureChannelService\"),\n SecureChannelDataSource: Symbol.for(\"SecureChannelDataSource\"),\n DmkConfig: Symbol.for(\"SecureChannelDmkConfig\"),\n};\n"],
5
- "mappings": "AAAO,MAAMA,EAAqB,CAChC,qBAAsB,OAAO,IAAI,sBAAsB,EACvD,wBAAyB,OAAO,IAAI,yBAAyB,EAC7D,UAAW,OAAO,IAAI,wBAAwB,CAChD",
4
+ "sourcesContent": ["export const secureChannelTypes = {\n SecureChannelService: Symbol.for(\"SecureChannelService\"),\n SecureChannelDataSource: Symbol.for(\"SecureChannelDataSource\"),\n DmkConfig: Symbol.for(\"SecureChannelDmkConfig\"),\n SetWebSocketUrlUseCase: Symbol.for(\"SetWebSocketUrlUseCase\"),\n};\n"],
5
+ "mappings": "AAAO,MAAMA,EAAqB,CAChC,qBAAsB,OAAO,IAAI,sBAAsB,EACvD,wBAAyB,OAAO,IAAI,yBAAyB,EAC7D,UAAW,OAAO,IAAI,wBAAwB,EAC9C,uBAAwB,OAAO,IAAI,wBAAwB,CAC7D",
6
6
  "names": ["secureChannelTypes"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ var l=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var i=(n,e,c,a)=>{for(var r=a>1?void 0:a?p(e,c):e,o=n.length-1,u;o>=0;o--)(u=n[o])&&(r=(a?u(e,c,r):u(r))||r);return a&&r&&l(e,c,r),r},h=(n,e)=>(c,a)=>e(c,a,n);import{inject as m,injectable as D}from"inversify";import{secureChannelTypes as s}from"../../secure-channel/di/secureChannelTypes";let t=class{constructor(e){this.secureChannelDataSource=e}execute(e){this.secureChannelDataSource.setWebSocketUrl(e)}};t=i([D(),h(0,m(s.SecureChannelDataSource))],t);export{t as SetWebSocketUrlUseCase};
2
+ //# sourceMappingURL=SetWebSocketUrlUseCase.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.ts"],
4
+ "sourcesContent": ["import { inject, injectable } from \"inversify\";\n\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\nimport { secureChannelTypes } from \"@internal/secure-channel/di/secureChannelTypes\";\n\n/**\n * Use case to set the secure channel WebSocket base URL at runtime.\n */\n@injectable()\nexport class SetWebSocketUrlUseCase {\n constructor(\n @inject(secureChannelTypes.SecureChannelDataSource)\n private readonly secureChannelDataSource: SecureChannelDataSource,\n ) {}\n\n execute(webSocketUrl: string) {\n this.secureChannelDataSource.setWebSocketUrl(webSocketUrl);\n }\n}\n"],
5
+ "mappings": "iOAAA,OAAS,UAAAA,EAAQ,cAAAC,MAAkB,YAGnC,OAAS,sBAAAC,MAA0B,iDAM5B,IAAMC,EAAN,KAA6B,CAClC,YAEmBC,EACjB,CADiB,6BAAAA,CAChB,CAEH,QAAQC,EAAsB,CAC5B,KAAK,wBAAwB,gBAAgBA,CAAY,CAC3D,CACF,EATaF,EAANG,EAAA,CADNC,EAAW,EAGPC,EAAA,EAAAC,EAAOC,EAAmB,uBAAuB,IAFzCP",
6
+ "names": ["inject", "injectable", "secureChannelTypes", "SetWebSocketUrlUseCase", "secureChannelDataSource", "webSocketUrl", "__decorateClass", "injectable", "__decorateParam", "inject", "secureChannelTypes"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{describe as a,expect as r,it as n,vi as c}from"vitest";import{SetWebSocketUrlUseCase as s}from"./SetWebSocketUrlUseCase";a("SetWebSocketUrlUseCase",()=>{const e={setWebSocketUrl:c.fn()};beforeEach(()=>{c.clearAllMocks()}),n("should call setWebSocketUrl on SecureChannelDataSource with the given URL",()=>{const o=new s(e),t="wss://custom-websocket.url/update";o.execute(t),r(e.setWebSocketUrl).toHaveBeenCalledWith(t)})});
2
+ //# sourceMappingURL=SetWebSocketUrlUseCase.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../../src/internal/secure-channel/use-case/SetWebSocketUrlUseCase.test.ts"],
4
+ "sourcesContent": ["import { describe, expect, it, vi } from \"vitest\";\n\nimport { type SecureChannelDataSource } from \"@internal/secure-channel/data/SecureChannelDataSource\";\n\nimport { SetWebSocketUrlUseCase } from \"./SetWebSocketUrlUseCase\";\n\ndescribe(\"SetWebSocketUrlUseCase\", () => {\n const mockSecureChannelDataSource: SecureChannelDataSource = {\n setWebSocketUrl: vi.fn(),\n } as unknown as SecureChannelDataSource;\n\n beforeEach(() => {\n vi.clearAllMocks();\n });\n\n it(\"should call setWebSocketUrl on SecureChannelDataSource with the given URL\", () => {\n const useCase = new SetWebSocketUrlUseCase(mockSecureChannelDataSource);\n const webSocketUrl = \"wss://custom-websocket.url/update\";\n\n useCase.execute(webSocketUrl);\n\n expect(mockSecureChannelDataSource.setWebSocketUrl).toHaveBeenCalledWith(\n webSocketUrl,\n );\n });\n});\n"],
5
+ "mappings": "AAAA,OAAS,YAAAA,EAAU,UAAAC,EAAQ,MAAAC,EAAI,MAAAC,MAAU,SAIzC,OAAS,0BAAAC,MAA8B,2BAEvCJ,EAAS,yBAA0B,IAAM,CACvC,MAAMK,EAAuD,CAC3D,gBAAiBF,EAAG,GAAG,CACzB,EAEA,WAAW,IAAM,CACfA,EAAG,cAAc,CACnB,CAAC,EAEDD,EAAG,4EAA6E,IAAM,CACpF,MAAMI,EAAU,IAAIF,EAAuBC,CAA2B,EAChEE,EAAe,oCAErBD,EAAQ,QAAQC,CAAY,EAE5BN,EAAOI,EAA4B,eAAe,EAAE,qBAClDE,CACF,CACF,CAAC,CACH,CAAC",
6
+ "names": ["describe", "expect", "it", "vi", "SetWebSocketUrlUseCase", "mockSecureChannelDataSource", "useCase", "webSocketUrl"]
7
+ }
@@ -153,6 +153,32 @@ export declare class DeviceManagementKit {
153
153
  * Returns the current provider value from the manager API data source.
154
154
  */
155
155
  getProvider(): number;
156
+ /**
157
+ * Sets the firmware distribution salt. During a progressive OS rollout,
158
+ * users with different salts can see different latest OS versions. Call it
159
+ * as soon as the salt is known.
160
+ *
161
+ * Open device sessions fetch the latest firmware again on their next device
162
+ * action. A device action that is already running keeps the previous salt.
163
+ *
164
+ * @param {string} salt - The firmware distribution salt to set.
165
+ */
166
+ setFirmwareDistributionSalt(salt: string): void;
167
+ /**
168
+ * Returns the current firmware distribution salt from the manager API data
169
+ * source.
170
+ */
171
+ getFirmwareDistributionSalt(): string;
172
+ /**
173
+ * Sets the secure channel WebSocket base URL.
174
+ *
175
+ * @param {string} webSocketUrl - The WebSocket base URL to set.
176
+ */
177
+ setWebSocketUrl(webSocketUrl: string): void;
178
+ /**
179
+ * Returns the current secure channel WebSocket base URL.
180
+ */
181
+ getWebSocketUrl(): string;
156
182
  /**
157
183
  * Check if the current environment is supported by any transport.
158
184
  */
@@ -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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"}
@@ -3,6 +3,10 @@ export type DmkConfig = {
3
3
  managerApiUrl: string;
4
4
  webSocketUrl: string;
5
5
  provider: number;
6
+ /**
7
+ * Initial firmware distribution salt. If the salt is not known when DMK is
8
+ * built, set it later with `DeviceManagementKit.setFirmwareDistributionSalt`.
9
+ */
6
10
  firmwareDistributionSalt: string;
7
11
  };
8
12
  //# sourceMappingURL=DmkConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DmkConfig.d.ts","sourceRoot":"","sources":["../../../../src/api/DmkConfig.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,wBAAwB,EAAE,MAAM,CAAC;CAClC,CAAC"}
1
+ {"version":3,"file":"DmkConfig.d.ts","sourceRoot":"","sources":["../../../../src/api/DmkConfig.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,wBAAwB,EAAE,MAAM,CAAC;CAClC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { EitherAsync, Maybe } from "purify-ts";
2
2
  import { type DmkConfig } from "../../../api/DmkConfig";
3
+ import { LoggerPublisherService } from "../../../api/logger-publisher/service/LoggerPublisherService";
3
4
  import { type Application } from "../../manager-api/model/Application";
4
5
  import { type DeviceVersion } from "../../manager-api/model/Device";
5
6
  import { HttpFetchApiError } from "../../manager-api/model/Errors";
@@ -11,9 +12,12 @@ export declare class HttpManagerApiDataSource implements ManagerApiDataSource {
11
12
  private readonly http;
12
13
  private _provider;
13
14
  private _firmwareDistributionSalt;
14
- constructor({ managerApiUrl, provider, firmwareDistributionSalt }: DmkConfig);
15
+ private readonly _logger;
16
+ constructor({ managerApiUrl, provider, firmwareDistributionSalt }: DmkConfig, loggerFactory: (tag: string) => LoggerPublisherService);
15
17
  setProvider(provider: number): void;
16
18
  getProvider(): number;
19
+ setFirmwareDistributionSalt(salt: string): void;
20
+ getFirmwareDistributionSalt(): string;
17
21
  getAppList(params: GetAppListParams): EitherAsync<HttpFetchApiError, Array<Application>>;
18
22
  getMcuList(): EitherAsync<HttpFetchApiError, Array<McuFirmware>>;
19
23
  getDeviceVersion(params: GetDeviceVersionParams): EitherAsync<HttpFetchApiError, DeviceVersion>;
@@ -1 +1 @@
1
- {"version":3,"file":"HttpManagerApiDataSource.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/manager-api/data/HttpManagerApiDataSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAQ,KAAK,EAAW,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAIhD,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,yCAAyC,CAAC;AAGjD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACpC,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAsB9D,qBACa,wBAAyB,YAAW,oBAAoB;IACnE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,yBAAyB,CACI;gBAInC,EAAE,aAAa,EAAE,QAAQ,EAAE,wBAAwB,EAAE,EAAE,SAAS;IAOlE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC,WAAW,IAAI,MAAM;IAIrB,UAAU,CACR,MAAM,EAAE,gBAAgB,GACvB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAiBrD,UAAU,IAAI,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAMhE,gBAAgB,CACd,MAAM,EAAE,sBAAsB,GAC7B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAahD,kBAAkB,CAChB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAiBhD,sBAAsB,CACpB,eAAe,EAAE,MAAM,GACtB,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAUhD,qBAAqB,CACnB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAiB9C,wBAAwB,CACtB,MAAM,EAAE,8BAA8B,GACrC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAoBrD,aAAa,CACX,MAAM,EAAE,kBAAkB,GACzB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAW5D,mBAAmB,CACjB,MAAM,EAAE,yBAAyB,GAChC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAkBzD,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,sCAAsC;IAe9C,OAAO,CAAC,iBAAiB;IA0DzB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,mBAAmB;IAqC3B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,cAAc;CA8BvB"}
1
+ {"version":3,"file":"HttpManagerApiDataSource.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/manager-api/data/HttpManagerApiDataSource.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAQ,KAAK,EAAW,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAK9F,OAAO,EACL,KAAK,WAAW,EAEjB,MAAM,yCAAyC,CAAC;AAGjD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,WAAW,EACZ,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACpC,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAsB9D,qBACa,wBAAyB,YAAW,oBAAoB;IACnE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,yBAAyB,CACI;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAI/C,EAAE,aAAa,EAAE,QAAQ,EAAE,wBAAwB,EAAE,EAAE,SAAS,EAEhE,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,sBAAsB;IAQxD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOnC,WAAW,IAAI,MAAM;IAIrB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO/C,2BAA2B,IAAI,MAAM;IAIrC,UAAU,CACR,MAAM,EAAE,gBAAgB,GACvB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAiBrD,UAAU,IAAI,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAMhE,gBAAgB,CACd,MAAM,EAAE,sBAAsB,GAC7B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAahD,kBAAkB,CAChB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAiBhD,sBAAsB,CACpB,eAAe,EAAE,MAAM,GACtB,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC;IAUhD,qBAAqB,CACnB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC;IAiB9C,wBAAwB,CACtB,MAAM,EAAE,8BAA8B,GACrC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAsBrD,aAAa,CACX,MAAM,EAAE,kBAAkB,GACzB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAW5D,mBAAmB,CACjB,MAAM,EAAE,yBAAyB,GAChC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAkBzD,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,8BAA8B;IAQtC,OAAO,CAAC,sCAAsC;IAe9C,OAAO,CAAC,iBAAiB;IA0DzB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,mBAAmB;IAqC3B,OAAO,CAAC,oBAAoB;IA+B5B,OAAO,CAAC,iBAAiB;IA+BzB,OAAO,CAAC,0BAA0B;IAUlC,OAAO,CAAC,cAAc;CA8BvB"}
@@ -47,6 +47,17 @@ export interface ManagerApiDataSource {
47
47
  * Returns the current provider.
48
48
  */
49
49
  getProvider(): number;
50
+ /**
51
+ * Sets the firmware distribution salt sent to resolve the latest firmware.
52
+ * An empty salt is ignored.
53
+ *
54
+ * @param salt - The firmware distribution salt.
55
+ */
56
+ setFirmwareDistributionSalt(salt: string): void;
57
+ /**
58
+ * Returns the current firmware distribution salt.
59
+ */
60
+ getFirmwareDistributionSalt(): string;
50
61
  /**
51
62
  * Retrieves a firmware version from a final firmware ID.
52
63
  *
@@ -1 +1 @@
1
- {"version":3,"file":"ManagerApiDataSource.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/manager-api/data/ManagerApiDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACpC,MAAM,oCAAoC,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,UAAU,CACR,MAAM,EAAE,gBAAgB,GACvB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,kBAAkB,GACzB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;IAE7D;;;;;OAKG;IACH,gBAAgB,CACd,MAAM,EAAE,sBAAsB,GAC7B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,kBAAkB,CAChB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEjD;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,sBAAsB,CACpB,eAAe,EAAE,MAAM,GACtB,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,qBAAqB,CACnB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAE/C;;;;;OAKG;IACH,wBAAwB,CACtB,MAAM,EAAE,8BAA8B,GACrC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,mBAAmB,CACjB,MAAM,EAAE,yBAAyB,GAChC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,UAAU,IAAI,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;CAClE"}
1
+ {"version":3,"file":"ManagerApiDataSource.d.ts","sourceRoot":"","sources":["../../../../../../src/internal/manager-api/data/ManagerApiDataSource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAE,MAAM,WAAW,CAAC;AAEzD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,yCAAyC,CAAC;AAC3E,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EACjB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACpC,MAAM,oCAAoC,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,UAAU,CACR,MAAM,EAAE,gBAAgB,GACvB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,aAAa,CACX,MAAM,EAAE,kBAAkB,GACzB,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC;IAE7D;;;;;OAKG;IACH,gBAAgB,CACd,MAAM,EAAE,sBAAsB,GAC7B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,kBAAkB,CAChB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEjD;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEpC;;OAEG;IACH,WAAW,IAAI,MAAM,CAAC;IAEtB;;;;;OAKG;IACH,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAEhD;;OAEG;IACH,2BAA2B,IAAI,MAAM,CAAC;IAEtC;;;;;OAKG;IACH,sBAAsB,CACpB,eAAe,EAAE,MAAM,GACtB,WAAW,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,qBAAqB,CACnB,MAAM,EAAE,wBAAwB,GAC/B,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC;IAE/C;;;;;OAKG;IACH,wBAAwB,CACtB,MAAM,EAAE,8BAA8B,GACrC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAEtD;;;;;OAKG;IACH,mBAAmB,CACjB,MAAM,EAAE,yBAAyB,GAChC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;IAE1D;;;;OAIG;IACH,UAAU,IAAI,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;CAClE"}
@@ -11,5 +11,7 @@ export declare class HttpManagerApiDataSource implements ManagerApiDataSource {
11
11
  getMcuList: import("vitest").Mock<(...args: any[]) => any>;
12
12
  setProvider: import("vitest").Mock<(...args: any[]) => any>;
13
13
  getProvider: import("vitest").Mock<(...args: any[]) => any>;
14
+ setFirmwareDistributionSalt: import("vitest").Mock<(...args: any[]) => any>;
15
+ getFirmwareDistributionSalt: import("vitest").Mock<(...args: any[]) => any>;
14
16
  }
15
17
  //# sourceMappingURL=HttpManagerApiDataSource.d.ts.map