diff --git a/Changelog.md b/Changelog.md
index 881f4e15..d3c9fbeb 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,516 +2,516 @@
### Fixed
-- Issue where programming some MCUboot-compatible devices would fail with
- `Unhandled ProgrammingOptions`.
+- Issue where programming some MCUboot-compatible devices would fail with
+ `Unhandled ProgrammingOptions`.
## 4.6.2 - 2025-07-14
### Fixed
-- Issue with selecting devices when logging is set to verbose.
+- Issue with selecting devices when logging is set to verbose.
## 4.6.1 - 2025-07-08
### Changed
-- Maintenance release to update the dependencies.
+- Maintenance release to update the dependencies.
## 4.6.0 - 2025-05-22
### Added
-- Enabled firmware read for nRF54L Series.
+- Enabled firmware read for nRF54L Series.
### Changed
-- Update dependencies to support the nRF Connect for Desktop v5.2.0 release.
+- Update dependencies to support the nRF Connect for Desktop v5.2.0 release.
## 4.5.0 - 2025-01-02
### Changed
-- Disabled unsupported firmware read for nRF54L Series.
+- Disabled unsupported firmware read for nRF54L Series.
### Fixed
-- Issue with programming firmware on nRF54L15 when it is larger than 1 MB.
+- Issue with programming firmware on nRF54L15 when it is larger than 1 MB.
## 4.4.2 - 2024-11-11
### Changed
-- Updated `nrfutil device` to v2.6.4.
+- Updated `nrfutil device` to v2.6.4.
### Fixed
-- The DECT modem firmware is now correctly detected for nRF91x1 devices.
+- The DECT modem firmware is now correctly detected for nRF91x1 devices.
## 4.4.1 - 2024-09-24
### Fixed
-- The warning "HEX regions are out of device memory size" will not be shown
- anymore for HEX files with UICR.
-- The SoC is now detected before each operation to ensure the app works even
- if the SoC changes between operations.
-- Memory layout and device information now update correctly when quickly
- switching between selected devices.
+- The warning "HEX regions are out of device memory size" will not be shown
+ anymore for HEX files with UICR.
+- The SoC is now detected before each operation to ensure the app works even if
+ the SoC changes between operations.
+- Memory layout and device information now update correctly when quickly
+ switching between selected devices.
## 4.4.0 - 2024-06-13
### Added
-- Support for Apple silicon.
+- Support for Apple silicon.
### Changed
-- Moved feedback tab to a dialog which can be opened by going to the about tab
- and click **Give Feedback**.
+- Moved feedback tab to a dialog which can be opened by going to the about tab
+ and click **Give Feedback**.
### Fixed
-- The **Enable MCUboot** toggle reflects the MCUboot trait of the connected
- device.
+- The **Enable MCUboot** toggle reflects the MCUboot trait of the connected
+ device.
## 4.3.0 - 2024-03-13
### Added
-- Warning about closing the app while programming, which may lead to unwanted
- consequences.
+- Warning about closing the app while programming, which may lead to unwanted
+ consequences.
### Changed
-- Update `nrfutil device` to v2.1.1.
+- Update `nrfutil device` to v2.1.1.
### Fixed
-- Valid Modem Firmware for Thingy:91 was previously detected as incorrect.
-- Show the device family in the Memory layout title for MCUboot devices.
-- Windows and Linux: Dragging and dropping a file into the file memory layout
- opened the file in an editor.
-- File related warnings were not always removed when removing file regions.
+- Valid Modem Firmware for Thingy:91 was previously detected as incorrect.
+- Show the device family in the Memory layout title for MCUboot devices.
+- Windows and Linux: Dragging and dropping a file into the file memory layout
+ opened the file in an editor.
+- File related warnings were not always removed when removing file regions.
### Removed
-- `Enable MCUboot` toggle.
+- `Enable MCUboot` toggle.
## 4.2.0 - 2024-01-04
## Added
-- Persist state of `show log` panel.
-- Feedback tab.
+- Persist state of `show log` panel.
+- Feedback tab.
### Fixed
-- Warning message when writing nrf9161 modem firmware.
-- Modem firmware download URL for nrf9161.
-- Unable to press write when programming modem firmware for nrf9160 or nrf9161
- with an external jLink.
+- Warning message when writing nrf9161 modem firmware.
+- Modem firmware download URL for nrf9161.
+- Unable to press write when programming modem firmware for nrf9160 or nrf9161
+ with an external jLink.
## 4.1.0 - 2023-12-07
### Changed
-- Update nrfutil device to v2.0.3.
+- Update nrfutil device to v2.0.3.
### Fixed
-- Issue with detecting Thingy:91 Rev: 1.5.0.
+- Issue with detecting Thingy:91 Rev: 1.5.0.
## 4.0.1 - 2023-10-17
### Fixed
-- JLink devices sometimes didn't show up because of timeout.
+- JLink devices sometimes didn't show up because of timeout.
## 4.0.0 - 2023-10-05
### Added
-- Allow reading multi-core devices if one or more cores are not protected.
-- Alert message for a selected device when the programmer app cannot interact
- with it. Alert will be displayed when:
- - Device is not in MCUBoot mode;
- - Device is not in bootloader mode;
- - Device is unknown type.
+- Allow reading multi-core devices if one or more cores are not protected.
+- Alert message for a selected device when the programmer app cannot interact
+ with it. Alert will be displayed when:
+ - Device is not in MCUBoot mode;
+ - Device is not in bootloader mode;
+ - Device is unknown type.
### Changed
-- Programmer now uses nrfutil device for all device operations.
-- Split settings `Jlink` and `MCUBoot` into different groups.
+- Programmer now uses nrfutil device for all device operations.
+- Split settings `Jlink` and `MCUBoot` into different groups.
### Removed
-- Notice in the side panel related to the Cellular modem.
+- Notice in the side panel related to the Cellular modem.
### Fixed
-- Sometimes audio kit did not show up in the device selector.
+- Sometimes audio kit did not show up in the device selector.
## 3.0.9 - 2023-06-15
### Added
-- Progress bar to ModemFirmware DFU dialog.
+- Progress bar to ModemFirmware DFU dialog.
### Changed
-- `OpenFile` and `SaveFile` must be closed before one can interact with the
- app window.
-- Updated MCUBoot Dialog UI look and feel.
-- Updated Modem DFU dialog.
+- `OpenFile` and `SaveFile` must be closed before one can interact with the app
+ window.
+- Updated MCUBoot Dialog UI look and feel.
+- Updated Modem DFU dialog.
### Fixed
-- Text in MCUBoot Dialog no longer overflow if too long but wraps.
-- `MCUBoot` Dialog show the wrong state if a device reboots/disconnects while
- programming is still ongoing and `Auto Reconnect` is Enabled.
-- Write button will not remain active when device is deselected.
+- Text in MCUBoot Dialog no longer overflow if too long but wraps.
+- `MCUBoot` Dialog show the wrong state if a device reboots/disconnects while
+ programming is still ongoing and `Auto Reconnect` is Enabled.
+- Write button will not remain active when device is deselected.
## 3.0.8 - 2023-03-30
### Added
-- Reconnecting status in device selector.
-- Custom control to set net core upload delay.
-- Persist net core upload delay for each device serial number.
-- Progress on net core upload delay.
-- Linux: If a device fails to be identified based on parameters which point to
- a missing nrf-udev installation, recommend user to install nrf-udev.
+- Reconnecting status in device selector.
+- Custom control to set net core upload delay.
+- Persist net core upload delay for each device serial number.
+- Progress on net core upload delay.
+- Linux: If a device fails to be identified based on parameters which point to a
+ missing nrf-udev installation, recommend user to install nrf-udev.
### Fixed
-- Write button remains clickable in some cases when device is change to
- bootloader.
-- USB DFU memory layout now updates after device reboots due to programming.
-- USB DFU memory layout updates if programming fails.
-- Linux: Apps would crash when identifying certain devices if nrf-udev.
- installation was missing.
+- Write button remains clickable in some cases when device is change to
+ bootloader.
+- USB DFU memory layout now updates after device reboots due to programming.
+- USB DFU memory layout updates if programming fails.
+- Linux: Apps would crash when identifying certain devices if nrf-udev.
+ installation was missing.
### Changed
-- Alert banners related to file memory regions now yellow instead of red.
+- Alert banners related to file memory regions now yellow instead of red.
## 3.0.7 - 2023-02-23
### Fixed
-- Writing Asset Tracker hex file with UICR included to nRF91DK failed.
+- Writing Asset Tracker hex file with UICR included to nRF91DK failed.
## 3.0.6 - 2023-02-14
### Added
-- nRF7002 support.
+- nRF7002 support.
## 3.0.5 - 2023-02-13
### Added
-- Auto reconnect functionality.
+- Auto reconnect functionality.
### Changed
-- Update for compatibility with nRF Connect for Desktop v4.0.0
-- Invalid MCUboot firmware warning no longer references a specific device (was
- always Thingy91).
-- Warning about unexpected modem firmware filename does not trigger on default
- copy naming.
+- Update for compatibility with nRF Connect for Desktop v4.0.0
+- Invalid MCUboot firmware warning no longer references a specific device (was
+ always Thingy91).
+- Warning about unexpected modem firmware filename does not trigger on default
+ copy naming.
### Fixed
-- Typo in warning about modem firmware filename.
-- Always save file as a hex file.
+- Typo in warning about modem firmware filename.
+- Always save file as a hex file.
## 3.0.4 - 2022-09-05
### Fixed
-- Don't show erronous warning when mcu flashing the Thingy53.
-- Sometimes displayed known devices as `UNKNOWN`.
-- Device loads forever if protection status failed to be read.
+- Don't show erronous warning when mcu flashing the Thingy53.
+- Sometimes displayed known devices as `UNKNOWN`.
+- Device loads forever if protection status failed to be read.
## 3.0.3 - 2022-06-17
### Fixed
-- Correctly detect some MCUboot devices (notably Thingy53).
+- Correctly detect some MCUboot devices (notably Thingy53).
## 3.0.2 - 2022-06-09
### Fixed
-- `Write` when flashing modem firmware files did nothing.
-- Reading a device would freeze the app.
+- `Write` when flashing modem firmware files did nothing.
+- Reading a device would freeze the app.
### Known issues
-- Connecting devices on linux sometimes takes several attempts (user has to
- reconnect device).
+- Connecting devices on linux sometimes takes several attempts (user has to
+ reconnect device).
## 3.0.1 - 2022-06-08
### Fixed
-- Some errors were not displayed correctly.
-- Not able to open device with external JLink debugger.
+- Some errors were not displayed correctly.
+- Not able to open device with external JLink debugger.
## 3.0.0 - 2022-04-26
### Changed
-- Update UI.
-- Disable `Write` button for JLink devices and add tooltip.
+- Update UI.
+- Disable `Write` button for JLink devices and add tooltip.
### Fixed
-- Update file regions when device is selected after hex file has been added.
-- Adding a zip file clears any previously opened files.
-- Did not display all serialport devices.
-- Clicking a file or core region no longer inverts the hover effect.
+- Update file regions when device is selected after hex file has been added.
+- Adding a zip file clears any previously opened files.
+- Did not display all serialport devices.
+- Clicking a file or core region no longer inverts the hover effect.
## 2.3.3 - 2022-02-23
### Fixed
-- Show correct hardware layout of selected device.
+- Show correct hardware layout of selected device.
## 2.3.2 - 2022-02-18
### Fixed
-- Show correct hardware type of selected device.
-- Modem file name verification.
+- Show correct hardware type of selected device.
+- Modem file name verification.
## 2.3.1 - 2022-02-03
### Fixed
-- Crash when settings are empty.
+- Crash when settings are empty.
## 2.3.0 - 2022-01-31
### Changed
-- Use shared code for persisting local settings in app.
-- Detect cores on nRF53 with readback protection.
+- Use shared code for persisting local settings in app.
+- Detect cores on nRF53 with readback protection.
### Fixed
-- Remove readback protection on nRF53.
-- Dropping several hex files.
+- Remove readback protection on nRF53.
+- Dropping several hex files.
## 2.2.0 - 2022-01-13
### Added
-- Auto-reset setting which, if toggled, adds a device reset after read/write
- operations. This setting is enabled by default.
-- Instructions for updating the modem firmware.
+- Auto-reset setting which, if toggled, adds a device reset after read/write
+ operations. This setting is enabled by default.
+- Instructions for updating the modem firmware.
### Fixed
-- Issue with programming nRF52 SoC on Thingy91.
-- Reset button is now disabled for USB devices as this operation is currently
- not supported.
-- Reset button now works for JLink devices.
+- Issue with programming nRF52 SoC on Thingy91.
+- Reset button is now disabled for USB devices as this operation is currently
+ not supported.
+- Reset button now works for JLink devices.
### Changed
-- Device is no longer by default reset after a write operation, if the user
- wants to reset the device after write, use the new `Auto reset` feature.
+- Device is no longer by default reset after a write operation, if the user
+ wants to reset the device after write, use the new `Auto reset` feature.
## 2.1.1 - 2022-01-07
### Fixed
-- Issue with selecting external JLink device.
+- Issue with selecting external JLink device.
## 2.1.0 - 2022-01-06
### Added
-- Thingy:53 support.
-- Usage data for general device information.
+- Thingy:53 support.
+- Usage data for general device information.
### Fixed
-- Long file name is not wrapped for file selection view.
-- Not able to program HEX file if part of the regions are outside of the
- device memory size.
-- Previous file regions are removed after write/remove action.
-- `Restore Defaults...` option not resetting stored values. This will however
- cause the currently persisted data to be wiped (such as previously added
- files).
-- Hovering certain areas of the app would cause flickering layout.
+- Long file name is not wrapped for file selection view.
+- Not able to program HEX file if part of the regions are outside of the device
+ memory size.
+- Previous file regions are removed after write/remove action.
+- `Restore Defaults...` option not resetting stored values. This will however
+ cause the currently persisted data to be wiped (such as previously added
+ files).
+- Hovering certain areas of the app would cause flickering layout.
### Changed
-- Removed `Update modem` button. To update modem, add modem file with the add
- file dialog, or drag and drop into the file memory layout, and click write.
-- Styling updates to **Add file** dialog window.
+- Removed `Update modem` button. To update modem, add modem file with the add
+ file dialog, or drag and drop into the file memory layout, and click write.
+- Styling updates to **Add file** dialog window.
## 2.0.1 - 2021-11-04
### Changed
-- Simplify modem DFU progress indicator temporarily
+- Simplify modem DFU progress indicator temporarily
## 2.0.0 - 2021-11-01
### Added
-- Documentation section in `About` pane.
+- Documentation section in `About` pane.
### Changed
-- Establish compatibility with nRF Connect for Desktop 3.8
-- Use new nRF Connect for Desktop look & feel.
+- Establish compatibility with nRF Connect for Desktop 3.8
+- Use new nRF Connect for Desktop look & feel.
## 1.4.11 - 2021-06-11
### Fixed
-- Programming with external debugger. Note: programming a protected SoC via
- external debugger is not supported.
+- Programming with external debugger. Note: programming a protected SoC via
+ external debugger is not supported.
## 1.4.10 - 2021-06-11
### Changed
-- Updated firmware to support modem DFU for Thingy:91 v1.6.0.
-- Updated firmware to enhance APPPROTECT feature.
+- Updated firmware to support modem DFU for Thingy:91 v1.6.0.
+- Updated firmware to enhance APPPROTECT feature.
## 1.4.9 - 2021-06-11
### Added
-- APPPROTECT support for nRF52 family.
+- APPPROTECT support for nRF52 family.
## 1.4.8 - 2020-12-07
### Added
-- APPPROTECT support.
+- APPPROTECT support.
## 1.4.7 - 2020-10-30
### Added
-- USB PID of OpenThread devices.
+- USB PID of OpenThread devices.
## 1.4.6 - 2020-10-21
### Changed
-- Updated according to changes of Electron dialog API.
+- Updated according to changes of Electron dialog API.
## 1.4.5 - 2020-10-21
### Changed
-- Updated logic behind enabling of write button.
+- Updated logic behind enabling of write button.
### Added
-- Warning for Thingy:91 DFU when invalid file is detected.
+- Warning for Thingy:91 DFU when invalid file is detected.
## 1.4.4 - 2020-09-02
### Fixed
-- Modem DFU for Thingy91 by increasing timeout between MCUboot DFU and modem
- UART DFU.
+- Modem DFU for Thingy91 by increasing timeout between MCUboot DFU and modem
+ UART DFU.
## 1.4.3 - 2020-07-08
### Added
-- Support nRF52805.
+- Support nRF52805.
### Removed
-- Warning for nRF9160 communication failure.
+- Warning for nRF9160 communication failure.
### Fixed
-- MCUboot DFU for nRF52840 on Thingy91 for Linux and macOS.
-- MCUboot DFU for nRF52840 on Thingy91 for Windows. Note: the fix is valid for
- Thingy91 v1.0.2 and newer. For older versions, please use a debugger to
- program.
-- Communication failure for nRF5340 development kit.
+- MCUboot DFU for nRF52840 on Thingy91 for Linux and macOS.
+- MCUboot DFU for nRF52840 on Thingy91 for Windows. Note: the fix is valid for
+ Thingy91 v1.0.2 and newer. For older versions, please use a debugger to
+ program.
+- Communication failure for nRF5340 development kit.
## 1.4.2 - 2020-07-08
### Added
-- Warning for nRF9160 communication failure.
+- Warning for nRF9160 communication failure.
## 1.4.1 - 2020-07-08
### Fixed
-- Modem dfu hex file not committed in resources.
+- Modem dfu hex file not committed in resources.
## 1.4.0 - 2020-07-08
### Added
-- Support nRF52820.
-- Support modem UART DFU.
+- Support nRF52820.
+- Support modem UART DFU.
### Fixed
-- End address for regions displayed.
+- End address for regions displayed.
## 1.3.1 - 2019-11-18
### Fixed
-- Programm nRF51 devices with UICR.
+- Programm nRF51 devices with UICR.
## 1.3.0 - 2019-11-14
### Added
-- Support nRF53 series.
-- Support nRF52833.
-- Support MCUboot DFU.
+- Support nRF53 series.
+- Support nRF52833.
+- Support MCUboot DFU.
## 1.2.3 - 2019-08-30
### Fixed
-- Cropping of most recently used files dropdown.
+- Cropping of most recently used files dropdown.
## 1.2.2 - 2019-08-30
### Fixed
-- UICR handling that caused double reset failure.
+- UICR handling that caused double reset failure.
## 1.2.0 - 2019-07-03
### Changed
-- Updated to React Bootstrap 4.
+- Updated to React Bootstrap 4.
## 1.1.0 - 2019-06-17
### Added
-- Modem DFU support.
-- List of devices and details of current device to system report.
-- SdReq for SoftDevice S140 v6.1.0.
-- Support for nRF52810.
+- Modem DFU support.
+- List of devices and details of current device to system report.
+- SdReq for SoftDevice S140 v6.1.0.
+- Support for nRF52810.
### Changed
-- Updated algorithm of detecting application regions.
+- Updated algorithm of detecting application regions.
### Fixed
-- Logic of reloading files.
+- Logic of reloading files.
diff --git a/LICENSE b/LICENSE
index dc6ac066..75abed45 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,10 @@
+LicenseID: LicenseRef-Nordic-4-Clause
+
+ExtractedText:
+
Copyright (c) 2015 Nordic Semiconductor ASA
All rights reserved.
-SPDX-License-Identifier: Nordic-4-Clause
Use in source and binary forms, redistribution in binary form only, with
or without modification, are permitted provided that the following conditions
@@ -33,3 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
diff --git a/package-lock.json b/package-lock.json
index 0891c9b1..acacb927 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,15 +1,15 @@
{
"name": "pc-nrfconnect-programmer",
- "version": "4.6.1",
+ "version": "4.6.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "pc-nrfconnect-programmer",
- "version": "4.6.1",
+ "version": "4.6.3",
"license": "SEE LICENSE IN LICENSE",
"devDependencies": {
- "@nordicsemiconductor/pc-nrfconnect-shared": "^219.0.0"
+ "@nordicsemiconductor/pc-nrfconnect-shared": "^231.0.0"
},
"engines": {
"nrfconnect": ">=5.2.0"
@@ -726,6 +726,8 @@
"resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
"integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
+ "optional": true,
+ "peer": true,
"dependencies": {
"@jridgewell/trace-mapping": "0.3.9"
},
@@ -738,6 +740,8 @@
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
"integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
+ "optional": true,
+ "peer": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.0.3",
"@jridgewell/sourcemap-codec": "^1.4.10"
@@ -793,6 +797,23 @@
"electron": ">= 13.0.0"
}
},
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz",
+ "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/android-arm": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.2.tgz",
@@ -1049,6 +1070,23 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/netbsd-x64": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.2.tgz",
@@ -1065,6 +1103,23 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/openbsd-x64": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.2.tgz",
@@ -1081,6 +1136,23 @@
"node": ">=12"
}
},
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz",
+ "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/sunos-x64": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.2.tgz",
@@ -1146,34 +1218,40 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
- "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==",
+ "version": "4.9.0",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
+ "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
"node_modules/@eslint-community/regexpp": {
- "version": "4.8.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz",
- "integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==",
+ "version": "4.12.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+ "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz",
- "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==",
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
+ "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"ajv": "^6.12.4",
"debug": "^4.3.2",
@@ -1197,6 +1275,7 @@
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
"integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -1209,10 +1288,11 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/globals": {
- "version": "13.21.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
- "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
+ "version": "13.24.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
+ "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"type-fest": "^0.20.2"
},
@@ -1227,13 +1307,15 @@
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@eslint/eslintrc/node_modules/type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
"integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
"dev": true,
+ "license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=10"
},
@@ -1242,22 +1324,25 @@
}
},
"node_modules/@eslint/js": {
- "version": "8.37.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.37.0.tgz",
- "integrity": "sha512-x5vzdtOOGgFVDCUs81QRB2+liax8rFg3+7hqM+QhBG0/G3F1ZsoYl97UrqgHgQ9KKT7G6c4V+aTUCgu/n22v1A==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
+ "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@humanwhocodes/config-array": {
- "version": "0.11.11",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz",
- "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==",
+ "version": "0.13.0",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
+ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
+ "deprecated": "Use @eslint/config-array instead",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@humanwhocodes/object-schema": "^1.2.1",
- "debug": "^4.1.1",
+ "@humanwhocodes/object-schema": "^2.0.3",
+ "debug": "^4.3.1",
"minimatch": "^3.0.5"
},
"engines": {
@@ -1278,10 +1363,12 @@
}
},
"node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
+ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
+ "deprecated": "Use @eslint/object-schema instead",
+ "dev": true,
+ "license": "BSD-3-Clause"
},
"node_modules/@isaacs/cliui": {
"version": "8.0.2",
@@ -2448,11 +2535,12 @@
}
},
"node_modules/@nordicsemiconductor/pc-nrfconnect-shared": {
- "version": "219.0.0",
- "resolved": "https://registry.npmjs.org/@nordicsemiconductor/pc-nrfconnect-shared/-/pc-nrfconnect-shared-219.0.0.tgz",
- "integrity": "sha512-dIxFd+k4TVS71A5wGSXWZMhA+u8bk/vrsmy3sOOYGz0+dZ04Q85dLS2FDMBQDxTIju7zhVdcU9qNYw/HNQr1Vg==",
+ "version": "231.0.0",
+ "resolved": "https://registry.npmjs.org/@nordicsemiconductor/pc-nrfconnect-shared/-/pc-nrfconnect-shared-231.0.0.tgz",
+ "integrity": "sha512-w46oZmvz7IgZJqQcFa9SGq13vKg8QfFuMapuVY/WfLsm2281qmJxfy0BVI5YabSLY1VKtNfYcxqh8CRJ5ZIkTA==",
"dev": true,
"hasInstallScript": true,
+ "license": "SEE LICENSE IN LICENSE",
"dependencies": {
"@electron/remote": "^2.1.2",
"@mdi/font": "7.2.96",
@@ -2479,8 +2567,6 @@
"@types/shasum": "1.0.0",
"@types/triple-beam": "1.3.2",
"@types/uuid": "8.3.4",
- "@typescript-eslint/eslint-plugin": "5.57.1",
- "@typescript-eslint/parser": "5.57.1",
"@xterm/headless": "^5.5.0",
"adm-zip": "^0.5.5",
"applicationinsights": "^2.9.6",
@@ -2493,14 +2579,15 @@
"esbuild": "0.19.2",
"esbuild-sass-plugin": "2.13.0",
"esbuild-style-plugin": "1.6.2",
- "eslint": "8.37.0",
+ "eslint": "^8.57.1",
"eslint-config-airbnb": "19.0.4",
"eslint-config-prettier": "8.8.0",
"eslint-import-resolver-typescript": "3.5.5",
"eslint-plugin-import": "2.27.5",
+ "eslint-plugin-jsonc": "^2.20.1",
"eslint-plugin-jsx-a11y": "6.7.1",
"eslint-plugin-md": "^1.0.19",
- "eslint-plugin-prettier": "^4.2.1",
+ "eslint-plugin-prettier": "^5.5.4",
"eslint-plugin-react": "7.32.2",
"eslint-plugin-react-hooks": "4.6.0",
"eslint-plugin-simple-import-sort": "10.0.0",
@@ -2519,7 +2606,7 @@
"nrf-intel-hex": "^1.4.0",
"postcss": "8.4.24",
"postcss-modules": "^6.0.0",
- "prettier": "2.8.8",
+ "prettier": "^3.6.2",
"prettier-plugin-tailwindcss": "^0.3.0",
"prettysize": "2.0.0",
"protobufjs": "^7.0.0",
@@ -2542,8 +2629,9 @@
"systeminformation": "^5.25.11",
"tailwindcss": "3.3.2",
"tree-kill-promise": "^3.0.14",
- "ts-node": "10.9.1",
- "typescript": "4.9.5",
+ "tsx": "^4.20.3",
+ "typescript": "^5.9.2",
+ "typescript-eslint": "^8.45.0",
"util": "0.12.5",
"uuid": "8.3.2",
"winston": "3.8.2",
@@ -2685,6 +2773,19 @@
"node": ">=14"
}
},
+ "node_modules/@pkgr/core": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
+ },
"node_modules/@pkgr/utils": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz",
@@ -3792,25 +3893,33 @@
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
"integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/@tsconfig/node12": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
"integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/@tsconfig/node14": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
"integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/@tsconfig/node16": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
"integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/@types/adm-zip": {
"version": "0.5.0",
@@ -4098,12 +4207,13 @@
"dev": true
},
"node_modules/@types/node": {
- "version": "20.12.12",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz",
- "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==",
+ "version": "20.19.19",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.19.tgz",
+ "integrity": "sha512-pb1Uqj5WJP7wrcbLU7Ru4QtA0+3kAXrkutGiD26wUKzSMgNNaPARTUDQmElUXp64kh3cWdou3Q0C7qwwxqSFmg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "undici-types": "~5.26.4"
+ "undici-types": "~6.21.0"
}
},
"node_modules/@types/normalize-package-data": {
@@ -4285,117 +4395,160 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz",
- "integrity": "sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.45.0.tgz",
+ "integrity": "sha512-HC3y9CVuevvWCl/oyZuI47dOeDF9ztdMEfMH8/DW/Mhwa9cCLnK1oD7JoTVGW/u7kFzNZUKUoyJEqkaJh5y3Wg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/regexpp": "^4.4.0",
- "@typescript-eslint/scope-manager": "5.57.1",
- "@typescript-eslint/type-utils": "5.57.1",
- "@typescript-eslint/utils": "5.57.1",
- "debug": "^4.3.4",
- "grapheme-splitter": "^1.0.4",
- "ignore": "^5.2.0",
- "natural-compare-lite": "^1.4.0",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "@eslint-community/regexpp": "^4.10.0",
+ "@typescript-eslint/scope-manager": "8.45.0",
+ "@typescript-eslint/type-utils": "8.45.0",
+ "@typescript-eslint/utils": "8.45.0",
+ "@typescript-eslint/visitor-keys": "8.45.0",
+ "graphemer": "^1.4.0",
+ "ignore": "^7.0.0",
+ "natural-compare": "^1.4.0",
+ "ts-api-utils": "^2.1.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^5.0.0",
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "@typescript-eslint/parser": "^8.45.0",
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": {
+ "version": "7.0.5",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz",
+ "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.1.tgz",
- "integrity": "sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.45.0.tgz",
+ "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "5.57.1",
- "@typescript-eslint/types": "5.57.1",
- "@typescript-eslint/typescript-estree": "5.57.1",
+ "@typescript-eslint/scope-manager": "8.45.0",
+ "@typescript-eslint/types": "8.45.0",
+ "@typescript-eslint/typescript-estree": "8.45.0",
+ "@typescript-eslint/visitor-keys": "8.45.0",
"debug": "^4.3.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/project-service": {
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.45.0.tgz",
+ "integrity": "sha512-3pcVHwMG/iA8afdGLMuTibGR7pDsn9RjDev6CCB+naRsSYs2pns5QbinF4Xqw6YC/Sj3lMrm/Im0eMfaa61WUg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/tsconfig-utils": "^8.45.0",
+ "@typescript-eslint/types": "^8.45.0",
+ "debug": "^4.3.4"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz",
- "integrity": "sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.45.0.tgz",
+ "integrity": "sha512-clmm8XSNj/1dGvJeO6VGH7EUSeA0FMs+5au/u3lrA3KfG8iJ4u8ym9/j2tTEoacAffdW1TVUzXO30W1JTJS7dA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.57.1",
- "@typescript-eslint/visitor-keys": "5.57.1"
+ "@typescript-eslint/types": "8.45.0",
+ "@typescript-eslint/visitor-keys": "8.45.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ }
+ },
+ "node_modules/@typescript-eslint/tsconfig-utils": {
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.45.0.tgz",
+ "integrity": "sha512-aFdr+c37sc+jqNMGhH+ajxPXwjv9UtFZk79k8pLoJ6p4y0snmYpPA52GuWHgt2ZF4gRRW6odsEj41uZLojDt5w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz",
- "integrity": "sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.45.0.tgz",
+ "integrity": "sha512-bpjepLlHceKgyMEPglAeULX1vixJDgaKocp0RVJ5u4wLJIMNuKtUXIczpJCPcn2waII0yuvks/5m5/h3ZQKs0A==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.57.1",
- "@typescript-eslint/utils": "5.57.1",
+ "@typescript-eslint/types": "8.45.0",
+ "@typescript-eslint/typescript-estree": "8.45.0",
+ "@typescript-eslint/utils": "8.45.0",
"debug": "^4.3.4",
- "tsutils": "^3.21.0"
+ "ts-api-utils": "^2.1.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "*"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.1.tgz",
- "integrity": "sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.45.0.tgz",
+ "integrity": "sha512-WugXLuOIq67BMgQInIxxnsSyRLFxdkJEJu8r4ngLR56q/4Q5LrbfkFRH27vMTjxEK8Pyz7QfzuZe/G15qQnVRA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
@@ -4403,75 +4556,165 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz",
- "integrity": "sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.45.0.tgz",
+ "integrity": "sha512-GfE1NfVbLam6XQ0LcERKwdTTPlLvHvXXhOeUGC1OXi4eQBoyy1iVsW+uzJ/J9jtCz6/7GCQ9MtrQ0fml/jWCnA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.57.1",
- "@typescript-eslint/visitor-keys": "5.57.1",
+ "@typescript-eslint/project-service": "8.45.0",
+ "@typescript-eslint/tsconfig-utils": "8.45.0",
+ "@typescript-eslint/types": "8.45.0",
+ "@typescript-eslint/visitor-keys": "8.45.0",
"debug": "^4.3.4",
- "globby": "^11.1.0",
+ "fast-glob": "^3.3.2",
"is-glob": "^4.0.3",
- "semver": "^7.3.7",
- "tsutils": "^3.21.0"
+ "minimatch": "^9.0.4",
+ "semver": "^7.6.0",
+ "ts-api-utils": "^2.1.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
+ "peerDependencies": {
+ "typescript": ">=4.8.4 <6.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
+ "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@nodelib/fs.stat": "^2.0.2",
+ "@nodelib/fs.walk": "^1.2.3",
+ "glob-parent": "^5.1.2",
+ "merge2": "^1.3.0",
+ "micromatch": "^4.0.8"
+ },
+ "engines": {
+ "node": ">=8.6.0"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
+ "version": "9.0.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.1.tgz",
- "integrity": "sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.45.0.tgz",
+ "integrity": "sha512-bxi1ht+tLYg4+XV2knz/F7RVhU0k6VrSMc9sb8DQ6fyCTrGQLHfo7lDtN0QJjZjKkLA2ThrKuCdHEvLReqtIGg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@types/json-schema": "^7.0.9",
- "@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.57.1",
- "@typescript-eslint/types": "5.57.1",
- "@typescript-eslint/typescript-estree": "5.57.1",
- "eslint-scope": "^5.1.1",
- "semver": "^7.3.7"
+ "@eslint-community/eslint-utils": "^4.7.0",
+ "@typescript-eslint/scope-manager": "8.45.0",
+ "@typescript-eslint/types": "8.45.0",
+ "@typescript-eslint/typescript-estree": "8.45.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.57.1",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz",
- "integrity": "sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==",
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.45.0.tgz",
+ "integrity": "sha512-qsaFBA3e09MIDAGFUrTk+dzqtfv1XPVz8t8d1f0ybTzrCY7BKiMC5cjrl1O/P7UmHsNyW90EYSkU/ZWpmXelag==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "5.57.1",
- "eslint-visitor-keys": "^3.3.0"
+ "@typescript-eslint/types": "8.45.0",
+ "eslint-visitor-keys": "^4.2.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/typescript-eslint"
}
},
+ "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz",
+ "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/@xterm/headless": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.5.0.tgz",
@@ -5225,12 +5468,13 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -5867,9 +6111,11 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
"integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "node_modules/cross-spawn": {
+ "dev": true,
+ "optional": true,
+ "peer": true
+ },
+ "node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
"integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
@@ -6383,6 +6629,8 @@
"resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
"integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true,
+ "optional": true,
+ "peer": true,
"engines": {
"node": ">=0.3.1"
}
@@ -6829,27 +7077,30 @@
}
},
"node_modules/eslint": {
- "version": "8.37.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.37.0.tgz",
- "integrity": "sha512-NU3Ps9nI05GUoVMxcZx1J8CNR6xOvUT4jAUMH5+z8lpp3aEdPVCImKw6PWG4PY+Vfkpr+jvMpxs/qoE7wq0sPw==",
+ "version": "8.57.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
+ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
"dev": true,
+ "license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.4.0",
- "@eslint/eslintrc": "^2.0.2",
- "@eslint/js": "8.37.0",
- "@humanwhocodes/config-array": "^0.11.8",
+ "@eslint-community/regexpp": "^4.6.1",
+ "@eslint/eslintrc": "^2.1.4",
+ "@eslint/js": "8.57.1",
+ "@humanwhocodes/config-array": "^0.13.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
- "ajv": "^6.10.0",
+ "@ungap/structured-clone": "^1.2.0",
+ "ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
"debug": "^4.3.2",
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.1.1",
- "eslint-visitor-keys": "^3.4.0",
- "espree": "^9.5.1",
+ "eslint-scope": "^7.2.2",
+ "eslint-visitor-keys": "^3.4.3",
+ "espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
@@ -6857,22 +7108,19 @@
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
"globals": "^13.19.0",
- "grapheme-splitter": "^1.0.4",
+ "graphemer": "^1.4.0",
"ignore": "^5.2.0",
- "import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
"is-path-inside": "^3.0.3",
- "js-sdsl": "^4.1.4",
"js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.4.1",
"lodash.merge": "^4.6.2",
"minimatch": "^3.1.2",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
+ "optionator": "^0.9.3",
"strip-ansi": "^6.0.1",
- "strip-json-comments": "^3.1.0",
"text-table": "^0.2.0"
},
"bin": {
@@ -6885,6 +7133,35 @@
"url": "https://opencollective.com/eslint"
}
},
+ "node_modules/eslint-compat-utils": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.5.tgz",
+ "integrity": "sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/eslint-compat-utils/node_modules/semver": {
+ "version": "7.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
+ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/eslint-config-airbnb": {
"version": "19.0.4",
"resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz",
@@ -7051,6 +7328,28 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/eslint-json-compat-utils": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz",
+ "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esquery": "^1.6.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "peerDependencies": {
+ "eslint": "*",
+ "jsonc-eslint-parser": "^2.4.0"
+ },
+ "peerDependenciesMeta": {
+ "@eslint/json": {
+ "optional": true
+ }
+ }
+ },
"node_modules/eslint-module-utils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz",
@@ -7136,6 +7435,48 @@
"semver": "bin/semver.js"
}
},
+ "node_modules/eslint-plugin-jsonc": {
+ "version": "2.20.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.20.1.tgz",
+ "integrity": "sha512-gUzIwQHXx7ZPypUoadcyRi4WbHW2TPixDr0kqQ4miuJBU0emJmyGTlnaT3Og9X2a8R1CDayN9BFSq5weGWbTng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.5.1",
+ "eslint-compat-utils": "^0.6.4",
+ "eslint-json-compat-utils": "^0.2.1",
+ "espree": "^9.6.1 || ^10.3.0",
+ "graphemer": "^1.4.0",
+ "jsonc-eslint-parser": "^2.4.0",
+ "natural-compare": "^1.4.0",
+ "synckit": "^0.6.2 || ^0.7.3 || ^0.11.5"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
+ },
+ "peerDependencies": {
+ "eslint": ">=6.0.0"
+ }
+ },
+ "node_modules/eslint-plugin-jsonc/node_modules/synckit": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz",
+ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
"node_modules/eslint-plugin-jsx-a11y": {
"version": "6.7.1",
"resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz",
@@ -7194,26 +7535,52 @@
}
},
"node_modules/eslint-plugin-prettier": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz",
- "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==",
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.4.tgz",
+ "integrity": "sha512-swNtI95SToIz05YINMA6Ox5R057IMAmWZ26GqPxusAp1TZzj+IdY9tXNWWD3vkF/wEqydCONcwjTFpxybBqZsg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "prettier-linter-helpers": "^1.0.0"
+ "prettier-linter-helpers": "^1.0.0",
+ "synckit": "^0.11.7"
},
"engines": {
- "node": ">=12.0.0"
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint-plugin-prettier"
},
"peerDependencies": {
- "eslint": ">=7.28.0",
- "prettier": ">=2.0.0"
+ "@types/eslint": ">=8.0.0",
+ "eslint": ">=8.0.0",
+ "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0",
+ "prettier": ">=3.0.0"
},
"peerDependenciesMeta": {
+ "@types/eslint": {
+ "optional": true
+ },
"eslint-config-prettier": {
"optional": true
}
}
},
+ "node_modules/eslint-plugin-prettier/node_modules/synckit": {
+ "version": "0.11.11",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.11.tgz",
+ "integrity": "sha512-MeQTA1r0litLUf0Rp/iisCaL8761lKAZHaimlbGK4j0HysC4PLfqygQj9srcs0m2RdtDYnF8UuYyKpbjHYp7Jw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
"node_modules/eslint-plugin-react": {
"version": "7.32.2",
"resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz",
@@ -7625,6 +7992,7 @@
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
"integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"acorn": "^8.9.0",
"acorn-jsx": "^5.3.2",
@@ -7651,10 +8019,11 @@
}
},
"node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
+ "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -7945,10 +8314,11 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -8247,10 +8617,11 @@
}
},
"node_modules/get-tsconfig": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz",
- "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==",
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz",
+ "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"resolve-pkg-maps": "^1.0.0"
},
@@ -8421,11 +8792,12 @@
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
"dev": true
},
- "node_modules/grapheme-splitter": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
- "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
- "dev": true
+ "node_modules/graphemer": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
+ "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/has": {
"version": "1.0.3",
@@ -9208,6 +9580,7 @@
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.12.0"
}
@@ -11525,16 +11898,6 @@
"dev": true,
"peer": true
},
- "node_modules/js-sdsl": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz",
- "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==",
- "dev": true,
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/js-sdsl"
- }
- },
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -11668,6 +12031,25 @@
"node": ">=6"
}
},
+ "node_modules/jsonc-eslint-parser": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/jsonc-eslint-parser/-/jsonc-eslint-parser-2.4.1.tgz",
+ "integrity": "sha512-uuPNLJkKN8NXAlZlQ6kmUF9qO+T6Kyd7oV4+/7yy8Jz6+MZNyhPq8EdLpdfnPVzUC8qSf1b4j1azKaGnFsjmsw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.5.0",
+ "eslint-visitor-keys": "^3.0.0",
+ "espree": "^9.0.0",
+ "semver": "^7.3.5"
+ },
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ota-meshi"
+ }
+ },
"node_modules/jsonc-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
@@ -11962,7 +12344,9 @@
"version": "1.3.6",
"resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
"integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/makeerror": {
"version": "1.0.12",
@@ -13042,12 +13426,13 @@
]
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -13213,12 +13598,6 @@
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
- "node_modules/natural-compare-lite": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz",
- "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==",
- "dev": true
- },
"node_modules/nice-try": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
@@ -14226,15 +14605,16 @@
}
},
"node_modules/prettier": {
- "version": "2.8.8",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz",
- "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==",
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz",
+ "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==",
"dev": true,
+ "license": "MIT",
"bin": {
- "prettier": "bin-prettier.js"
+ "prettier": "bin/prettier.cjs"
},
"engines": {
- "node": ">=10.13.0"
+ "node": ">=14"
},
"funding": {
"url": "https://github.com/prettier/prettier?sponsor=1"
@@ -18340,6 +18720,7 @@
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
},
@@ -18453,6 +18834,19 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/ts-api-utils": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
+ "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18.12"
+ },
+ "peerDependencies": {
+ "typescript": ">=4.8.4"
+ }
+ },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -18464,6 +18858,8 @@
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
"integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
"dev": true,
+ "optional": true,
+ "peer": true,
"dependencies": {
"@cspotcode/source-map-support": "^0.8.0",
"@tsconfig/node10": "^1.0.7",
@@ -18506,7 +18902,9 @@
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
"integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/tsconfig-paths": {
"version": "3.14.2",
@@ -18569,6 +18967,442 @@
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"dev": true
},
+ "node_modules/tsx": {
+ "version": "4.20.6",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz",
+ "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "esbuild": "~0.25.0",
+ "get-tsconfig": "^4.7.5"
+ },
+ "bin": {
+ "tsx": "dist/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/android-arm": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz",
+ "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/android-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz",
+ "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/android-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz",
+ "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/darwin-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz",
+ "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/darwin-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz",
+ "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz",
+ "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/freebsd-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz",
+ "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-arm": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz",
+ "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz",
+ "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-ia32": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz",
+ "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-loong64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz",
+ "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==",
+ "cpu": [
+ "loong64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-mips64el": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz",
+ "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==",
+ "cpu": [
+ "mips64el"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-ppc64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz",
+ "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-riscv64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz",
+ "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-s390x": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz",
+ "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/linux-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz",
+ "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/netbsd-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz",
+ "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/openbsd-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz",
+ "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/sunos-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz",
+ "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/win32-arm64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz",
+ "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/win32-ia32": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz",
+ "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/@esbuild/win32-x64": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz",
+ "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/tsx/node_modules/esbuild": {
+ "version": "0.25.10",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz",
+ "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.25.10",
+ "@esbuild/android-arm": "0.25.10",
+ "@esbuild/android-arm64": "0.25.10",
+ "@esbuild/android-x64": "0.25.10",
+ "@esbuild/darwin-arm64": "0.25.10",
+ "@esbuild/darwin-x64": "0.25.10",
+ "@esbuild/freebsd-arm64": "0.25.10",
+ "@esbuild/freebsd-x64": "0.25.10",
+ "@esbuild/linux-arm": "0.25.10",
+ "@esbuild/linux-arm64": "0.25.10",
+ "@esbuild/linux-ia32": "0.25.10",
+ "@esbuild/linux-loong64": "0.25.10",
+ "@esbuild/linux-mips64el": "0.25.10",
+ "@esbuild/linux-ppc64": "0.25.10",
+ "@esbuild/linux-riscv64": "0.25.10",
+ "@esbuild/linux-s390x": "0.25.10",
+ "@esbuild/linux-x64": "0.25.10",
+ "@esbuild/netbsd-arm64": "0.25.10",
+ "@esbuild/netbsd-x64": "0.25.10",
+ "@esbuild/openbsd-arm64": "0.25.10",
+ "@esbuild/openbsd-x64": "0.25.10",
+ "@esbuild/openharmony-arm64": "0.25.10",
+ "@esbuild/sunos-x64": "0.25.10",
+ "@esbuild/win32-arm64": "0.25.10",
+ "@esbuild/win32-ia32": "0.25.10",
+ "@esbuild/win32-x64": "0.25.10"
+ }
+ },
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -18668,16 +19502,41 @@
}
},
"node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
+ "license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
- "node": ">=4.2.0"
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-eslint": {
+ "version": "8.45.0",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.45.0.tgz",
+ "integrity": "sha512-qzDmZw/Z5beNLUrXfd0HIW6MzIaAV5WNDxmMs9/3ojGOpYavofgNAAD/nC6tGV2PczIi0iw8vot2eAe/sBn7zg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@typescript-eslint/eslint-plugin": "8.45.0",
+ "@typescript-eslint/parser": "8.45.0",
+ "@typescript-eslint/typescript-estree": "8.45.0",
+ "@typescript-eslint/utils": "8.45.0"
+ },
+ "engines": {
+ "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/typescript-eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^8.57.0 || ^9.0.0",
+ "typescript": ">=4.8.4 <6.0.0"
}
},
"node_modules/unbox-primitive": {
@@ -18711,10 +19570,11 @@
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
- "dev": true
+ "version": "6.21.0",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
+ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/unherit": {
"version": "1.1.3",
@@ -19051,7 +19911,9 @@
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
"integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
+ "dev": true,
+ "optional": true,
+ "peer": true
},
"node_modules/v8-to-istanbul": {
"version": "9.1.0",
@@ -19666,6 +20528,8 @@
"resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
"integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true,
+ "optional": true,
+ "peer": true,
"engines": {
"node": ">=6"
}
diff --git a/package.json b/package.json
index aa6ee772..be6d0b0c 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,7 @@
"prepare": "husky install"
},
"devDependencies": {
- "@nordicsemiconductor/pc-nrfconnect-shared": "^219.0.0"
+ "@nordicsemiconductor/pc-nrfconnect-shared": "^231.0.0"
},
"eslintConfig": {
"extends": "./node_modules/@nordicsemiconductor/pc-nrfconnect-shared/config/eslintrc"
diff --git a/src/actions/fileActions.ts b/src/actions/fileActions.ts
index 4ad91fdc..828d476c 100644
--- a/src/actions/fileActions.ts
+++ b/src/actions/fileActions.ts
@@ -58,7 +58,7 @@ const updateCoreInfo = (): AppThunk => (dispatch, getState) => {
startAddresses.find(
s =>
s >= networkCore.romBaseAddr &&
- s <= networkCore.romBaseAddr + networkCore.romSize
+ s <= networkCore.romBaseAddr + networkCore.romSize,
)
) {
dispatch(setDeviceDefinition(nRF5340DefaultDevice));
@@ -81,7 +81,7 @@ const updateCoreInfo = (): AppThunk => (dispatch, getState) => {
romSize: Math.max(lastEndAddress, 0x100000), // 1 MB
},
},
- })
+ }),
);
}
};
@@ -90,9 +90,12 @@ export const removeFile =
(filePath: string): AppThunk =>
(dispatch, getState) => {
const { loaded, memMaps } = getState().app.file;
- const newLoaded = { ...loaded };
+
+ const newLoaded = Object.fromEntries(
+ Object.entries(loaded).filter(([key]) => key !== filePath),
+ );
+
const newMemMaps = memMaps.filter(element => element[0] !== filePath);
- delete newLoaded[filePath];
dispatch(fileParse({ loaded: newLoaded, memMaps: newMemMaps }));
dispatch(updateCoreInfo());
@@ -135,10 +138,12 @@ const parseZipFile =
stat(filePath, (statsError, result) => {
if (statsError) {
logger.error(
- `Could not open ZIP file: ${describeError(statsError)}`
+ `Could not open ZIP file: ${describeError(statsError)}`,
);
dispatch(
- ErrorDialogActions.showDialog(describeError(statsError))
+ ErrorDialogActions.showDialog(
+ describeError(statsError),
+ ),
);
removeMruFile(filePath);
return reject();
@@ -163,10 +168,12 @@ const parseHexFile =
stat(filePath, (statsError, result) => {
if (statsError) {
logger.error(
- `Could not open HEX file: ${describeError(statsError)}`
+ `Could not open HEX file: ${describeError(statsError)}`,
);
dispatch(
- ErrorDialogActions.showDialog(describeError(statsError))
+ ErrorDialogActions.showDialog(
+ describeError(statsError),
+ ),
);
removeMruFile(filePath);
return reject();
@@ -180,14 +187,14 @@ const parseHexFile =
logger.info('Parsing HEX file: ', filePath);
logger.info(
'File was last modified at ',
- stats.mtime.toLocaleString()
+ stats.mtime.toLocaleString(),
);
if (readError) {
logger.error(
- `Could not open HEX file: ${describeError(readError)}`
+ `Could not open HEX file: ${describeError(readError)}`,
);
dispatch(
- ErrorDialogActions.showDialog(describeError(readError))
+ ErrorDialogActions.showDialog(describeError(readError)),
);
removeMruFile(filePath);
return reject();
@@ -268,7 +275,7 @@ export const openFileDialog = (): AppThunk => dispatch => {
.showOpenDialog(getCurrentWindow(), dialogOptions)
.then(
({ filePaths }: { filePaths: string[] }) =>
- filePaths && dispatch(openFile(...filePaths))
+ filePaths && dispatch(openFile(...filePaths)),
);
};
@@ -288,11 +295,11 @@ export const refreshAllFiles =
logger.info('Does not need to be reloaded: ', filePath);
} catch (error) {
logger.error(
- `Could not open HEX file: ${describeError(error)}`
+ `Could not open HEX file: ${describeError(error)}`,
);
dispatch(
- ErrorDialogActions.showDialog(describeError(error))
+ ErrorDialogActions.showDialog(describeError(error)),
);
}
- })
+ }),
).then(() => Promise.resolve());
diff --git a/src/actions/jlinkTargetActions.ts b/src/actions/jlinkTargetActions.ts
index 3a699889..4d4c0418 100644
--- a/src/actions/jlinkTargetActions.ts
+++ b/src/actions/jlinkTargetActions.ts
@@ -48,27 +48,27 @@ let abortController: AbortController | undefined;
export const openDevice =
(
device: Device,
- controller: AbortController
+ controller: AbortController,
): AppThunk> =>
async (dispatch, getState) => {
abortController = controller;
logger.info(
- 'Using nrfutil device to communicate with target via JLink'
+ 'Using nrfutil device to communicate with target via JLink',
);
logDeviceInfo(device, getState().device.selectedDeviceInfo);
const defaultDeviceInfo = getDefaultDeviceInfoByJlinkFamily(
- getState().device.selectedDeviceInfo
+ getState().device.selectedDeviceInfo,
);
const deviceCoreNames = convertDeviceDefinitionToCoreArray(
- defaultDeviceInfo
+ defaultDeviceInfo,
).map(c => c.name);
dispatch(setDeviceDefinition(defaultDeviceInfo));
await dispatch(getAllCoreProtectionStatusBatch(deviceCoreNames)).run(
device,
- abortController
+ abortController,
);
await dispatch(getAllCoreInfoBatch(true)).run(device);
@@ -86,7 +86,7 @@ export const openDevice =
.reset('Application', 'RESET_DEBUG')
.run(device, abortController);
await dispatch(
- getAllCoreProtectionStatusBatch(deviceCoreNames)
+ getAllCoreProtectionStatusBatch(deviceCoreNames),
).run(device, abortController);
} else {
await batch.run(device, abortController);
@@ -100,7 +100,7 @@ const logDeviceInfo = (device: Device, deviceInfo?: DeviceInfo) => {
logger.info(
'JLink OB firmware version',
- deviceInfo.jlink.jlinkObFirmwareVersion
+ deviceInfo.jlink.jlinkObFirmwareVersion,
);
logger.info('Device family', device.devkit?.deviceFamily);
logger.info('Device version', deviceInfo.jlink.deviceVersion);
@@ -110,7 +110,7 @@ const logDeviceInfo = (device: Device, deviceInfo?: DeviceInfo) => {
const readAllCoresBatch =
(
checkProtection: boolean,
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
(dispatch, getState) => {
const deviceDefinition = getDeviceDefinition(getState());
@@ -126,7 +126,7 @@ const readAllCoresBatch =
'NRFDL_PROTECTION_STATUS_NONE'
) {
logger.info(
- `Skipping reading core ${deviceCoreInfo.name} as it is protected.`
+ `Skipping reading core ${deviceCoreInfo.name} as it is protected.`,
);
return accBatch;
}
@@ -140,12 +140,12 @@ const readAllCoresBatch =
updateCoreOperations({
core: deviceCoreInfo.name,
state: 'reading',
- })
+ }),
);
dispatch(
updateCoreMemMap({
[deviceCoreInfo.name]: undefined,
- })
+ }),
);
},
(success, data) => {
@@ -155,29 +155,29 @@ const readAllCoresBatch =
const paddedArray = memMap.slicePad(
0,
deviceCoreInfo.coreDefinitions.romBaseAddr +
- deviceCoreInfo.coreDefinitions.romSize
+ deviceCoreInfo.coreDefinitions.romSize,
);
dispatch(
updateCoreMemMap({
[deviceCoreInfo.name]:
MemoryMap.fromPaddedUint8Array(
- paddedArray
+ paddedArray,
),
- })
+ }),
);
}
dispatch(
updateCoreOperations({
core: deviceCoreInfo.name,
state: 'idle',
- })
+ }),
);
- }
- )
+ },
+ ),
);
},
- batch
+ batch,
);
return batch;
@@ -194,7 +194,7 @@ export const read =
const batchLoggingCallbacks = (
message: string,
onBegin?: () => void,
- onEnd?: (success: boolean, data?: T) => void
+ onEnd?: (success: boolean, data?: T) => void,
): BatchCallbacks => ({
onTaskBegin: () => {
logger.info(message);
@@ -211,7 +211,7 @@ const batchLoggingCallbacks = (
taskEnd.error
? ` code: ${taskEnd.error.code}, description: ${taskEnd.error.description},`
: ''
- } message: ${taskEnd.message}`
+ } message: ${taskEnd.message}`,
);
}
},
@@ -221,7 +221,7 @@ const batchLoggingCallbacks = (
onProgress: progress => {
const status = `${message.replace(
'.',
- ':'
+ ':',
)} ${progress.totalProgressPercentage.toFixed(0)}%`;
logger.info(status);
},
@@ -230,7 +230,7 @@ const batchLoggingCallbacks = (
const recoverOneCoreBatch =
(
core: DeviceCore,
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
dispatch => {
dispatch(updateCoreMemMap({ [core]: undefined }));
@@ -244,7 +244,7 @@ const recoverOneCoreBatch =
updateCoreOperations({
core,
state: 'erasing',
- })
+ }),
);
},
() =>
@@ -252,9 +252,9 @@ const recoverOneCoreBatch =
updateCoreOperations({
core,
state: 'idle',
- })
- )
- )
+ }),
+ ),
+ ),
);
};
@@ -262,7 +262,7 @@ const writeOneCoreBatch =
(
core: DeviceCore,
hexFileString: string,
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
dispatch =>
batch.program(
@@ -276,18 +276,18 @@ const writeOneCoreBatch =
() => {
dispatch(updateCoreMemMap({ [core]: undefined }));
dispatch(
- updateCoreOperations({ core, state: 'writing' })
+ updateCoreOperations({ core, state: 'writing' }),
);
},
() =>
- dispatch(updateCoreOperations({ core, state: 'idle' }))
+ dispatch(updateCoreOperations({ core, state: 'idle' })),
),
- }
+ },
);
const geCoreHexIntel = (
coreInfo: CoreDefinition,
- memMaps: MemoryMaps
+ memMaps: MemoryMaps,
) => {
// Parse input files and filter program regions with core start address and size
const overlaps = MemoryMap.overlapMemoryMaps(memMaps);
@@ -317,18 +317,18 @@ const geCoreHexIntel = (
const recoverAllCoresBatch =
(
cores: DeviceCore[],
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
dispatch =>
cores.reduce(
(accBatch, core) => dispatch(recoverOneCoreBatch(core, accBatch)),
- batch
+ batch,
);
const writeToAllCoresBatch =
(
memMaps: MemoryMaps,
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
(dispatch, getState) => {
const deviceDefinition = getDeviceDefinition(getState());
@@ -336,7 +336,7 @@ const writeToAllCoresBatch =
(accBatch, deviceCoreInfo) => {
const hex = geCoreHexIntel(
deviceCoreInfo.coreDefinitions,
- memMaps
+ memMaps,
);
if (!hex) return accBatch;
@@ -344,11 +344,11 @@ const writeToAllCoresBatch =
writeOneCoreBatch(
deviceCoreInfo.name,
hex.asHexString(),
- accBatch
- )
+ accBatch,
+ ),
);
},
- batch
+ batch,
);
};
@@ -359,7 +359,7 @@ const updateDeviceInfo =
device,
undefined,
undefined,
- abortController
+ abortController,
);
if (
@@ -378,7 +378,7 @@ const updateDeviceInfo =
const coreNames = coreInfos.map(c => c.name);
await dispatch(getAllCoreProtectionStatusBatch(coreNames)).run(
device,
- abortController
+ abortController,
);
return getDeviceDefinition(getState());
@@ -395,8 +395,8 @@ export const recover =
await dispatch(
getAllCoreInfoBatch(
false, // No need to check protection as we recovered
- batch
- )
+ batch,
+ ),
).run(device);
batch = NrfutilDeviceLib.batch();
@@ -417,7 +417,7 @@ export const recover =
await dispatch(getAllCoreProtectionStatusBatch(coreNames)).run(
device,
- abortController
+ abortController,
);
};
@@ -432,8 +432,8 @@ export const recoverAndWrite =
await dispatch(
getAllCoreInfoBatch(
false, // No need to check protection as we recovered
- batch
- )
+ batch,
+ ),
).run(device);
batch = NrfutilDeviceLib.batch();
@@ -456,7 +456,7 @@ export const recoverAndWrite =
await dispatch(getAllCoreProtectionStatusBatch(coreNames)).run(
device,
- abortController
+ abortController,
);
};
@@ -470,16 +470,16 @@ export const resetDevice =
'Application',
'RESET_DEBUG',
undefined,
- abortController
+ abortController,
);
const deviceCoreNames = convertDeviceDefinitionToCoreArray(
- deviceDefinition
+ deviceDefinition,
).map(c => c.name);
await dispatch(getAllCoreProtectionStatusBatch(deviceCoreNames)).run(
device,
- abortController
+ abortController,
);
};
@@ -488,8 +488,8 @@ export const saveAsFile = (): AppThunk => (_, getState) => {
const coreInfos = convertDeviceDefinitionToCoreArray(deviceDefinition);
const maxAddress = Math.max(
...coreInfos.map(
- c => c.coreDefinitions.romBaseAddr + c.coreDefinitions.romSize
- )
+ c => c.coreDefinitions.romBaseAddr + c.coreDefinitions.romSize,
+ ),
);
const options = {
@@ -524,7 +524,7 @@ export const saveAsFile = (): AppThunk => (_, getState) => {
const getCoreProtectionStatusBatch =
(
core: DeviceCore,
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
dispatch =>
batch.getProtectionStatus(
@@ -537,12 +537,12 @@ const getCoreProtectionStatusBatch =
(success, protectionStatus) => {
if (success && protectionStatus) {
logger.info(
- `${core} core protection status '${protectionStatus?.protectionStatus}'`
+ `${core} core protection status '${protectionStatus?.protectionStatus}'`,
);
dispatch(
updateCoreProtection({
[core]: protectionStatus.protectionStatus,
- })
+ }),
);
if (
@@ -552,31 +552,31 @@ const getCoreProtectionStatusBatch =
dispatch(
updateCoreMemMap({
[core]: undefined,
- })
+ }),
);
}
}
- }
- )
+ },
+ ),
);
const getAllCoreProtectionStatusBatch =
(
cores: DeviceCore[],
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
dispatch =>
cores.reduce(
(accBatch, core) =>
dispatch(getCoreProtectionStatusBatch(core, accBatch)),
- batch
+ batch,
);
const getCoreInfoBatch =
(
core: DeviceCore,
defaultCoreInfo: CoreDefinition,
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
dispatch =>
batch.getCoreInfo(
@@ -593,32 +593,32 @@ const getCoreInfoBatch =
updateCoreInfos({
[core]: mergeNrfutilDeviceInfoInCoreDefinition(
defaultCoreInfo,
- coreInfo
+ coreInfo,
),
- })
+ }),
);
}
dispatch(updateCoreOperations({ core, state: 'idle' }));
- }
- )
+ },
+ ),
);
const getAllCoreInfoBatch =
(
checkProtection: boolean,
- batch = NrfutilDeviceLib.batch()
+ batch = NrfutilDeviceLib.batch(),
): AppThunk =>
(dispatch, getState) => {
const currentDeviceDefinition = getDeviceDefinition(getState());
return convertDeviceDefinitionToCoreArray(
- currentDeviceDefinition
+ currentDeviceDefinition,
).reduce((accBatch, coreInfo) => {
if (
checkProtection &&
coreInfo.coreProtection !== 'NRFDL_PROTECTION_STATUS_NONE'
) {
logger.info(
- `Skipping reading core ${coreInfo.name} information as it is protected.`
+ `Skipping reading core ${coreInfo.name} information as it is protected.`,
);
return accBatch;
}
@@ -629,8 +629,8 @@ const getAllCoreInfoBatch =
currentDeviceDefinition.coreDefinitions[
coreInfo.name
] as CoreDefinition,
- accBatch
- )
+ accBatch,
+ ),
);
}, batch);
};
diff --git a/src/actions/mcubootTargetActions.ts b/src/actions/mcubootTargetActions.ts
index f7f44428..33303494 100644
--- a/src/actions/mcubootTargetActions.ts
+++ b/src/actions/mcubootTargetActions.ts
@@ -63,7 +63,7 @@ export const performUpdate = async (
dfuFilePath: string,
onProgress: (progress: Progress) => void,
abortController: AbortController,
- programmingOptions?: ProgrammingOptions
+ programmingOptions?: ProgrammingOptions,
) => {
logger.info(`Writing ${dfuFilePath} to device ${device.serialNumber}`);
@@ -75,7 +75,7 @@ export const performUpdate = async (
onProgress,
undefined,
programmingOptions,
- abortController
+ abortController,
);
logger.info('MCUboot DFU completed successfully!');
} catch (e) {
diff --git a/src/actions/modemTargetActions.ts b/src/actions/modemTargetActions.ts
index 18544db9..4cb18fcb 100644
--- a/src/actions/modemTargetActions.ts
+++ b/src/actions/modemTargetActions.ts
@@ -16,7 +16,7 @@ export const performUpdate = async (
device: Device,
fileName: string,
onProgress: (progress: Progress) => void,
- abortController: AbortController
+ abortController: AbortController,
) => {
logger.info('Modem DFU starts to write...');
logger.info(`Writing ${fileName} to device ${device.serialNumber || ''}`);
@@ -28,7 +28,7 @@ export const performUpdate = async (
onProgress,
undefined,
undefined,
- abortController
+ abortController,
);
logger.info('Modem DFU completed successfully!');
diff --git a/src/actions/targetActions.ts b/src/actions/targetActions.ts
index 61b8bef6..59749af4 100644
--- a/src/actions/targetActions.ts
+++ b/src/actions/targetActions.ts
@@ -28,29 +28,29 @@ export const openDevice =
try {
if (device.traits.jlink) {
await dispatch(
- jlinkTargetActions.openDevice(device, abortController)
+ jlinkTargetActions.openDevice(device, abortController),
);
} else if (device.traits.mcuBoot) {
dispatch(mcubootTargetActions.openDevice(device));
} else if (device.traits.nordicDfu) {
dispatch(
- usbsdfuTargetActions.openDevice(device, abortController)
+ usbsdfuTargetActions.openDevice(device, abortController),
);
} else {
logger.warn('No operations possible for device.');
logger.warn(
- `If the device is a MCUboot device make sure it is in the bootloader mode`
+ `If the device is a MCUboot device make sure it is in the bootloader mode`,
);
if (process.platform === 'linux') {
logger.warn(
'If the device is a JLink device, please make sure J-Link Software and nrf-udev are installed. ' +
- 'See https://github.com/NordicSemiconductor/pc-nrfconnect-launcher/#macos-and-linux'
+ 'See https://github.com/NordicSemiconductor/pc-nrfconnect-launcher/#macos-and-linux',
);
}
if (process.platform === 'darwin') {
logger.warn(
'If the device is a JLink device, please make sure J-Link Software is installed. ' +
- 'See https://github.com/NordicSemiconductor/pc-nrfconnect-launcher/#macos-and-linux'
+ 'See https://github.com/NordicSemiconductor/pc-nrfconnect-launcher/#macos-and-linux',
);
}
}
diff --git a/src/actions/usbsdfuTargetActions.ts b/src/actions/usbsdfuTargetActions.ts
index c20d84ea..d1940140 100644
--- a/src/actions/usbsdfuTargetActions.ts
+++ b/src/actions/usbsdfuTargetActions.ts
@@ -70,7 +70,7 @@ export const openDevice =
dispatch => {
abortController = controller;
logger.info(
- 'Using nrfutil-device to communicate with target via USB SDFU protocol'
+ 'Using nrfutil-device to communicate with target via USB SDFU protocol',
);
const deviceInfo = getDeviceInfoByUSB(device);
@@ -86,7 +86,7 @@ export const refreshMemoryLayout =
updateCoreOperations({
core: 'Application',
state: 'reading',
- })
+ }),
);
dispatch(targetRegionsUnknown());
dispatch(
@@ -97,13 +97,13 @@ export const refreshMemoryLayout =
deviceInBootLoader,
undefined,
undefined,
- abortController
+ abortController,
);
dispatch(
updateCoreOperations({
core: 'Application',
state: 'idle',
- })
+ }),
);
const deviceInfo = getDeviceInfoByUSB(deviceInBootLoader);
dispatch(setDeviceDefinition(deviceInfo));
@@ -198,17 +198,17 @@ export const refreshMemoryLayout =
updateCoreOperations({
core: 'Application',
state: 'idle',
- })
+ }),
);
},
error => {
logger.error(
`Error when fetching device versions: ${describeError(
- error
- )}`
+ error,
+ )}`,
);
- }
- )
+ },
+ ),
);
};
@@ -219,21 +219,21 @@ export const resetDevice =
updateCoreOperations({
core: 'Application',
state: 'loading',
- })
+ }),
);
await NrfutilDeviceLib.reset(
device,
undefined,
undefined,
undefined,
- abortController
+ abortController,
);
logger.info(`Resetting device completed`);
dispatch(
updateCoreOperations({
core: 'Application',
state: 'idle',
- })
+ }),
);
};
@@ -309,7 +309,7 @@ export const canWrite = (): AppThunk => (dispatch, getState) => {
* @param {MemoryMap} image the input memory map
* @returns {Buffer} the calculated hash
*/
-const calculateSHA256Hash = (image = new Uint8Array()) => {
+const calculateSHA256Hash = (image: Uint8Array = new Uint8Array()) => {
const digest = Crypto.createHash('sha256');
digest.update(image);
return Buffer.from(digest.digest().reverse());
@@ -321,7 +321,7 @@ const calculateSHA256Hash = (image = new Uint8Array()) => {
* @param {MemoryMap} image the input memory map
* @returns {Buffer} the calculated hash
*/
-const calculateSHA512Hash = (image = new Uint8Array()) => {
+const calculateSHA512Hash = (image: Uint8Array = new Uint8Array()) => {
const digest = Crypto.createHash('sha512');
digest.update(image);
return Buffer.from(digest.digest().reverse());
@@ -338,7 +338,7 @@ const calculateSHA512Hash = (image = new Uint8Array()) => {
const handleImage = (
image: DfuImage,
regions: Region[],
- memMap: MemoryMap
+ memMap: MemoryMap,
): DfuImage => {
if (!image.initPacket) {
throw new Error('Init packet was not created.');
@@ -363,7 +363,7 @@ const handleImage = (
const firmwareImage = memMap.slicePad(
region?.startAddress as number,
- Math.ceil((region?.regionSize as number) / 4) * 4
+ Math.ceil((region?.regionSize as number) / 4) * 4,
);
return {
@@ -403,7 +403,7 @@ const handleHwVersion = (image: DfuImage, hwVersion: number): DfuImage => ({
const handleSdReq = (
image: DfuImage,
fileMemMap: MemoryMap,
- deviceInfo: DeviceDefinition
+ deviceInfo: DeviceDefinition,
): DfuImage => {
// If sdReq is already set, then do not handle it.
if (image.initPacket.sdReq && image.initPacket.sdReq.length > 0) {
@@ -421,7 +421,7 @@ const handleSdReq = (
const sdId = deviceInfo.coreDefinitions?.Application
? getSoftDeviceId(
fileMemMap,
- deviceInfo.coreDefinitions?.Application
+ deviceInfo.coreDefinitions?.Application,
)
: undefined;
sdReq = sdId ? [sdId] : undefined;
@@ -456,7 +456,7 @@ const handleUserInput =
const message =
'Please select the SoftDevice required by the application firmware:';
sdReq = await dispatch(
- userInputActions.getUserInput(message, NordicFwIds)
+ userInputActions.getUserInput(message, NordicFwIds),
);
sdReq = typeof sdReq === 'string' ? parseInt(sdReq, 16) : sdReq;
}
@@ -521,7 +521,7 @@ const nrfdlErrorSdfuExtSdVersionFailure = (error: unknown) =>
export const operateDFU = async (
device: Device,
inputDfuImages: DfuImage[],
- onProgress: (progress: Progress) => void
+ onProgress: (progress: Progress) => void,
) => {
const zipBuffer = await sdfuOperations.createDfuZipBuffer(inputDfuImages);
@@ -532,7 +532,7 @@ export const operateDFU = async (
onProgress,
undefined,
undefined,
- abortController
+ abortController,
);
logger.info('All dfu images have been written to the target device');
@@ -563,7 +563,7 @@ export const write =
const hwVersion = parseInt(
deviceDefinition.family?.slice(3) ?? '0',
- 10
+ 10,
);
let images = dfuImages
@@ -573,7 +573,7 @@ export const write =
.map(image => handleHash(image, HashType.SHA256));
images = await Promise.all(
- images.map(image => dispatch(handleUserInput(image)))
+ images.map(image => dispatch(handleUserInput(image))),
);
dispatch(setDFUImages(images));
diff --git a/src/actions/userInputActions.ts b/src/actions/userInputActions.ts
index bdd27bc0..c452bc65 100644
--- a/src/actions/userInputActions.ts
+++ b/src/actions/userInputActions.ts
@@ -18,7 +18,7 @@ let userInputCallback: ((input?: string) => void) | undefined;
export const getUserInput =
(
message: string,
- choices: Record
+ choices: Record,
): AppThunk> =>
dispatch =>
new Promise((resolve, reject) => {
diff --git a/src/components/ControlPanel.tsx b/src/components/ControlPanel.tsx
index 796df776..6549d32c 100644
--- a/src/components/ControlPanel.tsx
+++ b/src/components/ControlPanel.tsx
@@ -112,7 +112,7 @@ const Mru = ({ mruFiles }: { mruFiles: string[] }) => {
};
const containerNode = document.getElementsByClassName(
- 'core-main-layout'
+ 'core-main-layout',
)[0] as HTMLElement;
return (
@@ -178,7 +178,7 @@ const ControlPanel = () => {
const targetIsReady = !useSelector(getDeviceIsBusy) && !!device;
const coreInfos = convertDeviceDefinitionToCoreArray(deviceDefinition);
const canRead = !!coreInfos.find(
- coreInfo => coreInfo.coreProtection === 'NRFDL_PROTECTION_STATUS_NONE'
+ coreInfo => coreInfo.coreProtection === 'NRFDL_PROTECTION_STATUS_NONE',
);
const isMemLoaded = coreInfos.find(coreInfo => !!coreInfo.coreMemMap);
@@ -233,9 +233,9 @@ Closing application right now might result in some unknown behavior and might al
Are you sure you want to continue?`,
},
dispatch(
- jlinkTargetActions.recover(device)
- ).finally(() => dispatch(setDeviceBusy(false)))
- )
+ jlinkTargetActions.recover(device),
+ ).finally(() => dispatch(setDeviceBusy(false))),
+ ),
);
}}
disabled={
@@ -267,9 +267,9 @@ Closing application right now might result in some unknown behavior and might al
Are you sure you want to continue?`,
},
dispatch(
- jlinkTargetActions.recoverAndWrite(device)
- ).finally(() => dispatch(setDeviceBusy(false)))
- )
+ jlinkTargetActions.recoverAndWrite(device),
+ ).finally(() => dispatch(setDeviceBusy(false))),
+ ),
);
}}
disabled={
@@ -313,14 +313,14 @@ Are you sure you want to continue?`,
try {
if (isNordicDfu) {
await dispatch(
- usbsdfuTargetActions.resetDevice(device)
+ usbsdfuTargetActions.resetDevice(device),
);
} else {
await dispatch(
- jlinkTargetActions.resetDevice(device)
+ jlinkTargetActions.resetDevice(device),
);
}
- } catch (e) {
+ } catch {
/* empty */
}
dispatch(setDeviceBusy(false));
@@ -345,7 +345,7 @@ Are you sure you want to continue?`,
// Refresh all files in case that some files have been updated right before write action.
refreshAllFiles();
dispatch(targetActions.write(device));
- } catch (e) {
+ } catch {
/* empty */
}
dispatch(setDeviceBusy(false));
@@ -377,7 +377,7 @@ Are you sure you want to continue?`,
dispatch(setDeviceBusy(true));
try {
await dispatch(jlinkTargetActions.read(device));
- } catch (e) {
+ } catch {
/* empty */
}
dispatch(setDeviceBusy(false));
diff --git a/src/components/CoreView.tsx b/src/components/CoreView.tsx
index a2ae9c69..32ad4eb0 100644
--- a/src/components/CoreView.tsx
+++ b/src/components/CoreView.tsx
@@ -46,7 +46,7 @@ export default ({ coreInfo, active, regions = [] }: CoreViewProps) => {
hoverable
active={active}
width={regionSize}
- />
+ />,
);
}
@@ -57,7 +57,7 @@ export default ({ coreInfo, active, regions = [] }: CoreViewProps) => {
key={lastAddress}
coreInfo={coreInfo}
width={startAddress}
- />
+ />,
);
regionViews.push(
{
hoverable
active={active}
width={regionSize}
- />
+ />,
);
}
@@ -78,7 +78,7 @@ export default ({ coreInfo, active, regions = [] }: CoreViewProps) => {
key={lastAddress}
coreInfo={coreInfo}
width={startAddress - lastAddress}
- />
+ />,
);
regionViews.push(
@@ -88,7 +88,7 @@ export default ({ coreInfo, active, regions = [] }: CoreViewProps) => {
hoverable
active={active}
width={regionSize}
- />
+ />,
);
// Update lastAddress
@@ -101,7 +101,7 @@ export default ({ coreInfo, active, regions = [] }: CoreViewProps) => {
key={lastAddress}
coreInfo={coreInfo}
width={romBaseAddr + romSize - lastAddress}
- />
+ />,
);
// eslint-disable-next-line react/jsx-no-useless-fragment -- RegionViews is an array and requires a fragment
diff --git a/src/components/DeviceInfoView.tsx b/src/components/DeviceInfoView.tsx
index 110fbfa8..0be93757 100644
--- a/src/components/DeviceInfoView.tsx
+++ b/src/components/DeviceInfoView.tsx
@@ -40,7 +40,7 @@ const DeviceInfoView = () => {
{device.serialPorts.map(port =>
port.comName ? (
{port.comName}
- ) : null
+ ) : null,
)}
diff --git a/src/components/DeviceMemoryBoxView.tsx b/src/components/DeviceMemoryBoxView.tsx
index b6c33f42..04e70322 100644
--- a/src/components/DeviceMemoryBoxView.tsx
+++ b/src/components/DeviceMemoryBoxView.tsx
@@ -17,7 +17,7 @@ import DeviceMemoryView from './DeviceMemoryView';
const getTargetTitle = (
serialNumber: string | undefined | null,
- deviceDefinition: DeviceDefinition | undefined
+ deviceDefinition: DeviceDefinition | undefined,
) => {
if (serialNumber) {
return deviceDefinition?.type !== 'UNKNOWN' &&
diff --git a/src/components/DeviceMemoryView.tsx b/src/components/DeviceMemoryView.tsx
index 2a42597d..661d7f05 100644
--- a/src/components/DeviceMemoryView.tsx
+++ b/src/components/DeviceMemoryView.tsx
@@ -37,20 +37,20 @@ const allocateCores = (cores: CoreInfo[], regions: Region[]) =>
r.startAddress >= core.coreDefinitions.romBaseAddr &&
r.startAddress + r.regionSize <=
core.coreDefinitions.romBaseAddr +
- core.coreDefinitions.romSize
+ core.coreDefinitions.romSize,
),
}));
const convertCoresToViews = (
deviceDefinition: DeviceDefinition,
deviceRebooting: boolean,
- regions: Region[]
+ regions: Region[],
) => {
const coreInfos = convertDeviceDefinitionToCoreArray(deviceDefinition);
return allocateCores(coreInfos, regions)
.sort(
(a, b) =>
- b.coreDefinitions.romBaseAddr - a.coreDefinitions.romBaseAddr
+ b.coreDefinitions.romBaseAddr - a.coreDefinitions.romBaseAddr,
)
.map(c => ({
core: c,
@@ -206,7 +206,7 @@ export default () => {
{convertCoresToViews(
deviceDefinition,
waitingForDevice,
- targetRegions
+ targetRegions,
).map(coreView => (
r.startAddress >= core.coreDefinitions.romBaseAddr &&
r.startAddress + r.regionSize <=
core.coreDefinitions.romBaseAddr +
- core.coreDefinitions.romSize
+ core.coreDefinitions.romSize,
),
}));
const convertCoresToViews = (
deviceDefinition: DeviceDefinition,
- regions: Region[]
+ regions: Region[],
) => {
const coreInfos = convertDeviceDefinitionToCoreArray(deviceDefinition);
return allocateCores(coreInfos, regions)
.sort(
(a, b) =>
- b.coreDefinitions.romBaseAddr - a.coreDefinitions.romBaseAddr
+ b.coreDefinitions.romBaseAddr - a.coreDefinitions.romBaseAddr,
)
.map(c => ({
core: c,
@@ -89,15 +89,15 @@ export default () => {
coreInfo.romBaseAddr + coreInfo.romSize) ||
(r.startAddress >= coreInfo.uicrBaseAddr &&
r.startAddress + r.regionSize <=
- coreInfo.uicrBaseAddr + coreInfo.uicrSize)
+ coreInfo.uicrBaseAddr + coreInfo.uicrSize),
);
if (validRegions.length !== allRegions.length) {
dispatch(
fileWarningAdd(
'Part of the HEX regions are out of the device memory size, ' +
- 'but you can still proceed write operation'
- )
+ 'but you can still proceed write operation',
+ ),
);
}
@@ -105,7 +105,7 @@ export default () => {
r =>
r.startAddress >= coreInfo.romBaseAddr &&
r.startAddress + r.regionSize <=
- coreInfo.romBaseAddr + coreInfo.romSize
+ coreInfo.romBaseAddr + coreInfo.romSize,
);
})
.flat();
@@ -113,7 +113,7 @@ export default () => {
// Show file warning if overlapping.
if (validFileRegions.find(r => r.fileNames && r.fileNames.length > 1)) {
dispatch(
- fileWarningAdd('Some of the HEX files have overlapping data.')
+ fileWarningAdd('Some of the HEX files have overlapping data.'),
);
}
@@ -141,7 +141,7 @@ export default () => {
)}
- )
+ ),
)}
>
);
diff --git a/src/components/McuUpdateDialogView.tsx b/src/components/McuUpdateDialogView.tsx
index bc95bcba..b3c01588 100644
--- a/src/components/McuUpdateDialogView.tsx
+++ b/src/components/McuUpdateDialogView.tsx
@@ -99,7 +99,7 @@ const McuUpdateDialogView = () => {
const timeout =
getPersistentStore().get(
- `firmwareProgram:device:${device.serialNumber}`
+ `firmwareProgram:device:${device.serialNumber}`,
)?.netCoreUploadDelay ?? NET_CORE_UPLOAD_DELAY;
setUploadDelay(timeout);
@@ -139,7 +139,7 @@ const McuUpdateDialogView = () => {
Closing application right now might result in some unknown behavior and might also brick the device.
Are you sure you want to continue?`,
onClose: () => abortController.current.abort(),
- })
+ }),
);
reset();
@@ -150,7 +150,7 @@ Are you sure you want to continue?`,
timeout: 99999999999999, // Wait 'indefinitely' as we will cancel the wait when programming is complete
when: 'always',
once: false,
- })
+ }),
);
performUpdate(
@@ -176,7 +176,7 @@ Are you sure you want to continue?`,
? {
netCoreUploadDelay: uploadDelay,
}
- : undefined
+ : undefined,
)
.then(() => {
setWritingSucceed(true);
@@ -202,7 +202,7 @@ Are you sure you want to continue?`,
`firmwareProgram:device:${device.serialNumber}`,
{
netCoreUploadDelay: timeout,
- }
+ },
);
};
@@ -290,7 +290,7 @@ Are you sure you want to continue?`,
diff --git a/src/components/ModemUpdateDialogView.tsx b/src/components/ModemUpdateDialogView.tsx
index 280e32d9..61be8342 100644
--- a/src/components/ModemUpdateDialogView.tsx
+++ b/src/components/ModemUpdateDialogView.tsx
@@ -122,7 +122,7 @@ const ModemUpdateDialogView = () => {
Closing application right now might result in some unknown behavior and might also brick the device.
Are you sure you want to continue?`,
onClose: () => abortController.current.abort(),
- })
+ }),
);
setProgress(progress);
@@ -152,7 +152,7 @@ Are you sure you want to continue?`,
}
setProgress(updatedProgress);
},
- abortController.current
+ abortController.current,
)
.then(() => setWritingSucceed(true))
.catch(error => {
diff --git a/src/components/RegionView.tsx b/src/components/RegionView.tsx
index 2da8671c..d30f67d5 100644
--- a/src/components/RegionView.tsx
+++ b/src/components/RegionView.tsx
@@ -57,7 +57,7 @@ const RegionView = ({
className = fileNames.length > 1 ? `${className} crosses` : className;
const containerNode = document.getElementsByClassName(
- 'core-main-layout'
+ 'core-main-layout',
)[0] as HTMLElement;
return (
diff --git a/src/components/UsbSdfuUpdateDialog.tsx b/src/components/UsbSdfuUpdateDialog.tsx
index fa508ffc..c736e888 100644
--- a/src/components/UsbSdfuUpdateDialog.tsx
+++ b/src/components/UsbSdfuUpdateDialog.tsx
@@ -69,7 +69,7 @@ export default () => {
updateCoreOperations({
core: 'Application',
state: 'writing',
- })
+ }),
);
let canceled = false;
@@ -84,7 +84,7 @@ export default () => {
onCanceled: () => {
canceled = true;
},
- })
+ }),
);
setWriting(true);
@@ -94,7 +94,7 @@ export default () => {
message: `The device is being programmed.
Closing application right now might result in some unknown behavior and might also brick the device.
Are you sure you want to continue?`,
- })
+ }),
);
try {
@@ -134,14 +134,14 @@ Are you sure you want to continue?`,
once: true,
onSuccess: programmedDevice =>
dispatch(refreshMemoryLayout(programmedDevice)),
- })
+ }),
);
dispatch(
updateCoreOperations({
core: 'Application',
state: 'idle',
- })
+ }),
);
}
}, [device, dispatch, images]);
diff --git a/src/components/UserInputDialogView.tsx b/src/components/UserInputDialogView.tsx
index b23a5a00..826ec5b2 100644
--- a/src/components/UserInputDialogView.tsx
+++ b/src/components/UserInputDialogView.tsx
@@ -37,7 +37,7 @@ const UserInputDialogView = () => {
})),
{ value: 'Custom', label: 'Custom' },
],
- [choices]
+ [choices],
);
const [isValidInput, setIsValidInput] = useState(false);
@@ -100,7 +100,7 @@ const UserInputDialogView = () => {
items={choiceItems}
selectedItem={
choiceItems.find(
- item => item.value === selectedValue.value
+ item => item.value === selectedValue.value,
) ?? choiceItems[0]
}
onSelect={item => onSelectChoice(item)}
diff --git a/src/index.tsx b/src/index.tsx
index 70dc3379..3c22f4cd 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -28,5 +28,5 @@ render(
sidePanel={
}
panes={[{ name: 'Programmer', Main: AppMainView }]}
documentation={DocumentationSections}
- />
+ />,
);
diff --git a/src/reducers/deviceDefinitionReducer.ts b/src/reducers/deviceDefinitionReducer.ts
index 8551c935..68714230 100644
--- a/src/reducers/deviceDefinitionReducer.ts
+++ b/src/reducers/deviceDefinitionReducer.ts
@@ -47,7 +47,7 @@ const targetSlice = createSlice({
},
updateCoreInfos(
state,
- action: PayloadAction
>
+ action: PayloadAction>,
) {
state.coreDefinitions = {
...state.coreDefinitions,
@@ -59,7 +59,7 @@ const targetSlice = createSlice({
},
updateCoreOperations(
state,
- action: PayloadAction<{ core: DeviceCore; state: CoreState }>
+ action: PayloadAction<{ core: DeviceCore; state: CoreState }>,
) {
state.coreOperation = {
...state.coreOperation,
@@ -71,7 +71,7 @@ const targetSlice = createSlice({
},
updateCoreProtection(
state,
- action: PayloadAction>
+ action: PayloadAction>,
) {
state.coreProtection = {
...state.coreProtection,
diff --git a/src/reducers/userInputReducer.ts b/src/reducers/userInputReducer.ts
index a548ef96..63c3459e 100644
--- a/src/reducers/userInputReducer.ts
+++ b/src/reducers/userInputReducer.ts
@@ -31,7 +31,7 @@ const userInputSlice = createSlice({
reducers: {
userInputRequired(
state,
- action: PayloadAction
+ action: PayloadAction,
) {
state.isRequired = true;
state.message = action.payload.message;
diff --git a/src/useOpenFileFromArgs.ts b/src/useOpenFileFromArgs.ts
index a134bba4..82e5cf41 100644
--- a/src/useOpenFileFromArgs.ts
+++ b/src/useOpenFileFromArgs.ts
@@ -21,11 +21,11 @@ const openFileFromArgs = (): AppThunk => dispatch => {
if (fs.existsSync(filePath)) {
dispatch(fileActions.openFile(filePath));
logger.info(
- `Opening file ${filePath} (passed as argument to --filePath)`
+ `Opening file ${filePath} (passed as argument to --filePath)`,
);
} else {
logger.warn(
- `No file found at ${filePath} (passed as argument to --filePath)`
+ `No file found at ${filePath} (passed as argument to --filePath)`,
);
}
}
diff --git a/src/util/__tests__/regions-test.ts b/src/util/__tests__/regions-test.ts
index 6ac616ab..1f3d3ba2 100644
--- a/src/util/__tests__/regions-test.ts
+++ b/src/util/__tests__/regions-test.ts
@@ -48,19 +48,19 @@ describe('detect regions', () => {
const regionList = regions.generateFileRegions(memMaps, CoreDefinition);
expect(regionList.length).toEqual(1);
expect(
- regionList.find(r => r.name === regions.RegionName.MBR_OR_APP)
+ regionList.find(r => r.name === regions.RegionName.MBR_OR_APP),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.BOOTLOADER)
+ regionList.find(r => r.name === regions.RegionName.BOOTLOADER),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.SOFTDEVICE)
+ regionList.find(r => r.name === regions.RegionName.SOFTDEVICE),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.APPLICATION)
+ regionList.find(r => r.name === regions.RegionName.APPLICATION),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.NONE)
+ regionList.find(r => r.name === regions.RegionName.NONE),
).toBeUndefined();
});
@@ -71,19 +71,19 @@ describe('detect regions', () => {
const regionList = regions.generateFileRegions(memMaps, CoreDefinition);
expect(regionList.length).toEqual(2);
expect(
- regionList.find(r => r.name === regions.RegionName.BOOTLOADER)
+ regionList.find(r => r.name === regions.RegionName.BOOTLOADER),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.NONE)
+ regionList.find(r => r.name === regions.RegionName.NONE),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.MBR_OR_APP)
+ regionList.find(r => r.name === regions.RegionName.MBR_OR_APP),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.SOFTDEVICE)
+ regionList.find(r => r.name === regions.RegionName.SOFTDEVICE),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.APPLICATION)
+ regionList.find(r => r.name === regions.RegionName.APPLICATION),
).toBeUndefined();
});
@@ -94,19 +94,19 @@ describe('detect regions', () => {
const regionList = regions.generateFileRegions(memMaps, CoreDefinition);
expect(regionList.length).toEqual(2);
expect(
- regionList.find(r => r.name === regions.RegionName.MBR_OR_APP)
+ regionList.find(r => r.name === regions.RegionName.MBR_OR_APP),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.SOFTDEVICE)
+ regionList.find(r => r.name === regions.RegionName.SOFTDEVICE),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.BOOTLOADER)
+ regionList.find(r => r.name === regions.RegionName.BOOTLOADER),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.APPLICATION)
+ regionList.find(r => r.name === regions.RegionName.APPLICATION),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.NONE)
+ regionList.find(r => r.name === regions.RegionName.NONE),
).toBeUndefined();
});
@@ -117,19 +117,19 @@ describe('detect regions', () => {
const regionList = regions.generateFileRegions(memMaps, CoreDefinition);
expect(regionList.length).toEqual(2);
expect(
- regionList.find(r => r.name === regions.RegionName.APPLICATION)
+ regionList.find(r => r.name === regions.RegionName.APPLICATION),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.MBR_OR_APP)
+ regionList.find(r => r.name === regions.RegionName.MBR_OR_APP),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.SOFTDEVICE)
+ regionList.find(r => r.name === regions.RegionName.SOFTDEVICE),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.BOOTLOADER)
+ regionList.find(r => r.name === regions.RegionName.BOOTLOADER),
).toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.NONE)
+ regionList.find(r => r.name === regions.RegionName.NONE),
).toBeUndefined();
});
@@ -145,19 +145,19 @@ describe('detect regions', () => {
const regionList = regions.generateFileRegions(memMaps, CoreDefinition);
expect(regionList.length).toEqual(4);
expect(
- regionList.find(r => r.name === regions.RegionName.MBR_OR_APP)
+ regionList.find(r => r.name === regions.RegionName.MBR_OR_APP),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.SOFTDEVICE)
+ regionList.find(r => r.name === regions.RegionName.SOFTDEVICE),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.BOOTLOADER)
+ regionList.find(r => r.name === regions.RegionName.BOOTLOADER),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.NONE)
+ regionList.find(r => r.name === regions.RegionName.NONE),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.APPLICATION)
+ regionList.find(r => r.name === regions.RegionName.APPLICATION),
).toBeUndefined();
});
@@ -176,19 +176,19 @@ describe('detect regions', () => {
const regionList = regions.generateFileRegions(memMaps, CoreDefinition);
expect(regionList.length).toEqual(6);
expect(
- regionList.find(r => r.name === regions.RegionName.MBR_OR_APP)
+ regionList.find(r => r.name === regions.RegionName.MBR_OR_APP),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.SOFTDEVICE)
+ regionList.find(r => r.name === regions.RegionName.SOFTDEVICE),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.BOOTLOADER)
+ regionList.find(r => r.name === regions.RegionName.BOOTLOADER),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.APPLICATION)
+ regionList.find(r => r.name === regions.RegionName.APPLICATION),
).not.toBeUndefined();
expect(
- regionList.find(r => r.name === regions.RegionName.NONE)
+ regionList.find(r => r.name === regions.RegionName.NONE),
).not.toBeUndefined();
});
});
diff --git a/src/util/devices.ts b/src/util/devices.ts
index b95799e6..9ea53dc5 100644
--- a/src/util/devices.ts
+++ b/src/util/devices.ts
@@ -215,7 +215,7 @@ export const ModemProductIds = [
export const getDeviceDefinition = (type: string): DeviceDefinition => {
const predefined = deviceDefinitions.find((device: DeviceDefinition) =>
- device?.type?.toLowerCase().includes(type.toLowerCase())
+ device?.type?.toLowerCase().includes(type.toLowerCase()),
);
return {
...(predefined ?? defaultDeviceDefinition),
@@ -224,10 +224,10 @@ export const getDeviceDefinition = (type: string): DeviceDefinition => {
};
const getDeviceDefinitionByFamily = (
- family: DeviceFamily
+ family: DeviceFamily,
): DeviceDefinition => {
const predefined = deviceDefinitions.find(
- device => device.family === family
+ device => device.family === family,
);
return (
@@ -244,9 +244,9 @@ const getProductId = (device: NrfutilDevice) => {
return parseInt(
device.serialPorts.reduce(
(m, p) => (p.vendorId === '1915' ? p.productId : '') || m,
- ''
+ '',
),
- 16
+ 16,
);
};
@@ -255,7 +255,7 @@ const identifyUsbByVersion = (deviceInfo?: DeviceInfo) => {
return null;
return getDeviceDefinition(
- deviceInfo?.hwInfo.deviceVersion.slice(0, 8) // example 'NRF52840_AAD0'
+ deviceInfo?.hwInfo.deviceVersion.slice(0, 8), // example 'NRF52840_AAD0'
);
};
@@ -278,7 +278,7 @@ const identifyUsbBySerialPort = (device: NrfutilDevice) => {
// Get device info by calling version command
export const getDeviceInfoByUSB = (
device: NrfutilDevice,
- deviceInfo?: DeviceInfo
+ deviceInfo?: DeviceInfo,
) =>
identifyUsbByVersion(deviceInfo) ||
identifyUsbBySerialPort(device) ||
@@ -286,7 +286,7 @@ export const getDeviceInfoByUSB = (
// Get default device info from jLink family
export const getDefaultDeviceInfoByJlinkFamily = (
- deviceInfo?: DeviceInfo
+ deviceInfo?: DeviceInfo,
): DeviceDefinition => {
const type = deviceInfo?.jlink?.deviceVersion ?? DeviceFamily.UNKNOWN;
const family = deviceInfo?.jlink
@@ -311,7 +311,7 @@ export const getDefaultDeviceInfoByJlinkFamily = (
export const mergeNrfutilDeviceInfoInCoreDefinition = (
existingDefinition: CoreDefinition,
- inputCoreInfo: DeviceCoreInfo
+ inputCoreInfo: DeviceCoreInfo,
): CoreDefinition => ({
...existingDefinition,
romBaseAddr: inputCoreInfo.codeAddress,
@@ -323,13 +323,13 @@ export const mergeNrfutilDeviceInfoInCoreDefinition = (
export const generateMergedMemMap = (deviceDefinition: DeviceDefinition) => {
const coreMemMaps = convertDeviceDefinitionToCoreArray(
- deviceDefinition
+ deviceDefinition,
).map(deviceInfo => deviceInfo.coreMemMap ?? new MemoryMap([]));
return MemoryMap.flattenOverlaps(
MemoryMap.overlapMemoryMaps(
- coreMemMaps.filter(m => m).map(m => ['', m])
- )
+ coreMemMaps.filter(m => m).map(m => ['', m]),
+ ),
);
};
@@ -338,7 +338,7 @@ export type CoreInfo = ReturnType<
>[number];
export const convertDeviceDefinitionToCoreArray = (
- deviceDefinition: DeviceDefinition
+ deviceDefinition: DeviceDefinition,
) =>
Object.keys(deviceDefinition.coreDefinitions).map(core => ({
name: core as DeviceCore,
diff --git a/src/util/regions.ts b/src/util/regions.ts
index 4bbbaf3e..5dbb6244 100644
--- a/src/util/regions.ts
+++ b/src/util/regions.ts
@@ -56,8 +56,8 @@ export enum RegionColor {
BOOTLOADER = '#E91E63',
SOFTDEVICE = '#3F51B5',
APPLICATION = ' #4CAF50',
- UICR = '#333F48',
- NONE = '#333F48',
+ UICR = '#333F48', // eslint-disable-line @typescript-eslint/no-duplicate-enum-values -- FIXME: Using an enum is wrong here and could potantially lead to bugs because RegionColor.UICR === RegionColor.NONE is true. Will be fixed later.
+ NONE = '#333F48', // eslint-disable-line @typescript-eslint/no-duplicate-enum-values
}
/**
@@ -162,7 +162,7 @@ const knownSoftDevices: { [key: number]: string } = {
const isRegionInRange = (
region: Region,
startAddr: number,
- endAddr: number
+ endAddr: number,
): boolean =>
region.startAddress >= startAddr &&
region.startAddress + region.regionSize <= endAddr;
@@ -177,18 +177,18 @@ const isRegionInRange = (
*/
const isRegionInCore = (
region: Region,
- coreDefinition: CoreDefinition
+ coreDefinition: CoreDefinition,
): boolean => {
const { romBaseAddr, romSize, pageSize, uicrBaseAddr } = coreDefinition;
const isInRange = isRegionInRange(
region,
romBaseAddr,
- romBaseAddr + romSize
+ romBaseAddr + romSize,
);
const isUicr = isRegionInRange(
region,
uicrBaseAddr,
- uicrBaseAddr + pageSize
+ uicrBaseAddr + pageSize,
);
return isInRange || isUicr;
};
@@ -202,12 +202,12 @@ const isRegionInCore = (
*/
export const getBootloaderRegion = (
memMap: MemoryMap,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): Region | undefined => {
const { uicrBaseAddr, blAddrOffset } = coreDefinitions;
const bootloaderAddress = memMap.getUint32(
uicrBaseAddr + blAddrOffset,
- true
+ true,
);
if (
bootloaderAddress &&
@@ -237,7 +237,7 @@ export const getBootloaderRegion = (
*/
export const getMBRParamsRegion = (
memMap: MemoryMap,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): Region | undefined => {
const { uicrBaseAddr, mbrParamsOffset } = coreDefinitions;
const mbrParamsAddr = uicrBaseAddr + mbrParamsOffset;
@@ -266,7 +266,7 @@ export const getMBRParamsRegion = (
*/
export const getMBRRegion = (
memMap: MemoryMap,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): Region | undefined => {
const { romBaseAddr } = coreDefinitions;
const mbr = memMap.getUint32(romBaseAddr, true);
@@ -294,7 +294,7 @@ export const getMBRRegion = (
*/
export const getSoftDeviceRegion = (
memMap: MemoryMap,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): Region | undefined => {
const { pageSize } = coreDefinitions;
for (
@@ -336,7 +336,7 @@ export const getSoftDeviceRegion = (
*/
export const getSoftDeviceId = (
memMap: MemoryMap,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): number | undefined => {
const { pageSize } = coreDefinitions;
let fwId;
@@ -350,7 +350,7 @@ export const getSoftDeviceId = (
undefined;
const softdeviceFwIdBit = memMap.getUint32(
address + SOFTDEVICE_FW_ID_OFFSET,
- true
+ true,
);
if (
softdeviceMagicNumber === SOFTDEVICE_MAGIC_NUMBER &&
@@ -373,7 +373,7 @@ export const getSoftDeviceId = (
*/
export const logSoftDeviceRegion = (
memMap: MemoryMap,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
) => {
const { pageSize } = coreDefinitions;
for (
@@ -383,7 +383,7 @@ export const logSoftDeviceRegion = (
) {
const softdeviceMagicNumber = memMap.getUint32(
address + SOFTDEVICE_MAGIC_OFFSET,
- true
+ true,
);
if (softdeviceMagicNumber === SOFTDEVICE_MAGIC_NUMBER) {
const infoBlockSizeBit = memMap.getUint32(address, true);
@@ -393,7 +393,7 @@ export const logSoftDeviceRegion = (
const fwIdBit = memMap.getUint32(
address + SOFTDEVICE_FW_ID_OFFSET,
- true
+ true,
);
const fwId: number = fwIdBit ? fwIdBit & 0x0000ffff : 0;
if (fwId === 0) {
@@ -404,32 +404,32 @@ export const logSoftDeviceRegion = (
if (infoBlockSize && infoBlockSize >= 0x18) {
const softDeviceId = memMap.getUint32(
address + SOFTDEVICE_ID_OFFSET,
- true
+ true,
);
const softDeviceVersion = memMap.getUint32(
address + SOFTDEVICE_VERSION_OFFSET,
- true
+ true,
);
if (softDeviceVersion === 0) {
logger.info(
`SoftDevice detected, id ${hexpad2(
- fwId
- )} (S${softDeviceId} prerelease)`
+ fwId,
+ )} (S${softDeviceId} prerelease)`,
);
return;
}
if (softDeviceVersion) {
const softDeviceVersionMajor = Math.floor(
- (softDeviceVersion / 1000000) % 1000
+ (softDeviceVersion / 1000000) % 1000,
);
const softDeviceVersionMinor = Math.floor(
- (softDeviceVersion / 1000) % 1000
+ (softDeviceVersion / 1000) % 1000,
);
const softDeviceVersionPatch = softDeviceVersion % 1000;
logger.info(
`SoftDevice detected, id ${hexpad2(
- fwId
- )} (S${softDeviceId} v${softDeviceVersionMajor}.${softDeviceVersionMinor}.${softDeviceVersionPatch})`
+ fwId,
+ )} (S${softDeviceId} v${softDeviceVersionMajor}.${softDeviceVersionMinor}.${softDeviceVersionPatch})`,
);
return;
}
@@ -438,7 +438,7 @@ export const logSoftDeviceRegion = (
logger.info(
`SoftDevice detected, id ${hexpad2(fwId)} (${
knownSoftDevices[fwId]
- })`
+ })`,
);
return;
}
@@ -459,7 +459,7 @@ export const logSoftDeviceRegion = (
*/
export const getMemoryRegions = (
memMap: MemoryMap,
- coreDefinition: CoreDefinition
+ coreDefinition: CoreDefinition,
): Region[] => {
let regions: Region[] = [];
let region;
@@ -488,7 +488,7 @@ export const getMemoryRegions = (
*/
const getRegionsFromOverlaps = (
overlaps: Overlaps,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): Region[] => {
const memMap = MemoryMap.flattenOverlaps(overlaps);
const memRegions = getMemoryRegions(memMap, coreDefinitions);
@@ -617,7 +617,7 @@ const getRegionsFromOverlaps = (
*/
export const generateFileRegions = (
memMaps: MemoryMaps,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): Region[] => {
logger.info('Parse memory regions for file');
const overlaps = MemoryMap.overlapMemoryMaps(memMaps);
@@ -629,7 +629,7 @@ export const generateFileRegions = (
export const getCoreRegions = (
memMap: MemoryMap,
name: DeviceCore,
- coreDefinitions: CoreDefinition
+ coreDefinitions: CoreDefinition,
): Region[] => {
logger.info(`Parse memory regions for ${name} core`);
const overlaps = MemoryMap.overlapMemoryMaps([['', memMap]]);
@@ -649,7 +649,7 @@ export const getCoreRegions = (
*/
export const getTargetRegions = (
memMap: MemoryMap,
- deviceDefinition: DeviceDefinition
+ deviceDefinition: DeviceDefinition,
): Region[] => {
let regions: Region[] = [];
convertDeviceDefinitionToCoreArray(deviceDefinition).forEach(c => {
diff --git a/src/util/usbsdfuHelpers.ts b/src/util/usbsdfuHelpers.ts
index ee26ed2e..f5e66ca0 100644
--- a/src/util/usbsdfuHelpers.ts
+++ b/src/util/usbsdfuHelpers.ts
@@ -33,10 +33,10 @@ export const generateRegionDetectedNames = (fileRegions: Region[]) => {
// (Or fix getting softdevice id from bootloader)
export const generateFileAppRegions = (
fileRegions: Region[],
- targetRegions: Region[]
+ targetRegions: Region[],
) => {
const targetBootloaderRegion = targetRegions?.find(
- r => r.name === RegionName.BOOTLOADER
+ r => r.name === RegionName.BOOTLOADER,
);
let appStartAddress: number | undefined;
@@ -94,11 +94,11 @@ export const generateFileAppRegions = (
// Regard the Bootloader as a whole when there are gaps found in the Bootloader
export const generateFileBlRegion = (
fileRegions: Region[],
- deviceDefinition: DeviceDefinition
+ deviceDefinition: DeviceDefinition,
) => {
const coreInfos = convertDeviceDefinitionToCoreArray(deviceDefinition);
const blRegions = fileRegions.filter(
- region => region.name === RegionName.BOOTLOADER
+ region => region.name === RegionName.BOOTLOADER,
);
blRegions.forEach(blRegion => {
@@ -109,7 +109,7 @@ export const generateFileBlRegion = (
blStartAddress >= core.coreDefinitions.romBaseAddr &&
blStartAddress <
core.coreDefinitions.romBaseAddr +
- core.coreDefinitions.romSize
+ core.coreDefinitions.romSize,
)?.coreDefinitions.romSize;
fileRegions.forEach(r => {
diff --git a/tsconfig.json b/tsconfig.json
index 8417f6b6..5a2b21c9 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,3 @@
{
- "extends": "@nordicsemiconductor/pc-nrfconnect-shared/config/tsconfig.json",
- "compilerOptions": {
- "typeRoots": ["./types", "./node_modules/@types"]
- }
+ "extends": "@nordicsemiconductor/pc-nrfconnect-shared/config/tsconfig.json"
}