diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md
index db9a7f184..626ab2ca0 100644
--- a/CHANGELOG_LATEST.md
+++ b/CHANGELOG_LATEST.md
@@ -21,6 +21,7 @@
- Added scripts for OTA (scripts/upload.py and upload_cli.py) [#1738](https://github.com/emsesp/EMS-ESP32/issues/1738)
- timeout for remote thermostat emulation [#1680](https://github.com/emsesp/EMS-ESP32/discussions/1680), [#1774](https://github.com/emsesp/EMS-ESP32/issues/1774)
- seltemp/mode for CR120 [#1779](https://github.com/emsesp/EMS-ESP32/discussions/1779)
+- Modules - external linkable module library [#1778](https://github.com/emsesp/EMS-ESP32/issues/1778)
## Fixed
diff --git a/Makefile b/Makefile
index 544cafd6f..842452e02 100644
--- a/Makefile
+++ b/Makefile
@@ -29,8 +29,7 @@ CHECKFLAGS = -q --force --std=c++11
# Languages Standard
#----------------------------------------------------------------------
C_STANDARD := -std=c17
-# CXX_STANDARD := -std=c++17
-CXX_STANDARD := -std=gnu++11
+CXX_STANDARD := -std=gnu++14
# C_STANDARD := -std=c11
# CXX_STANDARD := -std=c++11
@@ -38,7 +37,7 @@ CXX_STANDARD := -std=gnu++11
#----------------------------------------------------------------------
# Defined Symbols
#----------------------------------------------------------------------
-DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_PROGMEM=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0
+DEFINES += -DARDUINOJSON_ENABLE -DARDUINOJSON_ENABLE_ARDUINO_STRING -DARDUINOJSON_USE_DOUBLE=0
DEFINES += -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST -D__linux__ -DEMC_RX_BUFFER_SIZE=1500
DEFINES += $(ARGS)
diff --git a/interface/package.json b/interface/package.json
index cbcea20f5..be3f07805 100644
--- a/interface/package.json
+++ b/interface/package.json
@@ -23,18 +23,18 @@
},
"dependencies": {
"@alova/adapter-xhr": "^1.0.6",
- "@alova/scene-react": "^1.5.0",
+ "@alova/scene-react": "^1.6.1",
"@emotion/react": "^11.11.4",
"@emotion/styled": "^11.11.5",
- "@mui/icons-material": "^5.15.18",
- "@mui/material": "^5.15.18",
+ "@mui/icons-material": "^5.15.20",
+ "@mui/material": "^5.15.20",
"@table-library/react-table-library": "4.1.7",
"@types/lodash-es": "^4.17.12",
- "@types/node": "^20.12.12",
- "@types/react": "^18.3.2",
+ "@types/node": "^20.14.2",
+ "@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
"@types/react-router-dom": "^5.3.3",
- "alova": "^2.20.5",
+ "alova": "^2.21.3",
"async-validator": "^4.2.5",
"history": "^5.3.0",
"jwt-decode": "^4.0.0",
@@ -50,21 +50,21 @@
"typescript": "^5.4.5"
},
"devDependencies": {
- "@babel/core": "^7.24.5",
- "@eslint/js": "^9.3.0",
+ "@babel/core": "^7.24.7",
+ "@eslint/js": "^9.5.0",
"@preact/compat": "^17.1.2",
"@preact/preset-vite": "^2.8.2",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/babel__core": "^7",
"concurrently": "^8.2.2",
- "eslint": "^9.3.0",
+ "eslint": "^9.5.0",
"eslint-config-prettier": "^9.1.0",
"preact": "^10.22.0",
- "prettier": "^3.2.5",
+ "prettier": "^3.3.2",
"rollup-plugin-visualizer": "^5.12.0",
- "terser": "^5.31.0",
- "typescript-eslint": "^7.9.0",
- "vite": "^5.2.11",
+ "terser": "^5.31.1",
+ "typescript-eslint": "^7.13.0",
+ "vite": "^5.3.1",
"vite-plugin-imagemin": "^0.6.1",
"vite-tsconfig-paths": "^4.3.2"
},
diff --git a/interface/src/AuthenticatedRouting.tsx b/interface/src/AuthenticatedRouting.tsx
index 3b5344168..4be4fcd42 100644
--- a/interface/src/AuthenticatedRouting.tsx
+++ b/interface/src/AuthenticatedRouting.tsx
@@ -16,6 +16,7 @@ import ApplicationSettings from 'project/ApplicationSettings';
import CustomEntities from 'project/CustomEntities';
import Customization from 'project/Customization';
import Devices from 'project/Devices';
+import Modules from 'project/Modules';
import Scheduler from 'project/Scheduler';
import Sensors from 'project/Sensors';
@@ -43,6 +44,7 @@ const AuthenticatedRouting: FC = () => {
} />
} />
} />
+ } />
} />
} />
>
diff --git a/interface/src/framework/Settings.tsx b/interface/src/framework/Settings.tsx
index 7e771ba09..1d17db0fb 100644
--- a/interface/src/framework/Settings.tsx
+++ b/interface/src/framework/Settings.tsx
@@ -9,6 +9,7 @@ import SettingsBackupRestoreIcon from '@mui/icons-material/SettingsBackupRestore
import SettingsEthernetIcon from '@mui/icons-material/SettingsEthernet';
import SettingsInputAntennaIcon from '@mui/icons-material/SettingsInputAntenna';
import TuneIcon from '@mui/icons-material/Tune';
+import ViewModuleIcon from '@mui/icons-material/ViewModule';
import {
Box,
Button,
@@ -122,6 +123,14 @@ const Settings: FC = () => {
to="security"
/>
+
+
{
}
};
+ const networkStatusHighlight = () => {
+ switch (data.network_status) {
+ case NetworkConnectionStatus.WIFI_STATUS_IDLE:
+ case NetworkConnectionStatus.WIFI_STATUS_DISCONNECTED:
+ case NetworkConnectionStatus.WIFI_STATUS_NO_SHIELD:
+ return theme.palette.info.main;
+ case NetworkConnectionStatus.WIFI_STATUS_CONNECTED:
+ case NetworkConnectionStatus.ETHERNET_STATUS_CONNECTED:
+ return theme.palette.success.main;
+ case NetworkConnectionStatus.WIFI_STATUS_CONNECT_FAILED:
+ case NetworkConnectionStatus.WIFI_STATUS_CONNECTION_LOST:
+ return theme.palette.error.main;
+ default:
+ return theme.palette.warning.main;
+ }
+ };
+
+ const networkStatus = () => {
+ switch (data.network_status) {
+ case NetworkConnectionStatus.WIFI_STATUS_NO_SHIELD:
+ return LL.INACTIVE(1);
+ case NetworkConnectionStatus.WIFI_STATUS_IDLE:
+ return LL.IDLE();
+ case NetworkConnectionStatus.WIFI_STATUS_NO_SSID_AVAIL:
+ return 'No SSID Available';
+ case NetworkConnectionStatus.WIFI_STATUS_CONNECTED:
+ return LL.CONNECTED(0) + ' (WiFi, ' + data.wifi_rssi + ' dBm)';
+ case NetworkConnectionStatus.ETHERNET_STATUS_CONNECTED:
+ return LL.CONNECTED(0) + ' (Ethernet)';
+ case NetworkConnectionStatus.WIFI_STATUS_CONNECT_FAILED:
+ return LL.CONNECTED(1) + ' ' + LL.FAILED(0);
+ case NetworkConnectionStatus.WIFI_STATUS_CONNECTION_LOST:
+ return LL.CONNECTED(1) + ' ' + LL.LOST();
+ case NetworkConnectionStatus.WIFI_STATUS_DISCONNECTED:
+ return LL.DISCONNECTED();
+ default:
+ return LL.UNKNOWN();
+ }
+ };
+
const activeHighlight = (value: boolean) =>
value ? theme.palette.success.main : theme.palette.info.main;
@@ -247,7 +289,7 @@ const SystemStatus: FC = () => {
variant="outlined"
onClick={restart}
disabled={processing}
- color="primary"
+ color="error"
>
{LL.RESTART()}
@@ -256,7 +298,7 @@ const SystemStatus: FC = () => {
variant="outlined"
onClick={partition}
disabled={processing}
- color="primary"
+ color="warning"
>
EMS-ESP Loader
@@ -296,7 +338,7 @@ const SystemStatus: FC = () => {
}
variant="outlined"
- color="primary"
+ color="error"
onClick={() => setConfirmRestart(true)}
>
{LL.RESTART()}
@@ -355,6 +397,20 @@ const SystemStatus: FC = () => {
/>
+
+
+
{
onGetAPI((event) => {
saveFile(
event.data,
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
+
event.sendArgs[0].device + '_' + event.sendArgs[0].entity + '.txt'
);
});
diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts
index 997b7c0c5..3d9400fac 100644
--- a/interface/src/i18n/de/index.ts
+++ b/interface/src/i18n/de/index.ts
@@ -325,7 +325,10 @@ const de: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
- MODULES: 'Module'
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default de;
diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts
index 6ec03e659..8d75dc146 100644
--- a/interface/src/i18n/en/index.ts
+++ b/interface/src/i18n/en/index.ts
@@ -325,7 +325,10 @@ const en: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings',
SECURITY_1: 'Add or remove users',
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware',
- MODULES: 'Modules'
+ MODULES: 'Modules',
+ MODULES_UPDATED: 'Modules updated',
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules',
+ MODULES_NONE: 'No external modules detected'
};
export default en;
diff --git a/interface/src/i18n/fr/index.ts b/interface/src/i18n/fr/index.ts
index aba301957..0d46fcbe9 100644
--- a/interface/src/i18n/fr/index.ts
+++ b/interface/src/i18n/fr/index.ts
@@ -325,7 +325,10 @@ const fr: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
- MODULES: 'Modules' // TODO translate
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default fr;
diff --git a/interface/src/i18n/it/index.ts b/interface/src/i18n/it/index.ts
index 94bde5c65..280ec5f91 100644
--- a/interface/src/i18n/it/index.ts
+++ b/interface/src/i18n/it/index.ts
@@ -325,7 +325,10 @@ const it: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
- MODULES: 'Modules' // TODO translate
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default it;
diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts
index 17e84ad86..99d20a731 100644
--- a/interface/src/i18n/nl/index.ts
+++ b/interface/src/i18n/nl/index.ts
@@ -325,7 +325,10 @@ const nl: Translation = {
APPLICATION_SETTINGS_1: 'Applicatie-instellingen wijzigen',
SECURITY_1: 'Gebruikers toevoegen of verwijderen',
UPLOAD_DOWNLOAD_1: 'Upload-/downloadinstellingen en firmware',
- MODULES: 'Modules'
+ MODULES: 'Module',
+ MODULES_UPDATED: 'Modules geüpdatet',
+ MODULES_DESCRIPTION: 'Klik op de module om EMS-ESP library modules te activeren of te deactiveren',
+ MODULES_NONE: 'Geen externe modules gedetecteerd'
};
export default nl;
diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts
index 3fb882d7e..33d548bce 100644
--- a/interface/src/i18n/no/index.ts
+++ b/interface/src/i18n/no/index.ts
@@ -325,7 +325,10 @@ const no: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
- MODULES: 'Modules' // TODO translate
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default no;
diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts
index acca97553..e31b8ff60 100644
--- a/interface/src/i18n/pl/index.ts
+++ b/interface/src/i18n/pl/index.ts
@@ -325,7 +325,10 @@ const pl: BaseTranslation = {
APPLICATION_SETTINGS_1: 'Modyfikacja ustawień aplikacji EMS-ESP',
SECURITY_1: 'Dodawanie i usuwanie użytkowników',
UPLOAD_DOWNLOAD_1: 'Wysyłanie/pobieranie ustawień i firmware',
- MODULES: 'Moduły'
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default pl;
diff --git a/interface/src/i18n/sk/index.ts b/interface/src/i18n/sk/index.ts
index 5d590d9d3..c4c65ce65 100644
--- a/interface/src/i18n/sk/index.ts
+++ b/interface/src/i18n/sk/index.ts
@@ -325,7 +325,10 @@ const sk: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
- MODULES: 'Modules' // TODO translate
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default sk;
diff --git a/interface/src/i18n/sv/index.ts b/interface/src/i18n/sv/index.ts
index 13b6ce71b..5f06f30c8 100644
--- a/interface/src/i18n/sv/index.ts
+++ b/interface/src/i18n/sv/index.ts
@@ -325,7 +325,10 @@ const sv: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
- MODULES: 'Modules' // TODO translate
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default sv;
diff --git a/interface/src/i18n/tr/index.ts b/interface/src/i18n/tr/index.ts
index a276332aa..15c2b1e33 100644
--- a/interface/src/i18n/tr/index.ts
+++ b/interface/src/i18n/tr/index.ts
@@ -325,7 +325,10 @@ const tr: Translation = {
APPLICATION_SETTINGS_1: 'Modify EMS-ESP Application Settings', // TODO translate
SECURITY_1: 'Add or remove users', // TODO translate
UPLOAD_DOWNLOAD_1: 'Upload/Download Settings and Firmware', // TODO translate
- MODULES: 'Modules' // TODO translate
+ MODULES: 'Module', // TODO translate
+ MODULES_UPDATED: 'Modules updated', // TODO translate
+ MODULES_DESCRIPTION: 'Click on the Module to activate or de-activate EMS-ESP library modules', // TODO translate
+ MODULES_NONE: 'No external modules detected' // TODO translate
};
export default tr;
diff --git a/interface/src/project/Devices.tsx b/interface/src/project/Devices.tsx
index beb919ce1..be13882b1 100644
--- a/interface/src/project/Devices.tsx
+++ b/interface/src/project/Devices.tsx
@@ -270,7 +270,7 @@ const Devices: FC = () => {
async function onSelectChange(action: Action, state: State) {
setSelectedDevice(state.id as number);
if (action.type === 'ADD_BY_ID_EXCLUSIVELY') {
- await readDeviceData(state.id);
+ await readDeviceData(state.id as number);
}
}
@@ -417,7 +417,7 @@ const Devices: FC = () => {
const deviceValueDialogSave = async (devicevalue: DeviceValue) => {
const id = Number(device_select.state.id);
- await writeDeviceValue({ id, c: devicevalue.c, v: devicevalue.v })
+ await writeDeviceValue({ id, c: devicevalue.c ?? '', v: devicevalue.v })
.then(() => {
toast.success(LL.WRITE_CMD_SENT());
})
diff --git a/interface/src/project/Help.tsx b/interface/src/project/Help.tsx
index d724d3a2b..85be550ce 100644
--- a/interface/src/project/Help.tsx
+++ b/interface/src/project/Help.tsx
@@ -45,7 +45,6 @@ const Help: FC = () => {
);
anchor.download =
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
'emsesp_' + event.sendArgs[0].device + '_' + event.sendArgs[0].entity + '.txt';
anchor.click();
URL.revokeObjectURL(anchor.href);
diff --git a/interface/src/project/Modules.tsx b/interface/src/project/Modules.tsx
new file mode 100644
index 000000000..1ed80cdde
--- /dev/null
+++ b/interface/src/project/Modules.tsx
@@ -0,0 +1,274 @@
+import { useCallback, useState } from 'react';
+import type { FC } from 'react';
+import { useBlocker } from 'react-router-dom';
+import { toast } from 'react-toastify';
+
+import CancelIcon from '@mui/icons-material/Cancel';
+import CircleIcon from '@mui/icons-material/Circle';
+import WarningIcon from '@mui/icons-material/Warning';
+import { Box, Button, Typography } from '@mui/material';
+
+import {
+ Body,
+ Cell,
+ Header,
+ HeaderCell,
+ HeaderRow,
+ Row,
+ Table
+} from '@table-library/react-table-library/table';
+import { useTheme } from '@table-library/react-table-library/theme';
+import { updateState, useRequest } from 'alova';
+import {
+ BlockNavigation,
+ ButtonRow,
+ FormLoader,
+ SectionContent,
+ useLayoutTitle
+} from 'components';
+import { useI18nContext } from 'i18n/i18n-react';
+
+import * as EMSESP from './api';
+import ModulesDialog from './ModulesDialog';
+import type { ModuleItem, Modules } from './types';
+
+const Modules: FC = () => {
+ const { LL } = useI18nContext();
+ const [numChanges, setNumChanges] = useState(0);
+ const blocker = useBlocker(numChanges !== 0);
+
+ const [selectedModuleItem, setSelectedModuleItem] = useState();
+ const [dialogOpen, setDialogOpen] = useState(false);
+
+ const {
+ data: modules,
+ send: fetchModules,
+ error
+ } = useRequest(EMSESP.readModules, {
+ initialData: []
+ });
+
+ const { send: writeModules } = useRequest(
+ (data: { key: string; enabled: boolean; license: string }) =>
+ EMSESP.writeModules(data),
+ {
+ immediate: false
+ }
+ );
+
+ const modules_theme = useTheme({
+ Table: `
+ --data-table-library_grid-template-columns: 48px 180px 120px 100px repeat(1, minmax(160px, 1fr)) 180px;
+ `,
+ BaseRow: `
+ font-size: 14px;
+ .td {
+ height: 32px;
+ }
+ `,
+ BaseCell: `
+ &:nth-of-type(1) {
+ text-align: center;
+ }
+ `,
+ HeaderRow: `
+ text-transform: uppercase;
+ background-color: black;
+ color: #90CAF9;
+ .th {
+ border-bottom: 1px solid #565656;
+ height: 36px;
+ }
+ `,
+ Row: `
+ background-color: #1e1e1e;
+ position: relative;
+ cursor: pointer;
+ .td {
+ border-top: 1px solid #565656;
+ border-bottom: 1px solid #565656;
+ }
+ &:hover .td {
+ border-top: 1px solid #177ac9;
+ border-bottom: 1px solid #177ac9;
+ }
+ &:nth-of-type(odd) .td {
+ background-color: #303030;
+ }
+ `
+ });
+
+ const onDialogClose = () => {
+ setDialogOpen(false);
+ };
+
+ const onDialogSave = (updatedItem: ModuleItem) => {
+ setDialogOpen(false);
+ updateModuleItem(updatedItem);
+ };
+
+ const editModuleItem = useCallback((mi: ModuleItem) => {
+ setSelectedModuleItem(mi);
+ setDialogOpen(true);
+ }, []);
+
+ const onCancel = async () => {
+ await fetchModules().then(() => {
+ setNumChanges(0);
+ });
+ };
+
+ function hasModulesChanged(mi: ModuleItem) {
+ return mi.enabled !== mi.o_enabled || mi.license !== mi.o_license;
+ }
+
+ const updateModuleItem = (updatedItem: ModuleItem) => {
+ updateState('modules', (data: ModuleItem[]) => {
+ const new_data = data.map((mi) =>
+ mi.id === updatedItem.id ? { ...mi, ...updatedItem } : mi
+ );
+ setNumChanges(new_data.filter((mi) => hasModulesChanged(mi)).length);
+ return new_data;
+ });
+ };
+
+ const saveModules = async () => {
+ await writeModules({
+ modules: modules.map((condensed_mi) => ({
+ key: condensed_mi.key,
+ enabled: condensed_mi.enabled,
+ license: condensed_mi.license
+ }))
+ })
+ .then(() => {
+ toast.success(LL.MODULES_UPDATED());
+ })
+ .catch((error: Error) => {
+ toast.error(error.message);
+ })
+ .finally(async () => {
+ await fetchModules();
+ setNumChanges(0);
+ });
+ };
+
+ const renderContent = () => {
+ if (!modules) {
+ return ;
+ }
+
+ useLayoutTitle(LL.MODULES());
+
+ if (modules.length === 0) {
+ return (
+
+ {LL.MODULES_NONE()}
+
+ );
+ }
+
+ const colorStatus = (status: number) => {
+ if (status === 1) {
+ // TODO translate
+ return Pending Activation
;
+ }
+ return Activated
;
+ };
+
+ return (
+ <>
+
+ {LL.MODULES_DESCRIPTION()}
+
+
+ {(tableList: ModuleItem[]) => (
+ <>
+
+
+
+ {LL.NAME(0)}
+ {/* TODO translate */}
+ Author
+ {LL.VERSION()}
+ {/* TODO translate */}
+ Message
+ {LL.STATUS_OF('')}
+
+
+
+ {tableList.map((mi: ModuleItem) => (
+ editModuleItem(mi)}>
+ |
+ {mi.enabled ? (
+
+ ) : (
+
+ )}
+ |
+ {mi.name} |
+ {mi.author} |
+ {mi.version} |
+ {mi.message} |
+ {colorStatus(mi.status)} |
+
+ ))}
+
+ >
+ )}
+
+
+
+
+ {numChanges !== 0 && (
+
+ }
+ variant="outlined"
+ onClick={onCancel}
+ color="secondary"
+ >
+ {LL.CANCEL()}
+
+ }
+ variant="contained"
+ color="info"
+ onClick={saveModules}
+ >
+ {LL.APPLY_CHANGES(numChanges)}
+
+
+ )}
+
+
+ >
+ );
+ };
+
+ return (
+
+ {blocker ? : null}
+ {renderContent()}
+ {selectedModuleItem && (
+
+ )}
+
+ );
+};
+
+export default Modules;
diff --git a/interface/src/project/ModulesDialog.tsx b/interface/src/project/ModulesDialog.tsx
new file mode 100644
index 000000000..cc38757c8
--- /dev/null
+++ b/interface/src/project/ModulesDialog.tsx
@@ -0,0 +1,108 @@
+import { useEffect, useState } from 'react';
+
+import CancelIcon from '@mui/icons-material/Cancel';
+import DoneIcon from '@mui/icons-material/Done';
+import {
+ Box,
+ Button,
+ Checkbox,
+ Dialog,
+ DialogActions,
+ DialogContent,
+ DialogTitle,
+ Grid,
+ TextField
+} from '@mui/material';
+
+import { dialogStyle } from 'CustomTheme';
+import { BlockFormControlLabel } from 'components';
+import { useI18nContext } from 'i18n/i18n-react';
+import { updateValue } from 'utils';
+
+import type { ModuleItem } from './types';
+
+interface ModulesDialogProps {
+ open: boolean;
+ onClose: () => void;
+ onSave: (mi: ModuleItem) => void;
+ selectedItem: ModuleItem;
+}
+
+const ModulesDialog = ({
+ open,
+ onClose,
+ onSave,
+ selectedItem
+}: ModulesDialogProps) => {
+ const { LL } = useI18nContext();
+ const [editItem, setEditItem] = useState(selectedItem);
+
+ const updateFormValue = updateValue(setEditItem);
+
+ useEffect(() => {
+ if (open) {
+ setEditItem(selectedItem);
+ }
+ }, [open, selectedItem]);
+
+ const close = () => {
+ onClose();
+ };
+
+ const save = () => {
+ onSave(editItem);
+ };
+
+ return (
+
+ );
+};
+
+export default ModulesDialog;
diff --git a/interface/src/project/api.ts b/interface/src/project/api.ts
index 42f69a687..611e15c08 100644
--- a/interface/src/project/api.ts
+++ b/interface/src/project/api.ts
@@ -9,6 +9,8 @@ import type {
Devices,
Entities,
EntityItem,
+ ModuleItem,
+ Modules,
Schedule,
ScheduleItem,
SensorData,
@@ -48,6 +50,7 @@ export const writeAnalogSensor = (as: WriteAnalogSensor) =>
// Activity
export const readActivity = () => alovaInstance.Get('/rest/activity');
+// Scan devices
export const scanDevices = () => alovaInstance.Post('/rest/scanDevices');
// API, used in HelpInformation
@@ -104,6 +107,24 @@ export const readSchedule = () =>
export const writeSchedule = (data: Schedule) =>
alovaInstance.Post('/rest/schedule', data);
+// Modules
+export const readModules = () =>
+ alovaInstance.Get('/rest/modules', {
+ name: 'modules',
+ transformData(data) {
+ return (data as Modules).modules.map((mi: ModuleItem) => ({
+ ...mi,
+ o_enabled: mi.enabled,
+ o_license: mi.license
+ }));
+ }
+ });
+export const writeModules = (data: {
+ key: string;
+ enabled: boolean;
+ license: string;
+}) => alovaInstance.Post('/rest/modules', data);
+
// SettingsEntities
export const readCustomEntities = () =>
alovaInstance.Get('/rest/customEntities', {
diff --git a/interface/src/project/types.ts b/interface/src/project/types.ts
index 23596c678..c2a28423b 100644
--- a/interface/src/project/types.ts
+++ b/interface/src/project/types.ts
@@ -308,6 +308,24 @@ export interface Schedule {
schedule: ScheduleItem[];
}
+export interface ModuleItem {
+ id: number; // unique index
+ key: string;
+ name: string;
+ author: string;
+ version: string;
+ status: number;
+ message: string;
+ enabled: boolean;
+ license: string;
+ o_enabled?: boolean;
+ o_license?: string;
+}
+
+export interface Modules {
+ modules: ModuleItem[];
+}
+
export enum ScheduleFlag {
SCHEDULE_SUN = 1,
SCHEDULE_MON = 2,
diff --git a/interface/src/types/system.ts b/interface/src/types/system.ts
index de1616e0b..beb30e6a9 100644
--- a/interface/src/types/system.ts
+++ b/interface/src/types/system.ts
@@ -1,5 +1,7 @@
import type { busConnectionStatus } from 'project/types';
+import type { NetworkConnectionStatus } from './network';
+
export interface ESPSystemStatus {
emsesp_version: string;
esp_platform: string;
@@ -37,6 +39,8 @@ export interface SystemStatus {
ntp_status: number;
mqtt_status: boolean;
ap_status: boolean;
+ network_status: NetworkConnectionStatus;
+ wifi_rssi: number;
}
export enum LogLevel {
diff --git a/interface/src/utils/useRest.ts b/interface/src/utils/useRest.ts
index aedfcdd6a..539b8f007 100644
--- a/interface/src/utils/useRest.ts
+++ b/interface/src/utils/useRest.ts
@@ -65,7 +65,7 @@ export const useRest = ({ read, update }: RestRequestOptions) => {
setErrorMessage(undefined);
setDirtyFlags([]);
setOrigData(data as D);
- await writeData(data).catch((error: Error) => {
+ await writeData(data as D).catch((error: Error) => {
if (error.message === 'Reboot required') {
setRestartNeeded(true);
} else {
diff --git a/interface/yarn.lock b/interface/yarn.lock
index 6d6c6f0bd..164becec1 100644
--- a/interface/yarn.lock
+++ b/interface/yarn.lock
@@ -12,10 +12,10 @@ __metadata:
languageName: node
linkType: hard
-"@alova/scene-react@npm:^1.5.0":
- version: 1.5.0
- resolution: "@alova/scene-react@npm:1.5.0"
- checksum: 10c0/59aef06a0898e7f498fb3d68b3a9a1eb16c9e967359d52b10b53c1d23affe8b48be964382439895a6168714b9f12b81b058f48791ed79deb6c8803885b1779c6
+"@alova/scene-react@npm:^1.6.1":
+ version: 1.6.1
+ resolution: "@alova/scene-react@npm:1.6.1"
+ checksum: 10c0/aa9503da4872ba6c78bc48fd60c643ae62d31845e806f840f4eb59400d25a7735f26e7f8e2debf4485dd0bd1bb63ffc48bbb504d617f45fa4c3cff0681dad135
languageName: node
linkType: hard
@@ -39,6 +39,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/code-frame@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/code-frame@npm:7.24.7"
+ dependencies:
+ "@babel/highlight": "npm:^7.24.7"
+ picocolors: "npm:^1.0.0"
+ checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6
+ languageName: node
+ linkType: hard
+
"@babel/compat-data@npm:^7.23.5":
version: 7.24.4
resolution: "@babel/compat-data@npm:7.24.4"
@@ -46,7 +56,14 @@ __metadata:
languageName: node
linkType: hard
-"@babel/core@npm:^7.22.1, @babel/core@npm:^7.24.5":
+"@babel/compat-data@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/compat-data@npm:7.24.7"
+ checksum: 10c0/dcd93a5632b04536498fbe2be5af1057f635fd7f7090483d8e797878559037e5130b26862ceb359acbae93ed27e076d395ddb4663db6b28a665756ffd02d324f
+ languageName: node
+ linkType: hard
+
+"@babel/core@npm:^7.22.1":
version: 7.24.5
resolution: "@babel/core@npm:7.24.5"
dependencies:
@@ -69,6 +86,29 @@ __metadata:
languageName: node
linkType: hard
+"@babel/core@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/core@npm:7.24.7"
+ dependencies:
+ "@ampproject/remapping": "npm:^2.2.0"
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/generator": "npm:^7.24.7"
+ "@babel/helper-compilation-targets": "npm:^7.24.7"
+ "@babel/helper-module-transforms": "npm:^7.24.7"
+ "@babel/helpers": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.24.7"
+ "@babel/template": "npm:^7.24.7"
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ convert-source-map: "npm:^2.0.0"
+ debug: "npm:^4.1.0"
+ gensync: "npm:^1.0.0-beta.2"
+ json5: "npm:^2.2.3"
+ semver: "npm:^6.3.1"
+ checksum: 10c0/4004ba454d3c20a46ea66264e06c15b82e9f6bdc35f88819907d24620da70dbf896abac1cb4cc4b6bb8642969e45f4d808497c9054a1388a386cf8c12e9b9e0d
+ languageName: node
+ linkType: hard
+
"@babel/generator@npm:7.17.7":
version: 7.17.7
resolution: "@babel/generator@npm:7.17.7"
@@ -92,6 +132,18 @@ __metadata:
languageName: node
linkType: hard
+"@babel/generator@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/generator@npm:7.24.7"
+ dependencies:
+ "@babel/types": "npm:^7.24.7"
+ "@jridgewell/gen-mapping": "npm:^0.3.5"
+ "@jridgewell/trace-mapping": "npm:^0.3.25"
+ jsesc: "npm:^2.5.1"
+ checksum: 10c0/06b1f3350baf527a3309e50ffd7065f7aee04dd06e1e7db794ddfde7fe9d81f28df64edd587173f8f9295496a7ddb74b9a185d4bf4de7bb619e6d4ec45c8fd35
+ languageName: node
+ linkType: hard
+
"@babel/helper-annotate-as-pure@npm:^7.22.5":
version: 7.22.5
resolution: "@babel/helper-annotate-as-pure@npm:7.22.5"
@@ -114,6 +166,19 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-compilation-targets@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-compilation-targets@npm:7.24.7"
+ dependencies:
+ "@babel/compat-data": "npm:^7.24.7"
+ "@babel/helper-validator-option": "npm:^7.24.7"
+ browserslist: "npm:^4.22.2"
+ lru-cache: "npm:^5.1.1"
+ semver: "npm:^6.3.1"
+ checksum: 10c0/1d580a9bcacefe65e6bf02ba1dafd7ab278269fef45b5e281d8354d95c53031e019890464e7f9351898c01502dd2e633184eb0bcda49ed2ecd538675ce310f51
+ languageName: node
+ linkType: hard
+
"@babel/helper-environment-visitor@npm:^7.22.20":
version: 7.22.20
resolution: "@babel/helper-environment-visitor@npm:7.22.20"
@@ -121,6 +186,15 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-environment-visitor@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-environment-visitor@npm:7.24.7"
+ dependencies:
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/36ece78882b5960e2d26abf13cf15ff5689bf7c325b10a2895a74a499e712de0d305f8d78bb382dd3c05cfba7e47ec98fe28aab5674243e0625cd38438dd0b2d
+ languageName: node
+ linkType: hard
+
"@babel/helper-function-name@npm:^7.23.0":
version: 7.23.0
resolution: "@babel/helper-function-name@npm:7.23.0"
@@ -131,6 +205,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-function-name@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-function-name@npm:7.24.7"
+ dependencies:
+ "@babel/template": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/e5e41e6cf86bd0f8bf272cbb6e7c5ee0f3e9660414174435a46653efba4f2479ce03ce04abff2aa2ef9359cf057c79c06cb7b134a565ad9c0e8a50dcdc3b43c4
+ languageName: node
+ linkType: hard
+
"@babel/helper-hoist-variables@npm:^7.22.5":
version: 7.22.5
resolution: "@babel/helper-hoist-variables@npm:7.22.5"
@@ -140,6 +224,15 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-hoist-variables@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-hoist-variables@npm:7.24.7"
+ dependencies:
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/19ee37563bbd1219f9d98991ad0e9abef77803ee5945fd85aa7aa62a67c69efca9a801696a1b58dda27f211e878b3327789e6fd2a6f6c725ccefe36774b5ce95
+ languageName: node
+ linkType: hard
+
"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.24.3":
version: 7.24.3
resolution: "@babel/helper-module-imports@npm:7.24.3"
@@ -149,6 +242,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-module-imports@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-module-imports@npm:7.24.7"
+ dependencies:
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/97c57db6c3eeaea31564286e328a9fb52b0313c5cfcc7eee4bc226aebcf0418ea5b6fe78673c0e4a774512ec6c86e309d0f326e99d2b37bfc16a25a032498af0
+ languageName: node
+ linkType: hard
+
"@babel/helper-module-transforms@npm:^7.24.5":
version: 7.24.5
resolution: "@babel/helper-module-transforms@npm:7.24.5"
@@ -164,6 +267,21 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-module-transforms@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-module-transforms@npm:7.24.7"
+ dependencies:
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-module-imports": "npm:^7.24.7"
+ "@babel/helper-simple-access": "npm:^7.24.7"
+ "@babel/helper-split-export-declaration": "npm:^7.24.7"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
+ peerDependencies:
+ "@babel/core": ^7.0.0
+ checksum: 10c0/4f311755fcc3b4cbdb689386309cdb349cf0575a938f0b9ab5d678e1a81bbb265aa34ad93174838245f2ac7ff6d5ddbd0104638a75e4e961958ed514355687b6
+ languageName: node
+ linkType: hard
+
"@babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.24.0":
version: 7.24.5
resolution: "@babel/helper-plugin-utils@npm:7.24.5"
@@ -180,6 +298,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-simple-access@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-simple-access@npm:7.24.7"
+ dependencies:
+ "@babel/traverse": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/7230e419d59a85f93153415100a5faff23c133d7442c19e0cd070da1784d13cd29096ee6c5a5761065c44e8164f9f80e3a518c41a0256df39e38f7ad6744fed7
+ languageName: node
+ linkType: hard
+
"@babel/helper-split-export-declaration@npm:^7.22.6, @babel/helper-split-export-declaration@npm:^7.24.5":
version: 7.24.5
resolution: "@babel/helper-split-export-declaration@npm:7.24.5"
@@ -189,6 +317,15 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-split-export-declaration@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-split-export-declaration@npm:7.24.7"
+ dependencies:
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/0254577d7086bf09b01bbde98f731d4fcf4b7c3fa9634fdb87929801307c1f6202a1352e3faa5492450fa8da4420542d44de604daf540704ff349594a78184f6
+ languageName: node
+ linkType: hard
+
"@babel/helper-string-parser@npm:^7.24.1":
version: 7.24.1
resolution: "@babel/helper-string-parser@npm:7.24.1"
@@ -196,6 +333,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-string-parser@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-string-parser@npm:7.24.7"
+ checksum: 10c0/47840c7004e735f3dc93939c77b099bb41a64bf3dda0cae62f60e6f74a5ff80b63e9b7cf77b5ec25a324516381fc994e1f62f922533236a8e3a6af57decb5e1e
+ languageName: node
+ linkType: hard
+
"@babel/helper-validator-identifier@npm:^7.16.7, @babel/helper-validator-identifier@npm:^7.24.5":
version: 7.24.5
resolution: "@babel/helper-validator-identifier@npm:7.24.5"
@@ -203,6 +347,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-validator-identifier@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-validator-identifier@npm:7.24.7"
+ checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651
+ languageName: node
+ linkType: hard
+
"@babel/helper-validator-option@npm:^7.23.5":
version: 7.23.5
resolution: "@babel/helper-validator-option@npm:7.23.5"
@@ -210,6 +361,13 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helper-validator-option@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-validator-option@npm:7.24.7"
+ checksum: 10c0/21aea2b7bc5cc8ddfb828741d5c8116a84cbc35b4a3184ec53124f08e09746f1f67a6f9217850188995ca86059a7942e36d8965a6730784901def777b7e8a436
+ languageName: node
+ linkType: hard
+
"@babel/helpers@npm:^7.24.5":
version: 7.24.5
resolution: "@babel/helpers@npm:7.24.5"
@@ -221,6 +379,16 @@ __metadata:
languageName: node
linkType: hard
+"@babel/helpers@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helpers@npm:7.24.7"
+ dependencies:
+ "@babel/template": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/aa8e230f6668773e17e141dbcab63e935c514b4b0bf1fed04d2eaefda17df68e16b61a56573f7f1d4d1e605ce6cc162b5f7e9fdf159fde1fd9b77c920ae47d27
+ languageName: node
+ linkType: hard
+
"@babel/highlight@npm:^7.24.2":
version: 7.24.5
resolution: "@babel/highlight@npm:7.24.5"
@@ -233,6 +401,18 @@ __metadata:
languageName: node
linkType: hard
+"@babel/highlight@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/highlight@npm:7.24.7"
+ dependencies:
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
+ chalk: "npm:^2.4.2"
+ js-tokens: "npm:^4.0.0"
+ picocolors: "npm:^1.0.0"
+ checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a
+ languageName: node
+ linkType: hard
+
"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.5, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.24.5":
version: 7.24.5
resolution: "@babel/parser@npm:7.24.5"
@@ -242,6 +422,15 @@ __metadata:
languageName: node
linkType: hard
+"@babel/parser@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/parser@npm:7.24.7"
+ bin:
+ parser: ./bin/babel-parser.js
+ checksum: 10c0/8b244756872185a1c6f14b979b3535e682ff08cb5a2a5fd97cc36c017c7ef431ba76439e95e419d43000c5b07720495b00cf29a7f0d9a483643d08802b58819b
+ languageName: node
+ linkType: hard
+
"@babel/plugin-syntax-jsx@npm:^7.23.3":
version: 7.24.1
resolution: "@babel/plugin-syntax-jsx@npm:7.24.1"
@@ -299,6 +488,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/template@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/template@npm:7.24.7"
+ dependencies:
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ checksum: 10c0/95b0b3ee80fcef685b7f4426f5713a855ea2cd5ac4da829b213f8fb5afe48a2a14683c2ea04d446dbc7f711c33c5cd4a965ef34dcbe5bc387c9e966b67877ae3
+ languageName: node
+ linkType: hard
+
"@babel/traverse@npm:7.23.2":
version: 7.23.2
resolution: "@babel/traverse@npm:7.23.2"
@@ -335,6 +535,24 @@ __metadata:
languageName: node
linkType: hard
+"@babel/traverse@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/traverse@npm:7.24.7"
+ dependencies:
+ "@babel/code-frame": "npm:^7.24.7"
+ "@babel/generator": "npm:^7.24.7"
+ "@babel/helper-environment-visitor": "npm:^7.24.7"
+ "@babel/helper-function-name": "npm:^7.24.7"
+ "@babel/helper-hoist-variables": "npm:^7.24.7"
+ "@babel/helper-split-export-declaration": "npm:^7.24.7"
+ "@babel/parser": "npm:^7.24.7"
+ "@babel/types": "npm:^7.24.7"
+ debug: "npm:^4.3.1"
+ globals: "npm:^11.1.0"
+ checksum: 10c0/a5135e589c3f1972b8877805f50a084a04865ccb1d68e5e1f3b94a8841b3485da4142e33413d8fd76bc0e6444531d3adf1f59f359c11ffac452b743d835068ab
+ languageName: node
+ linkType: hard
+
"@babel/types@npm:7.17.0":
version: 7.17.0
resolution: "@babel/types@npm:7.17.0"
@@ -356,6 +574,17 @@ __metadata:
languageName: node
linkType: hard
+"@babel/types@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/types@npm:7.24.7"
+ dependencies:
+ "@babel/helper-string-parser": "npm:^7.24.7"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
+ to-fast-properties: "npm:^2.0.0"
+ checksum: 10c0/d9ecbfc3eb2b05fb1e6eeea546836ac30d990f395ef3fe3f75ced777a222c3cfc4489492f72e0ce3d9a5a28860a1ce5f81e66b88cf5088909068b3ff4fab72c1
+ languageName: node
+ linkType: hard
+
"@emotion/babel-plugin@npm:^11.11.0":
version: 11.11.0
resolution: "@emotion/babel-plugin@npm:11.11.0"
@@ -502,79 +731,79 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/aix-ppc64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/aix-ppc64@npm:0.20.2"
+"@esbuild/aix-ppc64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/aix-ppc64@npm:0.21.5"
conditions: os=aix & cpu=ppc64
languageName: node
linkType: hard
-"@esbuild/android-arm64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/android-arm64@npm:0.20.2"
+"@esbuild/android-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/android-arm64@npm:0.21.5"
conditions: os=android & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/android-arm@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/android-arm@npm:0.20.2"
+"@esbuild/android-arm@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/android-arm@npm:0.21.5"
conditions: os=android & cpu=arm
languageName: node
linkType: hard
-"@esbuild/android-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/android-x64@npm:0.20.2"
+"@esbuild/android-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/android-x64@npm:0.21.5"
conditions: os=android & cpu=x64
languageName: node
linkType: hard
-"@esbuild/darwin-arm64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/darwin-arm64@npm:0.20.2"
+"@esbuild/darwin-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/darwin-arm64@npm:0.21.5"
conditions: os=darwin & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/darwin-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/darwin-x64@npm:0.20.2"
+"@esbuild/darwin-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/darwin-x64@npm:0.21.5"
conditions: os=darwin & cpu=x64
languageName: node
linkType: hard
-"@esbuild/freebsd-arm64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/freebsd-arm64@npm:0.20.2"
+"@esbuild/freebsd-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/freebsd-arm64@npm:0.21.5"
conditions: os=freebsd & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/freebsd-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/freebsd-x64@npm:0.20.2"
+"@esbuild/freebsd-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/freebsd-x64@npm:0.21.5"
conditions: os=freebsd & cpu=x64
languageName: node
linkType: hard
-"@esbuild/linux-arm64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-arm64@npm:0.20.2"
+"@esbuild/linux-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-arm64@npm:0.21.5"
conditions: os=linux & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/linux-arm@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-arm@npm:0.20.2"
+"@esbuild/linux-arm@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-arm@npm:0.21.5"
conditions: os=linux & cpu=arm
languageName: node
linkType: hard
-"@esbuild/linux-ia32@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-ia32@npm:0.20.2"
+"@esbuild/linux-ia32@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-ia32@npm:0.21.5"
conditions: os=linux & cpu=ia32
languageName: node
linkType: hard
@@ -586,86 +815,86 @@ __metadata:
languageName: node
linkType: hard
-"@esbuild/linux-loong64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-loong64@npm:0.20.2"
+"@esbuild/linux-loong64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-loong64@npm:0.21.5"
conditions: os=linux & cpu=loong64
languageName: node
linkType: hard
-"@esbuild/linux-mips64el@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-mips64el@npm:0.20.2"
+"@esbuild/linux-mips64el@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-mips64el@npm:0.21.5"
conditions: os=linux & cpu=mips64el
languageName: node
linkType: hard
-"@esbuild/linux-ppc64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-ppc64@npm:0.20.2"
+"@esbuild/linux-ppc64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-ppc64@npm:0.21.5"
conditions: os=linux & cpu=ppc64
languageName: node
linkType: hard
-"@esbuild/linux-riscv64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-riscv64@npm:0.20.2"
+"@esbuild/linux-riscv64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-riscv64@npm:0.21.5"
conditions: os=linux & cpu=riscv64
languageName: node
linkType: hard
-"@esbuild/linux-s390x@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-s390x@npm:0.20.2"
+"@esbuild/linux-s390x@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-s390x@npm:0.21.5"
conditions: os=linux & cpu=s390x
languageName: node
linkType: hard
-"@esbuild/linux-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/linux-x64@npm:0.20.2"
+"@esbuild/linux-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/linux-x64@npm:0.21.5"
conditions: os=linux & cpu=x64
languageName: node
linkType: hard
-"@esbuild/netbsd-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/netbsd-x64@npm:0.20.2"
+"@esbuild/netbsd-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/netbsd-x64@npm:0.21.5"
conditions: os=netbsd & cpu=x64
languageName: node
linkType: hard
-"@esbuild/openbsd-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/openbsd-x64@npm:0.20.2"
+"@esbuild/openbsd-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/openbsd-x64@npm:0.21.5"
conditions: os=openbsd & cpu=x64
languageName: node
linkType: hard
-"@esbuild/sunos-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/sunos-x64@npm:0.20.2"
+"@esbuild/sunos-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/sunos-x64@npm:0.21.5"
conditions: os=sunos & cpu=x64
languageName: node
linkType: hard
-"@esbuild/win32-arm64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/win32-arm64@npm:0.20.2"
+"@esbuild/win32-arm64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/win32-arm64@npm:0.21.5"
conditions: os=win32 & cpu=arm64
languageName: node
linkType: hard
-"@esbuild/win32-ia32@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/win32-ia32@npm:0.20.2"
+"@esbuild/win32-ia32@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/win32-ia32@npm:0.21.5"
conditions: os=win32 & cpu=ia32
languageName: node
linkType: hard
-"@esbuild/win32-x64@npm:0.20.2":
- version: 0.20.2
- resolution: "@esbuild/win32-x64@npm:0.20.2"
+"@esbuild/win32-x64@npm:0.21.5":
+ version: 0.21.5
+ resolution: "@esbuild/win32-x64@npm:0.21.5"
conditions: os=win32 & cpu=x64
languageName: node
linkType: hard
@@ -688,6 +917,17 @@ __metadata:
languageName: node
linkType: hard
+"@eslint/config-array@npm:^0.16.0":
+ version: 0.16.0
+ resolution: "@eslint/config-array@npm:0.16.0"
+ dependencies:
+ "@eslint/object-schema": "npm:^2.1.4"
+ debug: "npm:^4.3.1"
+ minimatch: "npm:^3.0.5"
+ checksum: 10c0/b9d04409151dc95ec6b5e04e1e185a808d58e18cfc7340adc1e9420a5ff15843a0a308fb2cd9a2b354652885c2bebbcd5515814e93e9c9133f423891b6e53c70
+ languageName: node
+ linkType: hard
+
"@eslint/eslintrc@npm:^3.1.0":
version: 3.1.0
resolution: "@eslint/eslintrc@npm:3.1.0"
@@ -705,10 +945,17 @@ __metadata:
languageName: node
linkType: hard
-"@eslint/js@npm:9.3.0, @eslint/js@npm:^9.3.0":
- version: 9.3.0
- resolution: "@eslint/js@npm:9.3.0"
- checksum: 10c0/1550c68922eb17c3ce541d9ffbb687e656bc0d4e2fff2d9cb0a75101a9cdb6184b7af7378ccf46c6ca750b280d25d45cc5e7374a83a4ee89d404d3717502fd9d
+"@eslint/js@npm:9.5.0, @eslint/js@npm:^9.5.0":
+ version: 9.5.0
+ resolution: "@eslint/js@npm:9.5.0"
+ checksum: 10c0/dacf51ec2d5b4c8d1315d21a0ff761235d9e39b2391cb945138c58dc512a6c18949c40b644235f5c4fdf5b637ef8f881214acc496dddf46b718529bf22af42ac
+ languageName: node
+ linkType: hard
+
+"@eslint/object-schema@npm:^2.1.4":
+ version: 2.1.4
+ resolution: "@eslint/object-schema@npm:2.1.4"
+ checksum: 10c0/e9885532ea70e483fb007bf1275968b05bb15ebaa506d98560c41a41220d33d342e19023d5f2939fed6eb59676c1bda5c847c284b4b55fce521d282004da4dda
languageName: node
linkType: hard
@@ -750,17 +997,6 @@ __metadata:
languageName: node
linkType: hard
-"@humanwhocodes/config-array@npm:^0.13.0":
- version: 0.13.0
- resolution: "@humanwhocodes/config-array@npm:0.13.0"
- dependencies:
- "@humanwhocodes/object-schema": "npm:^2.0.3"
- debug: "npm:^4.3.1"
- minimatch: "npm:^3.0.5"
- checksum: 10c0/205c99e756b759f92e1f44a3dc6292b37db199beacba8f26c2165d4051fe73a4ae52fdcfd08ffa93e7e5cb63da7c88648f0e84e197d154bbbbe137b2e0dd332e
- languageName: node
- linkType: hard
-
"@humanwhocodes/module-importer@npm:^1.0.1":
version: 1.0.1
resolution: "@humanwhocodes/module-importer@npm:1.0.1"
@@ -768,13 +1004,6 @@ __metadata:
languageName: node
linkType: hard
-"@humanwhocodes/object-schema@npm:^2.0.3":
- version: 2.0.3
- resolution: "@humanwhocodes/object-schema@npm:2.0.3"
- checksum: 10c0/80520eabbfc2d32fe195a93557cef50dfe8c8905de447f022675aaf66abc33ae54098f5ea78548d925aa671cd4ab7c7daa5ad704fe42358c9b5e7db60f80696c
- languageName: node
- linkType: hard
-
"@humanwhocodes/retry@npm:^0.3.0":
version: 0.3.0
resolution: "@humanwhocodes/retry@npm:0.3.0"
@@ -870,16 +1099,16 @@ __metadata:
languageName: node
linkType: hard
-"@mui/core-downloads-tracker@npm:^5.15.18":
- version: 5.15.18
- resolution: "@mui/core-downloads-tracker@npm:5.15.18"
- checksum: 10c0/7899df3ce5192f2b876b8e5e645b03701512b9edaf386be07aa81d0d940404fa966776ef3e5e7654f312949f669db60438b864e14f7cece3eec7b5979a7349aa
+"@mui/core-downloads-tracker@npm:^5.15.20":
+ version: 5.15.20
+ resolution: "@mui/core-downloads-tracker@npm:5.15.20"
+ checksum: 10c0/0e1f9aa9c85d5f60fa5937edc22dfbebd512671379e3adb7c99a8ef0928bf42daed98cede41a407e810a225554943675e9d976bc0ae17acdc20445c8d2f121b3
languageName: node
linkType: hard
-"@mui/icons-material@npm:^5.15.18":
- version: 5.15.18
- resolution: "@mui/icons-material@npm:5.15.18"
+"@mui/icons-material@npm:^5.15.20":
+ version: 5.15.20
+ resolution: "@mui/icons-material@npm:5.15.20"
dependencies:
"@babel/runtime": "npm:^7.23.9"
peerDependencies:
@@ -889,20 +1118,20 @@ __metadata:
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 10c0/8990f48060cb9f52a898c3b53d602913129bd37c811528dbc3988a62b1ef84b12dd9e263be76200a429455e5552706d1395c8f2b1fe56c04b37543784864d43c
+ checksum: 10c0/3765340625ad0c5181cffbec1a9a52185e9add4d2eda1f8c3e262b11bf9ca1e8cdf87f67f550b300d8c3c31277b7c8bb38261c964f6180d31b3e928a1dc03315
languageName: node
linkType: hard
-"@mui/material@npm:^5.15.18":
- version: 5.15.18
- resolution: "@mui/material@npm:5.15.18"
+"@mui/material@npm:^5.15.20":
+ version: 5.15.20
+ resolution: "@mui/material@npm:5.15.20"
dependencies:
"@babel/runtime": "npm:^7.23.9"
"@mui/base": "npm:5.0.0-beta.40"
- "@mui/core-downloads-tracker": "npm:^5.15.18"
- "@mui/system": "npm:^5.15.15"
+ "@mui/core-downloads-tracker": "npm:^5.15.20"
+ "@mui/system": "npm:^5.15.20"
"@mui/types": "npm:^7.2.14"
- "@mui/utils": "npm:^5.15.14"
+ "@mui/utils": "npm:^5.15.20"
"@types/react-transition-group": "npm:^4.4.10"
clsx: "npm:^2.1.0"
csstype: "npm:^3.1.3"
@@ -922,16 +1151,16 @@ __metadata:
optional: true
"@types/react":
optional: true
- checksum: 10c0/0ae6ec5cb806b8095f16c542be5e0ae059e5e4adccf1cc463865acd0429b7c9b8fc12ce56c12a15ac787f29c173d118ff06af56e1e4c46a040212cd7d203c15d
+ checksum: 10c0/0882661f83f5b73c06d6402ddd9c0f8e471198b838c4a456db03a5256d8febc688abc41645156d155536106a44bd28798efcfdaec00b665ab91dbd5c9dee83eb
languageName: node
linkType: hard
-"@mui/private-theming@npm:^5.15.14":
- version: 5.15.14
- resolution: "@mui/private-theming@npm:5.15.14"
+"@mui/private-theming@npm:^5.15.20":
+ version: 5.15.20
+ resolution: "@mui/private-theming@npm:5.15.20"
dependencies:
"@babel/runtime": "npm:^7.23.9"
- "@mui/utils": "npm:^5.15.14"
+ "@mui/utils": "npm:^5.15.20"
prop-types: "npm:^15.8.1"
peerDependencies:
"@types/react": ^17.0.0 || ^18.0.0
@@ -939,7 +1168,7 @@ __metadata:
peerDependenciesMeta:
"@types/react":
optional: true
- checksum: 10c0/28889505874f03e2aeeb147bc5eefcc537825a91ab9c771a5e60ea0df1eab760e900a3a50fec55b25bc9087e9030be37adbe1acdd81a3e2fcca5a1e0cf5979ec
+ checksum: 10c0/d6707ef884769a58a9dac23328138cd2dbb3dbdcfbf46beae406638628a77b2975aaf787f863143ae97ea2d5f6eca8d0ff929f2159f3f9b58bcedb2e01c7bce6
languageName: node
linkType: hard
@@ -964,15 +1193,15 @@ __metadata:
languageName: node
linkType: hard
-"@mui/system@npm:^5.15.15":
- version: 5.15.15
- resolution: "@mui/system@npm:5.15.15"
+"@mui/system@npm:^5.15.20":
+ version: 5.15.20
+ resolution: "@mui/system@npm:5.15.20"
dependencies:
"@babel/runtime": "npm:^7.23.9"
- "@mui/private-theming": "npm:^5.15.14"
+ "@mui/private-theming": "npm:^5.15.20"
"@mui/styled-engine": "npm:^5.15.14"
"@mui/types": "npm:^7.2.14"
- "@mui/utils": "npm:^5.15.14"
+ "@mui/utils": "npm:^5.15.20"
clsx: "npm:^2.1.0"
csstype: "npm:^3.1.3"
prop-types: "npm:^15.8.1"
@@ -988,7 +1217,7 @@ __metadata:
optional: true
"@types/react":
optional: true
- checksum: 10c0/80724377ee9c0e1604373371bb9b7d566c899009264caf6f638eed224600b91b739f32bef03c6a479dc9348dfc01d7c28cc8d1252454d7dd4a23f59033a8653e
+ checksum: 10c0/7561d14d613e882cbe8959cbb779e6641542242e5a79974bad306c59c1505b5924cb2b866619b55d064aae1a1e8421dc3a613ad1a4cf330be7eebd1881170cff
languageName: node
linkType: hard
@@ -1022,6 +1251,24 @@ __metadata:
languageName: node
linkType: hard
+"@mui/utils@npm:^5.15.20":
+ version: 5.15.20
+ resolution: "@mui/utils@npm:5.15.20"
+ dependencies:
+ "@babel/runtime": "npm:^7.23.9"
+ "@types/prop-types": "npm:^15.7.11"
+ prop-types: "npm:^15.8.1"
+ react-is: "npm:^18.2.0"
+ peerDependencies:
+ "@types/react": ^17.0.0 || ^18.0.0
+ react: ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ "@types/react":
+ optional: true
+ checksum: 10c0/d745895db047ef016681482f3d4710aa487f9e7bcd457ac2a395bdaf719a6a98f8bf5f1920d4729b0bc69f7ef2153624aa6a565ec0e31f76c33d7167397ac4d9
+ languageName: node
+ linkType: hard
+
"@nodelib/fs.scandir@npm:2.1.5":
version: 2.1.5
resolution: "@nodelib/fs.scandir@npm:2.1.5"
@@ -1513,12 +1760,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/node@npm:^20.12.12":
- version: 20.12.12
- resolution: "@types/node@npm:20.12.12"
+"@types/node@npm:^20.14.2":
+ version: 20.14.2
+ resolution: "@types/node@npm:20.14.2"
dependencies:
undici-types: "npm:~5.26.4"
- checksum: 10c0/f374b763c744e8f16e4f38cf6e2c0eef31781ec9228c9e43a6f267880fea420fab0a238b59f10a7cb3444e49547c5e3785787e371fc242307310995b21988812
+ checksum: 10c0/2d86e5f2227aaa42212e82ea0affe72799111b888ff900916376450b02b09b963ca888b20d9c332d8d2b833ed4781987867a38eaa2e4863fa8439071468b0a6f
languageName: node
linkType: hard
@@ -1585,13 +1832,13 @@ __metadata:
languageName: node
linkType: hard
-"@types/react@npm:^18.3.2":
- version: 18.3.2
- resolution: "@types/react@npm:18.3.2"
+"@types/react@npm:^18.3.3":
+ version: 18.3.3
+ resolution: "@types/react@npm:18.3.3"
dependencies:
"@types/prop-types": "npm:*"
csstype: "npm:^3.0.2"
- checksum: 10c0/9fb2f1fcf7e889ee4ea7c3c5978df595c66e770e5fd3a245dbdd2589b9b911524c11dab25a6275d8af4e336e4cb5fa850d447884b84c335a187a338c89df99ba
+ checksum: 10c0/fe455f805c5da13b89964c3d68060cebd43e73ec15001a68b34634604a78140e6fc202f3f61679b9d809dde6d7a7c2cb3ed51e0fd1462557911db09879b55114
languageName: node
linkType: hard
@@ -1613,15 +1860,15 @@ __metadata:
languageName: node
linkType: hard
-"@typescript-eslint/eslint-plugin@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/eslint-plugin@npm:7.9.0"
+"@typescript-eslint/eslint-plugin@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/eslint-plugin@npm:7.13.0"
dependencies:
"@eslint-community/regexpp": "npm:^4.10.0"
- "@typescript-eslint/scope-manager": "npm:7.9.0"
- "@typescript-eslint/type-utils": "npm:7.9.0"
- "@typescript-eslint/utils": "npm:7.9.0"
- "@typescript-eslint/visitor-keys": "npm:7.9.0"
+ "@typescript-eslint/scope-manager": "npm:7.13.0"
+ "@typescript-eslint/type-utils": "npm:7.13.0"
+ "@typescript-eslint/utils": "npm:7.13.0"
+ "@typescript-eslint/visitor-keys": "npm:7.13.0"
graphemer: "npm:^1.4.0"
ignore: "npm:^5.3.1"
natural-compare: "npm:^1.4.0"
@@ -1632,44 +1879,44 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/5c0ded9cb2210c141d236075f01a86447bf497a5061773c3c64a90756264776b4c4df100f7588e36d34f727eca55afd52fe6696a3cbe2d1f131250934254603a
+ checksum: 10c0/00a69d029713252c03490e0a9c49c9136d99c9c1888dd3570b1e044c9a740b59c2e488849beda654d6fc0a69e2549445c16d443bcf5832c66b7a4472b42826ae
languageName: node
linkType: hard
-"@typescript-eslint/parser@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/parser@npm:7.9.0"
+"@typescript-eslint/parser@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/parser@npm:7.13.0"
dependencies:
- "@typescript-eslint/scope-manager": "npm:7.9.0"
- "@typescript-eslint/types": "npm:7.9.0"
- "@typescript-eslint/typescript-estree": "npm:7.9.0"
- "@typescript-eslint/visitor-keys": "npm:7.9.0"
+ "@typescript-eslint/scope-manager": "npm:7.13.0"
+ "@typescript-eslint/types": "npm:7.13.0"
+ "@typescript-eslint/typescript-estree": "npm:7.13.0"
+ "@typescript-eslint/visitor-keys": "npm:7.13.0"
debug: "npm:^4.3.4"
peerDependencies:
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/16ca04645429436d9b7986cddda979ef4d088f4223f4a69e04a369e0fd4852dd5ff3d4b99da2e43cddaa2b421b24ff42f275d87bd110ae2356bdd0e81c2534e7
+ checksum: 10c0/8cf58116d6577c9459db3e3047e337dc41d914bf222a33b20e149515d037e09e6171fbac5af02b66aa6fbad81dd492fa5b7bcd44aaf659d4e9b02ab23100f955
languageName: node
linkType: hard
-"@typescript-eslint/scope-manager@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/scope-manager@npm:7.9.0"
+"@typescript-eslint/scope-manager@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/scope-manager@npm:7.13.0"
dependencies:
- "@typescript-eslint/types": "npm:7.9.0"
- "@typescript-eslint/visitor-keys": "npm:7.9.0"
- checksum: 10c0/1ba6fc559a42a9b54e38c3ac2b6669efcff1a30292fb4e5fc8739c890a6c0f37d1a6aee1d115198f57c88e4f1776e95c1d7143de5cb5b970d5eb3023e97789dd
+ "@typescript-eslint/types": "npm:7.13.0"
+ "@typescript-eslint/visitor-keys": "npm:7.13.0"
+ checksum: 10c0/0f5c75578ee8cb3c31b9c4e222f4787ea4621fde639f3ac0a467e56250f3cc48bf69304c33b2b8cc8ba5ec69f3977b6c463b8d9e791806af9a8c6a2233505432
languageName: node
linkType: hard
-"@typescript-eslint/type-utils@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/type-utils@npm:7.9.0"
+"@typescript-eslint/type-utils@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/type-utils@npm:7.13.0"
dependencies:
- "@typescript-eslint/typescript-estree": "npm:7.9.0"
- "@typescript-eslint/utils": "npm:7.9.0"
+ "@typescript-eslint/typescript-estree": "npm:7.13.0"
+ "@typescript-eslint/utils": "npm:7.13.0"
debug: "npm:^4.3.4"
ts-api-utils: "npm:^1.3.0"
peerDependencies:
@@ -1677,23 +1924,23 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/775280fb179268f8bacd60e684d9d5a1c6a379646b082c7244bf2dfb7dd693053bd9efa473b71e10a86db69322b0a2cecf5598d019684930df50000bf3d70af0
+ checksum: 10c0/240e9b34e8602444cd234b84c9e3e52c565e3141a4942751f597c38cee48f7cb43c42a093d219ac6404dca2e74b54d2a8121fe66cbc59f404cb0ec2adecd8520
languageName: node
linkType: hard
-"@typescript-eslint/types@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/types@npm:7.9.0"
- checksum: 10c0/d5f4a547dba4865ee2391bf06f2b3f8e8592a561976d2be35bb61ce340c7d1b7b4b25ac6ab5b9941813b465b9420bebb7b2179b1d71f6a83069feeb000b3558d
+"@typescript-eslint/types@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/types@npm:7.13.0"
+ checksum: 10c0/73dc59d4b0d0f0fed9f4b9b55f143185259ced5f0ca8ad9efa881eea1ff1cc9ccc1f175af2e2069f7b92a69c9f64f9be29d160c932b8f70a129af6b738b23be0
languageName: node
linkType: hard
-"@typescript-eslint/typescript-estree@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/typescript-estree@npm:7.9.0"
+"@typescript-eslint/typescript-estree@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/typescript-estree@npm:7.13.0"
dependencies:
- "@typescript-eslint/types": "npm:7.9.0"
- "@typescript-eslint/visitor-keys": "npm:7.9.0"
+ "@typescript-eslint/types": "npm:7.13.0"
+ "@typescript-eslint/visitor-keys": "npm:7.13.0"
debug: "npm:^4.3.4"
globby: "npm:^11.1.0"
is-glob: "npm:^4.0.3"
@@ -1703,31 +1950,31 @@ __metadata:
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/cfc3d2b7a5433c9a2989c7289bc72b49786993782801ad8ca5a07c651df457a67fbce13b120c86c34c03d56570a90e5cf4f3b8806349f103a3658f2366ec28ea
+ checksum: 10c0/75b09384bc14afa3d3623507432d19d8ca91c4e936b1d2c1cfe4654a9c07179f1bc04aa99d1b541e84e40a01536862b23058f462d61b4a797c27d02f64b8aa51
languageName: node
linkType: hard
-"@typescript-eslint/utils@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/utils@npm:7.9.0"
+"@typescript-eslint/utils@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/utils@npm:7.13.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.4.0"
- "@typescript-eslint/scope-manager": "npm:7.9.0"
- "@typescript-eslint/types": "npm:7.9.0"
- "@typescript-eslint/typescript-estree": "npm:7.9.0"
+ "@typescript-eslint/scope-manager": "npm:7.13.0"
+ "@typescript-eslint/types": "npm:7.13.0"
+ "@typescript-eslint/typescript-estree": "npm:7.13.0"
peerDependencies:
eslint: ^8.56.0
- checksum: 10c0/cb99d6a950e7da0319bc7b923a82c52c0798a14e837afee51b2295cfbde02e0a2ac8e0b5904cd7bd01d1b376c7a6ad3739101b486feaf2517c8640024deb88c7
+ checksum: 10c0/5391f628775dec1a7033d954a066b77eeb03ac04c0a94690e60d8ebe351b57fdbda51b90cf785c901bcdf68b88ca3bcb5533ac59276b8b626b73eb18ac3280b6
languageName: node
linkType: hard
-"@typescript-eslint/visitor-keys@npm:7.9.0":
- version: 7.9.0
- resolution: "@typescript-eslint/visitor-keys@npm:7.9.0"
+"@typescript-eslint/visitor-keys@npm:7.13.0":
+ version: 7.13.0
+ resolution: "@typescript-eslint/visitor-keys@npm:7.13.0"
dependencies:
- "@typescript-eslint/types": "npm:7.9.0"
+ "@typescript-eslint/types": "npm:7.13.0"
eslint-visitor-keys: "npm:^3.4.3"
- checksum: 10c0/19181d8b9d2d7bc43d5c8884661cd9a86ac316392b8e590187cc507442093a1ba2bef0cc22181b8298d5dc9f455abb73cffa4663451bdf32b1b7fe12160c5c99
+ checksum: 10c0/5daa45c3358aeab41495c4419cc26fbbe54a42bb18c6f0f70f0ac31cb7bc5890ec6478a1a6bb00b0b8522663fe5466ee0fd2972bd4235b07140918875797f4eb
languageName: node
linkType: hard
@@ -1736,34 +1983,34 @@ __metadata:
resolution: "EMS-ESP@workspace:."
dependencies:
"@alova/adapter-xhr": "npm:^1.0.6"
- "@alova/scene-react": "npm:^1.5.0"
- "@babel/core": "npm:^7.24.5"
+ "@alova/scene-react": "npm:^1.6.1"
+ "@babel/core": "npm:^7.24.7"
"@emotion/react": "npm:^11.11.4"
"@emotion/styled": "npm:^11.11.5"
- "@eslint/js": "npm:^9.3.0"
- "@mui/icons-material": "npm:^5.15.18"
- "@mui/material": "npm:^5.15.18"
+ "@eslint/js": "npm:^9.5.0"
+ "@mui/icons-material": "npm:^5.15.20"
+ "@mui/material": "npm:^5.15.20"
"@preact/compat": "npm:^17.1.2"
"@preact/preset-vite": "npm:^2.8.2"
"@table-library/react-table-library": "npm:4.1.7"
"@trivago/prettier-plugin-sort-imports": "npm:^4.3.0"
"@types/babel__core": "npm:^7"
"@types/lodash-es": "npm:^4.17.12"
- "@types/node": "npm:^20.12.12"
- "@types/react": "npm:^18.3.2"
+ "@types/node": "npm:^20.14.2"
+ "@types/react": "npm:^18.3.3"
"@types/react-dom": "npm:^18.3.0"
"@types/react-router-dom": "npm:^5.3.3"
- alova: "npm:^2.20.5"
+ alova: "npm:^2.21.3"
async-validator: "npm:^4.2.5"
concurrently: "npm:^8.2.2"
- eslint: "npm:^9.3.0"
+ eslint: "npm:^9.5.0"
eslint-config-prettier: "npm:^9.1.0"
history: "npm:^5.3.0"
jwt-decode: "npm:^4.0.0"
lodash-es: "npm:^4.17.21"
mime-types: "npm:^2.1.35"
preact: "npm:^10.22.0"
- prettier: "npm:^3.2.5"
+ prettier: "npm:^3.3.2"
react: "npm:latest"
react-dom: "npm:latest"
react-dropzone: "npm:^14.2.3"
@@ -1771,11 +2018,11 @@ __metadata:
react-router-dom: "npm:^6.23.1"
react-toastify: "npm:^10.0.5"
rollup-plugin-visualizer: "npm:^5.12.0"
- terser: "npm:^5.31.0"
+ terser: "npm:^5.31.1"
typesafe-i18n: "npm:^5.26.2"
typescript: "npm:^5.4.5"
- typescript-eslint: "npm:^7.9.0"
- vite: "npm:^5.2.11"
+ typescript-eslint: "npm:^7.13.0"
+ vite: "npm:^5.3.1"
vite-plugin-imagemin: "npm:^0.6.1"
vite-tsconfig-paths: "npm:^4.3.2"
languageName: unknown
@@ -1837,10 +2084,10 @@ __metadata:
languageName: node
linkType: hard
-"alova@npm:^2.20.5":
- version: 2.20.5
- resolution: "alova@npm:2.20.5"
- checksum: 10c0/bddd013ff116d2c98df5f9d03ef196c29c0d1a413adc673682f6cec8ced4258b39d372ea2ddcf8c1f7ccbb7c69936687d07adc0e746bcdeedad8a8d834b39709
+"alova@npm:^2.21.3":
+ version: 2.21.3
+ resolution: "alova@npm:2.21.3"
+ checksum: 10c0/ce03ced33660f15ec667e24df5c7fbeff223dace95a7d50d657dd038f21dc865d8a9290914edbc5a980c8573daa4354ac714f97ae58650ea5b8fefd8fc2d313c
languageName: node
linkType: hard
@@ -3107,33 +3354,33 @@ __metadata:
languageName: node
linkType: hard
-"esbuild@npm:^0.20.1":
- version: 0.20.2
- resolution: "esbuild@npm:0.20.2"
+"esbuild@npm:^0.21.3":
+ version: 0.21.5
+ resolution: "esbuild@npm:0.21.5"
dependencies:
- "@esbuild/aix-ppc64": "npm:0.20.2"
- "@esbuild/android-arm": "npm:0.20.2"
- "@esbuild/android-arm64": "npm:0.20.2"
- "@esbuild/android-x64": "npm:0.20.2"
- "@esbuild/darwin-arm64": "npm:0.20.2"
- "@esbuild/darwin-x64": "npm:0.20.2"
- "@esbuild/freebsd-arm64": "npm:0.20.2"
- "@esbuild/freebsd-x64": "npm:0.20.2"
- "@esbuild/linux-arm": "npm:0.20.2"
- "@esbuild/linux-arm64": "npm:0.20.2"
- "@esbuild/linux-ia32": "npm:0.20.2"
- "@esbuild/linux-loong64": "npm:0.20.2"
- "@esbuild/linux-mips64el": "npm:0.20.2"
- "@esbuild/linux-ppc64": "npm:0.20.2"
- "@esbuild/linux-riscv64": "npm:0.20.2"
- "@esbuild/linux-s390x": "npm:0.20.2"
- "@esbuild/linux-x64": "npm:0.20.2"
- "@esbuild/netbsd-x64": "npm:0.20.2"
- "@esbuild/openbsd-x64": "npm:0.20.2"
- "@esbuild/sunos-x64": "npm:0.20.2"
- "@esbuild/win32-arm64": "npm:0.20.2"
- "@esbuild/win32-ia32": "npm:0.20.2"
- "@esbuild/win32-x64": "npm:0.20.2"
+ "@esbuild/aix-ppc64": "npm:0.21.5"
+ "@esbuild/android-arm": "npm:0.21.5"
+ "@esbuild/android-arm64": "npm:0.21.5"
+ "@esbuild/android-x64": "npm:0.21.5"
+ "@esbuild/darwin-arm64": "npm:0.21.5"
+ "@esbuild/darwin-x64": "npm:0.21.5"
+ "@esbuild/freebsd-arm64": "npm:0.21.5"
+ "@esbuild/freebsd-x64": "npm:0.21.5"
+ "@esbuild/linux-arm": "npm:0.21.5"
+ "@esbuild/linux-arm64": "npm:0.21.5"
+ "@esbuild/linux-ia32": "npm:0.21.5"
+ "@esbuild/linux-loong64": "npm:0.21.5"
+ "@esbuild/linux-mips64el": "npm:0.21.5"
+ "@esbuild/linux-ppc64": "npm:0.21.5"
+ "@esbuild/linux-riscv64": "npm:0.21.5"
+ "@esbuild/linux-s390x": "npm:0.21.5"
+ "@esbuild/linux-x64": "npm:0.21.5"
+ "@esbuild/netbsd-x64": "npm:0.21.5"
+ "@esbuild/openbsd-x64": "npm:0.21.5"
+ "@esbuild/sunos-x64": "npm:0.21.5"
+ "@esbuild/win32-arm64": "npm:0.21.5"
+ "@esbuild/win32-ia32": "npm:0.21.5"
+ "@esbuild/win32-x64": "npm:0.21.5"
dependenciesMeta:
"@esbuild/aix-ppc64":
optional: true
@@ -3183,7 +3430,7 @@ __metadata:
optional: true
bin:
esbuild: bin/esbuild
- checksum: 10c0/66398f9fb2c65e456a3e649747b39af8a001e47963b25e86d9c09d2a48d61aa641b27da0ce5cad63df95ad246105e1d83e7fee0e1e22a0663def73b1c5101112
+ checksum: 10c0/fa08508adf683c3f399e8a014a6382a6b65542213431e26206c0720e536b31c09b50798747c2a105a4bbba1d9767b8d3615a74c2f7bf1ddf6d836cd11eb672de
languageName: node
linkType: hard
@@ -3243,15 +3490,15 @@ __metadata:
languageName: node
linkType: hard
-"eslint@npm:^9.3.0":
- version: 9.3.0
- resolution: "eslint@npm:9.3.0"
+"eslint@npm:^9.5.0":
+ version: 9.5.0
+ resolution: "eslint@npm:9.5.0"
dependencies:
"@eslint-community/eslint-utils": "npm:^4.2.0"
"@eslint-community/regexpp": "npm:^4.6.1"
+ "@eslint/config-array": "npm:^0.16.0"
"@eslint/eslintrc": "npm:^3.1.0"
- "@eslint/js": "npm:9.3.0"
- "@humanwhocodes/config-array": "npm:^0.13.0"
+ "@eslint/js": "npm:9.5.0"
"@humanwhocodes/module-importer": "npm:^1.0.1"
"@humanwhocodes/retry": "npm:^0.3.0"
"@nodelib/fs.walk": "npm:^1.2.8"
@@ -3263,7 +3510,7 @@ __metadata:
eslint-scope: "npm:^8.0.1"
eslint-visitor-keys: "npm:^4.0.0"
espree: "npm:^10.0.1"
- esquery: "npm:^1.4.2"
+ esquery: "npm:^1.5.0"
esutils: "npm:^2.0.2"
fast-deep-equal: "npm:^3.1.3"
file-entry-cache: "npm:^8.0.0"
@@ -3283,7 +3530,7 @@ __metadata:
text-table: "npm:^0.2.0"
bin:
eslint: bin/eslint.js
- checksum: 10c0/d0cf1923408ce720f2fa0dde39094dbee6b03a71d5e6466402bbeb29c08a618713f7a1e8cfc4b4d50dbe3750ce68adf614a0e973dea6fa36ddc428dfb89d4cac
+ checksum: 10c0/1c83d94ccfd6d97474aaaf463714eba7afa040639ad9191db430d34e9e2851ba14510651de69b52f26ee30611caf0fa4c66b3fb73bb71df6ab10cef5bb44bb32
languageName: node
linkType: hard
@@ -3298,7 +3545,7 @@ __metadata:
languageName: node
linkType: hard
-"esquery@npm:^1.4.2":
+"esquery@npm:^1.5.0":
version: 1.5.0
resolution: "esquery@npm:1.5.0"
dependencies:
@@ -5707,12 +5954,12 @@ __metadata:
languageName: node
linkType: hard
-"prettier@npm:^3.2.5":
- version: 3.2.5
- resolution: "prettier@npm:3.2.5"
+"prettier@npm:^3.3.2":
+ version: 3.3.2
+ resolution: "prettier@npm:3.3.2"
bin:
prettier: bin/prettier.cjs
- checksum: 10c0/ea327f37a7d46f2324a34ad35292af2ad4c4c3c3355da07313339d7e554320f66f65f91e856add8530157a733c6c4a897dc41b577056be5c24c40f739f5ee8c6
+ checksum: 10c0/39ed27d17f0238da6dd6571d63026566bd790d3d0edac57c285fbab525982060c8f1e01955fe38134ab10f0951a6076da37f015db8173c02f14bc7f0803a384c
languageName: node
linkType: hard
@@ -6743,9 +6990,9 @@ __metadata:
languageName: node
linkType: hard
-"terser@npm:^5.31.0":
- version: 5.31.0
- resolution: "terser@npm:5.31.0"
+"terser@npm:^5.31.1":
+ version: 5.31.1
+ resolution: "terser@npm:5.31.1"
dependencies:
"@jridgewell/source-map": "npm:^0.3.3"
acorn: "npm:^8.8.2"
@@ -6753,7 +7000,7 @@ __metadata:
source-map-support: "npm:~0.5.20"
bin:
terser: bin/terser
- checksum: 10c0/cb127a579b03fb9dcee0d293ff24814deedcd430f447933b618e8593b7454f615b5c8493c68e86a4b0188769d5ea2af5251b5d507edb208114f7e8aebdc7c850
+ checksum: 10c0/4d49a58f64c11f3742e779a0a03aff69972ca5739decb361d909d22c8f3f7d8e2ec982a928d987d56737ad50229e8ab3f62d8ba993e4b5f360a53ed487d3c06c
languageName: node
linkType: hard
@@ -6892,19 +7139,19 @@ __metadata:
languageName: node
linkType: hard
-"typescript-eslint@npm:^7.9.0":
- version: 7.9.0
- resolution: "typescript-eslint@npm:7.9.0"
+"typescript-eslint@npm:^7.13.0":
+ version: 7.13.0
+ resolution: "typescript-eslint@npm:7.13.0"
dependencies:
- "@typescript-eslint/eslint-plugin": "npm:7.9.0"
- "@typescript-eslint/parser": "npm:7.9.0"
- "@typescript-eslint/utils": "npm:7.9.0"
+ "@typescript-eslint/eslint-plugin": "npm:7.13.0"
+ "@typescript-eslint/parser": "npm:7.13.0"
+ "@typescript-eslint/utils": "npm:7.13.0"
peerDependencies:
eslint: ^8.56.0
peerDependenciesMeta:
typescript:
optional: true
- checksum: 10c0/dacdd8b278d519eea1d980c71dd301a0b68fe1100aa8eaa9e3b80acd7089765ef50bdf369b7c11ddc5f4be6ac6d90cc9283db549003c3df8cfabbe4f44a36b53
+ checksum: 10c0/ad067868ede764d411f4933285faca0d41c7e3ca439d7aac032ed78db7703e9842f5bbad4344004fa876a3577cda3c56b0716897f94a0d1aec00a90d6c0d3990
languageName: node
linkType: hard
@@ -7093,11 +7340,11 @@ __metadata:
languageName: node
linkType: hard
-"vite@npm:^5.2.11":
- version: 5.2.11
- resolution: "vite@npm:5.2.11"
+"vite@npm:^5.3.1":
+ version: 5.3.1
+ resolution: "vite@npm:5.3.1"
dependencies:
- esbuild: "npm:^0.20.1"
+ esbuild: "npm:^0.21.3"
fsevents: "npm:~2.3.3"
postcss: "npm:^8.4.38"
rollup: "npm:^4.13.0"
@@ -7129,7 +7376,7 @@ __metadata:
optional: true
bin:
vite: bin/vite.js
- checksum: 10c0/664b8d68e4f5152ae16bd2041af1bbaf11c43630ac461835bc31ff7d019913b33e465386e09f66dc1037d7aeefbb06939e0173787c063319bc2bd30c3b9ad8e4
+ checksum: 10c0/9317262c02ea2dc324dfdbc20c3c450cd89cc9a16399a41a4bf820a3a1f31cf400878c015135e355ee034853cc2399b5499899d5b1bc462d57642d71083e74b6
languageName: node
linkType: hard
diff --git a/lib/ArduinoJson/ArduinoJson.h b/lib/ArduinoJson/ArduinoJson.h
deleted file mode 100755
index 993959949..000000000
--- a/lib/ArduinoJson/ArduinoJson.h
+++ /dev/null
@@ -1,5 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#include "src/ArduinoJson.h"
diff --git a/lib/ArduinoJson/CHANGELOG.md b/lib/ArduinoJson/CHANGELOG.md
deleted file mode 100755
index fa4cfe6f0..000000000
--- a/lib/ArduinoJson/CHANGELOG.md
+++ /dev/null
@@ -1,130 +0,0 @@
-ArduinoJson: change log
-=======================
-
-v7.0.3 (2024-02-05)
-------
-
-* Improve error messages when using `char` or `char*` (issue #2043)
-* Reduce stack consumption (issue #2046)
-* Fix compatibility with GCC 4.8 (issue #2045)
-
-v7.0.2 (2024-01-19)
-------
-
-* Fix assertion `poolIndex < count_` after `JsonDocument::clear()` (issue #2034)
-
-v7.0.1 (2024-01-10)
-------
-
-* Fix "no matching function" with `JsonObjectConst::operator[]` (issue #2019)
-* Remove unused files in the PlatformIO package
-* Fix `volatile bool` serialized as `1` or `0` instead of `true` or `false` (issue #2029)
-
-v7.0.0 (2024-01-03)
-------
-
-* Remove `BasicJsonDocument`
-* Remove `StaticJsonDocument`
-* Add abstract `Allocator` class
-* Merge `DynamicJsonDocument` with `JsonDocument`
-* Remove `JSON_ARRAY_SIZE()`, `JSON_OBJECT_SIZE()`, and `JSON_STRING_SIZE()`
-* Remove `ARDUINOJSON_ENABLE_STRING_DEDUPLICATION` (string deduplication cannot be disabled anymore)
-* Remove `JsonDocument::capacity()`
-* Store the strings in the heap
-* Reference-count shared strings
-* Always store `serialized("string")` by copy (#1915)
-* Remove the zero-copy mode of `deserializeJson()` and `deserializeMsgPack()`
-* Fix double lookup in `to()`
-* Fix double call to `size()` in `serializeMsgPack()`
-* Include `ARDUINOJSON_SLOT_OFFSET_SIZE` in the namespace name
-* Remove `JsonVariant::shallowCopy()`
-* `JsonDocument`'s capacity grows as needed, no need to pass it to the constructor anymore
-* `JsonDocument`'s allocator is not monotonic anymore, removed values get recycled
-* Show a link to the documentation when user passes an unsupported input type
-* Remove `JsonDocument::memoryUsage()`
-* Remove `JsonDocument::garbageCollect()`
-* Add `deserializeJson(JsonVariant, ...)` and `deserializeMsgPack(JsonVariant, ...)` (#1226)
-* Call `shrinkToFit()` in `deserializeJson()` and `deserializeMsgPack()`
-* `serializeJson()` and `serializeMsgPack()` replace the content of `std::string` and `String` instead of appending to it
-* Replace `add()` with `add()` (`add(T)` is still supported)
-* Remove `createNestedArray()` and `createNestedObject()` (use `to()` and `to()` instead)
-
-> ### BREAKING CHANGES
->
-> As every major release, ArduinoJson 7 introduces several breaking changes.
-> I added some stubs so that most existing programs should compile, but I highty recommend you upgrade your code.
->
-> #### `JsonDocument`
->
-> In ArduinoJson 6, you could allocate the memory pool on the stack (with `StaticJsonDocument`) or in the heap (with `DynamicJsonDocument`).
-> In ArduinoJson 7, the memory pool is always allocated in the heap, so `StaticJsonDocument` and `DynamicJsonDocument` have been merged into `JsonDocument`.
->
-> In ArduinoJson 6, `JsonDocument` had a fixed capacity; in ArduinoJson 7, it has an elastic capacity that grows as needed.
-> Therefore, you don't need to specify the capacity anymore, so the macros `JSON_ARRAY_SIZE()`, `JSON_OBJECT_SIZE()`, and `JSON_STRING_SIZE()` have been removed.
->
-> ```c++
-> // ArduinoJson 6
-> StaticJsonDocument<256> doc;
-> // or
-> DynamicJsonDocument doc(256);
->
-> // ArduinoJson 7
-> JsonDocument doc;
-> ```
->
-> In ArduinoJson 7, `JsonDocument` reuses released memory, so `garbageCollect()` has been removed.
-> `shrinkToFit()` is still available and releases the over-allocated memory.
->
-> Due to a change in the implementation, it's not possible to store a pointer to a variant from another `JsonDocument`, so `shallowCopy()` has been removed.
->
-> In ArduinoJson 6, the meaning of `memoryUsage()` was clear: it returned the number of bytes used in the memory pool.
-> In ArduinoJson 7, the meaning of `memoryUsage()` would be ambiguous, so it has been removed.
->
-> #### Custom allocators
->
-> In ArduinoJson 6, you could specify a custom allocator class as a template parameter of `BasicJsonDocument`.
-> In ArduinoJson 7, you must inherit from `ArduinoJson::Allocator` and pass a pointer to an instance of your class to the constructor of `JsonDocument`.
->
-> ```c++
-> // ArduinoJson 6
-> class MyAllocator {
-> // ...
-> };
-> BasicJsonDocument doc(256);
->
-> // ArduinoJson 7
-> class MyAllocator : public ArduinoJson::Allocator {
-> // ...
-> };
-> MyAllocator myAllocator;
-> JsonDocument doc(&myAllocator);
-> ```
->
-> #### `createNestedArray()` and `createNestedObject()`
->
-> In ArduinoJson 6, you could create a nested array or object with `createNestedArray()` and `createNestedObject()`.
-> In ArduinoJson 7, you must use `add()` or `to()` instead.
->
-> For example, to create `[[],{}]`, you would write:
->
-> ```c++
-> // ArduinoJson 6
-> arr.createNestedArray();
-> arr.createNestedObject();
->
-> // ArduinoJson 7
-> arr.add();
-> arr.add();
-> ```
->
-> And to create `{"array":[],"object":{}}`, you would write:
->
-> ```c++
-> // ArduinoJson 6
-> obj.createNestedArray("array");
-> obj.createNestedObject("object");
->
-> // ArduinoJson 7
-> obj["array"].to();
-> obj["object"].to();
-> ```
diff --git a/lib/ArduinoJson/LICENSE.txt b/lib/ArduinoJson/LICENSE.txt
deleted file mode 100755
index 56bb92b7f..000000000
--- a/lib/ArduinoJson/LICENSE.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-The MIT License (MIT)
----------------------
-
-Copyright © 2014-2024, Benoit BLANCHON
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/lib/ArduinoJson/README.md b/lib/ArduinoJson/README.md
deleted file mode 100755
index 2900240e5..000000000
--- a/lib/ArduinoJson/README.md
+++ /dev/null
@@ -1,155 +0,0 @@
-
-
-
-
----
-
-[](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A7.x)
-[](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/7.x)
-[](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
-[](https://coveralls.io/github/bblanchon/ArduinoJson?branch=7.x)
-[](https://github.com/bblanchon/ArduinoJson/stargazers)
-[](https://github.com/sponsors/bblanchon)
-
-ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things).
-
-## Features
-
-* [JSON deserialization](https://arduinojson.org/v7/api/json/deserializejson/)
- * [Optionally decodes UTF-16 escape sequences to UTF-8](https://arduinojson.org/v7/api/config/decode_unicode/)
- * [Optionally supports comments in the input](https://arduinojson.org/v7/api/config/enable_comments/)
- * [Optionally filters the input to keep only desired values](https://arduinojson.org/v7/api/json/deserializejson/#filtering)
- * Supports single quotes as a string delimiter
- * Compatible with [NDJSON](http://ndjson.org/) and [JSON Lines](https://jsonlines.org/)
-* [JSON serialization](https://arduinojson.org/v7/api/json/serializejson/)
- * [Can write to a buffer or a stream](https://arduinojson.org/v7/api/json/serializejson/)
- * [Optionally indents the document (prettified JSON)](https://arduinojson.org/v7/api/json/serializejsonpretty/)
-* [MessagePack serialization](https://arduinojson.org/v7/api/msgpack/serializemsgpack/)
-* [MessagePack deserialization](https://arduinojson.org/v7/api/msgpack/deserializemsgpack/)
-* Efficient
- * [Twice smaller than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
- * [Almost 10% faster than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
- * [Consumes roughly 10% less RAM than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/)
- * [Deduplicates strings](https://arduinojson.org/news/2020/08/01/version-6-16-0/)
-* Versatile
- * Supports [custom allocators (to use external RAM chip, for example)](https://arduinojson.org/v7/how-to/use-external-ram-on-esp32/)
- * Supports [`String`](https://arduinojson.org/v7/api/config/enable_arduino_string/), [`std::string`](https://arduinojson.org/v7/api/config/enable_std_string/), and [`std::string_view`](https://arduinojson.org/v7/api/config/enable_string_view/)
- * Supports [`Stream`](https://arduinojson.org/v7/api/config/enable_arduino_stream/) and [`std::istream`/`std::ostream`](https://arduinojson.org/v7/api/config/enable_std_stream/)
- * Supports [Flash strings](https://arduinojson.org/v7/api/config/enable_progmem/)
- * Supports [custom readers](https://arduinojson.org/v7/api/json/deserializejson/#custom-reader) and [custom writers](https://arduinojson.org/v7/api/json/serializejson/#custom-writer)
- * Supports [custom converters](https://arduinojson.org/news/2021/05/04/version-6-18-0/)
-* Portable
- * Usable on any C++ project (not limited to Arduino)
- * Compatible with C++11, C++14 and C++17
- * Support for C++98/C++03 available on [ArduinoJson 6.20.x](https://github.com/bblanchon/ArduinoJson/tree/6.20.x)
- * Zero warnings with `-Wall -Wextra -pedantic` and `/W4`
- * [Header-only library](https://en.wikipedia.org/wiki/Header-only)
- * Works with virtually any board
- * Arduino boards: [Uno](https://amzn.to/38aL2ik), [Due](https://amzn.to/36YkWi2), [Micro](https://amzn.to/35WkdwG), [Nano](https://amzn.to/2QTvwRX), [Mega](https://amzn.to/36XWhuf), [Yun](https://amzn.to/30odURc), [Leonardo](https://amzn.to/36XWjlR)...
- * Espressif chips: [ESP8266](https://amzn.to/36YluV8), [ESP32](https://amzn.to/2G4pRCB)
- * Lolin (WeMos) boards: [D1 mini](https://amzn.to/2QUpz7q), [D1 Mini Pro](https://amzn.to/36UsGSs)...
- * Teensy boards: [4.0](https://amzn.to/30ljXGq), [3.2](https://amzn.to/2FT0EuC), [2.0](https://amzn.to/2QXUMXj)
- * Particle boards: [Argon](https://amzn.to/2FQHa9X), [Boron](https://amzn.to/36WgLUd), [Electron](https://amzn.to/30vEc4k), [Photon](https://amzn.to/387F9Cd)...
- * Texas Instruments boards: [MSP430](https://amzn.to/30nJWgg)...
- * Soft cores: [Nios II](https://en.wikipedia.org/wiki/Nios_II)...
- * Tested on all major development environments
- * [Arduino IDE](https://www.arduino.cc/en/Main/Software)
- * [Atmel Studio](http://www.atmel.com/microsite/atmel-studio/)
- * [Atollic TrueSTUDIO](https://atollic.com/truestudio/)
- * [Energia](http://energia.nu/)
- * [IAR Embedded Workbench](https://www.iar.com/iar-embedded-workbench/)
- * [Keil uVision](http://www.keil.com/)
- * [MPLAB X IDE](http://www.microchip.com/mplab/mplab-x-ide)
- * [Particle](https://www.particle.io/)
- * [PlatformIO](http://platformio.org/)
- * [Sloeber plugin for Eclipse](https://eclipse.baeyens.it/)
- * [Visual Micro](http://www.visualmicro.com/)
- * [Visual Studio](https://www.visualstudio.com/)
- * [Even works with online compilers like wandbox.org](https://wandbox.org/permlink/RlZSKy17DjJ6HcdN)
- * [CMake friendly](https://arduinojson.org/v7/how-to/use-arduinojson-with-cmake/)
-* Well designed
- * [Elegant API](http://arduinojson.org/v7/example/)
- * [Thread-safe](https://en.wikipedia.org/wiki/Thread_safety)
- * Self-contained (no external dependency)
- * `const` friendly
- * [`for` friendly](https://arduinojson.org/v7/api/jsonobject/begin_end/)
- * [TMP friendly](https://en.wikipedia.org/wiki/Template_metaprogramming)
- * Handles [integer overflows](https://arduinojson.org/v7/api/jsonvariant/as/#integer-overflows)
-* Well tested
- * [Unit test coverage close to 100%](https://coveralls.io/github/bblanchon/ArduinoJson?branch=7.x)
- * Continuously tested on
- * [Visual Studio 2017, 2019, 2022](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/7.x)
- * [GCC 4.8, 5, 6, 7, 8, 9, 10, 11, 12](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
- * [Clang 3.9, 4.0, 5.0, 6.0, 7, 8, 9, 10, 11, 12, 13, 14, 15](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22)
- * [Continuously fuzzed with Google OSS Fuzz](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
- * Passes all default checks of [clang-tidy](https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/clang-tidy/)
-* Well documented
- * [Tutorials](https://arduinojson.org/v7/doc/deserialization/)
- * [Examples](https://arduinojson.org/v7/example/)
- * [How-tos](https://arduinojson.org/v7/example/)
- * [FAQ](https://arduinojson.org/v7/faq/)
- * [Troubleshooter](https://arduinojson.org/v7/troubleshooter/)
- * [Book](https://arduinojson.org/book/)
- * [Changelog](CHANGELOG.md)
-* Vibrant user community
- * Most popular of all Arduino libraries on [GitHub](https://github.com/search?o=desc&q=arduino+library&s=stars&type=Repositories)
- * [Used in hundreds of projects](https://www.hackster.io/search?i=projects&q=arduinojson)
- * [Responsive support](https://github.com/bblanchon/ArduinoJson/issues?q=is%3Aissue+is%3Aclosed)
-
-## Quickstart
-
-### Deserialization
-
-Here is a program that parses a JSON document with ArduinoJson.
-
-```c++
-const char* json = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}";
-
-JsonDocument doc;
-deserializeJson(doc, json);
-
-const char* sensor = doc["sensor"];
-long time = doc["time"];
-double latitude = doc["data"][0];
-double longitude = doc["data"][1];
-```
-
-See the [tutorial on arduinojson.org](https://arduinojson.org/v7/doc/deserialization/)
-
-### Serialization
-
-Here is a program that generates a JSON document with ArduinoJson:
-
-```c++
-JsonDocument doc;
-
-doc["sensor"] = "gps";
-doc["time"] = 1351824120;
-doc["data"][0] = 48.756080;
-doc["data"][1] = 2.302038;
-
-serializeJson(doc, Serial);
-// This prints:
-// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]}
-```
-
-See the [tutorial on arduinojson.org](https://arduinojson.org/v7/doc/serialization/)
-
-## Sponsors
-
-ArduinoJson is thankful to its sponsors. Please give them a visit; they deserve it!
-
-
-
-
-
-
-
-
-
-
-
-
-If you run a commercial project that embeds ArduinoJson, think about [sponsoring the library's development](https://github.com/sponsors/bblanchon): it ensures the code that your products rely on stays actively maintained. It can also give your project some exposure to the makers' community.
-
-If you are an individual user and want to support the development (or give a sign of appreciation), consider purchasing the book [Mastering ArduinoJson](https://arduinojson.org/book/) ❤, or simply [cast a star](https://github.com/bblanchon/ArduinoJson/stargazers) ⭐.
diff --git a/lib/ArduinoJson/SUPPORT.md b/lib/ArduinoJson/SUPPORT.md
deleted file mode 100755
index c47e1b1ba..000000000
--- a/lib/ArduinoJson/SUPPORT.md
+++ /dev/null
@@ -1,27 +0,0 @@
-# ArduinoJson Support
-
-First off, thank you very much for using ArduinoJson.
-
-We'll be very happy to help you, but first please read the following.
-
-## Before asking for help
-
-1. Read the [FAQ](https://arduinojson.org/faq/?utm_source=github&utm_medium=support)
-2. Search in the [API Reference](https://arduinojson.org/api/?utm_source=github&utm_medium=support)
-
-If you did not find the answer, please create a [new issue on GitHub](https://github.com/bblanchon/ArduinoJson/issues/new).
-
-It is OK to add a comment to a currently opened issue, but please avoid adding comments to a closed issue.
-
-## Before hitting the Submit button
-
-Please provide all the relevant information:
-
-* Good title
-* Short description of the problem
-* Target platform
-* Compiler model and version
-* [MVCE](https://stackoverflow.com/help/mcve)
-* Compiler output
-
-Good questions get fast answers!
diff --git a/lib/ArduinoJson/src/ArduinoJson.h b/lib/ArduinoJson/src/ArduinoJson.h
deleted file mode 100755
index fec64c3d1..000000000
--- a/lib/ArduinoJson/src/ArduinoJson.h
+++ /dev/null
@@ -1,17 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#ifdef __cplusplus
-
-# include "ArduinoJson.hpp"
-
-using namespace ArduinoJson;
-
-#else
-
-#error ArduinoJson requires a C++ compiler, please change file extension to .cc or .cpp
-
-#endif
diff --git a/lib/ArduinoJson/src/ArduinoJson.hpp b/lib/ArduinoJson/src/ArduinoJson.hpp
deleted file mode 100755
index c210ed266..000000000
--- a/lib/ArduinoJson/src/ArduinoJson.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#if __cplusplus < 201103L && (!defined(_MSC_VER) || _MSC_VER < 1910)
-# error ArduinoJson requires C++11 or newer. Configure your compiler for C++11 or downgrade ArduinoJson to 6.20.
-#endif
-
-#include "ArduinoJson/Configuration.hpp"
-
-// Include Arduino.h before stdlib.h to avoid conflict with atexit()
-// https://github.com/bblanchon/ArduinoJson/pull/1693#issuecomment-1001060240
-#if ARDUINOJSON_ENABLE_ARDUINO_STRING || ARDUINOJSON_ENABLE_ARDUINO_STREAM || \
- ARDUINOJSON_ENABLE_ARDUINO_PRINT || \
- (ARDUINOJSON_ENABLE_PROGMEM && defined(ARDUINO))
-# include
-#endif
-
-#if !ARDUINOJSON_DEBUG
-# ifdef __clang__
-# pragma clang system_header
-# elif defined __GNUC__
-# pragma GCC system_header
-# endif
-#endif
-
-#include "ArduinoJson/Array/JsonArray.hpp"
-#include "ArduinoJson/Object/JsonObject.hpp"
-#include "ArduinoJson/Variant/JsonVariantConst.hpp"
-
-#include "ArduinoJson/Document/JsonDocument.hpp"
-
-#include "ArduinoJson/Array/ArrayImpl.hpp"
-#include "ArduinoJson/Array/ElementProxy.hpp"
-#include "ArduinoJson/Array/Utilities.hpp"
-#include "ArduinoJson/Collection/CollectionImpl.hpp"
-#include "ArduinoJson/Memory/VariantPoolImpl.hpp"
-#include "ArduinoJson/Object/MemberProxy.hpp"
-#include "ArduinoJson/Object/ObjectImpl.hpp"
-#include "ArduinoJson/Variant/ConverterImpl.hpp"
-#include "ArduinoJson/Variant/JsonVariantCopier.hpp"
-#include "ArduinoJson/Variant/VariantCompare.hpp"
-#include "ArduinoJson/Variant/VariantRefBaseImpl.hpp"
-
-#include "ArduinoJson/Json/JsonDeserializer.hpp"
-#include "ArduinoJson/Json/JsonSerializer.hpp"
-#include "ArduinoJson/Json/PrettyJsonSerializer.hpp"
-#include "ArduinoJson/MsgPack/MsgPackDeserializer.hpp"
-#include "ArduinoJson/MsgPack/MsgPackSerializer.hpp"
-
-#include "ArduinoJson/compatibility.hpp"
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
deleted file mode 100755
index 93a65d543..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class ArrayData : public CollectionData {
- public:
- VariantData* addElement(ResourceManager* resources) {
- return addSlot(resources).data();
- }
-
- static VariantData* addElement(ArrayData* array, ResourceManager* resources) {
- if (!array)
- return nullptr;
- return array->addElement(resources);
- }
-
- VariantData* getOrAddElement(size_t index, ResourceManager* resources);
-
- VariantData* getElement(size_t index, const ResourceManager* resources) const;
-
- static VariantData* getElement(const ArrayData* array, size_t index,
- const ResourceManager* resources) {
- if (!array)
- return nullptr;
- return array->getElement(index, resources);
- }
-
- void removeElement(size_t index, ResourceManager* resources);
-
- static void removeElement(ArrayData* array, size_t index,
- ResourceManager* resources) {
- if (!array)
- return;
- array->removeElement(index, resources);
- }
-
- bool copyFrom(const ArrayData& src, ResourceManager* resources);
-
- static bool copy(ArrayData* dst, const ArrayData* src,
- ResourceManager* resources) {
- if (!dst || !src)
- return false;
-
- return dst->copyFrom(*src, resources);
- }
-
- private:
- iterator at(size_t index, const ResourceManager* resources) const;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
deleted file mode 100755
index 595e847b3..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-inline ArrayData::iterator ArrayData::at(
- size_t index, const ResourceManager* resources) const {
- auto it = createIterator(resources);
- while (!it.done() && index) {
- it.next(resources);
- --index;
- }
- return it;
-}
-
-inline VariantData* ArrayData::getOrAddElement(size_t index,
- ResourceManager* resources) {
- auto it = createIterator(resources);
- while (!it.done() && index > 0) {
- it.next(resources);
- index--;
- }
- if (it.done())
- index++;
- VariantData* element = it.data();
- while (index > 0) {
- element = addElement(resources);
- if (!element)
- return nullptr;
- index--;
- }
- return element;
-}
-
-inline VariantData* ArrayData::getElement(
- size_t index, const ResourceManager* resources) const {
- return at(index, resources).data();
-}
-
-inline void ArrayData::removeElement(size_t index, ResourceManager* resources) {
- remove(at(index, resources), resources);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
deleted file mode 100755
index f36b68ea3..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A proxy class to get or set an element of an array.
-// https://arduinojson.org/v7/api/jsonarray/subscript/
-template
-class ElementProxy : public VariantRefBase>,
- public VariantOperators> {
- friend class VariantAttorney;
-
- public:
- ElementProxy(TUpstream upstream, size_t index)
- : upstream_(upstream), index_(index) {}
-
- ElementProxy(const ElementProxy& src)
- : upstream_(src.upstream_), index_(src.index_) {}
-
- ElementProxy& operator=(const ElementProxy& src) {
- this->set(src);
- return *this;
- }
-
- template
- ElementProxy& operator=(const T& src) {
- this->set(src);
- return *this;
- }
-
- template
- ElementProxy& operator=(T* src) {
- this->set(src);
- return *this;
- }
-
- private:
- ResourceManager* getResourceManager() const {
- return VariantAttorney::getResourceManager(upstream_);
- }
-
- FORCE_INLINE VariantData* getData() const {
- return VariantData::getElement(
- VariantAttorney::getData(upstream_), index_,
- VariantAttorney::getResourceManager(upstream_));
- }
-
- VariantData* getOrCreateData() const {
- auto data = VariantAttorney::getOrCreateData(upstream_);
- if (!data)
- return nullptr;
- return data->getOrAddElement(
- index_, VariantAttorney::getResourceManager(upstream_));
- }
-
- TUpstream upstream_;
- size_t index_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
deleted file mode 100755
index 292336308..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
+++ /dev/null
@@ -1,196 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class JsonObject;
-
-// A reference to an array in a JsonDocument
-// https://arduinojson.org/v7/api/jsonarray/
-class JsonArray : public detail::VariantOperators {
- friend class detail::VariantAttorney;
-
- public:
- typedef JsonArrayIterator iterator;
-
- // Constructs an unbound reference.
- JsonArray() : data_(0), resources_(0) {}
-
- // INTERNAL USE ONLY
- JsonArray(detail::ArrayData* data, detail::ResourceManager* resources)
- : data_(data), resources_(resources) {}
-
- // Returns a JsonVariant pointing to the array.
- // https://arduinojson.org/v7/api/jsonvariant/
- operator JsonVariant() {
- void* data = data_; // prevent warning cast-align
- return JsonVariant(reinterpret_cast(data),
- resources_);
- }
-
- // Returns a read-only reference to the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/
- operator JsonArrayConst() const {
- return JsonArrayConst(data_, resources_);
- }
-
- // Appends a new (empty) element to the array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template
- typename detail::enable_if::value, T>::type
- add() const {
- return add().to();
- }
-
- // Appends a new (null) element to the array.
- // Returns a reference to the new element.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template
- typename detail::enable_if::value, T>::type
- add() const {
- return JsonVariant(detail::ArrayData::addElement(data_, resources_),
- resources_);
- }
-
- // Appends a value to the array.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template
- bool add(const T& value) const {
- return add().set(value);
- }
-
- // Appends a value to the array.
- // https://arduinojson.org/v7/api/jsonarray/add/
- template
- bool add(T* value) const {
- return add().set(value);
- }
-
- // Returns an iterator to the first element of the array.
- // https://arduinojson.org/v7/api/jsonarray/begin/
- iterator begin() const {
- if (!data_)
- return iterator();
- return iterator(data_->createIterator(resources_), resources_);
- }
-
- // Returns an iterator following the last element of the array.
- // https://arduinojson.org/v7/api/jsonarray/end/
- iterator end() const {
- return iterator();
- }
-
- // Copies an array.
- // https://arduinojson.org/v7/api/jsonarray/set/
- bool set(JsonArrayConst src) const {
- if (!data_)
- return false;
-
- clear();
- for (auto element : src) {
- if (!add(element))
- return false;
- }
-
- return true;
- }
-
- // Removes the element at the specified iterator.
- // https://arduinojson.org/v7/api/jsonarray/remove/
- void remove(iterator it) const {
- detail::ArrayData::remove(data_, it.iterator_, resources_);
- }
-
- // Removes the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarray/remove/
- void remove(size_t index) const {
- detail::ArrayData::removeElement(data_, index, resources_);
- }
-
- // Removes all the elements of the array.
- // https://arduinojson.org/v7/api/jsonarray/clear/
- void clear() const {
- detail::ArrayData::clear(data_, resources_);
- }
-
- // Gets or sets the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarray/subscript/
- detail::ElementProxy operator[](size_t index) const {
- return {*this, index};
- }
-
- operator JsonVariantConst() const {
- return JsonVariantConst(collectionToVariant(data_), resources_);
- }
-
- // Returns true if the reference is unbound.
- // https://arduinojson.org/v7/api/jsonarray/isnull/
- bool isNull() const {
- return data_ == 0;
- }
-
- // Returns true if the reference is bound.
- // https://arduinojson.org/v7/api/jsonarray/isnull/
- operator bool() const {
- return data_ != 0;
- }
-
- // Returns the depth (nesting level) of the array.
- // https://arduinojson.org/v7/api/jsonarray/nesting/
- size_t nesting() const {
- return detail::VariantData::nesting(collectionToVariant(data_), resources_);
- }
-
- // Returns the number of elements in the array.
- // https://arduinojson.org/v7/api/jsonarray/size/
- size_t size() const {
- return data_ ? data_->size(resources_) : 0;
- }
-
- // DEPRECATED: use add() instead
- ARDUINOJSON_DEPRECATED("use add() instead")
- JsonVariant add() const {
- return add();
- }
-
- // DEPRECATED: use add() instead
- ARDUINOJSON_DEPRECATED("use add() instead")
- JsonArray createNestedArray() const {
- return add();
- }
-
- // DEPRECATED: use add() instead
- ARDUINOJSON_DEPRECATED("use add() instead")
- JsonObject createNestedObject() const;
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const {
- return 0;
- }
-
- private:
- detail::ResourceManager* getResourceManager() const {
- return resources_;
- }
-
- detail::VariantData* getData() const {
- return collectionToVariant(data_);
- }
-
- detail::VariantData* getOrCreateData() const {
- return collectionToVariant(data_);
- }
-
- detail::ArrayData* data_;
- detail::ResourceManager* resources_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
deleted file mode 100755
index 6c0d7db2f..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-#include
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class JsonObject;
-
-// A read-only reference to an array in a JsonDocument
-// https://arduinojson.org/v7/api/jsonarrayconst/
-class JsonArrayConst : public detail::VariantOperators {
- friend class JsonArray;
- friend class detail::VariantAttorney;
-
- public:
- typedef JsonArrayConstIterator iterator;
-
- // Returns an iterator to the first element of the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/begin/
- iterator begin() const {
- if (!data_)
- return iterator();
- return iterator(data_->createIterator(resources_), resources_);
- }
-
- // Returns an iterator to the element following the last element of the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/end/
- iterator end() const {
- return iterator();
- }
-
- // Creates an unbound reference.
- JsonArrayConst() : data_(0) {}
-
- // INTERNAL USE ONLY
- JsonArrayConst(const detail::ArrayData* data,
- const detail::ResourceManager* resources)
- : data_(data), resources_(resources) {}
-
- // Returns the element at the specified index.
- // https://arduinojson.org/v7/api/jsonarrayconst/subscript/
- JsonVariantConst operator[](size_t index) const {
- return JsonVariantConst(
- detail::ArrayData::getElement(data_, index, resources_), resources_);
- }
-
- operator JsonVariantConst() const {
- return JsonVariantConst(getData(), resources_);
- }
-
- // Returns true if the reference is unbound.
- // https://arduinojson.org/v7/api/jsonarrayconst/isnull/
- bool isNull() const {
- return data_ == 0;
- }
-
- // Returns true if the reference is bound.
- // https://arduinojson.org/v7/api/jsonarrayconst/isnull/
- operator bool() const {
- return data_ != 0;
- }
-
- // Returns the depth (nesting level) of the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/nesting/
- size_t nesting() const {
- return detail::VariantData::nesting(getData(), resources_);
- }
-
- // Returns the number of elements in the array.
- // https://arduinojson.org/v7/api/jsonarrayconst/size/
- size_t size() const {
- return data_ ? data_->size(resources_) : 0;
- }
-
- // DEPRECATED: always returns zero
- ARDUINOJSON_DEPRECATED("always returns zero")
- size_t memoryUsage() const {
- return 0;
- }
-
- private:
- const detail::VariantData* getData() const {
- return collectionToVariant(data_);
- }
-
- const detail::ArrayData* data_;
- const detail::ResourceManager* resources_;
-};
-
-// Compares the content of two arrays.
-// Returns true if the two arrays are equal.
-inline bool operator==(JsonArrayConst lhs, JsonArrayConst rhs) {
- if (!lhs && !rhs)
- return true;
- if (!lhs || !rhs)
- return false;
-
- auto a = lhs.begin();
- auto b = rhs.begin();
-
- for (;;) {
- if (a == b) // same pointer or both null
- return true;
- if (a == lhs.end() || b == rhs.end())
- return false;
- if (*a != *b)
- return false;
- ++a;
- ++b;
- }
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
deleted file mode 100755
index 70bb28f4a..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
+++ /dev/null
@@ -1,96 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-template
-class Ptr {
- public:
- Ptr(T value) : value_(value) {}
-
- T* operator->() {
- return &value_;
- }
-
- T& operator*() {
- return value_;
- }
-
- private:
- T value_;
-};
-
-class JsonArrayIterator {
- friend class JsonArray;
-
- public:
- JsonArrayIterator() {}
- explicit JsonArrayIterator(detail::ArrayData::iterator iterator,
- detail::ResourceManager* resources)
- : iterator_(iterator), resources_(resources) {}
-
- JsonVariant operator*() {
- return JsonVariant(iterator_.data(), resources_);
- }
- Ptr operator->() {
- return operator*();
- }
-
- bool operator==(const JsonArrayIterator& other) const {
- return iterator_ == other.iterator_;
- }
-
- bool operator!=(const JsonArrayIterator& other) const {
- return iterator_ != other.iterator_;
- }
-
- JsonArrayIterator& operator++() {
- iterator_.next(resources_);
- return *this;
- }
-
- private:
- detail::ArrayData::iterator iterator_;
- detail::ResourceManager* resources_;
-};
-
-class JsonArrayConstIterator {
- friend class JsonArray;
-
- public:
- JsonArrayConstIterator() {}
- explicit JsonArrayConstIterator(detail::ArrayData::iterator iterator,
- const detail::ResourceManager* resources)
- : iterator_(iterator), resources_(resources) {}
-
- JsonVariantConst operator*() const {
- return JsonVariantConst(iterator_.data(), resources_);
- }
- Ptr operator->() {
- return operator*();
- }
-
- bool operator==(const JsonArrayConstIterator& other) const {
- return iterator_ == other.iterator_;
- }
-
- bool operator!=(const JsonArrayConstIterator& other) const {
- return iterator_ != other.iterator_;
- }
-
- JsonArrayConstIterator& operator++() {
- iterator_.next(resources_);
- return *this;
- }
-
- private:
- detail::ArrayData::iterator iterator_;
- const detail::ResourceManager* resources_;
-};
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
deleted file mode 100755
index ff589cea8..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
+++ /dev/null
@@ -1,114 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// Copies a value to a JsonVariant.
-// This is a degenerated form of copyArray() to stop the recursion.
-template
-inline typename detail::enable_if::value, bool>::type
-copyArray(const T& src, JsonVariant dst) {
- return dst.set(src);
-}
-
-// Copies values from an array to a JsonArray or a JsonVariant.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template
-inline typename detail::enable_if<
- !detail::is_base_of::value, bool>::type
-copyArray(T (&src)[N], const TDestination& dst) {
- return copyArray(src, N, dst);
-}
-
-// Copies values from an array to a JsonArray or a JsonVariant.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template
-inline typename detail::enable_if<
- !detail::is_base_of::value, bool>::type
-copyArray(const T* src, size_t len, const TDestination& dst) {
- bool ok = true;
- for (size_t i = 0; i < len; i++) {
- ok &= copyArray(src[i], dst.template add());
- }
- return ok;
-}
-
-// Copies a string to a JsonVariant.
-// This is a degenerated form of copyArray() to handle strings.
-template
-inline bool copyArray(const char* src, size_t, const TDestination& dst) {
- return dst.set(src);
-}
-
-// Copies values from an array to a JsonDocument.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template
-inline bool copyArray(const T& src, JsonDocument& dst) {
- return copyArray(src, dst.to());
-}
-
-// Copies an array to a JsonDocument.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template
-inline bool copyArray(const T* src, size_t len, JsonDocument& dst) {
- return copyArray(src, len, dst.to());
-}
-
-// Copies a value from a JsonVariant.
-// This is a degenerated form of copyArray() to stop the recursion.
-template
-inline typename detail::enable_if::value, size_t>::type
-copyArray(JsonVariantConst src, T& dst) {
- dst = src.as();
- return 1;
-}
-
-// Copies values from a JsonArray or JsonVariant to an array.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template
-inline size_t copyArray(JsonArrayConst src, T (&dst)[N]) {
- return copyArray(src, dst, N);
-}
-
-// Copies values from a JsonArray or JsonVariant to an array.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template
-inline size_t copyArray(JsonArrayConst src, T* dst, size_t len) {
- size_t i = 0;
- for (JsonArrayConst::iterator it = src.begin(); it != src.end() && i < len;
- ++it)
- copyArray(*it, dst[i++]);
- return i;
-}
-
-// Copies a string from a JsonVariant.
-// This is a degenerated form of copyArray() to handle strings.
-template
-inline size_t copyArray(JsonVariantConst src, char (&dst)[N]) {
- JsonString s = src;
- size_t len = N - 1;
- if (len > s.size())
- len = s.size();
- memcpy(dst, s.c_str(), len);
- dst[len] = 0;
- return 1;
-}
-
-// Copies values from a JsonDocument to an array.
-// https://arduinojson.org/v7/api/misc/copyarray/
-template
-inline typename detail::enable_if<
- detail::is_array::value &&
- detail::is_base_of::value,
- size_t>::type
-copyArray(const TSource& src, T& dst) {
- return copyArray(src.template as(), dst);
-}
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
deleted file mode 100755
index 07fe7e043..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-#include // size_t
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-class VariantData;
-class VariantSlot;
-
-class CollectionIterator {
- friend class CollectionData;
-
- public:
- CollectionIterator() : slot_(nullptr), currentId_(NULL_SLOT) {}
-
- void next(const ResourceManager* resources);
-
- bool done() const {
- return slot_ == nullptr;
- }
-
- bool operator==(const CollectionIterator& other) const {
- return slot_ == other.slot_;
- }
-
- bool operator!=(const CollectionIterator& other) const {
- return slot_ != other.slot_;
- }
-
- VariantData* operator->() {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return data();
- }
-
- VariantData& operator*() {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return *data();
- }
-
- const VariantData& operator*() const {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return *data();
- }
-
- const char* key() const;
- bool ownsKey() const;
-
- void setKey(StringNode*);
- void setKey(const char*);
-
- VariantData* data() {
- return reinterpret_cast(slot_);
- }
-
- const VariantData* data() const {
- return reinterpret_cast(slot_);
- }
-
- private:
- CollectionIterator(VariantSlot* slot, SlotId slotId);
-
- VariantSlot* slot_;
- SlotId currentId_, nextId_;
-};
-
-class CollectionData {
- SlotId head_ = NULL_SLOT;
- SlotId tail_ = NULL_SLOT;
-
- public:
- // Placement new
- static void* operator new(size_t, void* p) noexcept {
- return p;
- }
-
- static void operator delete(void*, void*) noexcept {}
-
- using iterator = CollectionIterator;
-
- iterator createIterator(const ResourceManager* resources) const {
- return iterator(resources->getSlot(head_), head_);
- }
-
- size_t size(const ResourceManager*) const;
- size_t nesting(const ResourceManager*) const;
-
- void clear(ResourceManager* resources);
-
- static void clear(CollectionData* collection, ResourceManager* resources) {
- if (!collection)
- return;
- collection->clear(resources);
- }
-
- void remove(iterator it, ResourceManager* resources);
-
- static void remove(CollectionData* collection, iterator it,
- ResourceManager* resources) {
- if (collection)
- return collection->remove(it, resources);
- }
-
- SlotId head() const {
- return head_;
- }
-
- protected:
- iterator addSlot(ResourceManager*);
-
- private:
- SlotWithId getPreviousSlot(VariantSlot*, const ResourceManager*) const;
- void releaseSlot(SlotWithId, ResourceManager*);
-};
-
-inline const VariantData* collectionToVariant(
- const CollectionData* collection) {
- const void* data = collection; // prevent warning cast-align
- return reinterpret_cast(data);
-}
-
-inline VariantData* collectionToVariant(CollectionData* collection) {
- void* data = collection; // prevent warning cast-align
- return reinterpret_cast(data);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
deleted file mode 100755
index 79d9ac72b..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-#include
-#include
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-inline CollectionIterator::CollectionIterator(VariantSlot* slot, SlotId slotId)
- : slot_(slot), currentId_(slotId) {
- nextId_ = slot_ ? slot_->next() : NULL_SLOT;
-}
-
-inline const char* CollectionIterator::key() const {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return slot_->key();
-}
-
-inline void CollectionIterator::setKey(const char* s) {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- ARDUINOJSON_ASSERT(s != nullptr);
- return slot_->setKey(s);
-}
-
-inline void CollectionIterator::setKey(StringNode* s) {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- ARDUINOJSON_ASSERT(s != nullptr);
- return slot_->setKey(s);
-}
-
-inline bool CollectionIterator::ownsKey() const {
- ARDUINOJSON_ASSERT(slot_ != nullptr);
- return slot_->ownsKey();
-}
-
-inline void CollectionIterator::next(const ResourceManager* resources) {
- ARDUINOJSON_ASSERT(currentId_ != NULL_SLOT);
- slot_ = resources->getSlot(nextId_);
- currentId_ = nextId_;
- if (slot_)
- nextId_ = slot_->next();
-}
-
-inline CollectionData::iterator CollectionData::addSlot(
- ResourceManager* resources) {
- auto slot = resources->allocSlot();
- if (!slot)
- return {};
- if (tail_ != NULL_SLOT) {
- auto tail = resources->getSlot(tail_);
- tail->setNext(slot.id());
- tail_ = slot.id();
- } else {
- head_ = slot.id();
- tail_ = slot.id();
- }
- return iterator(slot, slot.id());
-}
-
-inline void CollectionData::clear(ResourceManager* resources) {
- auto next = head_;
- while (next != NULL_SLOT) {
- auto currId = next;
- auto slot = resources->getSlot(next);
- next = slot->next();
- releaseSlot(SlotWithId(slot, currId), resources);
- }
-
- head_ = NULL_SLOT;
- tail_ = NULL_SLOT;
-}
-
-inline SlotWithId CollectionData::getPreviousSlot(
- VariantSlot* target, const ResourceManager* resources) const {
- auto prev = SlotWithId();
- auto currentId = head_;
- while (currentId != NULL_SLOT) {
- auto currentSlot = resources->getSlot(currentId);
- if (currentSlot == target)
- return prev;
- prev = SlotWithId(currentSlot, currentId);
- currentId = currentSlot->next();
- }
- return SlotWithId();
-}
-
-inline void CollectionData::remove(iterator it, ResourceManager* resources) {
- if (it.done())
- return;
- auto curr = it.slot_;
- auto prev = getPreviousSlot(curr, resources);
- auto next = curr->next();
- if (prev)
- prev->setNext(next);
- else
- head_ = next;
- if (next == NULL_SLOT)
- tail_ = prev.id();
- releaseSlot({it.slot_, it.currentId_}, resources);
-}
-
-inline size_t CollectionData::nesting(const ResourceManager* resources) const {
- size_t maxChildNesting = 0;
- for (auto it = createIterator(resources); !it.done(); it.next(resources)) {
- size_t childNesting = it->nesting(resources);
- if (childNesting > maxChildNesting)
- maxChildNesting = childNesting;
- }
- return maxChildNesting + 1;
-}
-
-inline size_t CollectionData::size(const ResourceManager* resources) const {
- size_t count = 0;
- for (auto it = createIterator(resources); !it.done(); it.next(resources))
- count++;
- return count;
-}
-
-inline void CollectionData::releaseSlot(SlotWithId slot,
- ResourceManager* resources) {
- if (slot->ownsKey())
- resources->dereferenceString(slot->key());
- slot->data()->setNull(resources);
- resources->freeSlot(slot);
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
deleted file mode 100755
index 12d60688a..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
+++ /dev/null
@@ -1,253 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-// Support std::istream and std::ostream
-#ifndef ARDUINOJSON_ENABLE_STD_STREAM
-# ifdef __has_include
-# if __has_include() && \
- __has_include() && \
- !defined(min) && \
- !defined(max)
-# define ARDUINOJSON_ENABLE_STD_STREAM 1
-# else
-# define ARDUINOJSON_ENABLE_STD_STREAM 0
-# endif
-# else
-# ifdef ARDUINO
-# define ARDUINOJSON_ENABLE_STD_STREAM 0
-# else
-# define ARDUINOJSON_ENABLE_STD_STREAM 1
-# endif
-# endif
-#endif
-
-// Support std::string
-#ifndef ARDUINOJSON_ENABLE_STD_STRING
-# ifdef __has_include
-# if __has_include() && !defined(min) && !defined(max)
-# define ARDUINOJSON_ENABLE_STD_STRING 1
-# else
-# define ARDUINOJSON_ENABLE_STD_STRING 0
-# endif
-# else
-# ifdef ARDUINO
-# define ARDUINOJSON_ENABLE_STD_STRING 0
-# else
-# define ARDUINOJSON_ENABLE_STD_STRING 1
-# endif
-# endif
-#endif
-
-// Support for std::string_view
-#ifndef ARDUINOJSON_ENABLE_STRING_VIEW
-# ifdef __has_include
-# if __has_include() && __cplusplus >= 201703L
-# define ARDUINOJSON_ENABLE_STRING_VIEW 1
-# else
-# define ARDUINOJSON_ENABLE_STRING_VIEW 0
-# endif
-# else
-# define ARDUINOJSON_ENABLE_STRING_VIEW 0
-# endif
-#endif
-
-// Store floating-point values with float (0) or double (1)
-#ifndef ARDUINOJSON_USE_DOUBLE
-# define ARDUINOJSON_USE_DOUBLE 1
-#endif
-
-// Pointer size: a heuristic to set sensible defaults
-#ifndef ARDUINOJSON_SIZEOF_POINTER
-# if defined(__SIZEOF_POINTER__)
-# define ARDUINOJSON_SIZEOF_POINTER __SIZEOF_POINTER__
-# elif defined(_WIN64) && _WIN64
-# define ARDUINOJSON_SIZEOF_POINTER 8 // 64 bits
-# else
-# define ARDUINOJSON_SIZEOF_POINTER 4 // assume 32 bits otherwise
-# endif
-#endif
-
-// Store integral values with long (0) or long long (1)
-#ifndef ARDUINOJSON_USE_LONG_LONG
-# if ARDUINOJSON_SIZEOF_POINTER >= 4 // 32 & 64 bits systems
-# define ARDUINOJSON_USE_LONG_LONG 1
-# else
-# define ARDUINOJSON_USE_LONG_LONG 0
-# endif
-#endif
-
-// Limit nesting as the stack is likely to be small
-#ifndef ARDUINOJSON_DEFAULT_NESTING_LIMIT
-# define ARDUINOJSON_DEFAULT_NESTING_LIMIT 10
-#endif
-
-// Number of bytes to store the variant identifier
-#ifndef ARDUINOJSON_SLOT_ID_SIZE
-# if ARDUINOJSON_SIZEOF_POINTER <= 2
-# define ARDUINOJSON_SLOT_ID_SIZE 1 // up to 255 slots
-# elif ARDUINOJSON_SIZEOF_POINTER == 4
-# define ARDUINOJSON_SLOT_ID_SIZE 2 // up to 65535 slots
-# else
-# define ARDUINOJSON_SLOT_ID_SIZE 4 // up to 4294967295 slots
-# endif
-#endif
-
-// Capacity of each variant pool (in slots)
-#ifndef ARDUINOJSON_POOL_CAPACITY
-# if ARDUINOJSON_SIZEOF_POINTER <= 2
-# define ARDUINOJSON_POOL_CAPACITY 16 // 128 bytes
-# elif ARDUINOJSON_SIZEOF_POINTER == 4
-# define ARDUINOJSON_POOL_CAPACITY 64 // 1024 bytes
-# else
-# define ARDUINOJSON_POOL_CAPACITY 128 // 3072 bytes
-# endif
-#endif
-
-// Initial capacity of the pool list
-#ifndef ARDUINOJSON_INITIAL_POOL_COUNT
-# define ARDUINOJSON_INITIAL_POOL_COUNT 4
-#endif
-
-// Automatically call shrinkToFit() from deserializeXxx()
-// Disabled by default on 8-bit platforms because it's not worth the increase in
-// code size
-#ifndef ARDUINOJSON_AUTO_SHRINK
-# if ARDUINOJSON_SIZEOF_POINTER <= 2
-# define ARDUINOJSON_AUTO_SHRINK 0
-# else
-# define ARDUINOJSON_AUTO_SHRINK 1
-# endif
-#endif
-
-// Number of bytes to store the length of a string
-#ifndef ARDUINOJSON_STRING_LENGTH_SIZE
-# if ARDUINOJSON_SIZEOF_POINTER <= 2
-# define ARDUINOJSON_STRING_LENGTH_SIZE 1 // up to 255 characters
-# else
-# define ARDUINOJSON_STRING_LENGTH_SIZE 2 // up to 65535 characters
-# endif
-#endif
-
-#ifdef ARDUINO
-
-// Enable support for Arduino's String class
-# ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING
-# define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
-# endif
-
-// Enable support for Arduino's Stream class
-# ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM
-# define ARDUINOJSON_ENABLE_ARDUINO_STREAM 1
-# endif
-
-// Enable support for Arduino's Print class
-# ifndef ARDUINOJSON_ENABLE_ARDUINO_PRINT
-# define ARDUINOJSON_ENABLE_ARDUINO_PRINT 1
-# endif
-
-// Enable support for PROGMEM
-# ifndef ARDUINOJSON_ENABLE_PROGMEM
-# define ARDUINOJSON_ENABLE_PROGMEM 1
-# endif
-
-#else // ARDUINO
-
-// Disable support for Arduino's String class
-# ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING
-# define ARDUINOJSON_ENABLE_ARDUINO_STRING 0
-# endif
-
-// Disable support for Arduino's Stream class
-# ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM
-# define ARDUINOJSON_ENABLE_ARDUINO_STREAM 0
-# endif
-
-// Disable support for Arduino's Print class
-# ifndef ARDUINOJSON_ENABLE_ARDUINO_PRINT
-# define ARDUINOJSON_ENABLE_ARDUINO_PRINT 0
-# endif
-
-// Enable PROGMEM support on AVR only
-# ifndef ARDUINOJSON_ENABLE_PROGMEM
-# ifdef __AVR__
-# define ARDUINOJSON_ENABLE_PROGMEM 1
-# else
-# define ARDUINOJSON_ENABLE_PROGMEM 0
-# endif
-# endif
-
-#endif // ARDUINO
-
-// Convert unicode escape sequence (\u0123) to UTF-8
-#ifndef ARDUINOJSON_DECODE_UNICODE
-# define ARDUINOJSON_DECODE_UNICODE 1
-#endif
-
-// Ignore comments in input
-#ifndef ARDUINOJSON_ENABLE_COMMENTS
-# define ARDUINOJSON_ENABLE_COMMENTS 0
-#endif
-
-// Support NaN in JSON
-#ifndef ARDUINOJSON_ENABLE_NAN
-# define ARDUINOJSON_ENABLE_NAN 0
-#endif
-
-// Support Infinity in JSON
-#ifndef ARDUINOJSON_ENABLE_INFINITY
-# define ARDUINOJSON_ENABLE_INFINITY 0
-#endif
-
-// Control the exponentiation threshold for big numbers
-// CAUTION: cannot be more that 1e9 !!!!
-#ifndef ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD
-# define ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD 1e7
-#endif
-
-// Control the exponentiation threshold for small numbers
-#ifndef ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD
-# define ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD 1e-5
-#endif
-
-#ifndef ARDUINOJSON_LITTLE_ENDIAN
-# if defined(_MSC_VER) || \
- (defined(__BYTE_ORDER__) && \
- __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \
- defined(__LITTLE_ENDIAN__) || defined(__i386) || defined(__x86_64)
-# define ARDUINOJSON_LITTLE_ENDIAN 1
-# else
-# define ARDUINOJSON_LITTLE_ENDIAN 0
-# endif
-#endif
-
-#ifndef ARDUINOJSON_ENABLE_ALIGNMENT
-# if defined(__AVR)
-# define ARDUINOJSON_ENABLE_ALIGNMENT 0
-# else
-# define ARDUINOJSON_ENABLE_ALIGNMENT 1
-# endif
-#endif
-
-#ifndef ARDUINOJSON_TAB
-# define ARDUINOJSON_TAB " "
-#endif
-
-#ifndef ARDUINOJSON_STRING_BUFFER_SIZE
-# define ARDUINOJSON_STRING_BUFFER_SIZE 32
-#endif
-
-#ifndef ARDUINOJSON_DEBUG
-# ifdef __PLATFORMIO_BUILD_DEBUG__
-# define ARDUINOJSON_DEBUG 1
-# else
-# define ARDUINOJSON_DEBUG 0
-# endif
-#endif
-
-#if defined(nullptr)
-# error nullptr is defined as a macro. Remove the faulty #define or #undef nullptr
-// See https://github.com/bblanchon/ArduinoJson/issues/1355
-#endif
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
deleted file mode 100755
index fd32a55e9..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-#include
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-# include
-#endif
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-class DeserializationError {
- public:
- enum Code {
- Ok,
- EmptyInput,
- IncompleteInput,
- InvalidInput,
- NoMemory,
- TooDeep
- };
-
- DeserializationError() {}
- DeserializationError(Code c) : code_(c) {}
-
- // Compare with DeserializationError
- friend bool operator==(const DeserializationError& lhs,
- const DeserializationError& rhs) {
- return lhs.code_ == rhs.code_;
- }
- friend bool operator!=(const DeserializationError& lhs,
- const DeserializationError& rhs) {
- return lhs.code_ != rhs.code_;
- }
-
- // Compare with Code
- friend bool operator==(const DeserializationError& lhs, Code rhs) {
- return lhs.code_ == rhs;
- }
- friend bool operator==(Code lhs, const DeserializationError& rhs) {
- return lhs == rhs.code_;
- }
- friend bool operator!=(const DeserializationError& lhs, Code rhs) {
- return lhs.code_ != rhs;
- }
- friend bool operator!=(Code lhs, const DeserializationError& rhs) {
- return lhs != rhs.code_;
- }
-
- // Returns true if there is an error
- explicit operator bool() const {
- return code_ != Ok;
- }
-
- // Returns internal enum, useful for switch statement
- Code code() const {
- return code_;
- }
-
- const char* c_str() const {
- static const char* messages[] = {
- "Ok", "EmptyInput", "IncompleteInput",
- "InvalidInput", "NoMemory", "TooDeep"};
- ARDUINOJSON_ASSERT(static_cast(code_) <
- sizeof(messages) / sizeof(messages[0]));
- return messages[code_];
- }
-
-#if ARDUINOJSON_ENABLE_PROGMEM
- const __FlashStringHelper* f_str() const {
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s0, "Ok");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s1, "EmptyInput");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s2, "IncompleteInput");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s3, "InvalidInput");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s4, "NoMemory");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s5, "TooDeep");
- ARDUINOJSON_DEFINE_PROGMEM_ARRAY(const char*, messages,
- {s0, s1, s2, s3, s4, s5});
- return reinterpret_cast(
- detail::pgm_read(messages + code_));
- }
-#endif
-
- private:
- Code code_;
-};
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-inline std::ostream& operator<<(std::ostream& s,
- const DeserializationError& e) {
- s << e.c_str();
- return s;
-}
-
-inline std::ostream& operator<<(std::ostream& s, DeserializationError::Code c) {
- s << DeserializationError(c).c_str();
- return s;
-}
-#endif
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
deleted file mode 100755
index 4c73934fc..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-struct DeserializationOptions {
- TFilter filter;
- DeserializationOption::NestingLimit nestingLimit;
-};
-
-template
-inline DeserializationOptions makeDeserializationOptions(
- TFilter filter, DeserializationOption::NestingLimit nestingLimit = {}) {
- return {filter, nestingLimit};
-}
-
-template
-inline DeserializationOptions makeDeserializationOptions(
- DeserializationOption::NestingLimit nestingLimit, TFilter filter) {
- return {filter, nestingLimit};
-}
-
-inline DeserializationOptions makeDeserializationOptions(
- DeserializationOption::NestingLimit nestingLimit = {}) {
- return {{}, nestingLimit};
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
deleted file mode 100755
index 76705560b..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-namespace DeserializationOption {
-class Filter {
- public:
-#if ARDUINOJSON_AUTO_SHRINK
- explicit Filter(JsonDocument& doc) : variant_(doc) {
- doc.shrinkToFit();
- }
-#endif
-
- explicit Filter(JsonVariantConst variant) : variant_(variant) {}
-
- bool allow() const {
- return variant_;
- }
-
- bool allowArray() const {
- return variant_ == true || variant_.is();
- }
-
- bool allowObject() const {
- return variant_ == true || variant_.is();
- }
-
- bool allowValue() const {
- return variant_ == true;
- }
-
- template
- Filter operator[](const TKey& key) const {
- if (variant_ == true) // "true" means "allow recursively"
- return *this;
- JsonVariantConst member = variant_[key];
- return Filter(member.isNull() ? variant_["*"] : member);
- }
-
- private:
- JsonVariantConst variant_;
-};
-} // namespace DeserializationOption
-
-namespace detail {
-struct AllowAllFilter {
- bool allow() const {
- return true;
- }
-
- bool allowArray() const {
- return true;
- }
-
- bool allowObject() const {
- return true;
- }
-
- bool allowValue() const {
- return true;
- }
-
- template
- AllowAllFilter operator[](const TKey&) const {
- return AllowAllFilter();
- }
-};
-} // namespace detail
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
deleted file mode 100755
index d30402b4b..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-namespace DeserializationOption {
-class NestingLimit {
- public:
- NestingLimit() : value_(ARDUINOJSON_DEFAULT_NESTING_LIMIT) {}
- explicit NestingLimit(uint8_t n) : value_(n) {}
-
- NestingLimit decrement() const {
- ARDUINOJSON_ASSERT(value_ > 0);
- return NestingLimit(static_cast(value_ - 1));
- }
-
- bool reached() const {
- return value_ == 0;
- }
-
- private:
- uint8_t value_;
-};
-} // namespace DeserializationOption
-
-ARDUINOJSON_END_PUBLIC_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
deleted file mode 100755
index c4b5edb74..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
+++ /dev/null
@@ -1,75 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-#include // for size_t
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// The default reader is a simple wrapper for Readers that are not copiable
-template
-struct Reader {
- public:
- Reader(TSource& source) : source_(&source) {}
-
- int read() {
- // clang-format off
- return source_->read(); // Error here? See https://arduinojson.org/v7/invalid-input/
- // clang-format on
- }
-
- size_t readBytes(char* buffer, size_t length) {
- return source_->readBytes(buffer, length);
- }
-
- private:
- TSource* source_;
-};
-
-template
-struct BoundedReader {
- // no default implementation because we need to pass the size to the
- // constructor
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
-
-#include
-#include
-#include
-
-#if ARDUINOJSON_ENABLE_ARDUINO_STREAM
-# include
-#endif
-
-#if ARDUINOJSON_ENABLE_ARDUINO_STRING
-# include
-#endif
-
-#if ARDUINOJSON_ENABLE_PROGMEM
-# include
-#endif
-
-#if ARDUINOJSON_ENABLE_STD_STREAM
-# include
-#endif
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-Reader::type> makeReader(TInput&& input) {
- return Reader::type>{
- detail::forward(input)};
-}
-
-template
-BoundedReader makeReader(TChar* input, size_t inputSize) {
- return BoundedReader{input, inputSize};
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
deleted file mode 100755
index 43c5a432b..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-struct Reader::value>::type> {
- public:
- explicit Reader(Stream& stream) : stream_(&stream) {}
-
- int read() {
- // don't use stream_->read() as it ignores the timeout
- char c;
- return stream_->readBytes(&c, 1) ? static_cast(c) : -1;
- }
-
- size_t readBytes(char* buffer, size_t length) {
- return stream_->readBytes(buffer, length);
- }
-
- private:
- Stream* stream_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
deleted file mode 100755
index 4730be016..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-struct Reader::value>::type>
- : BoundedReader {
- explicit Reader(const ::String& s)
- : BoundedReader(s.c_str(), s.length()) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
deleted file mode 100755
index fa8ff23d7..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template <>
-struct Reader {
- const char* ptr_;
-
- public:
- explicit Reader(const __FlashStringHelper* ptr)
- : ptr_(reinterpret_cast(ptr)) {}
-
- int read() {
- return pgm_read_byte(ptr_++);
- }
-
- size_t readBytes(char* buffer, size_t length) {
- memcpy_P(buffer, ptr_, length);
- ptr_ += length;
- return length;
- }
-};
-
-template <>
-struct BoundedReader {
- const char* ptr_;
- const char* end_;
-
- public:
- explicit BoundedReader(const __FlashStringHelper* ptr, size_t size)
- : ptr_(reinterpret_cast(ptr)), end_(ptr_ + size) {}
-
- int read() {
- if (ptr_ < end_)
- return pgm_read_byte(ptr_++);
- else
- return -1;
- }
-
- size_t readBytes(char* buffer, size_t length) {
- size_t available = static_cast(end_ - ptr_);
- if (available < length)
- length = available;
- memcpy_P(buffer, ptr_, length);
- ptr_ += length;
- return length;
- }
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
deleted file mode 100755
index 1ca46c852..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-class IteratorReader {
- TIterator ptr_, end_;
-
- public:
- explicit IteratorReader(TIterator begin, TIterator end)
- : ptr_(begin), end_(end) {}
-
- int read() {
- if (ptr_ < end_)
- return static_cast(*ptr_++);
- else
- return -1;
- }
-
- size_t readBytes(char* buffer, size_t length) {
- size_t i = 0;
- while (i < length && ptr_ < end_)
- buffer[i++] = *ptr_++;
- return i;
- }
-};
-
-template
-struct void_ {
- typedef void type;
-};
-
-template
-struct Reader::type>
- : IteratorReader {
- explicit Reader(const TSource& source)
- : IteratorReader(source.begin(),
- source.end()) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
deleted file mode 100755
index 8603bb138..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-struct IsCharOrVoid {
- static const bool value =
- is_same::value || is_same::value ||
- is_same::value || is_same::value;
-};
-
-template
-struct IsCharOrVoid : IsCharOrVoid {};
-
-template
-struct Reader::value>::type> {
- const char* ptr_;
-
- public:
- explicit Reader(const void* ptr)
- : ptr_(ptr ? reinterpret_cast(ptr) : "") {}
-
- int read() {
- return static_cast(*ptr_++);
- }
-
- size_t readBytes(char* buffer, size_t length) {
- for (size_t i = 0; i < length; i++)
- buffer[i] = *ptr_++;
- return length;
- }
-};
-
-template
-struct BoundedReader::value>::type>
- : public IteratorReader {
- public:
- explicit BoundedReader(const void* ptr, size_t len)
- : IteratorReader(reinterpret_cast(ptr),
- reinterpret_cast(ptr) + len) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
deleted file mode 100755
index 25ba63645..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-struct Reader::value>::type> {
- public:
- explicit Reader(std::istream& stream) : stream_(&stream) {}
-
- int read() {
- return stream_->get();
- }
-
- size_t readBytes(char* buffer, size_t length) {
- stream_->read(buffer, static_cast(length));
- return static_cast(stream_->gcount());
- }
-
- private:
- std::istream* stream_;
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
deleted file mode 100755
index ddb07b8b2..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-template
-struct Reader::value>::type>
- : Reader {
- explicit Reader(const TVariant& x)
- : Reader(x.template as()) {}
-};
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
deleted file mode 100755
index 21d187640..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-#include
-#include
-
-ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
-
-// A meta-function that returns the first type of the parameter pack
-// or void if empty
-template
-struct first_or_void {
- using type = void;
-};
-template
-struct first_or_void {
- using type = T;
-};
-
-// A meta-function that returns true if T is a valid destination type for
-// deserialize()
-template
-struct is_deserialize_destination : false_type {};
-
-template
-struct is_deserialize_destination<
- T, typename enable_if())),
- ResourceManager*>::value>::type> : true_type {
-};
-
-template
-inline void shrinkJsonDocument(TDestination&) {
- // no-op by default
-}
-
-#if ARDUINOJSON_AUTO_SHRINK
-inline void shrinkJsonDocument(JsonDocument& doc) {
- doc.shrinkToFit();
-}
-#endif
-
-template class TDeserializer, typename TDestination,
- typename TReader, typename TOptions>
-DeserializationError doDeserialize(TDestination&& dst, TReader reader,
- TOptions options) {
- auto data = VariantAttorney::getOrCreateData(dst);
- if (!data)
- return DeserializationError::NoMemory;
- auto resources = VariantAttorney::getResourceManager(dst);
- dst.clear();
- auto err = TDeserializer(resources, reader)
- .parse(*data, options.filter, options.nestingLimit);
- shrinkJsonDocument(dst);
- return err;
-}
-
-template class TDeserializer, typename TDestination,
- typename TStream, typename... Args,
- typename = typename enable_if< // issue #1897
- !is_integral::type>::value>::type>
-DeserializationError deserialize(TDestination&& dst, TStream&& input,
- Args... args) {
- return doDeserialize(
- dst, makeReader(detail::forward(input)),
- makeDeserializationOptions(args...));
-}
-
-template class TDeserializer, typename TDestination,
- typename TChar, typename Size, typename... Args,
- typename = typename enable_if::value>::type>
-DeserializationError deserialize(TDestination&& dst, TChar* input,
- Size inputSize, Args... args) {
- return doDeserialize(dst, makeReader(input, size_t(inputSize)),
- makeDeserializationOptions(args...));
-}
-
-ARDUINOJSON_END_PRIVATE_NAMESPACE
diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
deleted file mode 100755
index 0f336f1a2..000000000
--- a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
+++ /dev/null
@@ -1,375 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
-// MIT License
-
-#pragma once
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE
-
-// A JSON document.
-// https://arduinojson.org/v7/api/jsondocument/
-class JsonDocument : public detail::VariantOperators {
- friend class detail::VariantAttorney;
-
- public:
- explicit JsonDocument(Allocator* alloc = detail::DefaultAllocator::instance())
- : resources_(alloc) {}
-
- // Copy-constructor
- JsonDocument(const JsonDocument& src) : JsonDocument(src.allocator()) {
- set(src);
- }
-
- // Move-constructor
- JsonDocument(JsonDocument&& src)
- : JsonDocument(detail::DefaultAllocator::instance()) {
- swap(*this, src);
- }
-
- // Construct from variant, array, or object
- template
- JsonDocument(const T& src,
- Allocator* alloc = detail::DefaultAllocator::instance(),
- typename detail::enable_if<
- detail::is_same::value ||
- detail::is_same::value ||
- detail::is_same::value ||
- detail::is_same::value ||
- detail::is_same::value ||
- detail::is_same::value>::type* = 0)
- : JsonDocument(alloc) {
- set(src);
- }
-
- JsonDocument& operator=(JsonDocument src) {
- swap(*this, src);
- return *this;
- }
-
- template
- JsonDocument& operator=(const T& src) {
- set(src);
- return *this;
- }
-
- Allocator* allocator() const {
- return resources_.allocator();
- }
-
- // Reduces the capacity of the memory pool to match the current usage.
- // https://arduinojson.org/v7/api/jsondocument/shrinktofit/
- void shrinkToFit() {
- resources_.shrinkToFit();
- }
-
- // Casts the root to the specified type.
- // https://arduinojson.org/v7/api/jsondocument/as/
- template
- T as() {
- return getVariant().template as();
- }
-
- // Casts the root to the specified type.
- // https://arduinojson.org/v7/api/jsondocument/as/
- template
- T as() const {
- return getVariant().template as();
- }
-
- // Empties the document and resets the memory pool
- // https://arduinojson.org/v7/api/jsondocument/clear/
- void clear() {
- resources_.clear();
- data_.reset();
- }
-
- // Returns true if the root is of the specified type.
- // https://arduinojson.org/v7/api/jsondocument/is/
- template
- bool is() {
- return getVariant().template is();
- }
-
- // Returns true if the root is of the specified type.
- // https://arduinojson.org/v7/api/jsondocument/is/
- template
- bool is() const {
- return getVariant().template is();
- }
-
- // Returns true if the root is null.
- // https://arduinojson.org/v7/api/jsondocument/isnull/
- bool isNull() const {
- return getVariant().isNull();
- }
-
- // Returns trues if the memory pool was too small.
- // https://arduinojson.org/v7/api/jsondocument/overflowed/
- bool overflowed() const {
- return resources_.overflowed();
- }
-
- // Returns the depth (nesting level) of the array.
- // https://arduinojson.org/v7/api/jsondocument/nesting/
- size_t nesting() const {
- return data_.nesting(&resources_);
- }
-
- // Returns the number of elements in the root array or object.
- // https://arduinojson.org/v7/api/jsondocument/size/
- size_t size() const {
- return data_.size(&resources_);
- }
-
- // Copies the specified document.
- // https://arduinojson.org/v7/api/jsondocument/set/
- bool set(const JsonDocument& src) {
- return to().set(src.as());
- }
-
- // Replaces the root with the specified value.
- // https://arduinojson.org/v7/api/jsondocument/set/
- template
- typename detail::enable_if::value,
- bool>::type
- set(const T& src) {
- return to().set(src);
- }
-
- // Clears the document and converts it to the specified type.
- // https://arduinojson.org/v7/api/jsondocument/to/
- template
- typename detail::VariantTo::type to() {
- clear();
- return getVariant().template to();
- }
-
- // Returns true if the root object contains the specified key.
- // https://arduinojson.org/v7/api/jsondocument/containskey/
- template
- bool containsKey(TChar* key) const {
- return data_.getMember(detail::adaptString(key), &resources_) != 0;
- }
-
- // Returns true if the root object contains the specified key.
- // https://arduinojson.org/v7/api/jsondocument/containskey/
- template
- bool containsKey(const TString& key) const {
- return data_.getMember(detail::adaptString(key), &resources_) != 0;
- }
-
- // Gets or sets a root object's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template
- typename detail::enable_if::value,
- detail::MemberProxy>::type
- operator[](const TString& key) {
- return {*this, key};
- }
-
- // Gets or sets a root object's member.
- // https://arduinojson.org/v7/api/jsondocument/subscript/
- template
- typename detail::enable_if::value,
- detail::MemberProxy