@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,103 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { TransformableInfo } from 'logform';
8
+ import path from 'path';
9
+ import { SPLAT } from 'triple-beam';
10
+ import { createLogger, format, LogEntry, Logger, transports } from 'winston';
11
+ import Transport from 'winston-transport';
12
+
13
+ import { getAppLogDir } from '../utils/appDirs';
14
+ import { openFile } from '../utils/open';
15
+ import AppTransport from './appTransport';
16
+ import describeError from './describeError';
17
+ import createLogBuffer from './logBuffer';
18
+
19
+ const isDevelopment = process.env.NODE_ENV === 'development';
20
+
21
+ const isConsoleAvailable = (() => {
22
+ try {
23
+ process.stdout.write('');
24
+ } catch (error) {
25
+ return false;
26
+ }
27
+ return true;
28
+ })();
29
+
30
+ const filePrefix = new Date().toISOString().replace(/:/gi, '_');
31
+ const logFilePath = () => path.join(getAppLogDir(), `${filePrefix}-log.txt`);
32
+
33
+ const logBuffer = createLogBuffer();
34
+
35
+ const logTransports: Transport[] = [
36
+ new AppTransport({
37
+ level: 'info',
38
+ onLogEntry: logBuffer.addEntry,
39
+ }),
40
+ ];
41
+
42
+ if (isDevelopment && isConsoleAvailable) {
43
+ logTransports.push(new transports.Console({ level: 'silly' }));
44
+ }
45
+
46
+ interface SharedLogger extends Logger {
47
+ initialise: () => void;
48
+ getAndClearEntries: () => LogEntry[];
49
+ openLogFile: () => void;
50
+ logError: (message: string, error: unknown) => void;
51
+ }
52
+
53
+ /* This function is only needed, because our version of TypeScript still seems
54
+ unable to accept (unique) symbols as index types. As soon as we have
55
+ upgraded to a version that is capable of that, the invocations of this
56
+ function can be replaced by a simple `info[splat]` and this function can
57
+ be removed. */
58
+ const splat = (info: TransformableInfo) => info[SPLAT as unknown as string];
59
+
60
+ const logger = createLogger({
61
+ format: format.combine(
62
+ format(info => ({
63
+ ...info,
64
+ message: splat(info)
65
+ ? `${info.message} ${splat(info).join(' ')}`
66
+ : info.message,
67
+ }))(),
68
+ format.timestamp(),
69
+ format.printf(
70
+ ({ timestamp, level, message }) =>
71
+ `${timestamp} ${level.toUpperCase()} ${message || ''}`
72
+ )
73
+ ),
74
+ transports: logTransports,
75
+ }) as SharedLogger;
76
+
77
+ logger.initialise = () => {
78
+ logger.add(
79
+ new transports.File({
80
+ filename: logFilePath(),
81
+ level: 'debug',
82
+ })
83
+ );
84
+ };
85
+
86
+ logger.getAndClearEntries = () => logBuffer.clear();
87
+
88
+ logger.openLogFile = () => {
89
+ try {
90
+ openFile(logFilePath());
91
+ } catch (error) {
92
+ logger.logError('Unable to open log file', error);
93
+ }
94
+ };
95
+
96
+ logger.logError = (message: string, error: unknown) => {
97
+ const errorMessage =
98
+ error == null ? message : `${message}: ${describeError(error)}`;
99
+
100
+ logger.error(errorMessage);
101
+ };
102
+
103
+ export default logger;
@@ -0,0 +1,41 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import createLogBuffer from './logBuffer';
8
+
9
+ describe('logBuffer', () => {
10
+ let logBuffer: ReturnType<typeof createLogBuffer>;
11
+
12
+ beforeEach(() => {
13
+ logBuffer = createLogBuffer();
14
+ });
15
+
16
+ it('should have no entries when buffer is empty', () => {
17
+ expect(logBuffer.size()).toEqual(0);
18
+ });
19
+
20
+ it('should have 1 entry when 1 entry has been added', () => {
21
+ logBuffer.addEntry({ id: 0, level: '', message: '' });
22
+ expect(logBuffer.size()).toEqual(1);
23
+ });
24
+
25
+ it('should return all added entries when clearing buffer', () => {
26
+ const inputEntries = [
27
+ { id: 0, level: '', message: '' },
28
+ { id: 1, level: '', message: '' },
29
+ ];
30
+ logBuffer.addEntry(inputEntries[0]);
31
+ logBuffer.addEntry(inputEntries[1]);
32
+ const outputEntries = logBuffer.clear();
33
+ expect(outputEntries).toEqual(inputEntries);
34
+ });
35
+
36
+ it('should have no entries when buffer has been cleared', () => {
37
+ logBuffer.addEntry({ id: 0, level: '', message: '' });
38
+ logBuffer.clear();
39
+ expect(logBuffer.size()).toEqual(0);
40
+ });
41
+ });
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { LogEntry } from 'winston';
8
+
9
+ class LogBuffer {
10
+ entries: LogEntry[] = [];
11
+ addEntry = (entry: LogEntry) => {
12
+ this.entries.push(entry);
13
+ };
14
+ clear() {
15
+ return this.entries.splice(0, this.size());
16
+ }
17
+ size() {
18
+ return this.entries.length;
19
+ }
20
+ }
21
+
22
+ const createLogBuffer = () => new LogBuffer();
23
+
24
+ export default createLogBuffer;
@@ -0,0 +1,61 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { getModuleVersions } from '@nordicsemiconductor/nrf-device-lib-js';
8
+
9
+ import { inMain as appDetails } from '../../ipc/appDetails';
10
+ import {
11
+ getDeviceLibContext,
12
+ getModuleVersion,
13
+ } from '../Device/deviceLibWrapper';
14
+ import { getAppDataDir } from '../utils/appDirs';
15
+ import describeVersion from '../utils/describeVersion';
16
+ import logLibVersions from '../utils/logLibVersions';
17
+ import logger from '.';
18
+
19
+ let initialMessagesSent = false;
20
+ export default async () => {
21
+ if (initialMessagesSent) return;
22
+ initialMessagesSent = true;
23
+
24
+ logLibVersions();
25
+ logger.debug(`Application data folder: ${getAppDataDir()}`);
26
+
27
+ const details = await appDetails.getAppDetails();
28
+
29
+ const {
30
+ name,
31
+ currentVersion,
32
+ engineVersion,
33
+ coreVersion,
34
+ corePath,
35
+ installed,
36
+ homeDir,
37
+ tmpDir,
38
+ bundledJlink,
39
+ source,
40
+ } = details;
41
+
42
+ logger.debug(`App ${name} v${currentVersion} (${source})`);
43
+ logger.debug(`App path: ${installed.path}`);
44
+ logger.debug(
45
+ `nRFConnect ${coreVersion}, required by the app is (${engineVersion})`
46
+ );
47
+ logger.debug(`nRFConnect path: ${corePath}`);
48
+ logger.debug(`HomeDir: ${homeDir}`);
49
+ logger.debug(`TmpDir: ${tmpDir}`);
50
+
51
+ if (bundledJlink) {
52
+ const versions = await getModuleVersions(getDeviceLibContext());
53
+ const jlinkVersion = getModuleVersion('JlinkARM', versions);
54
+
55
+ if (!describeVersion(jlinkVersion).includes(bundledJlink)) {
56
+ logger.info(
57
+ `Installed JLink version does not match the provided version (${bundledJlink})`
58
+ );
59
+ }
60
+ }
61
+ };
package/src/store.ts ADDED
@@ -0,0 +1,67 @@
1
+ /*
2
+ * Copyright (c) 2023 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { AnyAction, configureStore, ThunkAction } from '@reduxjs/toolkit';
8
+ import { Reducer } from 'redux';
9
+
10
+ import { reducer as shortcuts } from './About/shortcutSlice';
11
+ import { reducer as appLayout } from './App/appLayout';
12
+ import { reducer as brokenDeviceDialog } from './Device/BrokenDeviceDialog/brokenDeviceDialogSlice';
13
+ import { reducer as deviceAutoSelect } from './Device/deviceAutoSelectSlice';
14
+ import { reducer as deviceSetup } from './Device/deviceSetupSlice';
15
+ import { reducer as device } from './Device/deviceSlice';
16
+ import { reducer as errorDialog } from './ErrorDialog/errorDialogSlice';
17
+ import { reducer as flashMessages } from './FlashMessage/FlashMessageSlice';
18
+ import { reducer as log } from './Log/logSlice';
19
+
20
+ const ifBuiltForDevelopment = <X>(value: X) =>
21
+ process.env.NODE_ENV === 'development' ? value : undefined;
22
+
23
+ const noopReducer: Reducer = (state = null) => state;
24
+
25
+ export const rootReducerSpec = (appReducer: Reducer = noopReducer) => ({
26
+ app: appReducer,
27
+ appLayout,
28
+ device,
29
+ deviceSetup,
30
+ deviceAutoSelect,
31
+ brokenDeviceDialog,
32
+ errorDialog,
33
+ log,
34
+ shortcuts,
35
+ flashMessages,
36
+ });
37
+
38
+ const store = (appReducer?: Reducer) =>
39
+ configureStore({
40
+ reducer: rootReducerSpec(appReducer),
41
+ devTools: {
42
+ maxAge: ifBuiltForDevelopment(100),
43
+ serialize: ifBuiltForDevelopment(true),
44
+ },
45
+ middleware: getDefaultMiddleware =>
46
+ getDefaultMiddleware({
47
+ serializableCheck: false,
48
+ }),
49
+ });
50
+
51
+ // Needed only to infer the types below
52
+ const concreteStore = store();
53
+
54
+ export type AppThunk<AppLayout = RootState, ReturnType = void> = ThunkAction<
55
+ ReturnType,
56
+ AppLayout,
57
+ unknown,
58
+ AnyAction
59
+ >;
60
+ export type RootState = ReturnType<typeof concreteStore.getState>;
61
+ export type AppDispatch = typeof concreteStore.dispatch;
62
+
63
+ export interface NrfConnectState<AppState> extends RootState {
64
+ app: AppState;
65
+ }
66
+
67
+ export default store;
package/src/svg.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ /*
2
+ * Copyright (c) 2021 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ declare module '!!@svgr!*.svg' {
8
+ const svg: React.ElementType;
9
+ export default svg;
10
+ }
11
+
12
+ declare module '*.svg' {
13
+ const url: string;
14
+ export default url;
15
+ }
@@ -0,0 +1,78 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import { getGlobal } from '@electron/remote';
8
+ import path from 'path';
9
+
10
+ import { loadPackageJson } from './packageJson';
11
+
12
+ const getUserDataDir = () => getGlobal('userDataDir');
13
+
14
+ declare global {
15
+ interface Window {
16
+ appDir: string;
17
+ appDataDir: string;
18
+ appLogDir: string;
19
+ }
20
+ }
21
+
22
+ function setAppDirs(
23
+ newAppDir: string,
24
+ newAppDataDir: string,
25
+ newAppLogDir: string
26
+ ) {
27
+ window.appDir = newAppDir;
28
+ window.appDataDir = newAppDataDir;
29
+ window.appLogDir = newAppLogDir;
30
+
31
+ loadPackageJson(getAppFile('package.json'));
32
+ }
33
+
34
+ /**
35
+ * Get the filesystem path of the currently loaded app.
36
+ *
37
+ * @returns {string|undefined} Absolute path of current app.
38
+ */
39
+ function getAppDir() {
40
+ return window.appDir;
41
+ }
42
+
43
+ /**
44
+ * Get the filesystem path of a file for the currently loaded app.
45
+ *
46
+ * @param {string} filename relative name of file in the app directory
47
+ * @returns {string|undefined} Absolute path of file.
48
+ */
49
+ function getAppFile(filename: string) {
50
+ return path.resolve(getAppDir(), filename);
51
+ }
52
+
53
+ /**
54
+ * Get the filesystem path of the data directory of currently loaded app.
55
+ *
56
+ * @returns {string|undefined} Absolute path of data directory of the current app.
57
+ */
58
+ function getAppDataDir() {
59
+ return window.appDataDir;
60
+ }
61
+
62
+ /**
63
+ * Get the filesystem path of the log directory of currently loaded app.
64
+ *
65
+ * @returns {string|undefined} Absolute path of data directory of the current app.
66
+ */
67
+ function getAppLogDir() {
68
+ return window.appLogDir;
69
+ }
70
+
71
+ export {
72
+ setAppDirs,
73
+ getAppDir,
74
+ getAppFile,
75
+ getAppDataDir,
76
+ getAppLogDir,
77
+ getUserDataDir,
78
+ };
@@ -0,0 +1,16 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ const bleChannels = [
8
+ 37, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 38, 11, 12, 13, 14, 15, 16, 17, 18,
9
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 39,
10
+ ];
11
+
12
+ export default Object.assign(bleChannels, {
13
+ min: Math.min(...bleChannels),
14
+ max: Math.max(...bleChannels),
15
+ isAdvertisement: (channel: number) => channel >= 37,
16
+ });
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import classNames from './classNames';
8
+
9
+ describe('classNames', () => {
10
+ it('combines multiple class names with a space', () => {
11
+ expect(classNames('button', 'important')).toBe('button important');
12
+ });
13
+
14
+ it('filters out non strings', () => {
15
+ expect(
16
+ classNames(
17
+ 'button',
18
+ true,
19
+ false,
20
+ null,
21
+ undefined,
22
+ [],
23
+ {},
24
+ () => {},
25
+ 'important'
26
+ )
27
+ ).toBe('button important');
28
+ });
29
+ });
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ const isString = (o: unknown) => typeof o === 'string';
8
+
9
+ /**
10
+ * Combine a list of class names into a space separated strings.
11
+ * Filters out all values that are not strings. The idea of this function is
12
+ * to use it with conditionals and potentially unset values like this:
13
+ *
14
+ * classNames(
15
+ * 'fixed-class-name',
16
+ * isVisible && 'visible',
17
+ * isEnabled ? 'enabled' : 'disabled',
18
+ * potentiallyUndefined,
19
+ * )
20
+ *
21
+ * @param {...unknown} className - An arbitrary list of class names or other objects
22
+ * @returns {string} the combined class name
23
+ */
24
+ export default (...className: unknown[]) =>
25
+ className.filter(isString).join(' ');
@@ -0,0 +1,46 @@
1
+ /*
2
+ * Copyright (c) 2021 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ @use "sass:color";
8
+ @import "../variables";
9
+
10
+ // Remember: When changing any entries here, they also must be
11
+ // changed at the corresponding place in colors.ts
12
+ :export {
13
+ nordicBlue: $nordic-blue;
14
+ blueSlate: $blue-slate;
15
+
16
+ white: $white;
17
+ black: $black;
18
+
19
+ primary: $primary;
20
+ primaryDarkened: $primary-darkened;
21
+ secondary: $secondary;
22
+ accent: $accent;
23
+ gray50: $gray-50;
24
+ gray100: $gray-100;
25
+ gray200: $gray-200;
26
+ gray300: $gray-300;
27
+ gray400: $gray-400;
28
+ gray500: $gray-500;
29
+ gray600: $gray-600;
30
+ gray700: $gray-700;
31
+ gray800: $gray-800;
32
+ gray900: $gray-900;
33
+
34
+ red: $red;
35
+ indigo: $indigo;
36
+ amber: $amber;
37
+ purple: $purple;
38
+ green: $green;
39
+ deepPurple: $deep-purple;
40
+ orange: $orange;
41
+ lime: $lime;
42
+ pink: $pink;
43
+
44
+ blueSlateLighter: color.scale($blue-slate, $lightness: 50%, $saturation: -50%);
45
+ greenLighter: color.scale($green, $lightness: 50%, $saturation: -50%);
46
+ }
@@ -0,0 +1,173 @@
1
+ /*
2
+ * Copyright (c) 2021 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ // Keep this file in sync with colors.scss
8
+ export const colors = {
9
+ blueSlate: '#0033a0',
10
+ blueSlateLighter: '#7c98d3',
11
+ white: 'white',
12
+ black: 'black',
13
+ primary: '#00a9ce',
14
+ primaryDarkened: '#0098b9',
15
+ secondary: 'white',
16
+ accent: '#0033a0',
17
+
18
+ nordicBlue: '#00A9CE',
19
+ nordicBlue50: '#E0F5F9',
20
+ nordicBlue100: '#B3E5F0',
21
+ nordicBlue200: '#80D4E7',
22
+ nordicBlue300: '#4DC3DD',
23
+ nordicBlue400: '#26B6D5',
24
+ nordicBlue500: '#00A9CE',
25
+ nordicBlue600: '#00A2C9',
26
+ nordicBlue700: '#0098C2',
27
+ nordicBlue800: '#008FBC',
28
+ nordicBlue900: '#007EB0',
29
+
30
+ gray: '#607d8b',
31
+ gray50: '#eceff1',
32
+ gray100: '#cfd8dc',
33
+ gray200: '#b0bec5',
34
+ gray300: '#90a4ae',
35
+ gray400: '#78909c',
36
+ gray500: '#607d8b',
37
+ gray600: '#546e7a',
38
+ gray700: '#455a64',
39
+ gray800: '#37474f',
40
+ gray900: '#263238',
41
+
42
+ red: '#F44336',
43
+ red50: '#FFEBEE',
44
+ red100: '#FFCDD2',
45
+ red200: '#EF9A9A',
46
+ red300: '#E57373',
47
+ red400: '#EF5350',
48
+ red500: '#F44336',
49
+ red600: '#E53935',
50
+ red700: '#C62828',
51
+ red800: '#C62828',
52
+ red900: '#B71C1C',
53
+
54
+ indigo: '#3F51B5',
55
+ indigo50: '#E8EAF6',
56
+ indigo100: '#C5CAE9',
57
+ indigo200: '#9FA8DA',
58
+ indigo300: '#7986CB',
59
+ indigo400: '#5C6BC0',
60
+ indigo500: '#3F51B5',
61
+ indigo600: '#3949AB',
62
+ indigo700: '#303F9F',
63
+ indigo800: '#283593',
64
+ indigo900: '#1A237E',
65
+
66
+ amber: '#FFC107',
67
+ amber50: '#FFF8E1',
68
+ amber100: '#FFECB3',
69
+ amber200: '#FFE082',
70
+ amber300: '#FFD54F',
71
+ amber400: '#FFCA28',
72
+ amber500: '#FFC107',
73
+ amber600: '#FFB300',
74
+ amber700: '#FFA000',
75
+ amber800: '#FF8F00',
76
+ amber900: '#FF6F00',
77
+
78
+ purple: '#9C27B0',
79
+ purple50: '#F3E5F5',
80
+ purple100: '#E1BEE7',
81
+ purple200: '#CE93D8',
82
+ purple300: '#BA68C8',
83
+ purple400: '#AB47BC',
84
+ purple500: '#9C27B0',
85
+ purple600: '#8E24AA',
86
+ purple700: '#7B1FA2',
87
+ purple800: '#6A1B9A',
88
+ purple900: '#4A148C',
89
+
90
+ green: '#4CAF50',
91
+ green50: '#E8F5E9',
92
+ green100: '#C8E6C9',
93
+ green200: '#A5D6A7',
94
+ green300: '#81C784',
95
+ green400: '#66BB6A',
96
+ green500: '#4CAF50',
97
+ green600: '#43A047',
98
+ green700: '#388E3C',
99
+ green800: '#2E7D32',
100
+ green900: '#1B5E20',
101
+
102
+ deepPurple: '#673AB7',
103
+ deepPurple50: '#EDE7F6',
104
+ deepPurple100: '#D1C4E9',
105
+ deepPurple200: '#B39DDB',
106
+ deepPurple300: '#9575CD',
107
+ deepPurple400: '#7E57C2',
108
+ deepPurple500: '#673AB7',
109
+ deepPurple600: '#5E35B1',
110
+ deepPurple700: '#512DA8',
111
+ deepPurple800: '#4527A0',
112
+ deepPurple900: '#311B92',
113
+
114
+ orange: '#FF9800',
115
+ orange50: '#FFF3E0',
116
+ orange100: '#FFE0B2',
117
+ orange200: '#FFCC80',
118
+ orange300: '#FFB74D',
119
+ orange400: '#FFA726',
120
+ orange500: '#FF9800',
121
+ orange600: '#FB8C00',
122
+ orange700: '#F57C00',
123
+ orange800: '#EF6C00',
124
+ orange900: '#E65100',
125
+
126
+ lime: '#CDDC39',
127
+ lime50: '#F9FBE7',
128
+ lime100: '#F0F4C3',
129
+ lime200: '#E6EE9C',
130
+ lime300: '#DCE775',
131
+ lime400: '#D4E157',
132
+ lime500: '#CDDC39',
133
+ lime600: '#C0CA33',
134
+ lime700: '#AFB42B',
135
+ lime800: '#9E9D24',
136
+ lime900: '#827717',
137
+
138
+ pink: '#E91E63',
139
+ pink50: '#FCE4EC',
140
+ pink100: '#F8BBD0',
141
+ pink200: '#F48FB1',
142
+ pink300: '#F06292',
143
+ pink400: '#EC407A',
144
+ pink500: '#E91E63',
145
+ pink600: '#D81B60',
146
+ pink700: '#C2185B',
147
+ pink800: '#AD1457',
148
+ pink900: '#880E4F',
149
+
150
+ lightGreen: '#8BC34A',
151
+ lightGreen50: '#F1F8E9',
152
+ lightGreen100: '#DCEDC8',
153
+ lightGreen200: '#C5E1A5',
154
+ lightGreen300: '#AED581',
155
+ lightGreen400: '#9CCC65',
156
+ lightGreen500: '#8BC34A',
157
+ lightGreen600: '#7CB342',
158
+ lightGreen700: '#689F38',
159
+ lightGreen800: '#558B2F',
160
+ lightGreen900: '#33691E',
161
+
162
+ lightBlue: '#03A9F4',
163
+ lightBlue50: '#E1F5FE',
164
+ lightBlue100: '#B3E5FC',
165
+ lightBlue200: '#81D4FA',
166
+ lightBlue300: '#4FC3F7',
167
+ lightBlue400: '#29B6F6',
168
+ lightBlue500: '#03A9F4',
169
+ lightBlue600: '#039BE5',
170
+ lightBlue700: '#0288D1',
171
+ lightBlue800: '#0277BD',
172
+ lightBlue900: '#01579B',
173
+ };