@nordicsemiconductor/pc-nrfconnect-shared 60.0.0-pre1

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 (367) hide show
  1. package/.github/ISSUE_TEMPLATE/custom.md +10 -0
  2. package/.husky/pre-push +3 -0
  3. package/.renovaterc.json +10 -0
  4. package/Changelog.md +2973 -0
  5. package/LICENSE +35 -0
  6. package/README.md +11 -0
  7. package/azure-pipelines.yml +34 -0
  8. package/config/eslintrc.js +190 -0
  9. package/config/jest.config.js +41 -0
  10. package/config/prettier.config.js +13 -0
  11. package/config/tsconfig.json +15 -0
  12. package/fw/bootloader/graviton_bootloader_v1.0.1-[nRF5_SDK_15.0.1-1.alpha_f76d012].zip +0 -0
  13. package/jest.config.js +7 -0
  14. package/main/index.ts +32 -0
  15. package/mocks/deviceLibMock.ts +21 -0
  16. package/mocks/electronMock.ts +15 -0
  17. package/mocks/electronStoreMock.ts +19 -0
  18. package/mocks/emptyMock.ts +7 -0
  19. package/mocks/fileMock.ts +13 -0
  20. package/mocks/gaMock.ts +9 -0
  21. package/mocks/mockTests.test.ts +15 -0
  22. package/mocks/packageJsonMock.ts +10 -0
  23. package/mocks/remoteMock.ts +17 -0
  24. package/package.json +132 -0
  25. package/scripts/check-app-properties.ts +197 -0
  26. package/scripts/check-for-typescript.ts +41 -0
  27. package/scripts/esbuild-bootstrap.js +15 -0
  28. package/scripts/esbuild-renderer.js +131 -0
  29. package/scripts/esbuild.js +57 -0
  30. package/scripts/installHusky.ts +17 -0
  31. package/scripts/nordic-publish.ts +485 -0
  32. package/scripts/nrfconnect-license.ts +277 -0
  33. package/scripts/prepare-shared-release.ts +122 -0
  34. package/scripts/release-shared.test.ts +132 -0
  35. package/scripts/release-shared.ts +207 -0
  36. package/src/About/About.tsx +25 -0
  37. package/src/About/AboutButton.tsx +28 -0
  38. package/src/About/ApplicationCard.tsx +83 -0
  39. package/src/About/DeviceCard.tsx +74 -0
  40. package/src/About/DocumentationCard.tsx +18 -0
  41. package/src/About/DocumentationSection.tsx +24 -0
  42. package/src/About/Section.tsx +21 -0
  43. package/src/About/ShortcutButton.tsx +41 -0
  44. package/src/About/SupportCard.tsx +97 -0
  45. package/src/About/about.scss +40 -0
  46. package/src/About/documentationSlice.ts +41 -0
  47. package/src/About/section.scss +15 -0
  48. package/src/About/shortcutSlice.ts +52 -0
  49. package/src/Alert/Alert.module.scss +29 -0
  50. package/src/Alert/Alert.tsx +37 -0
  51. package/src/App/App.test.tsx +47 -0
  52. package/src/App/App.tsx +227 -0
  53. package/src/App/ConnectedToStore.tsx +19 -0
  54. package/src/App/VisibilityBar.tsx +103 -0
  55. package/src/App/app.scss +83 -0
  56. package/src/App/appLayout.ts +95 -0
  57. package/src/App/shared.scss +49 -0
  58. package/src/App/visibility-bar.scss +55 -0
  59. package/src/Button/Button.tsx +66 -0
  60. package/src/Button/button.module.scss +154 -0
  61. package/src/Card/Card.tsx +26 -0
  62. package/src/Card/card.module.scss +28 -0
  63. package/src/Device/BrokenDeviceDialog/BrokenDeviceDialog.tsx +58 -0
  64. package/src/Device/BrokenDeviceDialog/broken-device-dialog.scss +18 -0
  65. package/src/Device/BrokenDeviceDialog/brokenDeviceDialogSlice.tsx +48 -0
  66. package/src/Device/DeviceSelector/BasicDeviceInfo.tsx +115 -0
  67. package/src/Device/DeviceSelector/DeviceIcon.tsx +27 -0
  68. package/src/Device/DeviceSelector/DeviceList/AnimatedList.tsx +62 -0
  69. package/src/Device/DeviceSelector/DeviceList/BrokenDevice.tsx +34 -0
  70. package/src/Device/DeviceSelector/DeviceList/Device.tsx +84 -0
  71. package/src/Device/DeviceSelector/DeviceList/DeviceList.tsx +113 -0
  72. package/src/Device/DeviceSelector/DeviceList/EditDeviceButtons.tsx +28 -0
  73. package/src/Device/DeviceSelector/DeviceList/MoreDeviceInfo.tsx +65 -0
  74. package/src/Device/DeviceSelector/DeviceList/RenameDevice.tsx +22 -0
  75. package/src/Device/DeviceSelector/DeviceList/broken-device.scss +32 -0
  76. package/src/Device/DeviceSelector/DeviceList/device-list.scss +64 -0
  77. package/src/Device/DeviceSelector/DeviceList/device.scss +28 -0
  78. package/src/Device/DeviceSelector/DeviceList/edit-device-buttons.scss +31 -0
  79. package/src/Device/DeviceSelector/DeviceList/more-device-info.scss +33 -0
  80. package/src/Device/DeviceSelector/DeviceList/rename-device.scss +13 -0
  81. package/src/Device/DeviceSelector/DeviceSelector.test.tsx +342 -0
  82. package/src/Device/DeviceSelector/DeviceSelector.tsx +173 -0
  83. package/src/Device/DeviceSelector/Favorite.tsx +49 -0
  84. package/src/Device/DeviceSelector/SelectDevice.tsx +36 -0
  85. package/src/Device/DeviceSelector/SelectedDevice.tsx +65 -0
  86. package/src/Device/DeviceSelector/arrow-down.svg +1 -0
  87. package/src/Device/DeviceSelector/basic-device-info.scss +62 -0
  88. package/src/Device/DeviceSelector/device-icon.scss +27 -0
  89. package/src/Device/DeviceSelector/favorite.scss +17 -0
  90. package/src/Device/DeviceSelector/select-device.scss +38 -0
  91. package/src/Device/DeviceSelector/selected-device.scss +57 -0
  92. package/src/Device/DeviceSetup/DeviceSetupView.tsx +102 -0
  93. package/src/Device/deviceAutoSelectSlice.ts +144 -0
  94. package/src/Device/deviceInfo/deviceInfo.ts +254 -0
  95. package/src/Device/deviceInfo/nRF51-Series-logo.svg +1 -0
  96. package/src/Device/deviceInfo/nRF52-Series-logo.svg +1 -0
  97. package/src/Device/deviceInfo/nRF53-Series-logo.svg +1 -0
  98. package/src/Device/deviceInfo/nRF70-Series_no-background_RGB.svg +36 -0
  99. package/src/Device/deviceInfo/nRF91-Series-logo.svg +1 -0
  100. package/src/Device/deviceInfo/ppk-logo.svg +1 -0
  101. package/src/Device/deviceInfo/unknown-logo.svg +30 -0
  102. package/src/Device/deviceInfo/unknown-nordic-logo.svg +25 -0
  103. package/src/Device/deviceLibWrapper.test.ts +97 -0
  104. package/src/Device/deviceLibWrapper.ts +133 -0
  105. package/src/Device/deviceLister.test.ts +89 -0
  106. package/src/Device/deviceLister.ts +396 -0
  107. package/src/Device/deviceSetup.ts +264 -0
  108. package/src/Device/deviceSetupSlice.ts +94 -0
  109. package/src/Device/deviceSlice.ts +248 -0
  110. package/src/Device/dfu-cc.ts +162 -0
  111. package/src/Device/initPacket.ts +402 -0
  112. package/src/Device/jprogOperations.ts +206 -0
  113. package/src/Device/sdfuOperations.ts +601 -0
  114. package/src/Dialog/Dialog.test.tsx +134 -0
  115. package/src/Dialog/Dialog.tsx +236 -0
  116. package/src/Dialog/dialog.scss +60 -0
  117. package/src/Dropdown/Dropdown.module.scss +83 -0
  118. package/src/Dropdown/Dropdown.test.tsx +62 -0
  119. package/src/Dropdown/Dropdown.tsx +106 -0
  120. package/src/ErrorBoundary/ErrorBoundary.test.tsx +105 -0
  121. package/src/ErrorBoundary/ErrorBoundary.tsx +186 -0
  122. package/src/ErrorBoundary/bug.svg +1 -0
  123. package/src/ErrorBoundary/error-boundary.scss +102 -0
  124. package/src/ErrorDialog/ErrorDialog.test.tsx +70 -0
  125. package/src/ErrorDialog/ErrorDialog.tsx +94 -0
  126. package/src/ErrorDialog/error.scss +14 -0
  127. package/src/ErrorDialog/errorDialogSlice.test.ts +64 -0
  128. package/src/ErrorDialog/errorDialogSlice.ts +80 -0
  129. package/src/FactoryReset/FactoryResetButton.test.tsx +46 -0
  130. package/src/FactoryReset/FactoryResetButton.tsx +81 -0
  131. package/src/InlineInput/InlineInput.tsx +170 -0
  132. package/src/InlineInput/NumberInlineInput.tsx +107 -0
  133. package/src/InlineInput/inline-input.scss +38 -0
  134. package/src/InlineInput/number-inline-input.scss +15 -0
  135. package/src/Log/LogEntry.tsx +62 -0
  136. package/src/Log/LogViewer.tsx +54 -0
  137. package/src/Log/log-entry.scss +30 -0
  138. package/src/Log/log-viewer.scss +24 -0
  139. package/src/Log/logSlice.ts +73 -0
  140. package/src/Log/syncLogToStore.ts +36 -0
  141. package/src/Logo/Logo.tsx +48 -0
  142. package/src/Logo/logo.scss +11 -0
  143. package/src/Logo/nordic-logo-blue-icon-only.png +0 -0
  144. package/src/Logo/nordic-logo-gray-icon-only.png +0 -0
  145. package/src/Logo/nordic-logo-white-icon-only.png +0 -0
  146. package/src/Main/Main.tsx +13 -0
  147. package/src/Main/main.scss +13 -0
  148. package/src/MasonryLayout/MasonryLayout.tsx +234 -0
  149. package/src/MasonryLayout/masonryLayout.module.scss +46 -0
  150. package/src/NavBar/NavBar.tsx +22 -0
  151. package/src/NavBar/NavMenu.test.tsx +41 -0
  152. package/src/NavBar/NavMenu.tsx +53 -0
  153. package/src/NavBar/NavMenuItem.tsx +41 -0
  154. package/src/NavBar/nav-bar.scss +26 -0
  155. package/src/NavBar/nav-menu-item.scss +34 -0
  156. package/src/OpenApp/openApp.ts +18 -0
  157. package/src/Panes/FeedbackPane.tsx +149 -0
  158. package/src/PseudoButton/PseudoButton.tsx +56 -0
  159. package/src/PseudoButton/pseudo-button.scss +11 -0
  160. package/src/SerialPort/ConflictingSettingsDialog.tsx +242 -0
  161. package/src/SerialPort/SerialPort.test.ts +54 -0
  162. package/src/SerialPort/SerialPort.ts +202 -0
  163. package/src/Shortcuts/Shortcut-item.scss +33 -0
  164. package/src/Shortcuts/Shortcut-modal.scss +20 -0
  165. package/src/Shortcuts/ShortcutItem.tsx +48 -0
  166. package/src/Shortcuts/ShortcutModal.tsx +67 -0
  167. package/src/SidePanel/Group.tsx +106 -0
  168. package/src/SidePanel/SidePanel.tsx +19 -0
  169. package/src/SidePanel/group.scss +42 -0
  170. package/src/SidePanel/sidepanel.scss +20 -0
  171. package/src/Slider/Bar.tsx +24 -0
  172. package/src/Slider/Factor.test.ts +48 -0
  173. package/src/Slider/Handle.tsx +121 -0
  174. package/src/Slider/Slider.test.tsx +25 -0
  175. package/src/Slider/Slider.tsx +91 -0
  176. package/src/Slider/Ticks.tsx +54 -0
  177. package/src/Slider/__snapshots__/Slider.test.tsx.snap +50 -0
  178. package/src/Slider/bar.scss +24 -0
  179. package/src/Slider/factor.ts +24 -0
  180. package/src/Slider/handle.scss +32 -0
  181. package/src/Slider/percentage.ts +67 -0
  182. package/src/Slider/range.ts +92 -0
  183. package/src/Slider/slider.scss +14 -0
  184. package/src/Slider/ticks.scss +28 -0
  185. package/src/Slider/variables.scss +16 -0
  186. package/src/StartStopButton/StartStopButton.tsx +60 -0
  187. package/src/StartStopButton/play-circle.svg +1 -0
  188. package/src/StartStopButton/start-stop-button.scss +47 -0
  189. package/src/StartStopButton/stop-circle.svg +1 -0
  190. package/src/StateSelector/StateSelector.tsx +64 -0
  191. package/src/StateSelector/state-selector.scss +38 -0
  192. package/src/Stepper/Stepper.tsx +139 -0
  193. package/src/Stepper/stepper.scss +127 -0
  194. package/src/Toggle/Toggle.tsx +120 -0
  195. package/src/Toggle/toggle.scss +109 -0
  196. package/src/bootstrap.scss +14 -0
  197. package/src/index.ts +146 -0
  198. package/src/logging/appTransport.test.ts +78 -0
  199. package/src/logging/appTransport.ts +41 -0
  200. package/src/logging/describeError.test.ts +38 -0
  201. package/src/logging/describeError.ts +56 -0
  202. package/src/logging/index.ts +103 -0
  203. package/src/logging/logBuffer.test.ts +41 -0
  204. package/src/logging/logBuffer.ts +24 -0
  205. package/src/logging/sendInitialLogMessages.ts +64 -0
  206. package/src/store.ts +60 -0
  207. package/src/svg.d.ts +15 -0
  208. package/src/utils/AppTypes.ts +60 -0
  209. package/src/utils/appDirs.ts +78 -0
  210. package/src/utils/bleChannels.ts +16 -0
  211. package/src/utils/classNames.test.ts +29 -0
  212. package/src/utils/classNames.ts +25 -0
  213. package/src/utils/colors.scss +46 -0
  214. package/src/utils/colors.ts +38 -0
  215. package/src/utils/describeVersion.ts +21 -0
  216. package/src/utils/environment.ts +6 -0
  217. package/src/utils/logLibVersions.ts +103 -0
  218. package/src/utils/open.ts +46 -0
  219. package/src/utils/packageJson.ts +60 -0
  220. package/src/utils/persistentStore.ts +144 -0
  221. package/src/utils/systemReport.ts +160 -0
  222. package/src/utils/truncateMiddle.test.ts +21 -0
  223. package/src/utils/truncateMiddle.ts +20 -0
  224. package/src/utils/usageData.ts +189 -0
  225. package/src/utils/useHotKey.ts +62 -0
  226. package/src/utils/useStopwatch.test.tsx +311 -0
  227. package/src/utils/useStopwatch.ts +140 -0
  228. package/src/variables.scss +820 -0
  229. package/styles.scss +88 -0
  230. package/test/dispatchTo.ts +23 -0
  231. package/test/index.ts +7 -0
  232. package/test/jestResolver.js +28 -0
  233. package/test/setupTests.ts +27 -0
  234. package/test/testUtil.ts +20 -0
  235. package/test/testrenderer.tsx +39 -0
  236. package/tsconfig.json +9 -0
  237. package/typings/externals.d.ts +31 -0
  238. package/typings/generated/main/index.d.ts +25 -0
  239. package/typings/generated/src/About/About.d.ts +4 -0
  240. package/typings/generated/src/About/AboutButton.d.ts +8 -0
  241. package/typings/generated/src/About/ApplicationCard.d.ts +3 -0
  242. package/typings/generated/src/About/DeviceCard.d.ts +3 -0
  243. package/typings/generated/src/About/DocumentationCard.d.ts +3 -0
  244. package/typings/generated/src/About/DocumentationSection.d.ts +9 -0
  245. package/typings/generated/src/About/Section.d.ts +8 -0
  246. package/typings/generated/src/About/ShortcutButton.d.ts +6 -0
  247. package/typings/generated/src/About/SupportCard.d.ts +3 -0
  248. package/typings/generated/src/About/documentationSlice.d.ts +12 -0
  249. package/typings/generated/src/About/shortcutSlice.d.ts +11 -0
  250. package/typings/generated/src/Alert/Alert.d.ts +10 -0
  251. package/typings/generated/src/App/App.d.ts +27 -0
  252. package/typings/generated/src/App/App.test.d.ts +1 -0
  253. package/typings/generated/src/App/ConnectedToStore.d.ts +7 -0
  254. package/typings/generated/src/App/VisibilityBar.d.ts +6 -0
  255. package/typings/generated/src/App/appLayout.d.ts +17 -0
  256. package/typings/generated/src/Button/Button.d.ts +13 -0
  257. package/typings/generated/src/Card/Card.d.ts +7 -0
  258. package/typings/generated/src/Device/BrokenDeviceDialog/BrokenDeviceDialog.d.ts +4 -0
  259. package/typings/generated/src/Device/BrokenDeviceDialog/brokenDeviceDialogSlice.d.ts +12 -0
  260. package/typings/generated/src/Device/DeviceSelector/BasicDeviceInfo.d.ts +11 -0
  261. package/typings/generated/src/Device/DeviceSelector/DeviceIcon.d.ts +7 -0
  262. package/typings/generated/src/Device/DeviceSelector/DeviceList/AnimatedList.d.ts +10 -0
  263. package/typings/generated/src/Device/DeviceSelector/DeviceList/BrokenDevice.d.ts +7 -0
  264. package/typings/generated/src/Device/DeviceSelector/DeviceList/Device.d.ts +10 -0
  265. package/typings/generated/src/Device/DeviceSelector/DeviceList/DeviceList.d.ts +10 -0
  266. package/typings/generated/src/Device/DeviceSelector/DeviceList/EditDeviceButtons.d.ts +9 -0
  267. package/typings/generated/src/Device/DeviceSelector/DeviceList/MoreDeviceInfo.d.ts +7 -0
  268. package/typings/generated/src/Device/DeviceSelector/DeviceList/RenameDevice.d.ts +6 -0
  269. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.d.ts +20 -0
  270. package/typings/generated/src/Device/DeviceSelector/DeviceSelector.test.d.ts +1 -0
  271. package/typings/generated/src/Device/DeviceSelector/Favorite.d.ts +9 -0
  272. package/typings/generated/src/Device/DeviceSelector/SelectDevice.d.ts +8 -0
  273. package/typings/generated/src/Device/DeviceSelector/SelectedDevice.d.ts +7 -0
  274. package/typings/generated/src/Device/DeviceSetup/DeviceSetupView.d.ts +3 -0
  275. package/typings/generated/src/Device/deviceAutoSelectSlice.d.ts +28 -0
  276. package/typings/generated/src/Device/deviceInfo/deviceInfo.d.ts +18 -0
  277. package/typings/generated/src/Device/deviceLibWrapper.d.ts +8 -0
  278. package/typings/generated/src/Device/deviceLibWrapper.test.d.ts +1 -0
  279. package/typings/generated/src/Device/deviceLister.d.ts +25 -0
  280. package/typings/generated/src/Device/deviceLister.test.d.ts +2 -0
  281. package/typings/generated/src/Device/deviceSetup.d.ts +40 -0
  282. package/typings/generated/src/Device/deviceSetupSlice.d.ts +20 -0
  283. package/typings/generated/src/Device/deviceSlice.d.ts +30 -0
  284. package/typings/generated/src/Device/dfu-cc.d.ts +3 -0
  285. package/typings/generated/src/Device/initPacket.d.ts +109 -0
  286. package/typings/generated/src/Device/jprogOperations.d.ts +2 -0
  287. package/typings/generated/src/Device/sdfuOperations.d.ts +14 -0
  288. package/typings/generated/src/Dialog/Dialog.d.ts +64 -0
  289. package/typings/generated/src/Dialog/Dialog.test.d.ts +1 -0
  290. package/typings/generated/src/Dropdown/Dropdown.d.ts +16 -0
  291. package/typings/generated/src/Dropdown/Dropdown.test.d.ts +1 -0
  292. package/typings/generated/src/ErrorBoundary/ErrorBoundary.d.ts +26 -0
  293. package/typings/generated/src/ErrorBoundary/ErrorBoundary.test.d.ts +1 -0
  294. package/typings/generated/src/ErrorDialog/ErrorDialog.d.ts +4 -0
  295. package/typings/generated/src/ErrorDialog/ErrorDialog.test.d.ts +1 -0
  296. package/typings/generated/src/ErrorDialog/errorDialogSlice.d.ts +23 -0
  297. package/typings/generated/src/ErrorDialog/errorDialogSlice.test.d.ts +1 -0
  298. package/typings/generated/src/FactoryReset/FactoryResetButton.d.ts +12 -0
  299. package/typings/generated/src/FactoryReset/FactoryResetButton.test.d.ts +1 -0
  300. package/typings/generated/src/InlineInput/InlineInput.d.ts +14 -0
  301. package/typings/generated/src/InlineInput/NumberInlineInput.d.ts +12 -0
  302. package/typings/generated/src/Log/LogEntry.d.ts +7 -0
  303. package/typings/generated/src/Log/LogViewer.d.ts +5 -0
  304. package/typings/generated/src/Log/logSlice.d.ts +12 -0
  305. package/typings/generated/src/Log/syncLogToStore.d.ts +11 -0
  306. package/typings/generated/src/Logo/Logo.d.ts +6 -0
  307. package/typings/generated/src/Main/Main.d.ts +6 -0
  308. package/typings/generated/src/MasonryLayout/MasonryLayout.d.ts +14 -0
  309. package/typings/generated/src/NavBar/NavBar.d.ts +6 -0
  310. package/typings/generated/src/NavBar/NavMenu.d.ts +3 -0
  311. package/typings/generated/src/NavBar/NavMenu.test.d.ts +1 -0
  312. package/typings/generated/src/NavBar/NavMenuItem.d.ts +10 -0
  313. package/typings/generated/src/OpenApp/openApp.d.ts +7 -0
  314. package/typings/generated/src/Panes/FeedbackPane.d.ts +3 -0
  315. package/typings/generated/src/PseudoButton/PseudoButton.d.ts +10 -0
  316. package/typings/generated/src/SerialPort/ConflictingSettingsDialog.d.ts +13 -0
  317. package/typings/generated/src/SerialPort/SerialPort.d.ts +21 -0
  318. package/typings/generated/src/SerialPort/SerialPort.test.d.ts +1 -0
  319. package/typings/generated/src/Shortcuts/ShortcutItem.d.ts +8 -0
  320. package/typings/generated/src/Shortcuts/ShortcutModal.d.ts +8 -0
  321. package/typings/generated/src/SidePanel/Group.d.ts +16 -0
  322. package/typings/generated/src/SidePanel/SidePanel.d.ts +7 -0
  323. package/typings/generated/src/Slider/Bar.d.ts +7 -0
  324. package/typings/generated/src/Slider/Factor.test.d.ts +1 -0
  325. package/typings/generated/src/Slider/Handle.d.ts +13 -0
  326. package/typings/generated/src/Slider/Slider.d.ts +15 -0
  327. package/typings/generated/src/Slider/Slider.test.d.ts +1 -0
  328. package/typings/generated/src/Slider/Ticks.d.ts +12 -0
  329. package/typings/generated/src/Slider/factor.d.ts +1 -0
  330. package/typings/generated/src/Slider/percentage.d.ts +4 -0
  331. package/typings/generated/src/Slider/range.d.ts +13 -0
  332. package/typings/generated/src/StartStopButton/StartStopButton.d.ts +16 -0
  333. package/typings/generated/src/StateSelector/StateSelector.d.ts +15 -0
  334. package/typings/generated/src/Stepper/Stepper.d.ts +26 -0
  335. package/typings/generated/src/Toggle/Toggle.d.ts +19 -0
  336. package/typings/generated/src/index.d.ts +69 -0
  337. package/typings/generated/src/logging/appTransport.d.ts +12 -0
  338. package/typings/generated/src/logging/appTransport.test.d.ts +1 -0
  339. package/typings/generated/src/logging/describeError.d.ts +2 -0
  340. package/typings/generated/src/logging/describeError.test.d.ts +1 -0
  341. package/typings/generated/src/logging/index.d.ts +9 -0
  342. package/typings/generated/src/logging/logBuffer.d.ts +9 -0
  343. package/typings/generated/src/logging/logBuffer.test.d.ts +1 -0
  344. package/typings/generated/src/logging/sendInitialLogMessages.d.ts +2 -0
  345. package/typings/generated/src/store.d.ts +65 -0
  346. package/typings/generated/src/utils/AppTypes.d.ts +49 -0
  347. package/typings/generated/src/utils/appDirs.d.ts +35 -0
  348. package/typings/generated/src/utils/bleChannels.d.ts +6 -0
  349. package/typings/generated/src/utils/classNames.d.ts +17 -0
  350. package/typings/generated/src/utils/classNames.test.d.ts +1 -0
  351. package/typings/generated/src/utils/colors.d.ts +31 -0
  352. package/typings/generated/src/utils/describeVersion.d.ts +3 -0
  353. package/typings/generated/src/utils/environment.d.ts +1 -0
  354. package/typings/generated/src/utils/logLibVersions.d.ts +2 -0
  355. package/typings/generated/src/utils/open.d.ts +15 -0
  356. package/typings/generated/src/utils/packageJson.d.ts +4 -0
  357. package/typings/generated/src/utils/persistentStore.d.ts +35 -0
  358. package/typings/generated/src/utils/systemReport.d.ts +4 -0
  359. package/typings/generated/src/utils/truncateMiddle.d.ts +2 -0
  360. package/typings/generated/src/utils/truncateMiddle.test.d.ts +1 -0
  361. package/typings/generated/src/utils/usageData.d.ts +63 -0
  362. package/typings/generated/src/utils/useHotKey.d.ts +6 -0
  363. package/typings/generated/src/utils/useStopwatch.d.ts +22 -0
  364. package/typings/generated/src/utils/useStopwatch.test.d.ts +1 -0
  365. package/typings/generated/test/dispatchTo.d.ts +3 -0
  366. package/typings/generated/test/testrenderer.d.ts +5 -0
  367. package/typings/nrf-intel-hex.d.ts +58 -0
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env ts-node
2
+
3
+ /*
4
+ * Copyright (c) 2023 Nordic Semiconductor ASA
5
+ *
6
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
7
+ */
8
+
9
+ /*
10
+ A script to release a new version of shared.
11
+
12
+ Requirement for this script: Have [the GitHub CLI tool `gh`](https://cli.github.com)
13
+ installed and authenticate in it (run `gh auth login`).
14
+
15
+ Run
16
+ npm run release-shared -- --dry-run
17
+ to check whether the script thinks you can release a new version of shared.
18
+
19
+ Run
20
+ npm run release-shared
21
+ to actually do the release.
22
+
23
+ This script checks the contents in the branch `origin/main`.
24
+ So if locally looks everything fine, please check `origin/main`.
25
+ */
26
+ import { execSync, spawnSync } from 'node:child_process';
27
+
28
+ import { PackageJson } from '../src/utils/AppTypes';
29
+
30
+ const logError = (message: string) => {
31
+ console.error(message);
32
+ };
33
+
34
+ const parseJson = <Result>(jsonString: string) =>
35
+ JSON.parse(jsonString) as Result;
36
+
37
+ const git = (...commands) =>
38
+ spawnSync('git', commands, {
39
+ stdio: ['inherit', 'pipe', 'inherit'],
40
+ encoding: 'utf-8',
41
+ }).stdout;
42
+
43
+ const getLatestReleaseName = () =>
44
+ parseJson<{ tagName: string }>(
45
+ execSync(`gh release view --json tagName`, { encoding: 'utf-8' })
46
+ ).tagName;
47
+
48
+ export const getNextReleaseNumber = (
49
+ latestReleaseName = getLatestReleaseName(),
50
+ { log } = { log: console.log }
51
+ ) => {
52
+ const latestReleaseNumber = Number(
53
+ /^v(?<versionNumber>\d+)$/.exec(latestReleaseName)?.groups
54
+ ?.versionNumber
55
+ );
56
+
57
+ const nextReleaseNumber = latestReleaseNumber + 1;
58
+
59
+ log(
60
+ `The currently released version is ${latestReleaseNumber}, so the next one will be ${nextReleaseNumber}.\n`
61
+ );
62
+
63
+ return nextReleaseNumber;
64
+ };
65
+
66
+ const equality = <T>(
67
+ expected: T,
68
+ actual: T,
69
+ errorMessage: string,
70
+ fail: typeof logError
71
+ ) => {
72
+ if (expected !== actual) {
73
+ fail(
74
+ `${errorMessage}:\n Expected: ${expected}\n Actual: ${actual}\n`
75
+ );
76
+ }
77
+
78
+ return expected === actual;
79
+ };
80
+
81
+ const getLatestPackageJson = () => git('show', 'origin/main:package.json');
82
+
83
+ export const packageJsonIsCorrect = (
84
+ expectedVersionNumber: number,
85
+ { fail, packageJson } = {
86
+ fail: logError,
87
+ packageJson: getLatestPackageJson(),
88
+ }
89
+ ) => {
90
+ const expectedVersionString = `${expectedVersionNumber}.0.0`;
91
+ const actualVersionString = parseJson<PackageJson>(packageJson).version;
92
+
93
+ return equality(
94
+ expectedVersionString,
95
+ actualVersionString,
96
+ 'Version number in `package.json` is not as expected',
97
+ fail
98
+ );
99
+ };
100
+
101
+ const getLatestChangelog = () => git('show', 'origin/main:Changelog.md');
102
+
103
+ export const getLatestEntry = (changelog: string) => {
104
+ const latestEntry = changelog.split('\n## ')[1];
105
+
106
+ const header = latestEntry.split('\n')[0];
107
+ const content = latestEntry.replace(/[^\n]*/, '').trim();
108
+
109
+ return { header, content };
110
+ };
111
+
112
+ export const latestEntryIsNotEmpty = ({
113
+ fail,
114
+ changelog,
115
+ }: {
116
+ fail: (message: string) => void;
117
+ changelog: string;
118
+ }) => {
119
+ const correct = getLatestEntry(changelog).content.length > 0;
120
+
121
+ if (!correct) {
122
+ fail('Latest entry in `Changelog.md` does not contain anything.');
123
+ }
124
+
125
+ return correct;
126
+ };
127
+
128
+ const withoutTime = (date: Date) => date.toISOString().split('T')[0];
129
+
130
+ export const latestHeaderIsCorrect = (
131
+ expectedVersionNumber: number,
132
+ { fail, now, changelog } = {
133
+ fail: logError,
134
+ now: new Date(),
135
+ changelog: getLatestChangelog(),
136
+ }
137
+ ) => {
138
+ const expectedHeaderline = `${expectedVersionNumber} - ${withoutTime(now)}`;
139
+ const actualHeaderline = getLatestEntry(changelog).header;
140
+
141
+ return equality(
142
+ expectedHeaderline,
143
+ actualHeaderline,
144
+ 'Latest entry in `Changelog.md` is not as expected',
145
+ fail
146
+ );
147
+ };
148
+
149
+ export const changelogIsCorrect = (
150
+ expectedVersionNumber: number,
151
+ { fail, now, changelog } = {
152
+ fail: logError,
153
+ now: new Date(),
154
+ changelog: getLatestChangelog(),
155
+ }
156
+ ) =>
157
+ latestEntryIsNotEmpty({ fail, changelog }) &&
158
+ latestHeaderIsCorrect(expectedVersionNumber, { fail, now, changelog });
159
+
160
+ const doRelease = (nextReleaseNumber: number) => {
161
+ const nextReleaseName = `v${nextReleaseNumber}`;
162
+ const latestChangelogEntry = getLatestEntry(getLatestChangelog()).content;
163
+
164
+ const dryRun = process.argv.includes('--dry-run');
165
+ if (dryRun) {
166
+ console.log(
167
+ `Would create a release ${nextReleaseName} now, with this description:\n${latestChangelogEntry}`
168
+ );
169
+ } else {
170
+ console.log(`Creating release ${nextReleaseName} now:`);
171
+ const result = spawnSync(
172
+ 'gh',
173
+ [
174
+ 'release',
175
+ 'create',
176
+ nextReleaseName,
177
+ '--title',
178
+ nextReleaseName,
179
+ '--notes',
180
+ latestChangelogEntry,
181
+ ],
182
+ {
183
+ stdio: 'inherit',
184
+ encoding: 'utf-8',
185
+ }
186
+ );
187
+ process.exitCode = result.status ?? 1;
188
+ }
189
+ };
190
+
191
+ const main = () => {
192
+ console.log(git('fetch'));
193
+ const nextReleaseNumber = getNextReleaseNumber();
194
+
195
+ const noErrors =
196
+ packageJsonIsCorrect(nextReleaseNumber) &&
197
+ changelogIsCorrect(nextReleaseNumber);
198
+
199
+ if (noErrors) {
200
+ doRelease(nextReleaseNumber);
201
+ }
202
+ };
203
+
204
+ const runAsScript = require.main === module;
205
+ if (runAsScript) {
206
+ main();
207
+ }
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React from 'react';
8
+
9
+ import ApplicationCard from './ApplicationCard';
10
+ import DeviceCard from './DeviceCard';
11
+ import DocumentationCard from './DocumentationCard';
12
+ import SupportCard from './SupportCard';
13
+
14
+ import './about.scss';
15
+
16
+ export default () => (
17
+ <div className="about">
18
+ <div className="about-inner">
19
+ <ApplicationCard />
20
+ <DeviceCard />
21
+ <DocumentationCard />
22
+ <SupportCard />
23
+ </div>
24
+ </div>
25
+ );
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React, { FC } from 'react';
8
+
9
+ import Button from '../Button/Button';
10
+ import { openUrl } from '../utils/open';
11
+
12
+ interface Props {
13
+ onClick?: () => void;
14
+ url?: string;
15
+ label: string;
16
+ }
17
+
18
+ const AboutButton: FC<Props> = ({ url, label, onClick }) => (
19
+ <Button
20
+ disabled={!url && !onClick}
21
+ onClick={onClick || (() => openUrl(url as string))}
22
+ variant="secondary"
23
+ >
24
+ {label}
25
+ </Button>
26
+ );
27
+
28
+ export default AboutButton;
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React, { useEffect, useState } from 'react';
8
+ import { ipcRenderer } from 'electron';
9
+
10
+ import Card from '../Card/Card';
11
+ import FactoryResetButton from '../FactoryReset/FactoryResetButton';
12
+ import AboutButton from './AboutButton';
13
+ import Section from './Section';
14
+ import ShortcutButton from './ShortcutButton';
15
+
16
+ interface AppDetails {
17
+ coreVersion: string;
18
+ corePath: string;
19
+ homeDir: string;
20
+ tmpDir: string;
21
+ }
22
+
23
+ interface LauncerApp {
24
+ name?: string;
25
+ displayName?: string;
26
+ description?: string;
27
+ homepage?: string;
28
+ currentVersion?: string;
29
+ latestVersion?: string;
30
+ engineVersion?: string;
31
+ path?: string;
32
+ iconPath?: string;
33
+ shortcutIconPath?: string;
34
+ isOfficial?: string;
35
+ sharedVersion?: string;
36
+ source?: string;
37
+ url?: string;
38
+ releaseNote?: string;
39
+ upgradeAvailable?: string;
40
+ repositoryUrl?: string;
41
+ }
42
+
43
+ type DetailsFromLauncher = AppDetails & LauncerApp;
44
+
45
+ export default () => {
46
+ const [appInfo, setAppInfo] = useState<DetailsFromLauncher>();
47
+
48
+ useEffect(() => {
49
+ ipcRenderer.once('app-details', (_, details: DetailsFromLauncher) => {
50
+ setAppInfo(details);
51
+ });
52
+ ipcRenderer.send('get-app-details');
53
+ }, [setAppInfo]);
54
+
55
+ if (appInfo == null) return null;
56
+
57
+ return (
58
+ <Card title="Application">
59
+ <Section title="Title">{appInfo.displayName}</Section>
60
+ <Section title="Purpose">{appInfo.description}</Section>
61
+ <Section title="Version">{appInfo.currentVersion}</Section>
62
+ <Section title="Source">{appInfo.source || 'local'}</Section>
63
+ <Section title="Supported engines">
64
+ nRF Connect {appInfo.engineVersion}
65
+ </Section>
66
+ <Section title="Current engine">
67
+ nRF Connect {appInfo.coreVersion}
68
+ </Section>
69
+ <Section>
70
+ <AboutButton
71
+ url={appInfo.repositoryUrl}
72
+ label="Get source code"
73
+ />
74
+ </Section>
75
+ <Section>
76
+ <FactoryResetButton label="Restore defaults..." />
77
+ </Section>
78
+ <Section>
79
+ <ShortcutButton label="Show shortcuts" />
80
+ </Section>
81
+ </Card>
82
+ );
83
+ };
@@ -0,0 +1,74 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React from 'react';
8
+ import { useSelector } from 'react-redux';
9
+
10
+ import Card from '../Card/Card';
11
+ import {
12
+ buyOnlineUrl,
13
+ deviceInfo,
14
+ productPageUrl,
15
+ } from '../Device/deviceInfo/deviceInfo';
16
+ import { selectedDevice } from '../Device/deviceSlice';
17
+ import AboutButton from './AboutButton';
18
+ import Section from './Section';
19
+
20
+ const memorySize = (memoryInBytes: number) => {
21
+ if (memoryInBytes == null) {
22
+ return 'Unknown';
23
+ }
24
+
25
+ return `${memoryInBytes / 1024}KiB`;
26
+ };
27
+
28
+ export default () => {
29
+ const device = useSelector(selectedDevice);
30
+
31
+ if (device == null) {
32
+ return (
33
+ <Card title="Device">
34
+ <Section title="No device selected" />
35
+ </Card>
36
+ );
37
+ }
38
+
39
+ const pca = device.boardVersion;
40
+ const { name, cores } = deviceInfo(device);
41
+
42
+ return (
43
+ <Card title="Device">
44
+ <Section title="Name">{name || 'Unknown'}</Section>
45
+ <Section title="ID">{device.serialNumber}</Section>
46
+ <Section title="PCA">{pca || 'Unknown'}</Section>
47
+ <Section title="Cores">{cores || 'Unknown'}</Section>
48
+
49
+ {device.hwInfo && (
50
+ <>
51
+ <Section title="RAM">
52
+ {memorySize(device.hwInfo.ramSize)}
53
+ </Section>
54
+ <Section title="Flash">
55
+ {memorySize(device.hwInfo.romSize)}
56
+ </Section>
57
+ </>
58
+ )}
59
+
60
+ <Section>
61
+ <AboutButton
62
+ url={buyOnlineUrl(device)}
63
+ label="Find distributor"
64
+ />
65
+ </Section>
66
+ <Section>
67
+ <AboutButton
68
+ url={productPageUrl(device)}
69
+ label="Go to product page"
70
+ />
71
+ </Section>
72
+ </Card>
73
+ );
74
+ };
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (c) 2021 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React from 'react';
8
+ import { useSelector } from 'react-redux';
9
+
10
+ import Card from '../Card/Card';
11
+ import { documentationSections } from './documentationSlice';
12
+
13
+ export default () => {
14
+ const sections = useSelector(documentationSections);
15
+ if (sections.length === 0) return null;
16
+
17
+ return <Card title="Documentation">{sections}</Card>;
18
+ };
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright (c) 2021 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React, { ReactNode } from 'react';
8
+
9
+ import AboutButton from './AboutButton';
10
+ import Section from './Section';
11
+
12
+ interface Props {
13
+ title?: string;
14
+ link?: string;
15
+ linkLabel?: string;
16
+ children?: ReactNode;
17
+ }
18
+
19
+ export default ({ title, link, linkLabel, children }: Props) => (
20
+ <Section title={title}>
21
+ <p>{children}</p>
22
+ {link && <AboutButton url={link} label={linkLabel as string} />}
23
+ </Section>
24
+ );
@@ -0,0 +1,21 @@
1
+ /*
2
+ * Copyright (c) 2015 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ import React, { ReactNode } from 'react';
8
+
9
+ import './section.scss';
10
+
11
+ interface Props {
12
+ title?: string;
13
+ children?: ReactNode;
14
+ }
15
+
16
+ export default ({ children, title }: Props) => (
17
+ <div className="about-section">
18
+ {title != null && <h3 className="about-section-title">{title}</h3>}
19
+ {children}
20
+ </div>
21
+ );
@@ -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 React, { FC, useState } from 'react';
8
+
9
+ import Button from '../Button/Button';
10
+ import ShortcutModal from '../Shortcuts/ShortcutModal';
11
+ import useHotKey from '../utils/useHotKey';
12
+
13
+ interface Props {
14
+ label: string;
15
+ }
16
+
17
+ const ShortcutButton: FC<Props> = ({ label }) => {
18
+ const [isModalVisible, setIsModalVisible] = useState(false);
19
+ const toggleModalVisible = () => setIsModalVisible(!isModalVisible);
20
+
21
+ useHotKey({
22
+ hotKey: '?',
23
+ title: 'Open shortcut overview',
24
+ isGlobal: true,
25
+ action: () => toggleModalVisible(),
26
+ });
27
+
28
+ return (
29
+ <>
30
+ <Button variant="secondary" onClick={toggleModalVisible}>
31
+ {label}
32
+ </Button>
33
+ <ShortcutModal
34
+ isVisible={isModalVisible}
35
+ onCancel={toggleModalVisible}
36
+ />
37
+ </>
38
+ );
39
+ };
40
+
41
+ export default ShortcutButton;
@@ -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 React from 'react';
8
+ import { useDispatch, useSelector } from 'react-redux';
9
+ import { getCurrentWindow } from '@electron/remote';
10
+
11
+ import Button from '../Button/Button';
12
+ import Card from '../Card/Card';
13
+ import { setVerboseDeviceLibLogging } from '../Device/deviceLibWrapper';
14
+ import {
15
+ deviceInfo,
16
+ getDevices,
17
+ selectedSerialNumber,
18
+ } from '../Device/deviceSlice';
19
+ import {
20
+ isLoggingVerboseSelector,
21
+ toggleIsLoggingVerbose,
22
+ } from '../Log/logSlice';
23
+ import { Toggle } from '../Toggle/Toggle';
24
+ import { persistIsLoggingVerbose } from '../utils/persistentStore';
25
+ import systemReport from '../utils/systemReport';
26
+ import AboutButton from './AboutButton';
27
+ import Section from './Section';
28
+
29
+ export default () => {
30
+ const dispatch = useDispatch();
31
+ const devices = useSelector(getDevices);
32
+ const currentSerialNumber = useSelector(selectedSerialNumber);
33
+ const verboseLogging = useSelector(isLoggingVerboseSelector);
34
+ const currentDevice = useSelector(deviceInfo);
35
+
36
+ return (
37
+ <Card title="Support">
38
+ <Section title="DevZone">
39
+ <p>
40
+ All support requests must be sent through our developer
41
+ portal DevZone.
42
+ </p>
43
+ <AboutButton
44
+ url="https://devzone.nordicsemi.com"
45
+ label="Go to DevZone"
46
+ />
47
+ </Section>
48
+ <Section title="System report">
49
+ <p>
50
+ In order to get the best support it is helpful for our
51
+ employees to know details about your operating system and
52
+ related software. Create a system report and add to your
53
+ support request.
54
+ </p>
55
+ <AboutButton
56
+ onClick={() =>
57
+ systemReport(
58
+ [...devices.values()],
59
+ currentSerialNumber as string,
60
+ currentDevice
61
+ )
62
+ }
63
+ label="Create system report"
64
+ />
65
+ </Section>
66
+ <Section title="Verbose Logging">
67
+ <p>
68
+ Aid our support team with additional log information. Enable
69
+ this only when necessary as the log will grow quickly.
70
+ </p>
71
+ <Toggle
72
+ id="enableVerboseLoggin"
73
+ label="VERBOSE LOGGING"
74
+ onToggle={() => {
75
+ setVerboseDeviceLibLogging(!verboseLogging);
76
+ dispatch(toggleIsLoggingVerbose());
77
+ }}
78
+ isToggled={verboseLogging}
79
+ variant="primary"
80
+ />
81
+ <Section>
82
+ <Button
83
+ variant="secondary"
84
+ onClick={() => {
85
+ persistIsLoggingVerbose(true);
86
+ getCurrentWindow().reload();
87
+ }}
88
+ title="Restart application with verbose logging turned on to get log messages from initial enumeration"
89
+ disabled={!verboseLogging}
90
+ >
91
+ Restart with verbose logging
92
+ </Button>
93
+ </Section>
94
+ </Section>
95
+ </Card>
96
+ );
97
+ };
@@ -0,0 +1,40 @@
1
+ /*
2
+ * Copyright (c) 2021 Nordic Semiconductor ASA
3
+ *
4
+ * SPDX-License-Identifier: LicenseRef-Nordic-4-Clause
5
+ */
6
+
7
+ @import '../variables';
8
+
9
+ .about {
10
+ display: flex;
11
+ align-items: center;
12
+ height: 100%;
13
+
14
+ .about-inner {
15
+ display: flex;
16
+ flex-direction: row;
17
+ justify-content: center;
18
+ flex-wrap: wrap;
19
+ width: 100%;
20
+ margin: auto;
21
+ padding-bottom: 16px;
22
+ padding-right: 16px;
23
+ .card {
24
+ min-width: 230px;
25
+ max-width: 20em;
26
+ margin-left: 8px;
27
+ margin-bottom: 8px;
28
+ }
29
+ .card-body {
30
+ margin-bottom: 1em;
31
+ }
32
+ .factory-reset-button {
33
+ height: 24px;
34
+ padding: 0;
35
+ }
36
+ }
37
+ button {
38
+ width: 100%;
39
+ }
40
+ }