@nordicsemiconductor/pc-nrfconnect-shared 60.0.0-pre2 → 78.0.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 (515) hide show
  1. package/Changelog.md +3229 -0
  2. package/config/colors.js +46 -0
  3. package/config/eslintrc.js +190 -0
  4. package/config/jest.config.js +41 -0
  5. package/config/prettier.config.js +13 -0
  6. package/config/tailwind.config.js +25 -0
  7. package/config/tsconfig.json +16 -0
  8. package/dist/bootstrap.css +1 -1
  9. package/fw/bootloader/graviton_bootloader_v1.0.1-[nRF5_SDK_15.0.1-1.alpha_f76d012].zip +0 -0
  10. package/main/index.ts +30 -0
  11. package/mocks/deviceLibMock.ts +21 -0
  12. package/mocks/electronMock.ts +17 -0
  13. package/mocks/electronStoreMock.ts +19 -0
  14. package/mocks/emptyMock.ts +7 -0
  15. package/mocks/fileMock.ts +13 -0
  16. package/mocks/gaMock.ts +9 -0
  17. package/mocks/mockTests.test.ts +15 -0
  18. package/mocks/packageJsonMock.ts +10 -0
  19. package/mocks/remoteMock.ts +17 -0
  20. package/package.json +30 -20
  21. package/scripts/check-app-properties.ts +1 -1
  22. package/scripts/esbuild-bootstrap.js +15 -0
  23. package/scripts/esbuild-renderer.js +141 -0
  24. package/scripts/esbuild.js +3 -3
  25. package/scripts/installHusky.ts +17 -0
  26. package/scripts/nordic-publish.js +89 -0
  27. package/scripts/nordic-publish.ts +1 -1
  28. package/scripts/prepare-shared-release.ts +122 -0
  29. package/scripts/release-shared.test.ts +132 -0
  30. package/scripts/release-shared.ts +207 -0
  31. package/src/About/About.tsx +31 -0
  32. package/src/About/AboutButton.tsx +28 -0
  33. package/src/About/ApplicationCard.tsx +52 -0
  34. package/src/About/DeviceCard.tsx +76 -0
  35. package/src/About/DocumentationCard.tsx +21 -0
  36. package/src/About/DocumentationSection.tsx +24 -0
  37. package/src/About/Section.tsx +21 -0
  38. package/src/About/ShortcutButton.tsx +41 -0
  39. package/src/About/SupportCard.tsx +102 -0
  40. package/src/About/about.scss +40 -0
  41. package/src/About/shortcutSlice.ts +52 -0
  42. package/src/Alert/Alert.module.scss +29 -0
  43. package/src/Alert/Alert.tsx +37 -0
  44. package/src/App/App.test.tsx +47 -0
  45. package/src/App/App.tsx +252 -0
  46. package/src/App/ConnectedToStore.tsx +19 -0
  47. package/src/App/VisibilityBar.tsx +103 -0
  48. package/src/App/app.scss +83 -0
  49. package/src/App/appLayout.ts +94 -0
  50. package/src/App/preflight.scss +443 -0
  51. package/src/App/shared.scss +49 -0
  52. package/src/App/tailwind.css +12 -0
  53. package/src/App/visibility-bar.scss +55 -0
  54. package/src/Button/Button.tsx +76 -0
  55. package/src/Card/Card.tsx +26 -0
  56. package/src/Card/card.module.scss +28 -0
  57. package/src/Device/BrokenDeviceDialog/BrokenDeviceDialog.tsx +58 -0
  58. package/src/Device/BrokenDeviceDialog/broken-device-dialog.scss +18 -0
  59. package/src/Device/BrokenDeviceDialog/brokenDeviceDialogSlice.tsx +48 -0
  60. package/src/Device/DeviceSelector/BasicDeviceInfo.tsx +115 -0
  61. package/src/Device/DeviceSelector/DeviceIcon.tsx +27 -0
  62. package/src/Device/DeviceSelector/DeviceList/AnimatedList.tsx +62 -0
  63. package/src/Device/DeviceSelector/DeviceList/BrokenDevice.tsx +34 -0
  64. package/src/Device/DeviceSelector/DeviceList/Device.tsx +84 -0
  65. package/src/Device/DeviceSelector/DeviceList/DeviceList.tsx +113 -0
  66. package/src/Device/DeviceSelector/DeviceList/EditDeviceButtons.tsx +28 -0
  67. package/src/Device/DeviceSelector/DeviceList/MoreDeviceInfo.tsx +65 -0
  68. package/src/Device/DeviceSelector/DeviceList/RenameDevice.tsx +22 -0
  69. package/src/Device/DeviceSelector/DeviceList/broken-device.scss +32 -0
  70. package/src/Device/DeviceSelector/DeviceList/device-list.scss +64 -0
  71. package/src/Device/DeviceSelector/DeviceList/device.scss +28 -0
  72. package/src/Device/DeviceSelector/DeviceList/edit-device-buttons.scss +31 -0
  73. package/src/Device/DeviceSelector/DeviceList/more-device-info.scss +33 -0
  74. package/src/Device/DeviceSelector/DeviceList/rename-device.scss +13 -0
  75. package/src/Device/DeviceSelector/DeviceSelector.test.tsx +342 -0
  76. package/src/Device/DeviceSelector/DeviceSelector.tsx +176 -0
  77. package/src/Device/DeviceSelector/Favorite.tsx +49 -0
  78. package/src/Device/DeviceSelector/SelectDevice.tsx +36 -0
  79. package/src/Device/DeviceSelector/SelectedDevice.tsx +65 -0
  80. package/src/Device/DeviceSelector/arrow-down.svg +1 -0
  81. package/src/Device/DeviceSelector/basic-device-info.scss +62 -0
  82. package/src/Device/DeviceSelector/device-icon.scss +27 -0
  83. package/src/Device/DeviceSelector/favorite.scss +17 -0
  84. package/src/Device/DeviceSelector/select-device.scss +38 -0
  85. package/src/Device/DeviceSelector/selected-device.scss +57 -0
  86. package/src/Device/DeviceSetup/DeviceSetupView.tsx +105 -0
  87. package/src/Device/deviceAutoSelectSlice.ts +150 -0
  88. package/src/Device/deviceInfo/deviceInfo.ts +254 -0
  89. package/src/Device/deviceInfo/nRF51-Series-logo.svg +1 -0
  90. package/src/Device/deviceInfo/nRF52-Series-logo.svg +1 -0
  91. package/src/Device/deviceInfo/nRF53-Series-logo.svg +1 -0
  92. package/src/Device/deviceInfo/nRF70-Series_no-background_RGB.svg +36 -0
  93. package/src/Device/deviceInfo/nRF91-Series-logo.svg +1 -0
  94. package/src/Device/deviceInfo/ppk-logo.svg +1 -0
  95. package/src/Device/deviceInfo/unknown-logo.svg +30 -0
  96. package/src/Device/deviceInfo/unknown-nordic-logo.svg +25 -0
  97. package/src/Device/deviceLibWrapper.test.ts +97 -0
  98. package/src/Device/deviceLibWrapper.ts +132 -0
  99. package/src/Device/deviceLister.test.ts +89 -0
  100. package/src/Device/deviceLister.ts +424 -0
  101. package/src/Device/deviceSetup.ts +259 -0
  102. package/src/Device/deviceSetupSlice.ts +94 -0
  103. package/src/Device/deviceSlice.ts +248 -0
  104. package/src/Device/dfu-cc.ts +162 -0
  105. package/src/Device/initPacket.ts +402 -0
  106. package/src/Device/jprogOperations.ts +206 -0
  107. package/src/Device/sdfuOperations.ts +607 -0
  108. package/src/Dialog/Dialog.test.tsx +134 -0
  109. package/src/Dialog/Dialog.tsx +236 -0
  110. package/src/Dialog/dialog.scss +56 -0
  111. package/src/Dropdown/Dropdown.module.scss +15 -0
  112. package/src/Dropdown/Dropdown.test.tsx +62 -0
  113. package/src/Dropdown/Dropdown.tsx +112 -0
  114. package/src/ErrorBoundary/ErrorBoundary.test.tsx +88 -0
  115. package/src/ErrorBoundary/ErrorBoundary.tsx +186 -0
  116. package/src/ErrorBoundary/bug.svg +1 -0
  117. package/src/ErrorBoundary/error-boundary.scss +102 -0
  118. package/src/ErrorDialog/ErrorDialog.test.tsx +70 -0
  119. package/src/ErrorDialog/ErrorDialog.tsx +94 -0
  120. package/src/ErrorDialog/error.scss +14 -0
  121. package/src/ErrorDialog/errorDialogSlice.test.ts +64 -0
  122. package/src/ErrorDialog/errorDialogSlice.ts +80 -0
  123. package/src/FactoryReset/FactoryResetButton.test.tsx +46 -0
  124. package/src/FactoryReset/FactoryResetButton.tsx +81 -0
  125. package/src/FlashMessage/FlashMessage.tsx +159 -0
  126. package/src/FlashMessage/FlashMessageSlice.ts +88 -0
  127. package/src/FlashMessage/flashMessage.css +32 -0
  128. package/src/InlineInput/InlineInput.tsx +170 -0
  129. package/src/InlineInput/NumberInlineInput.tsx +107 -0
  130. package/src/InlineInput/inline-input.scss +38 -0
  131. package/src/InlineInput/number-inline-input.scss +15 -0
  132. package/src/Log/LogEntry.tsx +62 -0
  133. package/src/Log/LogViewer.tsx +54 -0
  134. package/src/Log/log-entry.scss +30 -0
  135. package/src/Log/log-viewer.scss +24 -0
  136. package/src/Log/logSlice.ts +73 -0
  137. package/src/Log/syncLogToStore.ts +36 -0
  138. package/src/Logo/Logo.tsx +48 -0
  139. package/src/Logo/logo.scss +11 -0
  140. package/{dist/nordic-logo-blue-icon-only-H7BABN6D.png → src/Logo/nordic-logo-blue-icon-only.png} +0 -0
  141. package/{dist/nordic-logo-gray-icon-only-GATOTR3L.png → src/Logo/nordic-logo-gray-icon-only.png} +0 -0
  142. package/src/Main/Main.tsx +13 -0
  143. package/src/Main/main.scss +13 -0
  144. package/src/MasonryLayout/MasonryLayout.tsx +234 -0
  145. package/src/MasonryLayout/masonryLayout.module.scss +46 -0
  146. package/src/NavBar/NavBar.tsx +22 -0
  147. package/src/NavBar/NavMenu.test.tsx +41 -0
  148. package/src/NavBar/NavMenu.tsx +52 -0
  149. package/src/NavBar/NavMenuItem.tsx +39 -0
  150. package/src/NavBar/nav-bar.scss +27 -0
  151. package/src/NavBar/nav-menu-item.scss +29 -0
  152. package/src/NumberInputWithSlider/NumberInputSliderWithUnit.tsx +74 -0
  153. package/src/Panes/FeedbackPane.tsx +184 -0
  154. package/src/PseudoButton/PseudoButton.tsx +56 -0
  155. package/src/PseudoButton/pseudo-button.scss +11 -0
  156. package/src/SerialPort/ConflictingSettingsDialog.tsx +226 -0
  157. package/src/SerialPort/SerialPort.test.ts +50 -0
  158. package/src/SerialPort/SerialPort.ts +172 -0
  159. package/src/Shortcuts/Shortcut-item.scss +33 -0
  160. package/src/Shortcuts/Shortcut-modal.scss +20 -0
  161. package/src/Shortcuts/ShortcutItem.tsx +48 -0
  162. package/src/Shortcuts/ShortcutModal.tsx +67 -0
  163. package/src/SidePanel/Group.tsx +106 -0
  164. package/src/SidePanel/SidePanel.tsx +19 -0
  165. package/src/SidePanel/group.scss +42 -0
  166. package/src/SidePanel/sidepanel.scss +20 -0
  167. package/src/Slider/Bar.tsx +24 -0
  168. package/src/Slider/Factor.test.ts +48 -0
  169. package/src/Slider/Handle.tsx +121 -0
  170. package/src/Slider/Slider.test.tsx +25 -0
  171. package/src/Slider/Slider.tsx +91 -0
  172. package/src/Slider/Ticks.tsx +54 -0
  173. package/src/Slider/__snapshots__/Slider.test.tsx.snap +50 -0
  174. package/src/Slider/bar.scss +24 -0
  175. package/src/Slider/factor.ts +24 -0
  176. package/src/Slider/handle.scss +32 -0
  177. package/src/Slider/percentage.ts +67 -0
  178. package/src/Slider/range.ts +92 -0
  179. package/src/Slider/slider.scss +14 -0
  180. package/src/Slider/ticks.scss +28 -0
  181. package/src/Slider/variables.scss +16 -0
  182. package/src/StartStopButton/StartStopButton.tsx +60 -0
  183. package/src/StartStopButton/play-circle.svg +1 -0
  184. package/src/StartStopButton/start-stop-button.scss +47 -0
  185. package/src/StartStopButton/stop-circle.svg +1 -0
  186. package/src/StateSelector/StateSelector.tsx +64 -0
  187. package/src/StateSelector/state-selector.scss +38 -0
  188. package/src/Stepper/Stepper.tsx +138 -0
  189. package/src/Stepper/stepper.scss +127 -0
  190. package/src/Toggle/Toggle.tsx +120 -0
  191. package/src/Toggle/toggle.scss +109 -0
  192. package/src/bootstrap.scss +14 -0
  193. package/src/index.ts +150 -0
  194. package/src/logging/appTransport.test.ts +78 -0
  195. package/src/logging/appTransport.ts +41 -0
  196. package/src/logging/describeError.test.ts +38 -0
  197. package/src/logging/describeError.ts +56 -0
  198. package/src/logging/index.ts +103 -0
  199. package/src/logging/logBuffer.test.ts +41 -0
  200. package/src/logging/logBuffer.ts +24 -0
  201. package/src/logging/sendInitialLogMessages.ts +61 -0
  202. package/src/store.ts +67 -0
  203. package/src/svg.d.ts +15 -0
  204. package/src/utils/appDirs.ts +78 -0
  205. package/src/utils/bleChannels.ts +16 -0
  206. package/src/utils/classNames.test.ts +29 -0
  207. package/src/utils/classNames.ts +25 -0
  208. package/src/utils/colors.scss +46 -0
  209. package/src/utils/colors.ts +173 -0
  210. package/src/utils/describeVersion.ts +21 -0
  211. package/src/utils/environment.ts +6 -0
  212. package/src/utils/logLibVersions.ts +103 -0
  213. package/src/utils/open.ts +46 -0
  214. package/src/utils/packageJson.ts +60 -0
  215. package/src/utils/persistentStore.ts +144 -0
  216. package/src/utils/systemReport.ts +160 -0
  217. package/src/utils/truncateMiddle.test.ts +21 -0
  218. package/src/utils/truncateMiddle.ts +20 -0
  219. package/src/utils/usageData.ts +196 -0
  220. package/src/utils/useFocusedOnVisible.ts +26 -0
  221. package/src/utils/useHotKey.ts +62 -0
  222. package/src/utils/useStopwatch.test.tsx +311 -0
  223. package/src/utils/useStopwatch.ts +140 -0
  224. package/src/variables.scss +820 -0
  225. package/styles.scss +88 -0
  226. package/test/dispatchTo.ts +23 -0
  227. package/test/index.ts +7 -0
  228. package/test/jestResolver.js +28 -0
  229. package/test/setupTests.ts +27 -0
  230. package/test/testUtil.ts +20 -0
  231. package/test/testrenderer.tsx +39 -0
  232. package/typings/generated/{src/utils/AppTypes.d.ts → ipc/MetaFiles.d.ts} +10 -7
  233. package/typings/generated/ipc/MetaFiles.d.ts.map +1 -0
  234. package/typings/generated/ipc/appDetails.d.ts +19 -0
  235. package/typings/generated/ipc/appDetails.d.ts.map +1 -0
  236. package/typings/generated/ipc/apps.d.ts +67 -0
  237. package/typings/generated/ipc/apps.d.ts.map +1 -0
  238. package/typings/generated/ipc/infrastructure/mainToRenderer.d.ts +7 -0
  239. package/typings/generated/ipc/infrastructure/mainToRenderer.d.ts.map +1 -0
  240. package/typings/generated/ipc/infrastructure/rendererToMain.d.ts +7 -0
  241. package/typings/generated/ipc/infrastructure/rendererToMain.d.ts.map +1 -0
  242. package/typings/generated/ipc/openWindow.d.ts +19 -0
  243. package/typings/generated/ipc/openWindow.d.ts.map +1 -0
  244. package/typings/generated/ipc/preventSleep.d.ts +11 -0
  245. package/typings/generated/ipc/preventSleep.d.ts.map +1 -0
  246. package/typings/generated/ipc/serialPort.d.ts +49 -0
  247. package/typings/generated/ipc/serialPort.d.ts.map +1 -0
  248. package/typings/generated/ipc/sources.d.ts +15 -0
  249. package/typings/generated/ipc/sources.d.ts.map +1 -0
  250. package/typings/generated/main/index.d.ts +52 -21
  251. package/typings/generated/main/index.d.ts.map +1 -0
  252. package/typings/generated/src/About/About.d.ts +6 -2
  253. package/typings/generated/src/About/About.d.ts.map +1 -0
  254. package/typings/generated/src/About/AboutButton.d.ts +1 -0
  255. package/typings/generated/src/About/AboutButton.d.ts.map +1 -0
  256. package/typings/generated/src/About/ApplicationCard.d.ts +1 -0
  257. package/typings/generated/src/About/ApplicationCard.d.ts.map +1 -0
  258. package/typings/generated/src/About/DeviceCard.d.ts +1 -0
  259. package/typings/generated/src/About/DeviceCard.d.ts.map +1 -0
  260. package/typings/generated/src/About/DocumentationCard.d.ts +5 -2
  261. package/typings/generated/src/About/DocumentationCard.d.ts.map +1 -0
  262. package/typings/generated/src/About/DocumentationSection.d.ts +1 -0
  263. package/typings/generated/src/About/DocumentationSection.d.ts.map +1 -0
  264. package/typings/generated/src/About/Section.d.ts +1 -1
  265. package/typings/generated/src/About/Section.d.ts.map +1 -0
  266. package/typings/generated/src/About/ShortcutButton.d.ts +1 -0
  267. package/typings/generated/src/About/ShortcutButton.d.ts.map +1 -0
  268. package/typings/generated/src/About/SupportCard.d.ts +1 -0
  269. package/typings/generated/src/About/SupportCard.d.ts.map +1 -0
  270. package/typings/generated/src/About/shortcutSlice.d.ts +1 -0
  271. package/typings/generated/src/About/shortcutSlice.d.ts.map +1 -0
  272. package/typings/generated/src/Alert/Alert.d.ts +1 -0
  273. package/typings/generated/src/Alert/Alert.d.ts.map +1 -0
  274. package/typings/generated/src/App/App.d.ts +4 -0
  275. package/typings/generated/src/App/App.d.ts.map +1 -0
  276. package/typings/generated/src/App/App.test.d.ts +1 -0
  277. package/typings/generated/src/App/App.test.d.ts.map +1 -0
  278. package/typings/generated/src/App/ConnectedToStore.d.ts +1 -0
  279. package/typings/generated/src/App/ConnectedToStore.d.ts.map +1 -0
  280. package/typings/generated/src/App/VisibilityBar.d.ts +1 -0
  281. package/typings/generated/src/App/VisibilityBar.d.ts.map +1 -0
  282. package/typings/generated/src/App/appLayout.d.ts +1 -1
  283. package/typings/generated/src/App/appLayout.d.ts.map +1 -0
  284. package/typings/generated/src/Button/Button.d.ts +2 -1
  285. package/typings/generated/src/Button/Button.d.ts.map +1 -0
  286. package/typings/generated/src/Card/Card.d.ts +1 -0
  287. package/typings/generated/src/Card/Card.d.ts.map +1 -0
  288. package/typings/generated/src/Device/BrokenDeviceDialog/BrokenDeviceDialog.d.ts +1 -0
  289. package/typings/generated/src/Device/BrokenDeviceDialog/BrokenDeviceDialog.d.ts.map +1 -0
  290. package/typings/generated/src/Device/BrokenDeviceDialog/brokenDeviceDialogSlice.d.ts +1 -0
  291. package/typings/generated/src/Device/BrokenDeviceDialog/brokenDeviceDialogSlice.d.ts.map +1 -0
  292. package/typings/generated/src/Device/DeviceSelector/BasicDeviceInfo.d.ts +1 -0
  293. package/typings/generated/src/Device/DeviceSelector/BasicDeviceInfo.d.ts.map +1 -0
  294. package/typings/generated/src/Device/DeviceSelector/DeviceIcon.d.ts +1 -0
  295. package/typings/generated/src/Device/DeviceSelector/DeviceIcon.d.ts.map +1 -0
  296. package/typings/generated/src/Device/DeviceSelector/DeviceList/AnimatedList.d.ts +1 -0
  297. package/typings/generated/src/Device/DeviceSelector/DeviceList/AnimatedList.d.ts.map +1 -0
  298. package/typings/generated/src/Device/DeviceSelector/DeviceList/BrokenDevice.d.ts +1 -0
  299. package/typings/generated/src/Device/DeviceSelector/DeviceList/BrokenDevice.d.ts.map +1 -0
  300. package/typings/generated/src/Device/DeviceSelector/DeviceList/Device.d.ts +1 -0
  301. package/typings/generated/src/Device/DeviceSelector/DeviceList/Device.d.ts.map +1 -0
  302. package/typings/generated/src/Device/DeviceSelector/DeviceList/DeviceList.d.ts +1 -0
  303. package/typings/generated/src/Device/DeviceSelector/DeviceList/DeviceList.d.ts.map +1 -0
  304. package/typings/generated/src/Device/DeviceSelector/DeviceList/EditDeviceButtons.d.ts +1 -0
  305. package/typings/generated/src/Device/DeviceSelector/DeviceList/EditDeviceButtons.d.ts.map +1 -0
  306. package/typings/generated/src/Device/DeviceSelector/DeviceList/MoreDeviceInfo.d.ts +1 -0
  307. package/typings/generated/src/Device/DeviceSelector/DeviceList/MoreDeviceInfo.d.ts.map +1 -0
  308. package/typings/generated/src/Device/DeviceSelector/DeviceList/RenameDevice.d.ts +1 -0
  309. package/typings/generated/src/Device/DeviceSelector/DeviceList/RenameDevice.d.ts.map +1 -0
  310. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.d.ts +1 -0
  311. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.d.ts.map +1 -0
  312. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.test.d.ts +1 -0
  313. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.test.d.ts.map +1 -0
  314. package/typings/generated/src/Device/DeviceSelector/Favorite.d.ts +1 -0
  315. package/typings/generated/src/Device/DeviceSelector/Favorite.d.ts.map +1 -0
  316. package/typings/generated/src/Device/DeviceSelector/SelectDevice.d.ts +1 -0
  317. package/typings/generated/src/Device/DeviceSelector/SelectDevice.d.ts.map +1 -0
  318. package/typings/generated/src/Device/DeviceSelector/SelectedDevice.d.ts +1 -0
  319. package/typings/generated/src/Device/DeviceSelector/SelectedDevice.d.ts.map +1 -0
  320. package/typings/generated/src/Device/DeviceSetup/DeviceSetupView.d.ts +1 -0
  321. package/typings/generated/src/Device/DeviceSetup/DeviceSetupView.d.ts.map +1 -0
  322. package/typings/generated/src/Device/deviceAutoSelectSlice.d.ts +3 -1
  323. package/typings/generated/src/Device/deviceAutoSelectSlice.d.ts.map +1 -0
  324. package/typings/generated/src/Device/deviceInfo/deviceInfo.d.ts +3 -1
  325. package/typings/generated/src/Device/deviceInfo/deviceInfo.d.ts.map +1 -0
  326. package/typings/generated/src/Device/deviceLibWrapper.d.ts +1 -0
  327. package/typings/generated/src/Device/deviceLibWrapper.d.ts.map +1 -0
  328. package/typings/generated/src/Device/deviceLibWrapper.test.d.ts +1 -0
  329. package/typings/generated/src/Device/deviceLibWrapper.test.d.ts.map +1 -0
  330. package/typings/generated/src/Device/deviceLister.d.ts +4 -2
  331. package/typings/generated/src/Device/deviceLister.d.ts.map +1 -0
  332. package/typings/generated/src/Device/deviceLister.test.d.ts +1 -0
  333. package/typings/generated/src/Device/deviceLister.test.d.ts.map +1 -0
  334. package/typings/generated/src/Device/deviceSetup.d.ts +8 -7
  335. package/typings/generated/src/Device/deviceSetup.d.ts.map +1 -0
  336. package/typings/generated/src/Device/deviceSetupSlice.d.ts +1 -0
  337. package/typings/generated/src/Device/deviceSetupSlice.d.ts.map +1 -0
  338. package/typings/generated/src/Device/deviceSlice.d.ts +1 -0
  339. package/typings/generated/src/Device/deviceSlice.d.ts.map +1 -0
  340. package/typings/generated/src/Device/dfu-cc.d.ts +1 -0
  341. package/typings/generated/src/Device/dfu-cc.d.ts.map +1 -0
  342. package/typings/generated/src/Device/initPacket.d.ts +1 -0
  343. package/typings/generated/src/Device/initPacket.d.ts.map +1 -0
  344. package/typings/generated/src/Device/jprogOperations.d.ts +1 -0
  345. package/typings/generated/src/Device/jprogOperations.d.ts.map +1 -0
  346. package/typings/generated/src/Device/sdfuOperations.d.ts +4 -3
  347. package/typings/generated/src/Device/sdfuOperations.d.ts.map +1 -0
  348. package/typings/generated/src/Dialog/Dialog.d.ts +1 -0
  349. package/typings/generated/src/Dialog/Dialog.d.ts.map +1 -0
  350. package/typings/generated/src/Dialog/Dialog.test.d.ts +1 -0
  351. package/typings/generated/src/Dialog/Dialog.test.d.ts.map +1 -0
  352. package/typings/generated/src/Dropdown/Dropdown.d.ts +3 -1
  353. package/typings/generated/src/Dropdown/Dropdown.d.ts.map +1 -0
  354. package/typings/generated/src/Dropdown/Dropdown.test.d.ts +1 -0
  355. package/typings/generated/src/Dropdown/Dropdown.test.d.ts.map +1 -0
  356. package/typings/generated/src/ErrorBoundary/ErrorBoundary.d.ts +1 -0
  357. package/typings/generated/src/ErrorBoundary/ErrorBoundary.d.ts.map +1 -0
  358. package/typings/generated/src/ErrorBoundary/ErrorBoundary.test.d.ts +1 -0
  359. package/typings/generated/src/ErrorBoundary/ErrorBoundary.test.d.ts.map +1 -0
  360. package/typings/generated/src/ErrorDialog/ErrorDialog.d.ts +1 -0
  361. package/typings/generated/src/ErrorDialog/ErrorDialog.d.ts.map +1 -0
  362. package/typings/generated/src/ErrorDialog/ErrorDialog.test.d.ts +1 -0
  363. package/typings/generated/src/ErrorDialog/ErrorDialog.test.d.ts.map +1 -0
  364. package/typings/generated/src/ErrorDialog/errorDialogSlice.d.ts +1 -0
  365. package/typings/generated/src/ErrorDialog/errorDialogSlice.d.ts.map +1 -0
  366. package/typings/generated/src/ErrorDialog/errorDialogSlice.test.d.ts +1 -0
  367. package/typings/generated/src/ErrorDialog/errorDialogSlice.test.d.ts.map +1 -0
  368. package/typings/generated/src/FactoryReset/FactoryResetButton.d.ts +1 -0
  369. package/typings/generated/src/FactoryReset/FactoryResetButton.d.ts.map +1 -0
  370. package/typings/generated/src/FactoryReset/FactoryResetButton.test.d.ts +1 -0
  371. package/typings/generated/src/FactoryReset/FactoryResetButton.test.d.ts.map +1 -0
  372. package/typings/generated/src/FlashMessage/FlashMessage.d.ts +5 -0
  373. package/typings/generated/src/FlashMessage/FlashMessage.d.ts.map +1 -0
  374. package/typings/generated/src/FlashMessage/FlashMessageSlice.d.ts +20 -0
  375. package/typings/generated/src/FlashMessage/FlashMessageSlice.d.ts.map +1 -0
  376. package/typings/generated/src/InlineInput/InlineInput.d.ts +1 -0
  377. package/typings/generated/src/InlineInput/InlineInput.d.ts.map +1 -0
  378. package/typings/generated/src/InlineInput/NumberInlineInput.d.ts +1 -0
  379. package/typings/generated/src/InlineInput/NumberInlineInput.d.ts.map +1 -0
  380. package/typings/generated/src/Log/LogEntry.d.ts +1 -0
  381. package/typings/generated/src/Log/LogEntry.d.ts.map +1 -0
  382. package/typings/generated/src/Log/LogViewer.d.ts +1 -0
  383. package/typings/generated/src/Log/LogViewer.d.ts.map +1 -0
  384. package/typings/generated/src/Log/logSlice.d.ts +1 -0
  385. package/typings/generated/src/Log/logSlice.d.ts.map +1 -0
  386. package/typings/generated/src/Log/syncLogToStore.d.ts +1 -0
  387. package/typings/generated/src/Log/syncLogToStore.d.ts.map +1 -0
  388. package/typings/generated/src/Logo/Logo.d.ts +1 -0
  389. package/typings/generated/src/Logo/Logo.d.ts.map +1 -0
  390. package/typings/generated/src/Main/Main.d.ts +1 -0
  391. package/typings/generated/src/Main/Main.d.ts.map +1 -0
  392. package/typings/generated/src/MasonryLayout/MasonryLayout.d.ts +1 -0
  393. package/typings/generated/src/MasonryLayout/MasonryLayout.d.ts.map +1 -0
  394. package/typings/generated/src/NavBar/NavBar.d.ts +1 -0
  395. package/typings/generated/src/NavBar/NavBar.d.ts.map +1 -0
  396. package/typings/generated/src/NavBar/NavMenu.d.ts +1 -0
  397. package/typings/generated/src/NavBar/NavMenu.d.ts.map +1 -0
  398. package/typings/generated/src/NavBar/NavMenu.test.d.ts +1 -0
  399. package/typings/generated/src/NavBar/NavMenu.test.d.ts.map +1 -0
  400. package/typings/generated/src/NavBar/NavMenuItem.d.ts +1 -1
  401. package/typings/generated/src/NavBar/NavMenuItem.d.ts.map +1 -0
  402. package/typings/generated/src/NumberInputWithSlider/NumberInputSliderWithUnit.d.ts +14 -0
  403. package/typings/generated/src/NumberInputWithSlider/NumberInputSliderWithUnit.d.ts.map +1 -0
  404. package/typings/generated/src/Panes/FeedbackPane.d.ts +5 -1
  405. package/typings/generated/src/Panes/FeedbackPane.d.ts.map +1 -0
  406. package/typings/generated/src/PseudoButton/PseudoButton.d.ts +1 -0
  407. package/typings/generated/src/PseudoButton/PseudoButton.d.ts.map +1 -0
  408. package/typings/generated/src/SerialPort/ConflictingSettingsDialog.d.ts +1 -0
  409. package/typings/generated/src/SerialPort/ConflictingSettingsDialog.d.ts.map +1 -0
  410. package/typings/generated/src/SerialPort/SerialPort.d.ts +7 -6
  411. package/typings/generated/src/SerialPort/SerialPort.d.ts.map +1 -0
  412. package/typings/generated/src/SerialPort/SerialPort.test.d.ts +1 -0
  413. package/typings/generated/src/SerialPort/SerialPort.test.d.ts.map +1 -0
  414. package/typings/generated/src/Shortcuts/ShortcutItem.d.ts +1 -0
  415. package/typings/generated/src/Shortcuts/ShortcutItem.d.ts.map +1 -0
  416. package/typings/generated/src/Shortcuts/ShortcutModal.d.ts +1 -0
  417. package/typings/generated/src/Shortcuts/ShortcutModal.d.ts.map +1 -0
  418. package/typings/generated/src/SidePanel/Group.d.ts +1 -0
  419. package/typings/generated/src/SidePanel/Group.d.ts.map +1 -0
  420. package/typings/generated/src/SidePanel/SidePanel.d.ts +1 -0
  421. package/typings/generated/src/SidePanel/SidePanel.d.ts.map +1 -0
  422. package/typings/generated/src/Slider/Bar.d.ts +1 -0
  423. package/typings/generated/src/Slider/Bar.d.ts.map +1 -0
  424. package/typings/generated/src/Slider/Factor.test.d.ts +1 -0
  425. package/typings/generated/src/Slider/Factor.test.d.ts.map +1 -0
  426. package/typings/generated/src/Slider/Handle.d.ts +1 -0
  427. package/typings/generated/src/Slider/Handle.d.ts.map +1 -0
  428. package/typings/generated/src/Slider/Slider.d.ts +1 -0
  429. package/typings/generated/src/Slider/Slider.d.ts.map +1 -0
  430. package/typings/generated/src/Slider/Slider.test.d.ts +1 -0
  431. package/typings/generated/src/Slider/Slider.test.d.ts.map +1 -0
  432. package/typings/generated/src/Slider/Ticks.d.ts +1 -0
  433. package/typings/generated/src/Slider/Ticks.d.ts.map +1 -0
  434. package/typings/generated/src/Slider/factor.d.ts +1 -0
  435. package/typings/generated/src/Slider/factor.d.ts.map +1 -0
  436. package/typings/generated/src/Slider/percentage.d.ts +1 -0
  437. package/typings/generated/src/Slider/percentage.d.ts.map +1 -0
  438. package/typings/generated/src/Slider/range.d.ts +1 -0
  439. package/typings/generated/src/Slider/range.d.ts.map +1 -0
  440. package/typings/generated/src/StartStopButton/StartStopButton.d.ts +1 -0
  441. package/typings/generated/src/StartStopButton/StartStopButton.d.ts.map +1 -0
  442. package/typings/generated/src/StateSelector/StateSelector.d.ts +1 -0
  443. package/typings/generated/src/StateSelector/StateSelector.d.ts.map +1 -0
  444. package/typings/generated/src/Stepper/Stepper.d.ts +1 -0
  445. package/typings/generated/src/Stepper/Stepper.d.ts.map +1 -0
  446. package/typings/generated/src/Toggle/Toggle.d.ts +1 -0
  447. package/typings/generated/src/Toggle/Toggle.d.ts.map +1 -0
  448. package/typings/generated/src/index.d.ts +12 -8
  449. package/typings/generated/src/index.d.ts.map +1 -0
  450. package/typings/generated/src/logging/appTransport.d.ts +1 -0
  451. package/typings/generated/src/logging/appTransport.d.ts.map +1 -0
  452. package/typings/generated/src/logging/appTransport.test.d.ts +1 -0
  453. package/typings/generated/src/logging/appTransport.test.d.ts.map +1 -0
  454. package/typings/generated/src/logging/describeError.d.ts +1 -0
  455. package/typings/generated/src/logging/describeError.d.ts.map +1 -0
  456. package/typings/generated/src/logging/describeError.test.d.ts +1 -0
  457. package/typings/generated/src/logging/describeError.test.d.ts.map +1 -0
  458. package/typings/generated/src/logging/index.d.ts +1 -0
  459. package/typings/generated/src/logging/index.d.ts.map +1 -0
  460. package/typings/generated/src/logging/logBuffer.d.ts +1 -0
  461. package/typings/generated/src/logging/logBuffer.d.ts.map +1 -0
  462. package/typings/generated/src/logging/logBuffer.test.d.ts +1 -0
  463. package/typings/generated/src/logging/logBuffer.test.d.ts.map +1 -0
  464. package/typings/generated/src/logging/sendInitialLogMessages.d.ts +2 -1
  465. package/typings/generated/src/logging/sendInitialLogMessages.d.ts.map +1 -0
  466. package/typings/generated/src/store.d.ts +21 -18
  467. package/typings/generated/src/store.d.ts.map +1 -0
  468. package/typings/generated/src/utils/appDirs.d.ts +1 -0
  469. package/typings/generated/src/utils/appDirs.d.ts.map +1 -0
  470. package/typings/generated/src/utils/bleChannels.d.ts +1 -0
  471. package/typings/generated/src/utils/bleChannels.d.ts.map +1 -0
  472. package/typings/generated/src/utils/classNames.d.ts +1 -0
  473. package/typings/generated/src/utils/classNames.d.ts.map +1 -0
  474. package/typings/generated/src/utils/classNames.test.d.ts +1 -0
  475. package/typings/generated/src/utils/classNames.test.d.ts.map +1 -0
  476. package/typings/generated/src/utils/colors.d.ts +126 -3
  477. package/typings/generated/src/utils/colors.d.ts.map +1 -0
  478. package/typings/generated/src/utils/describeVersion.d.ts +1 -0
  479. package/typings/generated/src/utils/describeVersion.d.ts.map +1 -0
  480. package/typings/generated/src/utils/environment.d.ts +1 -0
  481. package/typings/generated/src/utils/environment.d.ts.map +1 -0
  482. package/typings/generated/src/utils/logLibVersions.d.ts +1 -0
  483. package/typings/generated/src/utils/logLibVersions.d.ts.map +1 -0
  484. package/typings/generated/src/utils/open.d.ts +1 -0
  485. package/typings/generated/src/utils/open.d.ts.map +1 -0
  486. package/typings/generated/src/utils/packageJson.d.ts +2 -1
  487. package/typings/generated/src/utils/packageJson.d.ts.map +1 -0
  488. package/typings/generated/src/utils/persistentStore.d.ts +1 -0
  489. package/typings/generated/src/utils/persistentStore.d.ts.map +1 -0
  490. package/typings/generated/src/utils/systemReport.d.ts +1 -0
  491. package/typings/generated/src/utils/systemReport.d.ts.map +1 -0
  492. package/typings/generated/src/utils/truncateMiddle.d.ts +1 -0
  493. package/typings/generated/src/utils/truncateMiddle.d.ts.map +1 -0
  494. package/typings/generated/src/utils/truncateMiddle.test.d.ts +1 -0
  495. package/typings/generated/src/utils/truncateMiddle.test.d.ts.map +1 -0
  496. package/typings/generated/src/utils/usageData.d.ts +4 -3
  497. package/typings/generated/src/utils/usageData.d.ts.map +1 -0
  498. package/typings/generated/src/utils/useFocusedOnVisible.d.ts +11 -0
  499. package/typings/generated/src/utils/useFocusedOnVisible.d.ts.map +1 -0
  500. package/typings/generated/src/utils/useHotKey.d.ts +1 -0
  501. package/typings/generated/src/utils/useHotKey.d.ts.map +1 -0
  502. package/typings/generated/src/utils/useStopwatch.d.ts +1 -0
  503. package/typings/generated/src/utils/useStopwatch.d.ts.map +1 -0
  504. package/typings/generated/src/utils/useStopwatch.test.d.ts +1 -0
  505. package/typings/generated/src/utils/useStopwatch.test.d.ts.map +1 -0
  506. package/typings/generated/test/dispatchTo.d.ts +1 -0
  507. package/typings/generated/test/dispatchTo.d.ts.map +1 -0
  508. package/typings/generated/test/testrenderer.d.ts +1 -0
  509. package/typings/generated/test/testrenderer.d.ts.map +1 -0
  510. package/dist/index.css +0 -1451
  511. package/dist/index.js +0 -122119
  512. package/tsconfig.json +0 -9
  513. package/typings/generated/src/About/documentationSlice.d.ts +0 -12
  514. package/typings/generated/src/OpenApp/openApp.d.ts +0 -7
  515. /package/{dist/nordic-logo-white-icon-only-XIZBW537.png → src/Logo/nordic-logo-white-icon-only.png} +0 -0
@@ -0,0 +1,254 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ /*
8
+ eslint-disable import/no-webpack-loader-syntax,import/no-unresolved --
9
+
10
+ It would be nice to process all SVGs with svgr, which would make the two
11
+ disables above unnecessary, but that would be a breaking change for all
12
+ apps that rely on the current configuration, which uses the file loader
13
+ to load SVGs.
14
+
15
+ The difference between the file loader and using svgr:
16
+
17
+ - With the file loaded an URL is returned which then can be used (e.g. in an img tag) like this:
18
+
19
+ import chipIconUrl from './chipIconUrl.svg';
20
+ const Icon = () => <img src={chipIconUrl} />
21
+
22
+ - With svgr a react component is returned, which then can be rendered like this:
23
+
24
+ import ChipIcon from '!!@svgr!./chipIconUrl.svg';
25
+ const Icon = () => <ChipIcon />
26
+
27
+ One of the advantages of svgr is, that it includes the SVG inline, so it can be styled
28
+ through CSS, e.g. to change the colours.
29
+ */
30
+
31
+ import logger from '../../logging';
32
+ import { Device } from '../deviceSlice';
33
+
34
+ import nrf51logo from '!!@svgr!./nRF51-Series-logo.svg';
35
+ import nrf52logo from '!!@svgr!./nRF52-Series-logo.svg';
36
+ import nrf53logo from '!!@svgr!./nRF53-Series-logo.svg';
37
+ import nrf7002logo from '!!@svgr!./nRF70-Series_no-background_RGB.svg';
38
+ import nrf91logo from '!!@svgr!./nRF91-Series-logo.svg';
39
+ import ppkLogo from '!!@svgr!./ppk-logo.svg';
40
+ import unknownLogo from '!!@svgr!./unknown-logo.svg';
41
+ import unknownNordicLogo from '!!@svgr!./unknown-nordic-logo.svg';
42
+
43
+ type DevicePCA =
44
+ | 'PCA10028'
45
+ | 'PCA10031'
46
+ | 'PCA10040'
47
+ | 'PCA10056'
48
+ | 'PCA10059'
49
+ | 'PCA10090'
50
+ | 'PCA10095'
51
+ | 'PCA10100'
52
+ | 'PCA10121'
53
+ | 'PCA20020'
54
+ | 'PCA20035'
55
+ | 'PCA10143';
56
+
57
+ interface DeviceInfo {
58
+ name?: string | null;
59
+ cores?: number;
60
+ icon: React.ElementType;
61
+ website: {
62
+ productPagePath?: string;
63
+ buyOnlineParams?: string;
64
+ };
65
+ }
66
+
67
+ const devicesByPca: { [P in DevicePCA]: DeviceInfo } = {
68
+ PCA10028: {
69
+ name: 'nRF51 DK',
70
+ cores: 1,
71
+ icon: nrf51logo,
72
+ website: {
73
+ productPagePath: 'Software-and-tools/Development-Kits/nRF51-DK',
74
+ buyOnlineParams: 'search_token=nrf51-DK&series_token=nRF51822',
75
+ },
76
+ },
77
+ PCA10031: {
78
+ name: 'nRF51 Dongle',
79
+ cores: 1,
80
+ icon: nrf51logo,
81
+ website: {
82
+ productPagePath: 'Software-and-tools/Development-Kits/nRF51-Dongle',
83
+ buyOnlineParams: 'search_token=nRF51-Dongle&series_token=nRF51822',
84
+ },
85
+ },
86
+ PCA10040: {
87
+ name: 'nRF52 DK',
88
+ cores: 1,
89
+ icon: nrf52logo,
90
+ website: {
91
+ productPagePath: 'Software-and-tools/Development-Kits/nRF52-DK',
92
+ buyOnlineParams: 'search_token=nRF52-DK&series_token=nRF52832',
93
+ },
94
+ },
95
+ PCA10056: {
96
+ name: 'nRF52840 DK',
97
+ cores: 1,
98
+ icon: nrf52logo,
99
+ website: {
100
+ productPagePath: 'Software-and-tools/Development-Kits/nRF52840-DK',
101
+ buyOnlineParams: 'search_token=nrf52840-DK&series_token=nRF52840',
102
+ },
103
+ },
104
+ PCA10059: {
105
+ name: 'nRF52840 Dongle',
106
+ cores: 1,
107
+ icon: nrf52logo,
108
+ website: {
109
+ productPagePath:
110
+ 'Software-and-tools/Development-Kits/nRF52840-Dongle',
111
+ buyOnlineParams:
112
+ 'search_token=nRF52840DONGLE&series_token=nRF52840',
113
+ },
114
+ },
115
+ PCA10090: {
116
+ name: 'nRF9160 DK',
117
+ cores: 1,
118
+ icon: nrf91logo,
119
+ website: {
120
+ productPagePath: 'Software-and-tools/Development-Kits/nRF9160-DK',
121
+ buyOnlineParams: 'search_token=nrf9160-DK&series_token=nRF9160',
122
+ },
123
+ },
124
+ PCA10095: {
125
+ name: 'nRF5340 DK',
126
+ cores: 2,
127
+ icon: nrf53logo,
128
+ website: {
129
+ productPagePath: 'Software-and-tools/Development-Kits/nRF5340-DK',
130
+ buyOnlineParams: 'search_token=nRF5340-DK&series_token=nRF5340',
131
+ },
132
+ },
133
+ PCA10100: {
134
+ name: 'nRF52833 DK',
135
+ cores: 1,
136
+ icon: nrf52logo,
137
+ website: {
138
+ productPagePath: 'Software-and-tools/Development-Kits/nRF52833-DK',
139
+ buyOnlineParams: 'search_token=nRF52833-DK&series_token=nRF52833',
140
+ },
141
+ },
142
+ PCA10121: {
143
+ name: 'nRF5340 Audio DK',
144
+ cores: 2,
145
+ icon: nrf53logo,
146
+ website: {
147
+ productPagePath: 'Products/Development-hardware/nRF5340-Audio-DK',
148
+ buyOnlineParams:
149
+ 'search_token=nRF5340-Audio-DK&series_token=nRF5340',
150
+ },
151
+ },
152
+ PCA20020: {
153
+ name: 'Nordic Thingy:52',
154
+ cores: 1,
155
+ icon: nrf52logo,
156
+ website: {
157
+ productPagePath:
158
+ 'Software-and-tools/Prototyping-platforms/Nordic-Thingy-52',
159
+ buyOnlineParams: 'search_token=nRF6936&series_token=nRF52832',
160
+ },
161
+ },
162
+ PCA20035: {
163
+ name: 'Nordic Thingy:91',
164
+ cores: 1,
165
+ icon: nrf91logo,
166
+ website: {
167
+ productPagePath:
168
+ 'Software-and-tools/Prototyping-platforms/Nordic-Thingy-91',
169
+ buyOnlineParams: 'search_token=nRF6943&series_token=nRF9160',
170
+ },
171
+ },
172
+ PCA10143: {
173
+ name: 'nRF7002 DK',
174
+ cores: 2,
175
+ icon: nrf7002logo,
176
+ website: {
177
+ productPagePath: 'Products/Development-hardware/nRF7002-DK',
178
+ buyOnlineParams: 'search_token=nRF7002-DK&series_token=nRF7002',
179
+ },
180
+ },
181
+ };
182
+
183
+ const deviceByPca = (device: Device) =>
184
+ devicesByPca[String(device.boardVersion).toUpperCase() as DevicePCA];
185
+
186
+ const NORDIC_VENDOR_ID = '1915';
187
+ const isNordicDevice = (device: Device) =>
188
+ device.serialport?.vendorId === NORDIC_VENDOR_ID;
189
+
190
+ const ppkDeviceInfo = (device: Device): DeviceInfo => ({
191
+ name: device.usb?.product,
192
+ icon: ppkLogo,
193
+ website: {
194
+ productPagePath:
195
+ 'Software-and-tools/Development-Tools/Power-Profiler-Kit-2',
196
+ buyOnlineParams: 'search_token=nRF-PPK2',
197
+ },
198
+ });
199
+
200
+ const deviceByUsb = (device: Device) => {
201
+ if (isNordicDevice(device)) {
202
+ if (device.usb?.product?.startsWith('PPK')) {
203
+ return ppkDeviceInfo(device);
204
+ }
205
+ if (device.serialNumber?.startsWith('THINGY91')) {
206
+ return devicesByPca.PCA20035;
207
+ }
208
+ }
209
+ return null;
210
+ };
211
+
212
+ let hasShownUdevWarning = false;
213
+ const unknownDevice = (device: Device): DeviceInfo => {
214
+ if (
215
+ isNordicDevice(device) &&
216
+ process.platform === 'linux' &&
217
+ !hasShownUdevWarning
218
+ ) {
219
+ logger.warn(
220
+ 'Could not properly detect an unknown device. Please make sure you have nrf-udev installed: https://github.com/NordicSemiconductor/nrf-udev'
221
+ );
222
+ hasShownUdevWarning = true;
223
+ }
224
+
225
+ return {
226
+ name: device.usb?.product,
227
+ icon: isNordicDevice(device) ? unknownNordicLogo : unknownLogo,
228
+ website: {},
229
+ };
230
+ };
231
+
232
+ export const deviceInfo = (device: Device): DeviceInfo =>
233
+ deviceByPca(device) || deviceByUsb(device) || unknownDevice(device);
234
+
235
+ export const displayedDeviceName = (
236
+ device: Device,
237
+ { respectNickname = true } = {}
238
+ ) => {
239
+ if (respectNickname && device.nickname) {
240
+ return device.nickname;
241
+ }
242
+
243
+ return deviceInfo(device).name || device.boardVersion || 'Unknown';
244
+ };
245
+
246
+ export const productPageUrl = (device: Device) =>
247
+ deviceInfo(device).website.productPagePath &&
248
+ `https://www.nordicsemi.com/${deviceInfo(device).website.productPagePath}`;
249
+
250
+ export const buyOnlineUrl = (device: Device) =>
251
+ deviceInfo(device).website.buyOnlineParams &&
252
+ `https://www.nordicsemi.com/About-us/BuyOnline?${
253
+ deviceInfo(device).website.buyOnlineParams
254
+ }`;
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="21.08" height="20" viewBox="0 0 21.08 20"><g transform="translate(-0.06)"><path d="M12.74,12.92v.42a1.92,1.92,0,0,0,0,.24v.6c0,.18-.05.52-.08.78a7.66,7.66,0,0,1-.21.95,2.29,2.29,0,0,1-.08.28.12.12,0,0,1,0,.1,5.16,5.16,0,0,1-1,1.59c-.18.2-.36.39-.55.57a5.19,5.19,0,0,1-1,.71,5.77,5.77,0,0,1-1.22.53A7.52,7.52,0,0,1,7.49,20H6a6.68,6.68,0,0,1-1.72-.25,6.52,6.52,0,0,1-1.21-.45A5.71,5.71,0,0,1,2,18.56,5.38,5.38,0,0,1,.29,15.9a8.46,8.46,0,0,1-.23-1.22c0-.22,0-.43,0-.65a.31.31,0,0,0,0-.1v-.08a.07.07,0,0,1,.06,0H4.44c.1,0,.11,0,.12.1a3.73,3.73,0,0,0,.23.93,1.74,1.74,0,0,0,.54.72,1.58,1.58,0,0,0,.79.29,2.28,2.28,0,0,0,.78,0,1.52,1.52,0,0,0,.6-.32,1.61,1.61,0,0,0,.5-.94,4.46,4.46,0,0,0,.14-.89,7.54,7.54,0,0,0,0-.82A5,5,0,0,0,8,11.49a1.83,1.83,0,0,0-.37-.65A1.34,1.34,0,0,0,7,10.45a2.32,2.32,0,0,0-.83-.06,1.71,1.71,0,0,0-.63.15,1.59,1.59,0,0,0-.62.53,2.69,2.69,0,0,0-.31.61.14.14,0,0,1,0,.06.07.07,0,0,1-.07,0h-4c-.16,0-.16,0-.16-.15V4.85c0-.15,0-.15.16-.15H4.42V7.26h0a4.41,4.41,0,0,1,1.63-.64,5.51,5.51,0,0,1,.71-.09h.48a6.36,6.36,0,0,1,1.89.33,5,5,0,0,1,1.32.71,4.3,4.3,0,0,1,.65.63,5.73,5.73,0,0,1,.57.73,6,6,0,0,1,.71,1.62,8.05,8.05,0,0,1,.18,1,2.425,2.425,0,0,0,.06.65,1.023,1.023,0,0,1,0,.43v.24C12.62,12.95,12.73,12.9,12.74,12.92Z"/><path d="M20.32,1.4a.62.62,0,0,0-.15-.4.34.34,0,0,0-.53.07,2.92,2.92,0,0,0-.19.49,5.29,5.29,0,0,1-.24.8,1.19,1.19,0,0,1-.46.6,1.28,1.28,0,0,1-.39.13H18A1.34,1.34,0,0,1,17.55,3a1.32,1.32,0,0,1-.44-.44A1.67,1.67,0,0,1,16.92,2a1.78,1.78,0,0,1,0-.46A2.09,2.09,0,0,1,17,.84a2.46,2.46,0,0,1,.36-.68h.07l.61.42V.64a2.26,2.26,0,0,0-.34.74.91.91,0,0,0,0,.61.34.34,0,0,0,.43.2A.35.35,0,0,0,18.37,2a2.07,2.07,0,0,0,.18-.47,5.16,5.16,0,0,1,.24-.79,1.47,1.47,0,0,1,.36-.53A1,1,0,0,1,19.69,0H20a1.77,1.77,0,0,0,.2,0,1.13,1.13,0,0,1,.8.75,1.92,1.92,0,0,1,.14.62v.29a2.89,2.89,0,0,1-.29,1.07,2.44,2.44,0,0,1-.35.51h-.06L20.14,3l-.21-.18a.27.27,0,0,0-.08-.07V2.69a2.19,2.19,0,0,0,.23-.33,1.88,1.88,0,0,0,.22-.57,1.23,1.23,0,0,0,0-.19A.67.67,0,0,0,20.32,1.4Z"/><path d="M13.84,2.29a1.84,1.84,0,0,1,.25-.23,1.9,1.9,0,0,1,.21-.19l.35-.3L15,1.29l.42-.37.29-.26L16,.36l.21-.19L16.38,0h0V4.82h0l-.25.21-.7.62-.49.44-.61.54-.48.42h0V2.33S13.83,2.3,13.84,2.29Z"/><path d="M19.4,3.87V5.73a.059.059,0,0,0,.06.06h.79V3.64a.17.17,0,0,1,0-.07h.79a.13.13,0,0,1,0,.06v3H17c-.07,0-.07,0-.07-.07v-3h.81V5.78h.78V3.87h.8Z"/><path d="M17.78,15.24h.79V13.38c0-.05,0-.06.06-.06h.69v1.86c0,.05,0,.07.06.07h.79V13.09c0-.06,0-.06.07-.06H21c.05,0,.06,0,.06.06v3.05H16.95V13.07h.76a.053.053,0,0,1,.05.06v2.06A.471.471,0,0,0,17.78,15.24Z"/><path d="M20.64,17a1.45,1.45,0,0,1,.46,1,2.56,2.56,0,0,1-.52,1.81.81.81,0,0,1-.12.14l-.14-.11-.44-.37c-.06-.05-.06-.05,0-.11a1.93,1.93,0,0,0,.4-.78,1.34,1.34,0,0,0,0-.66.31.31,0,0,0-.06-.13.33.33,0,0,0-.58,0,1.82,1.82,0,0,0-.17.44c-.08.25-.13.49-.21.73a2.18,2.18,0,0,1-.22.43.93.93,0,0,1-.72.4,1.36,1.36,0,0,1-.45,0,1.13,1.13,0,0,1-.49-.24,1.07,1.07,0,0,1-.32-.44,1.94,1.94,0,0,1-.12-.39,2.44,2.44,0,0,1,0-.54,1.91,1.91,0,0,1,.1-.52,2.62,2.62,0,0,1,.19-.46,2.23,2.23,0,0,1,.2-.3h.05l.63.44h0s-.16.26-.23.4a1.6,1.6,0,0,0-.14.53.67.67,0,0,0,0,.2.46.46,0,0,0,.2.39.36.36,0,0,0,.37,0,.73.73,0,0,0,.19-.37c.06-.17.1-.35.15-.53a2.85,2.85,0,0,1,.25-.63,1,1,0,0,1,.47-.47,1.06,1.06,0,0,1,.36-.09,1.34,1.34,0,0,1,.74.13Z"/><path d="M11.44.07V.83a.059.059,0,0,1-.06.06H9.29S9.23.9,9.23,1v.76h1.9v.75c0,.06,0,.06-.06.06H9.23V4.15h-.9v-4h3.11Z"/><path d="M2.34,2.24A.48.48,0,0,0,2,1.81a.53.53,0,0,0-.73.4,1.79,1.79,0,0,0,0,.23V4.1a.059.059,0,0,1-.06.06H.37V1h.88v.42A1.08,1.08,0,0,1,2,1h.28a1.09,1.09,0,0,1,.5.16.92.92,0,0,1,.41.59,1.65,1.65,0,0,1,.05.44V4.18H2.4V2.34C2.4,2.28,2.33,2.27,2.34,2.24Z"/><path d="M21.05,8.39H17c-.05,0-.07,0-.07-.06V7.5h4.06c.06,0,.06,0,.06.06v.79a.07.07,0,0,1,0,.04Z"/><path d="M17,16.13h4c.05,0,.07,0,.07-.06v-3c0-.05,0-.06-.05-.06h-.69a.059.059,0,0,0-.06.06v.03c0-.07,0-.07.08-.07H21c.07,0,.07,0,.07.07v3c0,.07,0,.08-.07.08H17a.08.08,0,0,1,0-.05Z"/><path d="M11.44.07h-3c-.07,0-.07,0-.07.07v4c0,.07,0,.07.07.07h.83a.08.08,0,0,1-.07,0H8.39c-.07,0-.07,0-.07-.08V.14c0-.07,0-.08.07-.08h3Z"/><path d="M17,12.43h4c.05,0,.07,0,.07-.06v-.78s0-.06-.05-.06H21c.07,0,.07,0,.07.07v.76c0,.07,0,.08-.07.08H17a.08.08,0,0,1,0-.01Z"/><path d="M21.05,8.39V7.54H21c.07,0,.07,0,.07.07v.77S21.07,8.37,21.05,8.39Z"/><path d="M13.84,2.29V7.08h0V2.36A.17.17,0,0,1,13.84,2.29Z"/><path d="M16.38,4.87V0a.17.17,0,0,1,0,.07v4.7A.13.13,0,0,1,16.38,4.87Z"/><path d="M21.05,6.68V6.64A.028.028,0,0,1,21.05,6.68Z"/><path d="M17.78,5.78V3.72c0-.06,0-.07-.07-.07H17a.08.08,0,0,1,.07,0h.67c.07,0,.07,0,.07.08C17.79,4.37,17.78,5.08,17.78,5.78Z"/><path d="M17.78,15.24V13.18c0-.06,0-.07-.07-.07h0c.07,0,.07,0,.07.07C17.79,13.83,17.78,14.54,17.78,15.24Z"/><path d="M9.23,2.58h1.88c.05,0,.07,0,.07-.07V1.76a.13.13,0,0,1,0,.06v.69c0,.07,0,.07-.08.07Z"/><path d="M2.35,2.34V4.1c0,.05,0,.06.07.06h.83a.1.1,0,0,1-.07,0H2.42c-.07,0-.07,0-.07-.08Z"/><path d="M4.47,4.73H4.4S4.45,4.71,4.47,4.73Z"/><path d="M20.26,3.57v.07a.2.2,0,0,1,0-.07Z"/><path d="M4.1,4.15H5V4.08c0,.09,0,.09-.08.09H4.17a.1.1,0,0,1-.07-.02Z"/><path d="M6.12.07H4.1a.1.1,0,0,1,.07,0h2Z"/><path d="M6.58,4.15h0Z"/><path d="M21.05,10V9.94a.13.13,0,0,1,0,.06Z"/><path d="M19.4,3.87Z"/><path d="M5,2.86Z"/><path d="M1.28,1.45h0V1.11a1.61,1.61,0,0,0,0,.34Z"/><path d="M12.73,13.65v-.31a1.61,1.61,0,0,1,0,.31Z"/><path d="M12.74,12.92v-.29A1.38,1.38,0,0,1,12.74,12.92Z"/><path d="M21.13,1.66V1.37a1.41,1.41,0,0,1,0,.29Z"/><path d="M18.43,9h-.2a.45.45,0,0,1,.2,0Z"/><path d="M17.72,18.46a.67.67,0,0,1,0-.2Z"/><path d="M2.28,1h-.2a.67.67,0,0,1,.2,0Z"/><path d="M20.32,1.4a.45.45,0,0,1,0,.2Z"/><path d="M6.73,20Z"/><path d="M7.63,4.14l-.72-1-.27-.4a1.47,1.47,0,0,0,.48-.29,1.3,1.3,0,0,0,.4-.93A1.42,1.42,0,0,0,7.46,1,1.14,1.14,0,0,0,6.8.23,2,2,0,0,0,6.12.07h-2V4.15H5V2.86h.7c.09.14.18.28.28.42l.59.88h1S7.63,4.17,7.63,4.14Zm-1-2.63A.55.55,0,0,1,6.09,2H5V.88H6a.76.76,0,0,1,.21,0,.54.54,0,0,1,.39.63Z"/><path d="M21.06,11.59a.053.053,0,0,0-.06-.05H19.81v-.7l.72-.49.54-.35V9l-.21.14-.58.4-.65.44a1.59,1.59,0,0,0-.15-.29A1.2,1.2,0,0,0,19,9.17,1.43,1.43,0,0,0,18.43,9h-.46a1.16,1.16,0,0,0-.68.42,1.54,1.54,0,0,0-.24.48,2.26,2.26,0,0,0-.08.51v1.95h4.05Zm-2.16-.05H17.79v-.86a.86.86,0,0,1,0-.28.53.53,0,0,1,.44-.4.56.56,0,0,1,.63.36.81.81,0,0,1,.06.31v.87Z"/></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="27.23" height="20.04" viewBox="0 0 27.23 20.04"><path d="M0,13.84H4.41c.13,0,.13,0,.15.13A2.92,2.92,0,0,0,5,15.18a1.52,1.52,0,0,0,1.25.72,2.48,2.48,0,0,0,.72-.05,1.62,1.62,0,0,0,1.1-1,3.93,3.93,0,0,0,.2-1,9.93,9.93,0,0,0,0-1.09A4.07,4.07,0,0,0,8,11.34a1.5,1.5,0,0,0-1.35-1,2.25,2.25,0,0,0-1.06.15,1.68,1.68,0,0,0-.91,1l-.09.24s0,.06-.08.06h-4c-.13,0-.13,0-.13-.13V4.8c0-.12,0-.12.12-.12H4.35c.13,0,.13,0,.13.12V7.25c0,.01,0,0,.07,0a4.59,4.59,0,0,1,1.33-.56,5.43,5.43,0,0,1,1.39-.15,6,6,0,0,1,2.5.56,4.72,4.72,0,0,1,1.55,1.22,5.94,5.94,0,0,1,1.33,3c.05.37.08.74.1,1.11s0,.85,0,1.28a9,9,0,0,1-.27,2.12,5.3,5.3,0,0,1-1.11,2.06A5.71,5.71,0,0,1,9.7,19.27a6.76,6.76,0,0,1-2.09.69,8,8,0,0,1-.84.08H6.06a1.82,1.82,0,0,0-.33,0,5.77,5.77,0,0,1-1.6-.27A7.31,7.31,0,0,1,3,19.28a5.4,5.4,0,0,1-1.53-1.15A5.16,5.16,0,0,1,.43,16.35a7.12,7.12,0,0,1-.37-1.58c0-.24,0-.49,0-.73h0Z"/><path d="M27.23,6.21a1.66,1.66,0,0,0,0,.32A5,5,0,0,1,26.32,9a12.1,12.1,0,0,1-1.1,1.36c-.64.68-1.27,1.36-1.91,2l-1.59,1.71L19.89,16c-.09.1-.19.2-.28.31a.18.18,0,0,1-.13.06H14.05c-.06,0,0,0,0-.06l2-2.15,1.75-1.91L19.92,10l1.89-2.06a3.49,3.49,0,0,0,.72-1.06,2.47,2.47,0,0,0,.06-1.61A1.5,1.5,0,0,0,21.44,4.2a2.21,2.21,0,0,0-1.32.09,1.53,1.53,0,0,0-1,1.21,2.42,2.42,0,0,0,0,.47c0,.06,0,.08-.08.08H14.65c-.06,0-.09,0-.08-.08a5.86,5.86,0,0,1,1.31-3.79A5.63,5.63,0,0,1,17.57.79,6.71,6.71,0,0,1,20,.06h1.36a1.31,1.31,0,0,0,.28,0,5.42,5.42,0,0,1,1.45.23,6.23,6.23,0,0,1,1.2.47,5.68,5.68,0,0,1,1.22.85A5.21,5.21,0,0,1,26.7,3.23a5.64,5.64,0,0,1,.48,1.61,4.71,4.71,0,0,1,0,.75h0Z"/><path d="M8.36,0h3.11a.11.11,0,0,1-.08,0H8.52C8.46.05,8.4.07,8.36,0Z"/><path d="M6.1,0h0A.09.09,0,0,1,6,.05H4.12V0Z"/><path d="M8.36,0h3.11V.78a.059.059,0,0,1-.06.06H9.34c-.07,0-.09,0-.09.09v.7c0,.07,0,.09.09.09h1.78c.07,0,.09,0,.09.09v.65c0,.06,0,.09-.09.09H9.36c-.08,0-.11,0-.11.09V4.06c0,.06,0,.08-.08.08H8.43c-.06,0-.08,0-.08-.07v-4Z"/><path d="M1.27,1.4l.22-.23A1.1,1.1,0,0,1,3,1.28,1.16,1.16,0,0,1,3.25,2c0,.68,0,1.35,0,2a.058.058,0,0,1-.07.06H2.44c-.07,0-.08,0-.08-.09V2.31a.88.88,0,0,0,0-.17.49.49,0,0,0-.52-.41.5.5,0,0,0-.53.42,1.23,1.23,0,0,0,0,.2V4c0,.07,0,.09-.09.09H.45c-.06,0-.08,0-.08-.06V1h.84c.05,0,.06,0,.06.06Z"/><path d="M16.17,18.32V17c0-.06,0-.08.08-.08h1.94c.06,0,.08,0,.08.07a2.8,2.8,0,0,0,0,.41c0,.06,0,.07-.08.07h-1.3c-.13,0-.11,0-.11.11V18c0,.06,0,.07.07.07H18c.06,0,.09,0,.09.09a2.54,2.54,0,0,0,0,.39c0,.06,0,.08-.08.07H16.87c-.07,0-.1,0-.09.09v.41c0,.06,0,.08.08.08h1.33c.08,0,.1,0,.1.09a2.539,2.539,0,0,0,0,.39c0,.05,0,.07-.07.07h-2c-.06,0-.06,0-.06-.08Z"/><path d="M22.61,18.31V17.02c0-.07,0-.09.09-.09h1.93c.06,0,.08,0,.08.07a2.67,2.67,0,0,0,0,.4c0,.06,0,.08-.08.08H23.31c-.1,0-.1,0-.1.1v.36c0,.12,0,.1.09.1h1.14c.07,0,.09,0,.08.09v.39c0,.06,0,.08-.07.07H23.3c-.07,0-.09,0-.09.09a2.8,2.8,0,0,1,0,.41c0,.06,0,.08.08.08h1.34c.07,0,.09,0,.09.09a2.539,2.539,0,0,0,0,.39c0,.05,0,.07-.06.07h-2c-.06,0-.05,0-.05-.08Z"/><path d="M26.11,19.76A1.78,1.78,0,0,1,25,19.35c-.05,0-.05-.05,0-.09l.28-.34c0-.05.06,0,.1,0a1.2,1.2,0,0,0,.7.3.56.56,0,0,0,.34-.06.22.22,0,0,0,0-.4,1.49,1.49,0,0,0-.4-.15,4.13,4.13,0,0,1-.5-.15.71.71,0,0,1-.48-.67.79.79,0,0,1,.44-.78,1.33,1.33,0,0,1,1-.07,1.48,1.48,0,0,1,.57.26v.1l-.26.36c0,.05,0,0-.08,0a1.41,1.41,0,0,0-.58-.24.57.57,0,0,0-.29,0,.21.21,0,0,0-.16.19.22.22,0,0,0,.13.24,1.7,1.7,0,0,0,.4.13,2.6,2.6,0,0,1,.47.16.72.72,0,0,1,.49.71.79.79,0,0,1-.49.76,1.32,1.32,0,0,1-.57.15Z"/><path d="M14.76,19.75a1.82,1.82,0,0,1-1.12-.4.073.073,0,0,1,0-.11,3.869,3.869,0,0,0,.28-.33c.09-.11.05,0,.09,0a1.2,1.2,0,0,0,.85.3.52.52,0,0,0,.22-.07.22.22,0,0,0,0-.38,1.37,1.37,0,0,0-.44-.16,3.68,3.68,0,0,1-.47-.15.68.68,0,0,1-.46-.64.76.76,0,0,1,.42-.78,1.34,1.34,0,0,1,1-.06,1.72,1.72,0,0,1,.49.24v.1l-.24.35c0,.05-.05.05-.1,0a1.13,1.13,0,0,0-.64-.23.41.41,0,0,0-.24,0,.227.227,0,0,0-.02.4,1.82,1.82,0,0,0,.39.14,4.32,4.32,0,0,1,.51.16.73.73,0,0,1,.46.73.76.76,0,0,1-.48.73,1.41,1.41,0,0,1-.5.16Z"/><path d="M22.05,18.32v1.3c0,.07,0,.09-.08.09a3.69,3.69,0,0,0-.47,0c-.05,0-.06,0-.06-.07V17a.059.059,0,0,1,.06-.06H22c.07,0,.08,0,.08.08Z"/><path d="M7.6,4,6.7,2.71V2.62a1.24,1.24,0,0,0,.61-.5,1.41,1.41,0,0,0,.18-1A1.16,1.16,0,0,0,6.86.19,2,2,0,0,0,6.1,0h-2V4c0,.06,0,.07.07.06h.74C5,4.12,5,4.1,5,4V2.85c0-.06,0-.08.08-.08a5.23,5.23,0,0,0,.56,0,.12.12,0,0,1,.11.07l.79,1.18a.1.1,0,0,0,.12.06h1A.26.26,0,0,0,7.6,4ZM6.5,1.79a.6.6,0,0,1-.43.2h-1C5,2,5,2,5,1.94V.89c0-.17,0-.06.06-.06H6.17a.58.58,0,0,1,.33.96Z"/><path d="M21.06,19.66l-.61-.89v-.08A.84.84,0,0,0,21,18a.86.86,0,0,0-.57-.95,1,1,0,0,0-.34-.06H18.74a.059.059,0,0,0-.06.06V19.7c0,.05,0,.07.07.07a3.69,3.69,0,0,1,.47,0c.07,0,.08,0,.08-.09v-.74c0-.05,0-.06.07-.06h.33a.13.13,0,0,1,.12.06l.51.77s0,.06.08.06h.67S21.06,19.67,21.06,19.66Zm-1-1.39h-.68v-.79a5.46,5.46,0,0,1,.7,0,.35.35,0,0,1,.34.4.37.37,0,0,1-.42.39Z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="28.03" height="20.02" viewBox="0 0 28.03 20.02"><g transform="translate(-129.98 -269.5)"><path d="M129.99,283.39c1.37,0,2.74.01,4.12.01h.37c.06.27.11.52.18.77a1.769,1.769,0,0,0,3.45-.14,6.3,6.3,0,0,0-.04-2.8,1.574,1.574,0,0,0-1.54-1.34,1.72,1.72,0,0,0-1.87,1.07.456.456,0,0,1-.52.33c-1.14-.02-2.28-.01-3.42,0-.24,0-.34-.05-.34-.32q.015-3.165,0-6.33c0-.26.08-.33.33-.33,1.15.01,2.3.01,3.44,0,.23,0,.31.06.3.3-.02.74-.01,1.47-.01,2.2a11.134,11.134,0,0,1,1.39-.51,5.26,5.26,0,0,1,6.66,4.16,10.409,10.409,0,0,1-.01,4.58,5.561,5.561,0,0,1-4.33,4.29c-.28.07-.56.12-.84.19h-1.9c-.27-.06-.54-.11-.81-.18a5.433,5.433,0,0,1-4.45-4.69c-.07-.39-.11-.79-.17-1.18A.283.283,0,0,0,129.99,283.39Z"/><path d="M149.55,289.5c-.37-.08-.75-.14-1.11-.24A5.493,5.493,0,0,1,144.5,286a6.811,6.811,0,0,1-.47-2.57,2.18,2.18,0,0,1,.24-.01h3.98c.17,0,.27.02.29.23a1.911,1.911,0,0,0,2.35,1.81,1.787,1.787,0,0,0,1.66-1.8,2.914,2.914,0,0,0-.19-1.37,2.068,2.068,0,0,0-2.02-1.4q-1.08-.015-2.16,0c-.27.01-.34-.1-.34-.34v-2.8a.461.461,0,0,1,.11-.27q1.83-2.16,3.66-4.31a.373.373,0,0,1,.26-.12c1.8-.01,3.6-.01,5.48-.01-1.43,1.69-2.82,3.33-4.22,4.99.35.16.66.3.97.45a4.724,4.724,0,0,1,2.62,3.04,6.048,6.048,0,0,1-.88,5.73,5.8,5.8,0,0,1-3.71,2.11c-.21.04-.42.08-.63.13C150.85,289.5,150.2,289.5,149.55,289.5Z"/><path d="M158.01,271.91a1.444,1.444,0,0,1-2.23.09c.12-.14.23-.28.3-.37.34.1.62.21.91.27.16.03.38-.02.38-.22,0-.11-.16-.25-.29-.31a6.173,6.173,0,0,0-.61-.19.755.755,0,0,1-.6-.83.858.858,0,0,1,.71-.79l.24-.06h.11a1.788,1.788,0,0,1,1,.42c-.11.15-.21.3-.28.39a6.555,6.555,0,0,0-.87-.19.317.317,0,0,0-.25.2c-.02.08.09.21.18.26a1.485,1.485,0,0,0,.42.14,1.443,1.443,0,0,1,.86.51C158.01,271.46,158.01,271.68,158.01,271.91Z"/><path d="M137.58,273.67c-.35,0-.66.01-.96-.01-.07,0-.14-.08-.19-.14a4.3,4.3,0,0,1-.48-.72c-.2-.44-.53-.49-.97-.39v1.23h-.89v-4.07c.8.03,1.61.02,2.4.11a1.127,1.127,0,0,1,.95,1.01,1.313,1.313,0,0,1-.59,1.4c-.07.04-.14.08-.24.13C136.92,272.71,137.24,273.17,137.58,273.67Zm-2.59-2.1c.35,0,.67.01.99,0a.564.564,0,0,0,.56-.55.524.524,0,0,0-.54-.56c-.33-.02-.67,0-1.02,0C134.99,270.81,134.99,271.17,134.99,271.57Z"/><path d="M138.25,269.62h3.07v.83h-2.15v.83h1.89v.81h-1.89v1.55h-.92C138.25,272.31,138.25,270.98,138.25,269.62Z"/><path d="M133.2,273.66h-.86v-1.49a2.966,2.966,0,0,0-.03-.42.47.47,0,0,0-.53-.43.476.476,0,0,0-.5.47c-.03.54-.02,1.08-.03,1.62,0,.07-.01.15-.01.24h-.85v-3.07h.84c.02.1.03.2.06.35a1.2,1.2,0,0,1,.91-.43.932.932,0,0,1,1,.89C133.23,272.14,133.2,272.89,133.2,273.66Z"/><path d="M151.19,271.43c.21.32.42.63.63.94a.684.684,0,0,1-.95-.31,1.534,1.534,0,0,1-.14-.21.49.49,0,0,0-.68-.3v.85h-.62v-2.78c.55,0,1.1-.04,1.64.01a.783.783,0,0,1,.69.74.919.919,0,0,1-.4.95C151.31,271.36,151.25,271.39,151.19,271.43Zm-1.13-1.26v.78c.24,0,.47.02.69,0a.39.39,0,0,0-.01-.78C150.53,270.16,150.3,270.17,150.06,270.17Z"/><path d="M146.87,269.6h2.1v.56h-1.48v.57h1.3v.55h-1.3v.57h1.48v.56h-2.11C146.87,271.47,146.87,270.54,146.87,269.6Z"/><path d="M155.53,269.61v.55h-1.49v.56h1.3v.57h-1.3v.57h1.49v.55h-2.11v-2.79C154.12,269.61,154.81,269.61,155.53,269.61Z"/><path d="M146.37,269.91c-.11.16-.21.3-.32.46a2.015,2.015,0,0,0-.25-.13,2.943,2.943,0,0,0-.59-.12.355.355,0,0,0-.24.21c-.02.06.09.2.17.24a5.991,5.991,0,0,0,.64.21c.5.16.71.44.68.86a.873.873,0,0,1-.83.81,1.757,1.757,0,0,1-1.42-.46c.11-.14.23-.28.34-.42.18.09.35.19.52.27a.817.817,0,0,0,.27.06c.19.01.41.02.45-.22s-.18-.27-.34-.33c-.18-.06-.38-.1-.56-.17a.744.744,0,0,1-.59-.78.8.8,0,0,1,.65-.8A1.562,1.562,0,0,1,146.37,269.91Z"/><path d="M152.83,269.61v2.8h-.6v-2.8Z"/></g></svg>
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+
3
+ <svg xmlns="http://www.w3.org/2000/svg" width="31" viewBox="30 0 362.1 277" xml:space="preserve">
4
+ <g>
5
+ <g>
6
+ <g>
7
+ <path d="M322.8,245.5l-6.8-5.6c3.2-3.9,5.3-8,5.3-13c0-3.9-1.6-6.3-4.1-6.3h-0.1c-2.4,0-3.7,1.5-5.5,8.7
8
+ c-2.2,8.7-4.6,14.4-13.3,14.4h-0.1c-7.9,0-13.1-6.3-13.1-15.2c0-6.3,2-11.7,5.5-16.1l7.2,5c-2.7,3.8-4.3,7.6-4.3,11.3
9
+ c0,3.7,1.7,5.6,3.8,5.6h0.1c2.9,0,3.8-1.9,5.7-9.4c2.3-8.8,5.5-13.8,13-13.8h0.1c8.6,0,13.4,6.6,13.4,15.9
10
+ C329.7,233.6,327.4,240.3,322.8,245.5z"/>
11
+ <path d="M285.7,205v-32.7h8.5v23.2h8.8V175h8.5v20.5h9.1v-23.6h8.5v33H285.7z"/>
12
+ <path d="M285.7,165.6v-19.8c0-5.5,1.6-9.8,4.4-12.7c2.4-2.4,5.8-3.7,9.9-3.7h0.1c7,0,11.4,3.8,13.5,9.3l15.5-10.6v11.2l-13.9,9.3
13
+ v7.5h13.9v9.5H285.7z M306.8,146.4c0-4.7-2.5-7.3-6.1-7.3h-0.1c-4.1,0-6.2,2.9-6.2,7.5v9.5h12.5V146.4z"/>
14
+ <path d="M285.7,122.5V113h43.4v9.5H285.7z"/>
15
+ <path d="M285.7,104.3V71.5h8.5v23.2h8.8V74.3h8.5v20.5h9.1V71.2h8.5v33.1H285.7z"/>
16
+ <path d="M322.9,67.9l-6.8-5.7c3.3-3.9,5.3-8.1,5.3-13.1c0-3.9-1.6-6.3-4.1-6.3h-0.1c-2.4,0-3.7,1.5-5.6,8.8
17
+ c-2.3,8.8-4.7,14.5-13.4,14.5h-0.1c-7.9,0-13.2-6.4-13.2-15.3c0-6.4,2-11.8,5.6-16.3l7.3,5c-2.7,3.9-4.3,7.7-4.3,11.4
18
+ c0,3.7,1.7,5.6,3.8,5.6h0.1c2.9,0,3.8-1.9,5.8-9.4c2.3-8.9,5.5-13.9,13.1-13.9h0.1c8.7,0,13.6,6.6,13.6,16.1
19
+ C329.9,55.9,327.6,62.6,322.9,67.9z"/>
20
+ </g>
21
+ <path d="M278,196.8c-3.7,6.4-10.2,9.4-17.3,9.4c-11.1,0-20.6-7.3-20.6-23.1v-89c0-15.8,9.5-23.4,20.6-23.4
22
+ c7.1,0,13.6,3.2,17.3,9.7V25.7c-5.6-1.2-11.4-1.8-17.3-1.8c-37.4,0-72.5,23.7-72.5,70.3v88.6c0,46.5,35.1,70.3,72.5,70.3
23
+ c5.9,0,11.7-0.6,17.3-1.8V196.8z"/>
24
+ </g>
25
+ <g>
26
+ <g>
27
+ <path d="M36.2,36.9h10.3V42c2.4-3,5.4-5.8,10.6-5.8c7.8,0,12.3,5.1,12.3,13.4v23.4H59V52.9c0-4.9-2.3-7.4-6.2-7.4
28
+ c-3.9,0-6.4,2.5-6.4,7.4v20.2H36.2V36.9z"/>
29
+ <path d="M79.3,25.8h21.6c6,0,10.7,1.7,13.8,4.8c2.6,2.6,4,6.3,4,10.8v0.1c0,7.6-4.1,12.4-10.1,14.6l11.5,16.9H108L97.8,57.9h-8.2
30
+ v15.1H79.3V25.8z M100.2,48.8c5.1,0,8-2.7,8-6.7V42c0-4.5-3.1-6.8-8.2-6.8H89.7v13.6H100.2z"/>
31
+ <path d="M128.1,25.8h36v9.4h-25.6v10.1H161v9.4h-22.5v18.3h-10.4V25.8z"/>
32
+ </g>
33
+ <polygon points="104.8,79.8 37,251.6 93.9,251.6 161.7,79.8 "/>
34
+ </g>
35
+ </g>
36
+ </svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="21.53" height="20" viewBox="0 0 21.53 20"><g transform="translate(-0.05)"><path d="M21.56,2a1.414,1.414,0,0,1-.13.43,2.34,2.34,0,0,1-.48.8l-.64-.54.05-.06a2,2,0,0,0,.42-.87,1.18,1.18,0,0,0,0-.59.56.56,0,0,0-.1-.17.33.33,0,0,0-.54,0,1.52,1.52,0,0,0-.2.47c-.07.25-.14.51-.23.77a2.33,2.33,0,0,1-.19.39.92.92,0,0,1-.6.39A1.26,1.26,0,0,1,18.13,3a1.19,1.19,0,0,1-.66-.73,2.07,2.07,0,0,1-.08-.89,2.41,2.41,0,0,1,.47-1.2V.13l.68.47V.66a2.42,2.42,0,0,0-.34.77,1,1,0,0,0,0,.51.34.34,0,0,0,.24.25.32.32,0,0,0,.4-.19A1.91,1.91,0,0,0,19,1.56c.07-.23.13-.46.2-.69a1.41,1.41,0,0,1,.3-.51A.94.94,0,0,1,20.14,0h.35a1.15,1.15,0,0,1,1,.79,1.87,1.87,0,0,1,.07.22Z"/><path d="M21.56,18.62a3,3,0,0,1-.07.32,2.51,2.51,0,0,1-.51.95v.05l-.63-.52c.1-.16.21-.31.3-.47a1.45,1.45,0,0,0,.16-1,.47.47,0,0,0-.09-.22.33.33,0,0,0-.55,0,2,2,0,0,0-.19.45c-.07.27-.15.54-.24.8a1.24,1.24,0,0,1-.35.55,1,1,0,0,1-.63.22,1.15,1.15,0,0,1-.82-.23,1.22,1.22,0,0,1-.46-.8,2.3,2.3,0,0,1,.46-1.89h0l.66.46c-.09.17-.18.32-.26.49a1.29,1.29,0,0,0-.12.7.63.63,0,0,0,.07.22.32.32,0,0,0,.57,0,1.43,1.43,0,0,0,.14-.34c.08-.26.15-.52.23-.77a1.74,1.74,0,0,1,.25-.49.93.93,0,0,1,.68-.4,1.27,1.27,0,0,1,.74.11,1.15,1.15,0,0,1,.61.72,2,2,0,0,1,.07.26Z"/><path d="M3.23,20l3.25-7.68H6.42a2.22,2.22,0,0,1-.76.18H5.33a4.55,4.55,0,0,1-1.72-.3,5.24,5.24,0,0,1-1.78-1.11A5.71,5.71,0,0,1,.23,8.31a5.56,5.56,0,0,1-.18-1q0-.285,0-.57V6.3a8.26,8.26,0,0,1,.08-1,2.832,2.832,0,0,1,.08-.4c.02-.13,0-.06.07-.06H4.35c.07,0,.07,0,.08.07V6.63a2.93,2.93,0,0,0,.08.83A1.6,1.6,0,0,0,5.78,8.71a2.36,2.36,0,0,0,.65.07,2.16,2.16,0,0,0,1.05-.3,1.62,1.62,0,0,0,.74-1.09,2.94,2.94,0,0,0,0-.51V4.94c0-.07,0-.07.06-.07h4.19c.05,0,.07,0,.08.07a6.983,6.983,0,0,0,.14.88V6.84a2.659,2.659,0,0,1-.07.71,9.88,9.88,0,0,1-.51,2c-.24.66-.49,1.31-.75,2s-.62,1.54-.93,2.31c-.61,1.53-1.23,3-1.84,4.57-.21.51-.42,1-.62,1.54A.09.09,0,0,1,8,20Z"/><path d="M14.32,7.09V2.36a.15.15,0,0,1,0-.12L16.82.08h0V4.8a.11.11,0,0,1,0,.09L15.17,6.34,14.39,7Z"/><path d="M7.3,2.7l1,1.45H7.23c-.27-.41-.54-.82-.82-1.23a.08.08,0,0,0-.08,0H5.66v1.3h-.9V.06H6.63a1.77,1.77,0,0,1,.9.2,1.15,1.15,0,0,1,.62.92,1.47,1.47,0,0,1-.09.8,1.24,1.24,0,0,1-.69.68ZM5.66,2.05H6.72a.56.56,0,0,0,.53-.5A.52.52,0,0,0,6.92,1,.57.57,0,0,0,6.67.89h-1Z"/><path d="M20.23,11.54h1.3v.9H17.45V10.51a1.73,1.73,0,0,1,.19-.81,1.13,1.13,0,0,1,.76-.62,1.6,1.6,0,0,1,.84,0,1.23,1.23,0,0,1,.81.76v.05l1.45-1v1a.08.08,0,0,1,0,.08l-1.22.81a.11.11,0,0,0,0,.09v.65Zm-.8,0V10.53a.55.55,0,0,0-.64-.57.49.49,0,0,0-.43.28,1,1,0,0,0-.09.41v.89Z"/><path d="M17.46,13.06h.79v2.18h.83V13.32h.8v1.92h.85V13h.8v3.1H17.46Z"/><path d="M17.46,3.6h.79V5.78h.82V3.86h.81V5.78h.85V3.57h.8v3.1H17.46Z"/><path d="M9.88,4.15H9V.07h3.11V.88H9.88v.87h1.95v.82H9.88Z"/><path d="M1.92,4.15H1V1h.88v.43h0A1.08,1.08,0,0,1,2.6,1a1.06,1.06,0,0,1,1,.27,1,1,0,0,1,.28.63V4.16H3V2.39a1.07,1.07,0,0,0,0-.25.49.49,0,0,0-.54-.37.51.51,0,0,0-.5.5,1.21,1.21,0,0,0,0,.19V4.15Z"/><path d="M21.53,8.39H17.46v-.9h4.07Z"/></g></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path d="M0 0h24v24H0z" fill="none"/><path d="M12 2.02c-5.51 0-9.98 4.47-9.98 9.98s4.47 9.98 9.98 9.98 9.98-4.47 9.98-9.98S17.51 2.02 12 2.02zM11.48 20v-6.26H8L13 4v6.26h3.35L11.48 20z"/></svg>
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ height="23" viewBox="0 0 316 316" style="enable-background:new 0 0 316 316;" xml:space="preserve">
5
+ <style type="text/css">
6
+ path{fill-rule: evenodd}
7
+ </style>
8
+ <g>
9
+ <path d="M54.3,38.1h206.8c9.2,0,16.8,7.6,16.8,16.8v206.8c0,9.2-7.6,16.8-16.8,16.8H54.3c-9.2,0-16.8-7.6-16.8-16.8
10
+ V54.5C37.9,45.3,45.1,38.1,54.3,38.1z M143.7,182.5c0-8.8,1-15.7,3-20.8c2-5.1,5.2-9.5,9.7-13.2c4.5-3.7,7.9-7.2,10.2-10.3c2.3-3.1,3.5-6.5,3.5-10.3
11
+ c0-9.1-3.9-13.7-11.8-13.7c-3.6,0-6.5,1.3-8.8,4c-2.2,2.7-3.4,6.2-3.5,10.8h-30.6c0.1-12.1,3.9-21.4,11.4-28.2
12
+ c7.5-6.7,18-10.1,31.5-10.1c13.4,0,23.9,3.1,31.2,9.3c7.4,6.2,11.1,15,11.1,26.5c0,5-1,9.6-3,13.7c-2,4.1-5.2,8.3-9.6,12.6
13
+ l-10.4,9.7c-3,2.8-5,5.7-6.1,8.7c-1.1,3-1.8,6.8-1.9,11.3H143.7z M140,210c0-4.5,1.6-8.1,4.8-11c3.2-2.9,7.2-4.3,12.1-4.3
14
+ c4.8,0,8.8,1.4,12.1,4.3c3.2,2.9,4.8,6.5,4.8,11c0,4.5-1.6,8.1-4.8,11c-3.2,2.9-7.3,4.3-12.1,4.3c-4.8,0-8.8-1.4-12.1-4.3
15
+ C141.6,218.1,140,214.5,140,210z"/>
16
+ <path d="M239.7,27h1V7.7c0-4-3.2-7.6-7.6-7.6h-24.8c-4.4,0-7.6,3.2-7.6,7.6V27H239.7z"/>
17
+ <path d="M115.1,27V7.7c0-4-3.2-7.6-7.6-7.6H82.7c-4,0-7.6,3.2-7.6,7.6V27H115.1z"/>
18
+ <path d="M178.7,27V7.7c0-4-3.2-7.6-7.6-7.6h-24.8c-4,0-7.6,3.2-7.6,7.6V27H178.7z"/>
19
+ <path d="M78.6,289.6c-1.2,0-2.4,0-3.5-0.1v18.8c0,4,3.2,7.6,7.6,7.6h24.8c4,0,7.6-3.2,7.6-7.6v-18.7H78.6z"/>
20
+ <path d="M138.7,289.6v18.7c0,4,3.2,7.6,7.6,7.6h24.8c4,0,7.6-3.2,7.6-7.6v-18.7H138.7z"/>
21
+ <path d="M308.3,200.9H289v40h19.3c4,0,7.6-3.2,7.6-7.6v-24.8C315.9,204.1,312.7,200.9,308.3,200.9z"/>
22
+ <path d="M200.7,289.6v18.7c0,4,3.2,7.6,7.6,7.6h24.8c4,0,7.6-3.2,7.6-7.6v-18.7H200.7z"/>
23
+ <path d="M308.3,136.9H289v40h19.3c4,0,7.6-3.2,7.6-7.6v-24.8C315.9,140.5,312.7,136.9,308.3,136.9z"/>
24
+ <path d="M308.3,75.3H289v2.4c0,0.4,0,0.7,0,1.1v36.5h19.3c4,0,7.6-3.2,7.6-7.6V82.9C315.9,78.9,312.7,75.3,308.3,75.3z
25
+ "/>
26
+ <path d="M26.3,200.9H7.7c-4,0-7.6,3.2-7.6,7.6v24.8c0,4,3.2,7.6,7.6,7.6h18.6V200.9z"/>
27
+ <path d="M26.3,136.9H7.7c-4,0-7.6,3.2-7.6,7.6v24.8c0,4,3.2,7.6,7.6,7.6h18.6V136.9z"/>
28
+ <path d="M26.3,75.3H7.7c-4,0-7.6,3.2-7.6,7.6v24.8c0,4,3.2,7.6,7.6,7.6h18.6V75.3z"/>
29
+ </g>
30
+ </svg>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Generator: Adobe Illustrator 24.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
3
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
+ height="23" viewBox="0 0 316 316" style="enable-background:new 0 0 316 316;" xml:space="preserve">
5
+ <style type="text/css">
6
+ path{fill-rule: evenodd}
7
+ </style>
8
+ <g>
9
+ <path d="M54.3,38.1h206.8c9.2,0,16.8,7.6,16.8,16.8v206.8c0,9.2-7.6,16.8-16.8,16.8H54.3c-9.2,0-16.8-7.6-16.8-16.8
10
+ V54.5C37.9,45.3,45.1,38.1,54.3,38.1z M213,223.8h-31.6l-46.7-81.9v81.9H103V92.2h31.7l46.6,81.9V92.2H213V223.8z"/>
11
+ <path d="M239.7,27h1V7.7c0-4-3.2-7.6-7.6-7.6h-24.8c-4.4,0-7.6,3.2-7.6,7.6V27H239.7z"/>
12
+ <path d="M115.1,27V7.7c0-4-3.2-7.6-7.6-7.6H82.7c-4,0-7.6,3.2-7.6,7.6V27H115.1z"/>
13
+ <path d="M178.7,27V7.7c0-4-3.2-7.6-7.6-7.6h-24.8c-4,0-7.6,3.2-7.6,7.6V27H178.7z"/>
14
+ <path d="M78.6,289.6c-1.2,0-2.4,0-3.5-0.1v18.8c0,4,3.2,7.6,7.6,7.6h24.8c4,0,7.6-3.2,7.6-7.6v-18.7H78.6z"/>
15
+ <path d="M138.7,289.6v18.7c0,4,3.2,7.6,7.6,7.6h24.8c4,0,7.6-3.2,7.6-7.6v-18.7H138.7z"/>
16
+ <path d="M308.3,200.9H289v40h19.3c4,0,7.6-3.2,7.6-7.6v-24.8C315.9,204.1,312.7,200.9,308.3,200.9z"/>
17
+ <path d="M200.7,289.6v18.7c0,4,3.2,7.6,7.6,7.6h24.8c4,0,7.6-3.2,7.6-7.6v-18.7H200.7z"/>
18
+ <path d="M308.3,136.9H289v40h19.3c4,0,7.6-3.2,7.6-7.6v-24.8C315.9,140.5,312.7,136.9,308.3,136.9z"/>
19
+ <path d="M308.3,75.3H289v2.4c0,0.4,0,0.7,0,1.1v36.5h19.3c4,0,7.6-3.2,7.6-7.6V82.9C315.9,78.9,312.7,75.3,308.3,75.3z
20
+ "/>
21
+ <path d="M26.3,200.9H7.7c-4,0-7.6,3.2-7.6,7.6v24.8c0,4,3.2,7.6,7.6,7.6h18.6V200.9z"/>
22
+ <path d="M26.3,136.9H7.7c-4,0-7.6,3.2-7.6,7.6v24.8c0,4,3.2,7.6,7.6,7.6h18.6V136.9z"/>
23
+ <path d="M26.3,75.3H7.7c-4,0-7.6,3.2-7.6,7.6v24.8c0,4,3.2,7.6,7.6,7.6h18.6V75.3z"/>
24
+ </g>
25
+ </svg>
@@ -0,0 +1,97 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { getModuleVersion } from './deviceLibWrapper';
8
+
9
+ const exampleModuleVersions = [
10
+ {
11
+ name: 'nrfdl',
12
+ plugins: [
13
+ {
14
+ dependencies: [
15
+ {
16
+ dependencies: [
17
+ {
18
+ expectedVersion: {
19
+ version: 'JLink_V7.66a',
20
+ versionFormat: 'string' as const,
21
+ },
22
+ name: 'JlinkARM',
23
+ version: 'JLink_V7.66a',
24
+ versionFormat: 'string' as const,
25
+ },
26
+ ],
27
+ name: 'jprog',
28
+ version: {
29
+ major: 10,
30
+ metadata: '0',
31
+ minor: 16,
32
+ patch: 0,
33
+ pre: '0',
34
+ },
35
+ versionFormat: 'semantic' as const,
36
+ },
37
+ ],
38
+ name: 'jlink',
39
+ version: {
40
+ major: 0,
41
+ metadata: '0',
42
+ minor: 12,
43
+ patch: 5,
44
+ pre: '0',
45
+ },
46
+ versionFormat: 'semantic' as const,
47
+ },
48
+ ],
49
+ version: {
50
+ major: 0,
51
+ metadata: '0',
52
+ minor: 12,
53
+ patch: 5,
54
+ pre: '0',
55
+ },
56
+ versionFormat: 'semantic' as const,
57
+ },
58
+ {
59
+ name: 'nrfdl-js',
60
+ version: {
61
+ major: 0,
62
+ minor: 4,
63
+ patch: 12,
64
+ metadata: '0',
65
+ pre: '0',
66
+ },
67
+ versionFormat: 'semantic' as const,
68
+ },
69
+ ];
70
+
71
+ describe('finding module versions', () => {
72
+ test('in the top level modules', () => {
73
+ expect(getModuleVersion('nrfdl-js', exampleModuleVersions)).toEqual({
74
+ name: 'nrfdl-js',
75
+ version: {
76
+ major: 0,
77
+ minor: 4,
78
+ patch: 12,
79
+ metadata: '0',
80
+ pre: '0',
81
+ },
82
+ versionFormat: 'semantic' as const,
83
+ });
84
+ });
85
+
86
+ test('in nested dependencies', () => {
87
+ expect(getModuleVersion('JlinkARM', exampleModuleVersions)).toEqual({
88
+ expectedVersion: {
89
+ version: 'JLink_V7.66a',
90
+ versionFormat: 'string' as const,
91
+ },
92
+ name: 'JlinkARM',
93
+ version: 'JLink_V7.66a',
94
+ versionFormat: 'string' as const,
95
+ });
96
+ });
97
+ });
@@ -0,0 +1,132 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { app } from '@electron/remote';
8
+ import {
9
+ createContext,
10
+ Error,
11
+ LogEvent,
12
+ ModuleVersion,
13
+ setLogLevel,
14
+ setLogPattern,
15
+ setTimeoutConfig,
16
+ startLogEvents,
17
+ stopLogEvents,
18
+ } from '@nordicsemiconductor/nrf-device-lib-js';
19
+ import path from 'path';
20
+
21
+ import { isLoggingVerbose } from '../Log/logSlice';
22
+ import logger from '../logging';
23
+ import {
24
+ getIsLoggingVerbose,
25
+ persistIsLoggingVerbose,
26
+ } from '../utils/persistentStore';
27
+
28
+ let deviceLibContext = 0n;
29
+ export const getDeviceLibContext = () => {
30
+ if (deviceLibContext === 0n) initDeviceLib();
31
+
32
+ return deviceLibContext;
33
+ };
34
+
35
+ const initDeviceLib = () => {
36
+ if (process.platform === 'win32') {
37
+ const binariesPath = app.getAppPath().endsWith('app.asar')
38
+ ? `${app.getAppPath()}.unpacked`
39
+ : app.getAppPath();
40
+ deviceLibContext = createContext({
41
+ plugins_dir: path.join(
42
+ binariesPath,
43
+ 'node_modules',
44
+ '@nordicsemiconductor',
45
+ 'nrf-device-lib-js',
46
+ 'Release'
47
+ ),
48
+ });
49
+ } else {
50
+ deviceLibContext = createContext();
51
+ }
52
+
53
+ setTimeoutConfig(getDeviceLibContext(), {
54
+ enumerateMs: 3 * 60 * 1000,
55
+ });
56
+ };
57
+
58
+ export const logNrfdlLogs = (evt: LogEvent) => {
59
+ if (process.env.NODE_ENV === 'production' && !isLoggingVerbose()) return;
60
+ switch (evt.level) {
61
+ case 'NRFDL_LOG_TRACE':
62
+ logger.verbose(evt.message);
63
+ break;
64
+ case 'NRFDL_LOG_DEBUG':
65
+ logger.debug(evt.message);
66
+ break;
67
+ case 'NRFDL_LOG_INFO':
68
+ logger.info(evt.message);
69
+ break;
70
+ case 'NRFDL_LOG_WARNING':
71
+ logger.warn(evt.message);
72
+ break;
73
+ case 'NRFDL_LOG_ERROR':
74
+ logger.error(evt.message);
75
+ break;
76
+ case 'NRFDL_LOG_CRITICAL':
77
+ logger.error(evt.message);
78
+ break;
79
+ }
80
+ };
81
+
82
+ export const forwardLogEventsFromDeviceLib = () => {
83
+ setLogPattern(getDeviceLibContext(), '[%n][%l](%T.%e) %v');
84
+ setVerboseDeviceLibLogging(getIsLoggingVerbose());
85
+
86
+ // Only the first reset after selecting "reset with verbose logging" is relevant
87
+ persistIsLoggingVerbose(false);
88
+
89
+ const taskId = startLogEvents(
90
+ getDeviceLibContext(),
91
+ (err?: Error) => {
92
+ if (err)
93
+ logger.logError(
94
+ 'Error while listening to log messages from nrf-device-lib',
95
+ err
96
+ );
97
+ },
98
+ (evt: LogEvent) => logNrfdlLogs(evt)
99
+ );
100
+ return () => {
101
+ stopLogEvents(taskId);
102
+ };
103
+ };
104
+
105
+ export const setVerboseDeviceLibLogging = (verboseLogging: boolean) =>
106
+ setLogLevel(
107
+ getDeviceLibContext(),
108
+ verboseLogging ? 'NRFDL_LOG_TRACE' : 'NRFDL_LOG_ERROR'
109
+ );
110
+
111
+ type KnownModule = 'nrfdl' | 'nrfdl-js' | 'jprog' | 'JlinkARM';
112
+
113
+ const findTopLevel = (module: KnownModule, versions: ModuleVersion[]) =>
114
+ versions.find(version => version.name === module);
115
+
116
+ const findInDependencies = (module: KnownModule, versions: ModuleVersion[]) => {
117
+ if (versions.length > 0) {
118
+ return getModuleVersion(
119
+ module,
120
+ versions.flatMap(version => [
121
+ ...(version.dependencies ?? []),
122
+ ...((version.plugins as ModuleVersion[]) ?? []),
123
+ ])
124
+ );
125
+ }
126
+ };
127
+
128
+ export const getModuleVersion = (
129
+ module: KnownModule,
130
+ versions: ModuleVersion[] = []
131
+ ): ModuleVersion | undefined =>
132
+ findTopLevel(module, versions) ?? findInDependencies(module, versions);