mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 07:49:52 +03:00
Merge branch 'dev' of https://github.com/emsesp/EMS-ESP32 into dev
This commit is contained in:
14
.gitignore
vendored
14
.gitignore
vendored
@@ -2,7 +2,7 @@
|
|||||||
.vscode/c_cpp_properties.json
|
.vscode/c_cpp_properties.json
|
||||||
.vscode/extensions.json
|
.vscode/extensions.json
|
||||||
.vscode/launch.json
|
.vscode/launch.json
|
||||||
# .vscode/settings.json
|
.vscode/settings.json
|
||||||
|
|
||||||
# c++ compiling
|
# c++ compiling
|
||||||
.clang_complete
|
.clang_complete
|
||||||
@@ -12,11 +12,11 @@ cppcheck.out.xml
|
|||||||
# platformio
|
# platformio
|
||||||
.pio
|
.pio
|
||||||
pio_local.ini
|
pio_local.ini
|
||||||
|
*_old
|
||||||
|
|
||||||
# OS specific
|
# OS specific
|
||||||
.DS_Store
|
.DS_Store
|
||||||
*Thumbs.db
|
*Thumbs.db
|
||||||
emsesp
|
|
||||||
|
|
||||||
# web specfic
|
# web specfic
|
||||||
build/
|
build/
|
||||||
@@ -43,7 +43,7 @@ interface/analyse.html
|
|||||||
test.sh
|
test.sh
|
||||||
scripts/run.sh
|
scripts/run.sh
|
||||||
scripts/__pycache__
|
scripts/__pycache__
|
||||||
/scripts/stackdmp.txt
|
scripts/stackdmp.txt
|
||||||
|
|
||||||
# i18n generated files
|
# i18n generated files
|
||||||
interface/src/i18n/i18n-react.tsx
|
interface/src/i18n/i18n-react.tsx
|
||||||
@@ -57,9 +57,5 @@ interface/src/i18n/i18n-util.async.ts
|
|||||||
sonar/
|
sonar/
|
||||||
bw-output/
|
bw-output/
|
||||||
|
|
||||||
# entity dump results
|
# testing
|
||||||
# dump_entities.csv
|
emsesp
|
||||||
# dump_entities.xls*
|
|
||||||
|
|
||||||
*_old
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
## **IMPORTANT! BREAKING CHANGES**
|
## **IMPORTANT! BREAKING CHANGES**
|
||||||
|
|
||||||
|
- The Wifi Tx Power setting in Network Settings will be reset to Auto
|
||||||
|
|
||||||
## Added
|
## Added
|
||||||
|
|
||||||
- thermostat boost mode and boost time [#1446](https://github.com/emsesp/EMS-ESP32/issues/1446)
|
- thermostat boost mode and boost time [#1446](https://github.com/emsesp/EMS-ESP32/issues/1446)
|
||||||
@@ -28,9 +30,14 @@
|
|||||||
- MQTT autodiscovery in Domoticz not working [#1360](https://github.com/emsesp/EMS-ESP32/issues/1528)
|
- MQTT autodiscovery in Domoticz not working [#1360](https://github.com/emsesp/EMS-ESP32/issues/1528)
|
||||||
- dhw comfort for new ems+, [#1495](https://github.com/emsesp/EMS-ESP32/issues/1495)
|
- dhw comfort for new ems+, [#1495](https://github.com/emsesp/EMS-ESP32/issues/1495)
|
||||||
- added writeable icon to Web's Custom Entity page for each entity shown in the table
|
- added writeable icon to Web's Custom Entity page for each entity shown in the table
|
||||||
|
- Wifi Tx Power not adjusted [#1614](https://github.com/emsesp/EMS-ESP32/issues/1614)
|
||||||
|
- MQTT discovery of custom entity doesn't consider type of data [#1587](https://github.com/emsesp/EMS-ESP32/issues/1587)
|
||||||
|
- WiFi TxPower wasn't correctly used. Added an 'Auto' setting, which is the default.
|
||||||
|
|
||||||
## Changed
|
## Changed
|
||||||
|
|
||||||
- HA don't set entity_category to Diagnostic/Configuration for EMS entities [#1459](https://github.com/emsesp/EMS-ESP32/discussions/1459)
|
- HA don't set entity_category to Diagnostic/Configuration for EMS entities [#1459](https://github.com/emsesp/EMS-ESP32/discussions/1459)
|
||||||
- upgraded ArduinoJson to 7.0.0 #1538 and then 7.0.2
|
- upgraded ArduinoJson to 7.0.0 #1538 and then 7.0.2
|
||||||
- small changes to the API for analog and temperature sensors
|
- small changes to the API for analog and temperature sensors
|
||||||
|
- Length of mqtt Broker adress [#1619](https://github.com/emsesp/EMS-ESP32/issues/1619)
|
||||||
|
- C++ optimizations - see <https://github.com/emsesp/EMS-ESP32/pull/1615>
|
||||||
|
|||||||
@@ -36,7 +36,6 @@ build_flags =
|
|||||||
-D FACTORY_MQTT_PORT=1883
|
-D FACTORY_MQTT_PORT=1883
|
||||||
-D FACTORY_MQTT_USERNAME=\"\"
|
-D FACTORY_MQTT_USERNAME=\"\"
|
||||||
-D FACTORY_MQTT_PASSWORD=\"\"
|
-D FACTORY_MQTT_PASSWORD=\"\"
|
||||||
-D FACTORY_MQTT_CLIENT_ID=\"ems-esp\"
|
|
||||||
-D FACTORY_MQTT_KEEP_ALIVE=60
|
-D FACTORY_MQTT_KEEP_ALIVE=60
|
||||||
-D FACTORY_MQTT_CLEAN_SESSION=false
|
-D FACTORY_MQTT_CLEAN_SESSION=false
|
||||||
-D FACTORY_MQTT_MAX_TOPIC_LENGTH=128
|
-D FACTORY_MQTT_MAX_TOPIC_LENGTH=128
|
||||||
|
|||||||
@@ -5,8 +5,8 @@
|
|||||||
},
|
},
|
||||||
"extends": [
|
"extends": [
|
||||||
"eslint:recommended",
|
"eslint:recommended",
|
||||||
"airbnb/hooks",
|
// "airbnb/hooks",
|
||||||
"airbnb-typescript",
|
// "airbnb-typescript",
|
||||||
"plugin:react/recommended",
|
"plugin:react/recommended",
|
||||||
"plugin:react/jsx-runtime",
|
"plugin:react/jsx-runtime",
|
||||||
"plugin:@typescript-eslint/recommended",
|
"plugin:@typescript-eslint/recommended",
|
||||||
|
|||||||
@@ -26,14 +26,14 @@
|
|||||||
"@babel/core": "^7.23.9",
|
"@babel/core": "^7.23.9",
|
||||||
"@emotion/react": "^11.11.3",
|
"@emotion/react": "^11.11.3",
|
||||||
"@emotion/styled": "^11.11.0",
|
"@emotion/styled": "^11.11.0",
|
||||||
"@mui/icons-material": "^5.15.7",
|
"@mui/icons-material": "^5.15.10",
|
||||||
"@mui/material": "^5.15.7",
|
"@mui/material": "^5.15.10",
|
||||||
"@table-library/react-table-library": "4.1.7",
|
"@table-library/react-table-library": "4.1.7",
|
||||||
"@types/imagemin": "^8.0.5",
|
"@types/imagemin": "^8.0.5",
|
||||||
"@types/lodash-es": "^4.17.12",
|
"@types/lodash-es": "^4.17.12",
|
||||||
"@types/node": "^20.11.16",
|
"@types/node": "^20.11.17",
|
||||||
"@types/react": "^18.2.52",
|
"@types/react": "^18.2.55",
|
||||||
"@types/react-dom": "^18.2.18",
|
"@types/react-dom": "^18.2.19",
|
||||||
"@types/react-router-dom": "^5.3.3",
|
"@types/react-router-dom": "^5.3.3",
|
||||||
"alova": "^2.17.0",
|
"alova": "^2.17.0",
|
||||||
"async-validator": "^4.2.5",
|
"async-validator": "^4.2.5",
|
||||||
@@ -54,12 +54,10 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@preact/compat": "^17.1.2",
|
"@preact/compat": "^17.1.2",
|
||||||
"@preact/preset-vite": "^2.8.1",
|
"@preact/preset-vite": "^2.8.1",
|
||||||
"@typescript-eslint/eslint-plugin": "^6.20.0",
|
"@typescript-eslint/eslint-plugin": "^7.0.1",
|
||||||
"@typescript-eslint/parser": "^6.20.0",
|
"@typescript-eslint/parser": "^7.0.1",
|
||||||
"concurrently": "^8.2.2",
|
"concurrently": "^8.2.2",
|
||||||
"eslint": "^8.56.0",
|
"eslint": "^8.56.0",
|
||||||
"eslint-config-airbnb": "^19.0.4",
|
|
||||||
"eslint-config-airbnb-typescript": "^17.1.0",
|
|
||||||
"eslint-config-prettier": "^9.1.0",
|
"eslint-config-prettier": "^9.1.0",
|
||||||
"eslint-import-resolver-typescript": "^3.6.1",
|
"eslint-import-resolver-typescript": "^3.6.1",
|
||||||
"eslint-plugin-autofix": "^1.1.0",
|
"eslint-plugin-autofix": "^1.1.0",
|
||||||
@@ -68,11 +66,11 @@
|
|||||||
"eslint-plugin-prettier": "alpha",
|
"eslint-plugin-prettier": "alpha",
|
||||||
"eslint-plugin-react": "^7.33.2",
|
"eslint-plugin-react": "^7.33.2",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"preact": "^10.19.3",
|
"preact": "^10.19.4",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
"rollup-plugin-visualizer": "^5.12.0",
|
"rollup-plugin-visualizer": "^5.12.0",
|
||||||
"terser": "^5.27.0",
|
"terser": "^5.27.0",
|
||||||
"vite": "^5.0.12",
|
"vite": "^5.1.1",
|
||||||
"vite-plugin-imagemin": "^0.6.1",
|
"vite-plugin-imagemin": "^0.6.1",
|
||||||
"vite-tsconfig-paths": "^4.3.1"
|
"vite-tsconfig-paths": "^4.3.1"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { readdirSync, existsSync, unlinkSync, readFileSync, createWriteStream }
|
|||||||
import { resolve, relative, sep } from 'path';
|
import { resolve, relative, sep } from 'path';
|
||||||
import zlib from 'zlib';
|
import zlib from 'zlib';
|
||||||
import mime from 'mime-types';
|
import mime from 'mime-types';
|
||||||
|
import crypto from 'crypto';
|
||||||
|
|
||||||
const ARDUINO_INCLUDES = '#include <Arduino.h>\n\n';
|
const ARDUINO_INCLUDES = '#include <Arduino.h>\n\n';
|
||||||
const INDENT = ' ';
|
const INDENT = ' ';
|
||||||
@@ -11,14 +12,17 @@ const bytesPerLine = 20;
|
|||||||
var totalSize = 0;
|
var totalSize = 0;
|
||||||
|
|
||||||
const generateWWWClass = () =>
|
const generateWWWClass = () =>
|
||||||
`typedef std::function<void(const String& uri, const String& contentType, const uint8_t * content, size_t len)> RouteRegistrationHandler;
|
`typedef std::function<void(const String& uri, const String& contentType, const uint8_t * content, size_t len, const String& hash)> RouteRegistrationHandler;
|
||||||
// Total size is ${totalSize} bytes
|
// Total size is ${totalSize} bytes
|
||||||
|
|
||||||
class WWWData {
|
class WWWData {
|
||||||
${indent}public:
|
${indent}public:
|
||||||
${indent.repeat(2)}static void registerRoutes(RouteRegistrationHandler handler) {
|
${indent.repeat(2)}static void registerRoutes(RouteRegistrationHandler handler) {
|
||||||
${fileInfo
|
${fileInfo
|
||||||
.map((file) => `${indent.repeat(3)}handler("${file.uri}", "${file.mimeType}", ${file.variable}, ${file.size});`)
|
.map(
|
||||||
|
(file) =>
|
||||||
|
`${indent.repeat(3)}handler("${file.uri}", "${file.mimeType}", ${file.variable}, ${file.size}, "${file.hash}");`
|
||||||
|
)
|
||||||
.join('\n')}
|
.join('\n')}
|
||||||
${indent.repeat(2)}}
|
${indent.repeat(2)}}
|
||||||
};
|
};
|
||||||
@@ -50,6 +54,12 @@ const writeFile = (relativeFilePath, buffer) => {
|
|||||||
writeStream.write('const uint8_t ' + variable + '[] = {');
|
writeStream.write('const uint8_t ' + variable + '[] = {');
|
||||||
// const zipBuffer = zlib.brotliCompressSync(buffer, { quality: 1 });
|
// const zipBuffer = zlib.brotliCompressSync(buffer, { quality: 1 });
|
||||||
const zipBuffer = zlib.gzipSync(buffer, { level: 9 });
|
const zipBuffer = zlib.gzipSync(buffer, { level: 9 });
|
||||||
|
|
||||||
|
// create sha
|
||||||
|
const hashSum = crypto.createHash('sha256');
|
||||||
|
hashSum.update(zipBuffer);
|
||||||
|
const hash = hashSum.digest('hex');
|
||||||
|
|
||||||
zipBuffer.forEach((b) => {
|
zipBuffer.forEach((b) => {
|
||||||
if (!(size % bytesPerLine)) {
|
if (!(size % bytesPerLine)) {
|
||||||
writeStream.write('\n');
|
writeStream.write('\n');
|
||||||
@@ -58,15 +68,19 @@ const writeFile = (relativeFilePath, buffer) => {
|
|||||||
writeStream.write('0x' + ('00' + b.toString(16).toUpperCase()).slice(-2) + ',');
|
writeStream.write('0x' + ('00' + b.toString(16).toUpperCase()).slice(-2) + ',');
|
||||||
size++;
|
size++;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (size % bytesPerLine) {
|
if (size % bytesPerLine) {
|
||||||
writeStream.write('\n');
|
writeStream.write('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
writeStream.write('};\n\n');
|
writeStream.write('};\n\n');
|
||||||
|
|
||||||
fileInfo.push({
|
fileInfo.push({
|
||||||
uri: '/' + relativeFilePath.replace(sep, '/'),
|
uri: '/' + relativeFilePath.replace(sep, '/'),
|
||||||
mimeType,
|
mimeType,
|
||||||
variable,
|
variable,
|
||||||
size
|
size,
|
||||||
|
hash
|
||||||
});
|
});
|
||||||
|
|
||||||
// console.log(relativeFilePath + ' (size ' + size + ' bytes)');
|
// console.log(relativeFilePath + ' (size ' + size + ' bytes)');
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { ToastContainer, Slide } from 'react-toastify';
|
|||||||
import 'react-toastify/dist/ReactToastify.min.css';
|
import 'react-toastify/dist/ReactToastify.min.css';
|
||||||
|
|
||||||
import { localStorageDetector } from 'typesafe-i18n/detectors';
|
import { localStorageDetector } from 'typesafe-i18n/detectors';
|
||||||
import { FeaturesLoader } from './contexts/features';
|
|
||||||
import type { FC } from 'react';
|
import type { FC } from 'react';
|
||||||
import AppRouting from 'AppRouting';
|
import AppRouting from 'AppRouting';
|
||||||
import CustomTheme from 'CustomTheme';
|
import CustomTheme from 'CustomTheme';
|
||||||
@@ -27,9 +26,7 @@ const App: FC = () => {
|
|||||||
return (
|
return (
|
||||||
<TypesafeI18n locale={detectedLocale}>
|
<TypesafeI18n locale={detectedLocale}>
|
||||||
<CustomTheme>
|
<CustomTheme>
|
||||||
<FeaturesLoader>
|
<AppRouting />
|
||||||
<AppRouting />
|
|
||||||
</FeaturesLoader>
|
|
||||||
<ToastContainer
|
<ToastContainer
|
||||||
position="bottom-left"
|
position="bottom-left"
|
||||||
autoClose={3000}
|
autoClose={3000}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { Box, Paper, Typography, MenuItem, TextField, Button } from '@mui/materi
|
|||||||
import { useRequest } from 'alova';
|
import { useRequest } from 'alova';
|
||||||
import { useContext, useState } from 'react';
|
import { useContext, useState } from 'react';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
import { FeaturesContext } from './contexts/features';
|
|
||||||
import type { ValidateFieldsError } from 'async-validator';
|
import type { ValidateFieldsError } from 'async-validator';
|
||||||
|
|
||||||
import type { Locales } from 'i18n/i18n-types';
|
import type { Locales } from 'i18n/i18n-types';
|
||||||
@@ -35,8 +34,6 @@ const SignIn: FC = () => {
|
|||||||
|
|
||||||
const { LL, setLocale, locale } = useContext(I18nContext);
|
const { LL, setLocale, locale } = useContext(I18nContext);
|
||||||
|
|
||||||
const { features } = useContext(FeaturesContext);
|
|
||||||
|
|
||||||
const [signInRequest, setSignInRequest] = useState<SignInRequest>({
|
const [signInRequest, setSignInRequest] = useState<SignInRequest>({
|
||||||
username: '',
|
username: '',
|
||||||
password: ''
|
password: ''
|
||||||
@@ -112,7 +109,6 @@ const SignIn: FC = () => {
|
|||||||
})}
|
})}
|
||||||
>
|
>
|
||||||
<Typography variant="h4">{PROJECT_NAME}</Typography>
|
<Typography variant="h4">{PROJECT_NAME}</Typography>
|
||||||
<Typography variant="subtitle2">{features.version}</Typography>
|
|
||||||
|
|
||||||
<TextField name="locale" variant="outlined" value={locale} onChange={onLocaleSelected} size="small" select>
|
<TextField name="locale" variant="outlined" value={locale} onChange={onLocaleSelected} size="small" select>
|
||||||
<MenuItem key="de" value="de">
|
<MenuItem key="de" value="de">
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
import { alovaInstance } from './endpoints';
|
|
||||||
|
|
||||||
import type { Features } from 'types';
|
|
||||||
|
|
||||||
export const readFeatures = () => alovaInstance.Get<Features>('/rest/features');
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
import { useRequest } from 'alova';
|
|
||||||
|
|
||||||
import { FeaturesContext } from '.';
|
|
||||||
import type { FC } from 'react';
|
|
||||||
|
|
||||||
import type { RequiredChildrenProps } from 'utils';
|
|
||||||
import * as FeaturesApi from 'api/features';
|
|
||||||
|
|
||||||
const FeaturesLoader: FC<RequiredChildrenProps> = (props) => {
|
|
||||||
const { data: features } = useRequest(FeaturesApi.readFeatures);
|
|
||||||
|
|
||||||
if (features) {
|
|
||||||
return (
|
|
||||||
<FeaturesContext.Provider
|
|
||||||
value={{
|
|
||||||
features
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
{props.children}
|
|
||||||
</FeaturesContext.Provider>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export default FeaturesLoader;
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
import { createContext } from 'react';
|
|
||||||
|
|
||||||
import type { Features } from 'types';
|
|
||||||
|
|
||||||
export interface FeaturesContextValue {
|
|
||||||
features: Features;
|
|
||||||
}
|
|
||||||
|
|
||||||
const FeaturesContextDefaultValue = {} as FeaturesContextValue;
|
|
||||||
export const FeaturesContext = createContext(FeaturesContextDefaultValue);
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
export * from './context';
|
|
||||||
export { default as FeaturesLoader } from './FeaturesLoader';
|
|
||||||
@@ -72,6 +72,7 @@ const MqttSettingsForm: FC = () => {
|
|||||||
name="host"
|
name="host"
|
||||||
label={LL.ADDRESS_OF(LL.BROKER())}
|
label={LL.ADDRESS_OF(LL.BROKER())}
|
||||||
fullWidth
|
fullWidth
|
||||||
|
multiline
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
value={data.host}
|
value={data.host}
|
||||||
onChange={updateFormValue}
|
onChange={updateFormValue}
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ import {
|
|||||||
ListItemSecondaryAction,
|
ListItemSecondaryAction,
|
||||||
ListItemText,
|
ListItemText,
|
||||||
Typography,
|
Typography,
|
||||||
InputAdornment,
|
TextField,
|
||||||
TextField
|
MenuItem
|
||||||
} from '@mui/material';
|
} from '@mui/material';
|
||||||
// eslint-disable-next-line import/named
|
// eslint-disable-next-line import/named
|
||||||
import { updateState, useRequest } from 'alova';
|
import { updateState, useRequest } from 'alova';
|
||||||
@@ -43,7 +43,7 @@ import {
|
|||||||
} from 'components';
|
} from 'components';
|
||||||
import { useI18nContext } from 'i18n/i18n-react';
|
import { useI18nContext } from 'i18n/i18n-react';
|
||||||
|
|
||||||
import { numberValue, updateValueDirty, useRest } from 'utils';
|
import { updateValueDirty, useRest } from 'utils';
|
||||||
|
|
||||||
import { validate } from 'validators';
|
import { validate } from 'validators';
|
||||||
import { createNetworkSettingsValidator } from 'validators/network';
|
import { createNetworkSettingsValidator } from 'validators/network';
|
||||||
@@ -88,7 +88,7 @@ const WiFiSettingsForm: FC = () => {
|
|||||||
static_ip_config: false,
|
static_ip_config: false,
|
||||||
enableIPv6: false,
|
enableIPv6: false,
|
||||||
bandwidth20: false,
|
bandwidth20: false,
|
||||||
tx_power: 20,
|
tx_power: 0,
|
||||||
nosleep: false,
|
nosleep: false,
|
||||||
enableMDNS: true,
|
enableMDNS: true,
|
||||||
enableCORS: false,
|
enableCORS: false,
|
||||||
@@ -196,20 +196,27 @@ const WiFiSettingsForm: FC = () => {
|
|||||||
margin="normal"
|
margin="normal"
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
<ValidatedTextField
|
<TextField
|
||||||
fieldErrors={fieldErrors}
|
|
||||||
name="tx_power"
|
name="tx_power"
|
||||||
label={LL.TX_POWER()}
|
label={LL.TX_POWER()}
|
||||||
InputProps={{
|
|
||||||
endAdornment: <InputAdornment position="end">dBm</InputAdornment>
|
|
||||||
}}
|
|
||||||
fullWidth
|
fullWidth
|
||||||
variant="outlined"
|
variant="outlined"
|
||||||
value={numberValue(data.tx_power)}
|
value={data.tx_power}
|
||||||
onChange={updateFormValue}
|
onChange={updateFormValue}
|
||||||
type="number"
|
|
||||||
margin="normal"
|
margin="normal"
|
||||||
/>
|
select
|
||||||
|
>
|
||||||
|
<MenuItem value={0}>Auto</MenuItem>
|
||||||
|
<MenuItem value={78}>19.5 dBm</MenuItem>
|
||||||
|
<MenuItem value={76}>19 dBm</MenuItem>
|
||||||
|
<MenuItem value={74}>18.5 dBm</MenuItem>
|
||||||
|
<MenuItem value={68}>17 dBm</MenuItem>
|
||||||
|
<MenuItem value={60}>15 dBm</MenuItem>
|
||||||
|
<MenuItem value={52}>13 dBm</MenuItem>
|
||||||
|
<MenuItem value={44}>11 dBm</MenuItem>
|
||||||
|
<MenuItem value={34}>8.5 dBm</MenuItem>
|
||||||
|
<MenuItem value={28}>7 dBm</MenuItem>
|
||||||
|
</TextField>
|
||||||
<BlockFormControlLabel
|
<BlockFormControlLabel
|
||||||
control={<Checkbox name="nosleep" checked={data.nosleep} onChange={updateFormValue} />}
|
control={<Checkbox name="nosleep" checked={data.nosleep} onChange={updateFormValue} />}
|
||||||
label={LL.NETWORK_DISABLE_SLEEP()}
|
label={LL.NETWORK_DISABLE_SLEEP()}
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import {
|
|||||||
import { useRequest } from 'alova';
|
import { useRequest } from 'alova';
|
||||||
import { useContext, useState } from 'react';
|
import { useContext, useState } from 'react';
|
||||||
import { toast } from 'react-toastify';
|
import { toast } from 'react-toastify';
|
||||||
import { FeaturesContext } from '../../contexts/features';
|
|
||||||
import RestartMonitor from './RestartMonitor';
|
import RestartMonitor from './RestartMonitor';
|
||||||
import SystemStatusVersionDialog from './SystemStatusVersionDialog';
|
import SystemStatusVersionDialog from './SystemStatusVersionDialog';
|
||||||
import type { FC } from 'react';
|
import type { FC } from 'react';
|
||||||
@@ -54,8 +53,6 @@ const SystemStatusForm: FC = () => {
|
|||||||
const [restarting, setRestarting] = useState<boolean>();
|
const [restarting, setRestarting] = useState<boolean>();
|
||||||
const [versionDialogOpen, setVersionDialogOpen] = useState<boolean>(false);
|
const [versionDialogOpen, setVersionDialogOpen] = useState<boolean>(false);
|
||||||
|
|
||||||
const { features } = useContext(FeaturesContext);
|
|
||||||
|
|
||||||
const { send: restartCommand } = useRequest(SystemApi.restart(), {
|
const { send: restartCommand } = useRequest(SystemApi.restart(), {
|
||||||
immediate: false
|
immediate: false
|
||||||
});
|
});
|
||||||
@@ -215,7 +212,7 @@ const SystemStatusForm: FC = () => {
|
|||||||
<DevicesIcon />
|
<DevicesIcon />
|
||||||
</Avatar>
|
</Avatar>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
<ListItemText primary="SDK" secondary={data.arduino_version + ' / ESP-IDF v' + data.sdk_version} />
|
<ListItemText primary="SDK" secondary={data.arduino_version + ' / ESP-IDF ' + data.sdk_version} />
|
||||||
</ListItem>
|
</ListItem>
|
||||||
<Divider variant="inset" component="li" />
|
<Divider variant="inset" component="li" />
|
||||||
<ListItem>
|
<ListItem>
|
||||||
@@ -355,7 +352,7 @@ const SystemStatusForm: FC = () => {
|
|||||||
open={versionDialogOpen}
|
open={versionDialogOpen}
|
||||||
onClose={() => setVersionDialogOpen(false)}
|
onClose={() => setVersionDialogOpen(false)}
|
||||||
version={data.emsesp_version}
|
version={data.emsesp_version}
|
||||||
platform={features.platform}
|
platform={data.esp_platform}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</SectionContent>
|
</SectionContent>
|
||||||
|
|||||||
@@ -94,8 +94,14 @@ const DashboardDevices: FC = () => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const leftOffset = () => {
|
const leftOffset = () => {
|
||||||
const left = document.getElementById('devices-window')?.getBoundingClientRect().left;
|
const devicesWindow = document.getElementById('devices-window');
|
||||||
const right = document.getElementById('devices-window')?.getBoundingClientRect().right;
|
if (!devicesWindow) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const clientRect = devicesWindow.getBoundingClientRect();
|
||||||
|
const left = clientRect.left;
|
||||||
|
const right = clientRect.right;
|
||||||
|
|
||||||
if (!left || !right) {
|
if (!left || !right) {
|
||||||
return 0;
|
return 0;
|
||||||
@@ -416,11 +422,11 @@ const DashboardDevices: FC = () => {
|
|||||||
const renderCoreData = () => (
|
const renderCoreData = () => (
|
||||||
<IconContext.Provider value={{ color: 'lightblue', size: '24', style: { verticalAlign: 'middle' } }}>
|
<IconContext.Provider value={{ color: 'lightblue', size: '24', style: { verticalAlign: 'middle' } }}>
|
||||||
{!coreData.connected && <MessageBox my={2} level="error" message={LL.EMS_BUS_WARNING()} />}
|
{!coreData.connected && <MessageBox my={2} level="error" message={LL.EMS_BUS_WARNING()} />}
|
||||||
{coreData.connected && coreData.devices.length === 0 && (
|
{/* {coreData.connected && coreData.devices.length === 0 && (
|
||||||
<MessageBox my={2} level="warning" message={LL.EMS_BUS_SCANNING()} />
|
<MessageBox my={2} level="warning" message={LL.EMS_BUS_SCANNING()} />
|
||||||
)}
|
)} */}
|
||||||
|
|
||||||
{coreData.devices.length !== 0 && (
|
{coreData.connected && (
|
||||||
<Table data={{ nodes: coreData.devices }} select={device_select} theme={device_theme} layout={{ custom: true }}>
|
<Table data={{ nodes: coreData.devices }} select={device_select} theme={device_theme} layout={{ custom: true }}>
|
||||||
{(tableList: any) => (
|
{(tableList: any) => (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
export * from './ap';
|
export * from './ap';
|
||||||
export * from './features';
|
|
||||||
export * from './me';
|
export * from './me';
|
||||||
export * from './mqtt';
|
export * from './mqtt';
|
||||||
export * from './ntp';
|
export * from './ntp';
|
||||||
|
|||||||
@@ -14,9 +14,5 @@ export const createNetworkSettingsValidator = (networkSettings: NetworkSettings)
|
|||||||
subnet_mask: [{ required: true, message: 'Subnet mask is required' }, IP_ADDRESS_VALIDATOR],
|
subnet_mask: [{ required: true, message: 'Subnet mask is required' }, IP_ADDRESS_VALIDATOR],
|
||||||
dns_ip_1: IP_ADDRESS_VALIDATOR,
|
dns_ip_1: IP_ADDRESS_VALIDATOR,
|
||||||
dns_ip_2: IP_ADDRESS_VALIDATOR
|
dns_ip_2: IP_ADDRESS_VALIDATOR
|
||||||
}),
|
})
|
||||||
tx_power: [
|
|
||||||
{ required: true, message: 'Tx Power is required' },
|
|
||||||
{ type: 'number', min: 0, max: 20, message: 'Tx Power must be between 0 and 20dBm' }
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ export const IP_ADDRESS_VALIDATOR = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const HOSTNAME_LENGTH_REGEXP = /^.{0,63}$/;
|
const HOSTNAME_LENGTH_REGEXP = /^.{0,200}$/;
|
||||||
const HOSTNAME_PATTERN_REGEXP =
|
const HOSTNAME_PATTERN_REGEXP =
|
||||||
/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/;
|
/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]*[A-Za-z0-9])$/;
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ const isValidHostname = (value: string) => HOSTNAME_LENGTH_REGEXP.test(value) &&
|
|||||||
export const HOSTNAME_VALIDATOR = {
|
export const HOSTNAME_VALIDATOR = {
|
||||||
validator(rule: InternalRuleItem, value: string, callback: (error?: string) => void) {
|
validator(rule: InternalRuleItem, value: string, callback: (error?: string) => void) {
|
||||||
if (value && !isValidHostname(value)) {
|
if (value && !isValidHostname(value)) {
|
||||||
callback('Must be a valid hostname of up to 63 characters');
|
callback('Must be a valid hostname');
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
@@ -52,7 +52,7 @@ export const HOSTNAME_VALIDATOR = {
|
|||||||
export const IP_OR_HOSTNAME_VALIDATOR = {
|
export const IP_OR_HOSTNAME_VALIDATOR = {
|
||||||
validator(rule: InternalRuleItem, value: string, callback: (error?: string) => void) {
|
validator(rule: InternalRuleItem, value: string, callback: (error?: string) => void) {
|
||||||
if (value && !(isValidIpAddress(value) || isValidHostname(value))) {
|
if (value && !(isValidIpAddress(value) || isValidHostname(value))) {
|
||||||
callback('Must be a valid IP address or hostname of up to 63 characters');
|
callback('Must be a valid IP address or hostname');
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -992,14 +992,14 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/base@npm:5.0.0-beta.34":
|
"@mui/base@npm:5.0.0-beta.36":
|
||||||
version: 5.0.0-beta.34
|
version: 5.0.0-beta.36
|
||||||
resolution: "@mui/base@npm:5.0.0-beta.34"
|
resolution: "@mui/base@npm:5.0.0-beta.36"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.23.9"
|
"@babel/runtime": "npm:^7.23.9"
|
||||||
"@floating-ui/react-dom": "npm:^2.0.8"
|
"@floating-ui/react-dom": "npm:^2.0.8"
|
||||||
"@mui/types": "npm:^7.2.13"
|
"@mui/types": "npm:^7.2.13"
|
||||||
"@mui/utils": "npm:^5.15.7"
|
"@mui/utils": "npm:^5.15.9"
|
||||||
"@popperjs/core": "npm:^2.11.8"
|
"@popperjs/core": "npm:^2.11.8"
|
||||||
clsx: "npm:^2.1.0"
|
clsx: "npm:^2.1.0"
|
||||||
prop-types: "npm:^15.8.1"
|
prop-types: "npm:^15.8.1"
|
||||||
@@ -1010,20 +1010,20 @@ __metadata:
|
|||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
"@types/react":
|
"@types/react":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/8705872e4290bec1a0e19cdb62cf0ead3b18c2fc4d404a4c2913107cc3418524d2f53c337878636af59595c5ac3631d1f108cbc236f6f9cd51b6efe768b65ea5
|
checksum: 10/32be203df3ffa2e36095d37295adae7870489fb2ed82a156c10f9ea4a51c3d06b0c3415e8503b110aa2ee98d3d86d6c1c50e190e85130aa1c1db694afa56ab7a
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/core-downloads-tracker@npm:^5.15.7":
|
"@mui/core-downloads-tracker@npm:^5.15.10":
|
||||||
version: 5.15.7
|
version: 5.15.10
|
||||||
resolution: "@mui/core-downloads-tracker@npm:5.15.7"
|
resolution: "@mui/core-downloads-tracker@npm:5.15.10"
|
||||||
checksum: 10/cdaea04222020086fd68e25bdf0f4dfdfc9a3b58a558297ef0a247f02cce8ea7671f9a31c07c5b53cfe553d24110baed2b03b701b1bea60f5c2b2e3ba56ba6fc
|
checksum: 10/aeb16b31f60c08cc03585fedadceadd54aa48dda394fb945ab885f884c1b1692efb72309465641b6ca2367bd53d5fdce15f189d4691f42b59206622ffb2d6f0f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/icons-material@npm:^5.15.7":
|
"@mui/icons-material@npm:^5.15.10":
|
||||||
version: 5.15.7
|
version: 5.15.10
|
||||||
resolution: "@mui/icons-material@npm:5.15.7"
|
resolution: "@mui/icons-material@npm:5.15.10"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.23.9"
|
"@babel/runtime": "npm:^7.23.9"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1033,23 +1033,23 @@ __metadata:
|
|||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
"@types/react":
|
"@types/react":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/d6c612aab0f10f57462e5bd467f8e32240123bc59728d471b7ae3724be4b02247db694e21e03ab58341e7737da87cef3aab35f98bbed14883688b8d667ff0f30
|
checksum: 10/ce22c02dc7ed960a21f8d5ea7c4d4fc03d9f71e8a26ced02f75da1ffd6c768e6fa0682a308a03be53bffc2325a5aaf68be69f9e192b0a57c6752f7548e5b9045
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/material@npm:^5.15.7":
|
"@mui/material@npm:^5.15.10":
|
||||||
version: 5.15.7
|
version: 5.15.10
|
||||||
resolution: "@mui/material@npm:5.15.7"
|
resolution: "@mui/material@npm:5.15.10"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.23.9"
|
"@babel/runtime": "npm:^7.23.9"
|
||||||
"@mui/base": "npm:5.0.0-beta.34"
|
"@mui/base": "npm:5.0.0-beta.36"
|
||||||
"@mui/core-downloads-tracker": "npm:^5.15.7"
|
"@mui/core-downloads-tracker": "npm:^5.15.10"
|
||||||
"@mui/system": "npm:^5.15.7"
|
"@mui/system": "npm:^5.15.9"
|
||||||
"@mui/types": "npm:^7.2.13"
|
"@mui/types": "npm:^7.2.13"
|
||||||
"@mui/utils": "npm:^5.15.7"
|
"@mui/utils": "npm:^5.15.9"
|
||||||
"@types/react-transition-group": "npm:^4.4.10"
|
"@types/react-transition-group": "npm:^4.4.10"
|
||||||
clsx: "npm:^2.1.0"
|
clsx: "npm:^2.1.0"
|
||||||
csstype: "npm:^3.1.2"
|
csstype: "npm:^3.1.3"
|
||||||
prop-types: "npm:^15.8.1"
|
prop-types: "npm:^15.8.1"
|
||||||
react-is: "npm:^18.2.0"
|
react-is: "npm:^18.2.0"
|
||||||
react-transition-group: "npm:^4.4.5"
|
react-transition-group: "npm:^4.4.5"
|
||||||
@@ -1066,16 +1066,16 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
"@types/react":
|
"@types/react":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/bc7a31e53770b27b49786567d4d2912d6ecf163a438d75806ec98dea8fa2f0e0b2daeb6ee97cba57c9636ed2d7e3b42c5c801f9d3479f02716933f839b7df6a4
|
checksum: 10/a88ad1287a905549ed516742544c8ba32f0cd7e1b184564efc8ceba5f43060d37b5cd113db605f1bb5be6c74cbdad7321d3fd7df410ba33d55548cf7c5bbf8d0
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/private-theming@npm:^5.15.7":
|
"@mui/private-theming@npm:^5.15.9":
|
||||||
version: 5.15.7
|
version: 5.15.9
|
||||||
resolution: "@mui/private-theming@npm:5.15.7"
|
resolution: "@mui/private-theming@npm:5.15.9"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.23.9"
|
"@babel/runtime": "npm:^7.23.9"
|
||||||
"@mui/utils": "npm:^5.15.7"
|
"@mui/utils": "npm:^5.15.9"
|
||||||
prop-types: "npm:^15.8.1"
|
prop-types: "npm:^15.8.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@types/react": ^17.0.0 || ^18.0.0
|
"@types/react": ^17.0.0 || ^18.0.0
|
||||||
@@ -1083,17 +1083,17 @@ __metadata:
|
|||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
"@types/react":
|
"@types/react":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/07d85483924f1ab641ff9810f5379d28bd0661db1b42604e1c1602d610d114396c1bd187eefd26b9c303727d7d16a4758ca5c8ffbc1b410cbae156edf8b9472f
|
checksum: 10/ca6d0643289eb14e127d46a516311807a7935994dcbb14a108e756ba9fe39bf08e2fe2f2bd75cec5a71817f3b2fe74de2f3322b67931539ced5e2f13aa9e2326
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/styled-engine@npm:^5.15.7":
|
"@mui/styled-engine@npm:^5.15.9":
|
||||||
version: 5.15.7
|
version: 5.15.9
|
||||||
resolution: "@mui/styled-engine@npm:5.15.7"
|
resolution: "@mui/styled-engine@npm:5.15.9"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.23.9"
|
"@babel/runtime": "npm:^7.23.9"
|
||||||
"@emotion/cache": "npm:^11.11.0"
|
"@emotion/cache": "npm:^11.11.0"
|
||||||
csstype: "npm:^3.1.2"
|
csstype: "npm:^3.1.3"
|
||||||
prop-types: "npm:^15.8.1"
|
prop-types: "npm:^15.8.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@emotion/react": ^11.4.1
|
"@emotion/react": ^11.4.1
|
||||||
@@ -1104,21 +1104,21 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
"@emotion/styled":
|
"@emotion/styled":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/965e5738577db0d40904554b341395d337c93d7b4ebba783cb5362b6aa7f7e0be2cf1999d7c14daca6caba37a51f13188eaf260ff5b4099a269b1c155eee3773
|
checksum: 10/ddf0bda85507419829c8fe3735b5b05d9544fea0f954de574a9841d46d14dd750050834aae5b1f0b676a1dc5fe1278c22fb16415df7d6202d6aa49fea12d59de
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/system@npm:^5.15.7":
|
"@mui/system@npm:^5.15.9":
|
||||||
version: 5.15.7
|
version: 5.15.9
|
||||||
resolution: "@mui/system@npm:5.15.7"
|
resolution: "@mui/system@npm:5.15.9"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.23.9"
|
"@babel/runtime": "npm:^7.23.9"
|
||||||
"@mui/private-theming": "npm:^5.15.7"
|
"@mui/private-theming": "npm:^5.15.9"
|
||||||
"@mui/styled-engine": "npm:^5.15.7"
|
"@mui/styled-engine": "npm:^5.15.9"
|
||||||
"@mui/types": "npm:^7.2.13"
|
"@mui/types": "npm:^7.2.13"
|
||||||
"@mui/utils": "npm:^5.15.7"
|
"@mui/utils": "npm:^5.15.9"
|
||||||
clsx: "npm:^2.1.0"
|
clsx: "npm:^2.1.0"
|
||||||
csstype: "npm:^3.1.2"
|
csstype: "npm:^3.1.3"
|
||||||
prop-types: "npm:^15.8.1"
|
prop-types: "npm:^15.8.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@emotion/react": ^11.5.0
|
"@emotion/react": ^11.5.0
|
||||||
@@ -1132,7 +1132,7 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
"@types/react":
|
"@types/react":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/49db180adf1e3341cf14791c93711d16c76aad371dd43966da49c8727751d5c611835be8bac61278269414820c8f6bbd41481fa615df9a1cbc79be5846ef8896
|
checksum: 10/85c2d18f3846cc1554db48071606a52f22186cf4ac1b0be748b275a8e200c12528c477acb794b8eb545e4603e5b8566186ea022eb09b5b1a3668554dd0ea9c7d
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -1148,9 +1148,9 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@mui/utils@npm:^5.15.7":
|
"@mui/utils@npm:^5.15.9":
|
||||||
version: 5.15.7
|
version: 5.15.9
|
||||||
resolution: "@mui/utils@npm:5.15.7"
|
resolution: "@mui/utils@npm:5.15.9"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime": "npm:^7.23.9"
|
"@babel/runtime": "npm:^7.23.9"
|
||||||
"@types/prop-types": "npm:^15.7.11"
|
"@types/prop-types": "npm:^15.7.11"
|
||||||
@@ -1162,7 +1162,7 @@ __metadata:
|
|||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
"@types/react":
|
"@types/react":
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/34f4ed23d1ac8ed7cc4c027789ea60def6a85d922f742ff57a614c0a77a839d38de40031895a867c0dadc1e5f226ac7044f2fea084297201326f0201c3f85237
|
checksum: 10/8628e4402856427bbc1ee3628afff596149ae3067ca6d62a1890d7b15217248fbeb65ec9360afc6963b330c08945fe6452deef2849d8ca35d894b42746cdad77
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -1590,12 +1590,12 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/node@npm:^20.11.16":
|
"@types/node@npm:^20.11.17":
|
||||||
version: 20.11.16
|
version: 20.11.17
|
||||||
resolution: "@types/node@npm:20.11.16"
|
resolution: "@types/node@npm:20.11.17"
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: "npm:~5.26.4"
|
undici-types: "npm:~5.26.4"
|
||||||
checksum: 10/751f50ec5c9332b11515e82fe37c71479ac4449b711280aa3c7910edf67b1e3f5ac00041512add543f9a892096a68356406998bf02a2c809a73d176c44c28414
|
checksum: 10/3342df87258d1c56154bcd4b85180f48675427b235971e6e6e2e037353f5a2ae9aaa05ba5df0fe1e2d2f1022c8d856fd39056b9d7f50ea30c0ca3214137cae1d
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -1620,12 +1620,12 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/react-dom@npm:^18.2.18":
|
"@types/react-dom@npm:^18.2.19":
|
||||||
version: 18.2.18
|
version: 18.2.19
|
||||||
resolution: "@types/react-dom@npm:18.2.18"
|
resolution: "@types/react-dom@npm:18.2.19"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/react": "npm:*"
|
"@types/react": "npm:*"
|
||||||
checksum: 10/4ef7725b4cebd4a32e049097ddfdfd855a178e63ead97ab6d3084872e7d6c1acd71aa923488123cd1015f0e0b11489d2b44f674a1df8fe82d7827eabbec6dbf1
|
checksum: 10/98eb760ce78f1016d97c70f605f0b1a53873a548d3c2192b40c897f694fd9c8bb12baeada16581a9c7b26f5022c1d2613547be98284d8f1b82d1611b1e3e7df0
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -1670,14 +1670,14 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@types/react@npm:^18.2.52":
|
"@types/react@npm:^18.2.55":
|
||||||
version: 18.2.52
|
version: 18.2.55
|
||||||
resolution: "@types/react@npm:18.2.52"
|
resolution: "@types/react@npm:18.2.55"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/prop-types": "npm:*"
|
"@types/prop-types": "npm:*"
|
||||||
"@types/scheduler": "npm:*"
|
"@types/scheduler": "npm:*"
|
||||||
csstype: "npm:^3.0.2"
|
csstype: "npm:^3.0.2"
|
||||||
checksum: 10/0ab90a37fd82028c3559f18ce50790d01b262589a2ea49d014d8888291f47d9c91e65cb7db031a3e5d58818cb5376577afb4b593068473abfd0c695fa7e6b7c4
|
checksum: 10/bf8fe19e73575489e63c0726355f164157cd69e75f2a862436ad2c0586e732cb953a7255a6bc73145e8f9506ee7a723f9a569ca9a39c53984e5b12b84e1c718a
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -1713,15 +1713,15 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/eslint-plugin@npm:^6.20.0":
|
"@typescript-eslint/eslint-plugin@npm:^7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/eslint-plugin@npm:6.20.0"
|
resolution: "@typescript-eslint/eslint-plugin@npm:7.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/regexpp": "npm:^4.5.1"
|
"@eslint-community/regexpp": "npm:^4.5.1"
|
||||||
"@typescript-eslint/scope-manager": "npm:6.20.0"
|
"@typescript-eslint/scope-manager": "npm:7.0.1"
|
||||||
"@typescript-eslint/type-utils": "npm:6.20.0"
|
"@typescript-eslint/type-utils": "npm:7.0.1"
|
||||||
"@typescript-eslint/utils": "npm:6.20.0"
|
"@typescript-eslint/utils": "npm:7.0.1"
|
||||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
"@typescript-eslint/visitor-keys": "npm:7.0.1"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
graphemer: "npm:^1.4.0"
|
graphemer: "npm:^1.4.0"
|
||||||
ignore: "npm:^5.2.4"
|
ignore: "npm:^5.2.4"
|
||||||
@@ -1729,73 +1729,73 @@ __metadata:
|
|||||||
semver: "npm:^7.5.4"
|
semver: "npm:^7.5.4"
|
||||||
ts-api-utils: "npm:^1.0.1"
|
ts-api-utils: "npm:^1.0.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha
|
"@typescript-eslint/parser": ^7.0.0
|
||||||
eslint: ^7.0.0 || ^8.0.0
|
eslint: ^8.56.0
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/dee6a2392c831e6ae69611ecc4de06e66a7b16f6bf6d8e3bfd25091eb14d88c9d0bb9c9cd634efcfa318902341f7a459cf48f713d55cb1d610145ca1f52af4d3
|
checksum: 10/0862e8ec8677fcea794394fc9eab8dba11043c08452722790e0d296d4ee84713180676e1e3135be4203ace7bb73933c94159255cb9190c7bc13bf7f03a361915
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/parser@npm:^6.20.0":
|
"@typescript-eslint/parser@npm:^7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/parser@npm:6.20.0"
|
resolution: "@typescript-eslint/parser@npm:7.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/scope-manager": "npm:6.20.0"
|
"@typescript-eslint/scope-manager": "npm:7.0.1"
|
||||||
"@typescript-eslint/types": "npm:6.20.0"
|
"@typescript-eslint/types": "npm:7.0.1"
|
||||||
"@typescript-eslint/typescript-estree": "npm:6.20.0"
|
"@typescript-eslint/typescript-estree": "npm:7.0.1"
|
||||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
"@typescript-eslint/visitor-keys": "npm:7.0.1"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^7.0.0 || ^8.0.0
|
eslint: ^8.56.0
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/691062d47cae7977604ede848ffff3689162428a53577f298989f585954aa3a3450e7fd5c2b363d024cd5f16022c163cecf0f1f1d138234bbd78048050b4b8bf
|
checksum: 10/b4ba1743ab730268a1924139f072e4a0a56959526fb6377e1b3964518b6c6851733ae446a44d29fed1cb96669e2913cca524895ce77a6205aaed8bda00e8cd5d
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/scope-manager@npm:6.20.0":
|
"@typescript-eslint/scope-manager@npm:7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/scope-manager@npm:6.20.0"
|
resolution: "@typescript-eslint/scope-manager@npm:7.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types": "npm:6.20.0"
|
"@typescript-eslint/types": "npm:7.0.1"
|
||||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
"@typescript-eslint/visitor-keys": "npm:7.0.1"
|
||||||
checksum: 10/2c1a644f2931454b34875f2e6dffad52a1fc7b6ac508d7d1ad3cd9da028a7dff9c6191feeea2c9ca691deba199ac9e83cbd0036914be4cd45b6954437f03c09a
|
checksum: 10/dade6055bb853adb54de795cc3da5ab8550236d4186f108573fdb02e636ab7fc4300a55b506698ced4087ca43b143a5593931cb3195ab4790470b456d9ff8846
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/type-utils@npm:6.20.0":
|
"@typescript-eslint/type-utils@npm:7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/type-utils@npm:6.20.0"
|
resolution: "@typescript-eslint/type-utils@npm:7.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/typescript-estree": "npm:6.20.0"
|
"@typescript-eslint/typescript-estree": "npm:7.0.1"
|
||||||
"@typescript-eslint/utils": "npm:6.20.0"
|
"@typescript-eslint/utils": "npm:7.0.1"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
ts-api-utils: "npm:^1.0.1"
|
ts-api-utils: "npm:^1.0.1"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^7.0.0 || ^8.0.0
|
eslint: ^8.56.0
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/bc2f2793cfec3463164b5f5ded31b4e169e21c3a1990c1ce4effe70a359c486d92fbbc4cd92758bbf1c30a468ad0839e0fa890bd452c707d0c294cb3a7b14021
|
checksum: 10/cf20a3c0e56121ac62467e48121e135798db6d2999bd4f96ed44edc39f2597812d12b1bd6a378adec54d6c5e7db75fa5f98a27ce399792a2c8a5bbd3649952f7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/types@npm:6.20.0":
|
"@typescript-eslint/types@npm:7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/types@npm:6.20.0"
|
resolution: "@typescript-eslint/types@npm:7.0.1"
|
||||||
checksum: 10/74ed1761e27c3c1a29fd260fe51096f42cfb1472b20390d6df6ec41de0420208f379e809de416e81cd7c00fdc3d5550b2391872be56bf4a1b0c595f71db0b1ea
|
checksum: 10/c08b2d34bab2a877a45a1e4c2923f50d03022b682b7aaba929ae2a9a5ad32db0e46265544a6616ccb98654b434250621be0e282fc5b21b8ccaf6b78741d68f67
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/typescript-estree@npm:6.20.0":
|
"@typescript-eslint/typescript-estree@npm:7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/typescript-estree@npm:6.20.0"
|
resolution: "@typescript-eslint/typescript-estree@npm:7.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types": "npm:6.20.0"
|
"@typescript-eslint/types": "npm:7.0.1"
|
||||||
"@typescript-eslint/visitor-keys": "npm:6.20.0"
|
"@typescript-eslint/visitor-keys": "npm:7.0.1"
|
||||||
debug: "npm:^4.3.4"
|
debug: "npm:^4.3.4"
|
||||||
globby: "npm:^11.1.0"
|
globby: "npm:^11.1.0"
|
||||||
is-glob: "npm:^4.0.3"
|
is-glob: "npm:^4.0.3"
|
||||||
@@ -1805,34 +1805,34 @@ __metadata:
|
|||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
typescript:
|
typescript:
|
||||||
optional: true
|
optional: true
|
||||||
checksum: 10/55b280c6e71c79cb009ac80189a7f0e1aa9011bc7206c810bbb52d9703a894aa2817dfd44d947edf64d62f3aa0962e01f3423fcb21d2f39964a4840287d9e196
|
checksum: 10/b0b0adc84502d1ffcf3a0024179e0f2780be5f8b0a18328db46d430efc4e38a7965656b4392dd47d6176bbb1ee200aec6dd8581c39b606e260750574358cde9f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/utils@npm:6.20.0":
|
"@typescript-eslint/utils@npm:7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/utils@npm:6.20.0"
|
resolution: "@typescript-eslint/utils@npm:7.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@eslint-community/eslint-utils": "npm:^4.4.0"
|
"@eslint-community/eslint-utils": "npm:^4.4.0"
|
||||||
"@types/json-schema": "npm:^7.0.12"
|
"@types/json-schema": "npm:^7.0.12"
|
||||||
"@types/semver": "npm:^7.5.0"
|
"@types/semver": "npm:^7.5.0"
|
||||||
"@typescript-eslint/scope-manager": "npm:6.20.0"
|
"@typescript-eslint/scope-manager": "npm:7.0.1"
|
||||||
"@typescript-eslint/types": "npm:6.20.0"
|
"@typescript-eslint/types": "npm:7.0.1"
|
||||||
"@typescript-eslint/typescript-estree": "npm:6.20.0"
|
"@typescript-eslint/typescript-estree": "npm:7.0.1"
|
||||||
semver: "npm:^7.5.4"
|
semver: "npm:^7.5.4"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^7.0.0 || ^8.0.0
|
eslint: ^8.56.0
|
||||||
checksum: 10/6d4604be6123e0073dd5e7dd357c95b370c678572d2e982478d0d6937d4d65f0cad0ac207b8b724f3bce239e64ba1ddd6bece11e1592734d8bf691177e6971e6
|
checksum: 10/b7e0cb2994f73b3f416684dc175d4e1da5f8306d6c81abbad2f219fa3e4f29154063a3c9568e4a1f879a38b79c62250e596e4ed7265f7bd1ed9b3db806cb92b7
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"@typescript-eslint/visitor-keys@npm:6.20.0":
|
"@typescript-eslint/visitor-keys@npm:7.0.1":
|
||||||
version: 6.20.0
|
version: 7.0.1
|
||||||
resolution: "@typescript-eslint/visitor-keys@npm:6.20.0"
|
resolution: "@typescript-eslint/visitor-keys@npm:7.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/types": "npm:6.20.0"
|
"@typescript-eslint/types": "npm:7.0.1"
|
||||||
eslint-visitor-keys: "npm:^3.4.1"
|
eslint-visitor-keys: "npm:^3.4.1"
|
||||||
checksum: 10/df066c73f3880ad78880c442f307e58f026e6047d9caab9d7c356d13276f4fe466fab3e8d19cdb1e6749e87639cb7c4babcfe118f554fcd2d3929ce9f4983216
|
checksum: 10/915c5b19302a4c76e843cd2d04a9a2b11907e658d7018c8b55c338b090d9115d3719809aa05b8af130cc1b216c77626d210c20f705b732e83d04ceae0c112f6b
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -1851,25 +1851,23 @@ __metadata:
|
|||||||
"@babel/core": "npm:^7.23.9"
|
"@babel/core": "npm:^7.23.9"
|
||||||
"@emotion/react": "npm:^11.11.3"
|
"@emotion/react": "npm:^11.11.3"
|
||||||
"@emotion/styled": "npm:^11.11.0"
|
"@emotion/styled": "npm:^11.11.0"
|
||||||
"@mui/icons-material": "npm:^5.15.7"
|
"@mui/icons-material": "npm:^5.15.10"
|
||||||
"@mui/material": "npm:^5.15.7"
|
"@mui/material": "npm:^5.15.10"
|
||||||
"@preact/compat": "npm:^17.1.2"
|
"@preact/compat": "npm:^17.1.2"
|
||||||
"@preact/preset-vite": "npm:^2.8.1"
|
"@preact/preset-vite": "npm:^2.8.1"
|
||||||
"@table-library/react-table-library": "npm:4.1.7"
|
"@table-library/react-table-library": "npm:4.1.7"
|
||||||
"@types/imagemin": "npm:^8.0.5"
|
"@types/imagemin": "npm:^8.0.5"
|
||||||
"@types/lodash-es": "npm:^4.17.12"
|
"@types/lodash-es": "npm:^4.17.12"
|
||||||
"@types/node": "npm:^20.11.16"
|
"@types/node": "npm:^20.11.17"
|
||||||
"@types/react": "npm:^18.2.52"
|
"@types/react": "npm:^18.2.55"
|
||||||
"@types/react-dom": "npm:^18.2.18"
|
"@types/react-dom": "npm:^18.2.19"
|
||||||
"@types/react-router-dom": "npm:^5.3.3"
|
"@types/react-router-dom": "npm:^5.3.3"
|
||||||
"@typescript-eslint/eslint-plugin": "npm:^6.20.0"
|
"@typescript-eslint/eslint-plugin": "npm:^7.0.1"
|
||||||
"@typescript-eslint/parser": "npm:^6.20.0"
|
"@typescript-eslint/parser": "npm:^7.0.1"
|
||||||
alova: "npm:^2.17.0"
|
alova: "npm:^2.17.0"
|
||||||
async-validator: "npm:^4.2.5"
|
async-validator: "npm:^4.2.5"
|
||||||
concurrently: "npm:^8.2.2"
|
concurrently: "npm:^8.2.2"
|
||||||
eslint: "npm:^8.56.0"
|
eslint: "npm:^8.56.0"
|
||||||
eslint-config-airbnb: "npm:^19.0.4"
|
|
||||||
eslint-config-airbnb-typescript: "npm:^17.1.0"
|
|
||||||
eslint-config-prettier: "npm:^9.1.0"
|
eslint-config-prettier: "npm:^9.1.0"
|
||||||
eslint-import-resolver-typescript: "npm:^3.6.1"
|
eslint-import-resolver-typescript: "npm:^3.6.1"
|
||||||
eslint-plugin-autofix: "npm:^1.1.0"
|
eslint-plugin-autofix: "npm:^1.1.0"
|
||||||
@@ -1882,7 +1880,7 @@ __metadata:
|
|||||||
jwt-decode: "npm:^4.0.0"
|
jwt-decode: "npm:^4.0.0"
|
||||||
lodash-es: "npm:^4.17.21"
|
lodash-es: "npm:^4.17.21"
|
||||||
mime-types: "npm:^2.1.35"
|
mime-types: "npm:^2.1.35"
|
||||||
preact: "npm:^10.19.3"
|
preact: "npm:^10.19.4"
|
||||||
prettier: "npm:^3.2.5"
|
prettier: "npm:^3.2.5"
|
||||||
react: "npm:latest"
|
react: "npm:latest"
|
||||||
react-dom: "npm:latest"
|
react-dom: "npm:latest"
|
||||||
@@ -1895,7 +1893,7 @@ __metadata:
|
|||||||
terser: "npm:^5.27.0"
|
terser: "npm:^5.27.0"
|
||||||
typesafe-i18n: "npm:^5.26.2"
|
typesafe-i18n: "npm:^5.26.2"
|
||||||
typescript: "npm:^5.3.3"
|
typescript: "npm:^5.3.3"
|
||||||
vite: "npm:^5.0.12"
|
vite: "npm:^5.1.1"
|
||||||
vite-plugin-imagemin: "npm:^0.6.1"
|
vite-plugin-imagemin: "npm:^0.6.1"
|
||||||
vite-tsconfig-paths: "npm:^4.3.1"
|
vite-tsconfig-paths: "npm:^4.3.1"
|
||||||
languageName: unknown
|
languageName: unknown
|
||||||
@@ -2738,13 +2736,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"confusing-browser-globals@npm:^1.0.10":
|
|
||||||
version: 1.0.11
|
|
||||||
resolution: "confusing-browser-globals@npm:1.0.11"
|
|
||||||
checksum: 10/3afc635abd37e566477f610e7978b15753f0e84025c25d49236f1f14d480117185516bdd40d2a2167e6bed8048641a9854964b9c067e3dcdfa6b5d0ad3c3a5ef
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"console-control-strings@npm:^1.1.0":
|
"console-control-strings@npm:^1.1.0":
|
||||||
version: 1.1.0
|
version: 1.1.0
|
||||||
resolution: "console-control-strings@npm:1.1.0"
|
resolution: "console-control-strings@npm:1.1.0"
|
||||||
@@ -2889,13 +2880,20 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"csstype@npm:^3.0.2, csstype@npm:^3.1.2":
|
"csstype@npm:^3.0.2":
|
||||||
version: 3.1.2
|
version: 3.1.2
|
||||||
resolution: "csstype@npm:3.1.2"
|
resolution: "csstype@npm:3.1.2"
|
||||||
checksum: 10/1f39c541e9acd9562996d88bc9fb62d1cb234786ef11ed275567d4b2bd82e1ceacde25debc8de3d3b4871ae02c2933fa02614004c97190711caebad6347debc2
|
checksum: 10/1f39c541e9acd9562996d88bc9fb62d1cb234786ef11ed275567d4b2bd82e1ceacde25debc8de3d3b4871ae02c2933fa02614004c97190711caebad6347debc2
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
"csstype@npm:^3.1.3":
|
||||||
|
version: 3.1.3
|
||||||
|
resolution: "csstype@npm:3.1.3"
|
||||||
|
checksum: 10/f593cce41ff5ade23f44e77521e3a1bcc2c64107041e1bf6c3c32adc5187d0d60983292fda326154d20b01079e24931aa5b08e4467cc488b60bb1e7f6d478ade
|
||||||
|
languageName: node
|
||||||
|
linkType: hard
|
||||||
|
|
||||||
"currently-unhandled@npm:^0.4.1":
|
"currently-unhandled@npm:^0.4.1":
|
||||||
version: 0.4.1
|
version: 0.4.1
|
||||||
resolution: "currently-unhandled@npm:0.4.1"
|
resolution: "currently-unhandled@npm:0.4.1"
|
||||||
@@ -3783,52 +3781,6 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"eslint-config-airbnb-base@npm:^15.0.0":
|
|
||||||
version: 15.0.0
|
|
||||||
resolution: "eslint-config-airbnb-base@npm:15.0.0"
|
|
||||||
dependencies:
|
|
||||||
confusing-browser-globals: "npm:^1.0.10"
|
|
||||||
object.assign: "npm:^4.1.2"
|
|
||||||
object.entries: "npm:^1.1.5"
|
|
||||||
semver: "npm:^6.3.0"
|
|
||||||
peerDependencies:
|
|
||||||
eslint: ^7.32.0 || ^8.2.0
|
|
||||||
eslint-plugin-import: ^2.25.2
|
|
||||||
checksum: 10/daa68a1dcb7bff338747a952723b5fa9d159980ec3554c395a4b52a7f7d4f00a45e7b465420eb6d4d87a82cef6361e4cfd6dbb38c2f3f52f2140b6cf13654803
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"eslint-config-airbnb-typescript@npm:^17.1.0":
|
|
||||||
version: 17.1.0
|
|
||||||
resolution: "eslint-config-airbnb-typescript@npm:17.1.0"
|
|
||||||
dependencies:
|
|
||||||
eslint-config-airbnb-base: "npm:^15.0.0"
|
|
||||||
peerDependencies:
|
|
||||||
"@typescript-eslint/eslint-plugin": ^5.13.0 || ^6.0.0
|
|
||||||
"@typescript-eslint/parser": ^5.0.0 || ^6.0.0
|
|
||||||
eslint: ^7.32.0 || ^8.2.0
|
|
||||||
eslint-plugin-import: ^2.25.3
|
|
||||||
checksum: 10/a2238d820909ac005704e04d29ed495cebbe024869c488330273ea108e18cbf74b6b13e09d54d22a598fe793b9ed5ae593a7e8f9bdc6ea17614d5f2add340960
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"eslint-config-airbnb@npm:^19.0.4":
|
|
||||||
version: 19.0.4
|
|
||||||
resolution: "eslint-config-airbnb@npm:19.0.4"
|
|
||||||
dependencies:
|
|
||||||
eslint-config-airbnb-base: "npm:^15.0.0"
|
|
||||||
object.assign: "npm:^4.1.2"
|
|
||||||
object.entries: "npm:^1.1.5"
|
|
||||||
peerDependencies:
|
|
||||||
eslint: ^7.32.0 || ^8.2.0
|
|
||||||
eslint-plugin-import: ^2.25.3
|
|
||||||
eslint-plugin-jsx-a11y: ^6.5.1
|
|
||||||
eslint-plugin-react: ^7.28.0
|
|
||||||
eslint-plugin-react-hooks: ^4.3.0
|
|
||||||
checksum: 10/f2086523cfd20c42fd620c757281bd028aa8ce9dadc7293c5c23ea60947a2d3ca04404ede77b40f5a65250fe3c04502acafc4f2f6946819fe6c257d76d9644e5
|
|
||||||
languageName: node
|
|
||||||
linkType: hard
|
|
||||||
|
|
||||||
"eslint-config-prettier@npm:^9.1.0":
|
"eslint-config-prettier@npm:^9.1.0":
|
||||||
version: 9.1.0
|
version: 9.1.0
|
||||||
resolution: "eslint-config-prettier@npm:9.1.0"
|
resolution: "eslint-config-prettier@npm:9.1.0"
|
||||||
@@ -6596,7 +6548,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"object.assign@npm:^4.1.2, object.assign@npm:^4.1.4":
|
"object.assign@npm:^4.1.4":
|
||||||
version: 4.1.4
|
version: 4.1.4
|
||||||
resolution: "object.assign@npm:4.1.4"
|
resolution: "object.assign@npm:4.1.4"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -6608,7 +6560,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"object.entries@npm:^1.1.5, object.entries@npm:^1.1.6, object.entries@npm:^1.1.7":
|
"object.entries@npm:^1.1.6, object.entries@npm:^1.1.7":
|
||||||
version: 1.1.7
|
version: 1.1.7
|
||||||
resolution: "object.entries@npm:1.1.7"
|
resolution: "object.entries@npm:1.1.7"
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -7058,21 +7010,21 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"postcss@npm:^8.4.32":
|
"postcss@npm:^8.4.35":
|
||||||
version: 8.4.32
|
version: 8.4.35
|
||||||
resolution: "postcss@npm:8.4.32"
|
resolution: "postcss@npm:8.4.35"
|
||||||
dependencies:
|
dependencies:
|
||||||
nanoid: "npm:^3.3.7"
|
nanoid: "npm:^3.3.7"
|
||||||
picocolors: "npm:^1.0.0"
|
picocolors: "npm:^1.0.0"
|
||||||
source-map-js: "npm:^1.0.2"
|
source-map-js: "npm:^1.0.2"
|
||||||
checksum: 10/28084864122f29148e1f632261c408444f5ead0e0b9ea9bd9729d0468818ebe73fe5dc0075acd50c1365dbe639b46a79cba27d355ec857723a24bc9af0f18525
|
checksum: 10/93a7ce50cd6188f5f486a9ca98950ad27c19dfed996c45c414fa242944497e4d084a8760d3537f078630226f2bd3c6ab84b813b488740f4432e7c7039cd73a20
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"preact@npm:^10.19.3":
|
"preact@npm:^10.19.4":
|
||||||
version: 10.19.3
|
version: 10.19.4
|
||||||
resolution: "preact@npm:10.19.3"
|
resolution: "preact@npm:10.19.4"
|
||||||
checksum: 10/16478272162a986f03bbde7bb681103339dd00bfe0a6dffe78f9124f3999586647a31e9cb2324ae59ca51eb7d8dd5659eef6df0f7a5f424107cd9f99dddb08e8
|
checksum: 10/e79051c08d61c6723a4535606c9136ea752f8bae984ae8056039e2a56f6d58d6200aa941850478dc822dca38c16469d23368e9f75d7a7e57f9ca4df70a305d0f
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@@ -7732,7 +7684,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1":
|
"semver@npm:^6.0.0, semver@npm:^6.3.1":
|
||||||
version: 6.3.1
|
version: 6.3.1
|
||||||
resolution: "semver@npm:6.3.1"
|
resolution: "semver@npm:6.3.1"
|
||||||
bin:
|
bin:
|
||||||
@@ -8786,13 +8738,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"vite@npm:^5.0.12":
|
"vite@npm:^5.1.1":
|
||||||
version: 5.0.12
|
version: 5.1.1
|
||||||
resolution: "vite@npm:5.0.12"
|
resolution: "vite@npm:5.1.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: "npm:^0.19.3"
|
esbuild: "npm:^0.19.3"
|
||||||
fsevents: "npm:~2.3.3"
|
fsevents: "npm:~2.3.3"
|
||||||
postcss: "npm:^8.4.32"
|
postcss: "npm:^8.4.35"
|
||||||
rollup: "npm:^4.2.0"
|
rollup: "npm:^4.2.0"
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
"@types/node": ^18.0.0 || >=20.0.0
|
"@types/node": ^18.0.0 || >=20.0.0
|
||||||
@@ -8822,7 +8774,7 @@ __metadata:
|
|||||||
optional: true
|
optional: true
|
||||||
bin:
|
bin:
|
||||||
vite: bin/vite.js
|
vite: bin/vite.js
|
||||||
checksum: 10/ed0bb26a0d0c8e1dae0b70af9e36adffd7e15d80297443fe4da762596dc81570bad7f0291f590a57c1553f5e435338d8c7ffc483bd9431a95c09d9ac90665fad
|
checksum: 10/bdb8e683caddaa0a9adcbf40144ca8ea3660836b208862b07d43787ea867845919af16e58745365bd13ed3b7f66bbf9788a6869ee22cfaacac01645b59729c34
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
|
|||||||
0
lib/ArduinoJson/ArduinoJson.h
Normal file → Executable file
0
lib/ArduinoJson/ArduinoJson.h
Normal file → Executable file
7
lib/ArduinoJson/CHANGELOG.md
Normal file → Executable file
7
lib/ArduinoJson/CHANGELOG.md
Normal file → Executable file
@@ -1,6 +1,13 @@
|
|||||||
ArduinoJson: change log
|
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)
|
v7.0.2 (2024-01-19)
|
||||||
------
|
------
|
||||||
|
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
# ArduinoJson - https://arduinojson.org
|
|
||||||
# Copyright © 2014-2024, Benoit BLANCHON
|
|
||||||
# MIT License
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.15)
|
|
||||||
|
|
||||||
if(ESP_PLATFORM)
|
|
||||||
# Build ArduinoJson as an ESP-IDF component
|
|
||||||
idf_component_register(INCLUDE_DIRS src)
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
project(ArduinoJson VERSION 7.0.2)
|
|
||||||
|
|
||||||
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
|
|
||||||
include(CTest)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(src)
|
|
||||||
|
|
||||||
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME AND BUILD_TESTING)
|
|
||||||
include(extras/CompileOptions.cmake)
|
|
||||||
add_subdirectory(extras/tests)
|
|
||||||
add_subdirectory(extras/fuzzing)
|
|
||||||
endif()
|
|
||||||
0
lib/ArduinoJson/LICENSE.txt
Normal file → Executable file
0
lib/ArduinoJson/LICENSE.txt
Normal file → Executable file
155
lib/ArduinoJson/README.md
Executable file
155
lib/ArduinoJson/README.md
Executable file
@@ -0,0 +1,155 @@
|
|||||||
|
<p align="center">
|
||||||
|
<a href="https://arduinojson.org/"><img alt="ArduinoJson" src="https://arduinojson.org/images/logo.svg" width="200" /></a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
[](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!
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="https://www.programmingelectronics.com/" rel="sponsored">
|
||||||
|
<img src="https://arduinojson.org/images/2021/10/programmingeleactronicsacademy.png" alt="Programming Electronics Academy" width="200">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
<a href="https://github.com/1technophile" rel="sponsored">
|
||||||
|
<img alt="1technophile" src="https://avatars.githubusercontent.com/u/12672732?s=40&v=4">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
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) ⭐.
|
||||||
27
lib/ArduinoJson/SUPPORT.md
Executable file
27
lib/ArduinoJson/SUPPORT.md
Executable file
@@ -0,0 +1,27 @@
|
|||||||
|
# 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!
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
version: "7.0.2"
|
|
||||||
description: >-
|
|
||||||
A simple and efficient JSON library for embedded C++.
|
|
||||||
⭐ 6444 stars on GitHub!
|
|
||||||
Supports serialization, deserialization, MessagePack, streams, filtering, and more.
|
|
||||||
Fully tested and documented.
|
|
||||||
url: https://arduinojson.org/
|
|
||||||
files:
|
|
||||||
exclude:
|
|
||||||
- "**/.vs/**/*"
|
|
||||||
- ".devcontainer/**/*"
|
|
||||||
- "examples/**/*"
|
|
||||||
- "extras/**/*"
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "ArduinoJson",
|
|
||||||
"keywords": "json, rest, http, web",
|
|
||||||
"description": "A simple and efficient JSON library for embedded C++. ⭐ 6444 stars on GitHub! Supports serialization, deserialization, MessagePack, streams, filtering, and more. Fully tested and documented.",
|
|
||||||
"homepage": "https://arduinojson.org/?utm_source=meta&utm_medium=library.json",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/bblanchon/ArduinoJson.git"
|
|
||||||
},
|
|
||||||
"version": "7.0.2",
|
|
||||||
"authors": {
|
|
||||||
"name": "Benoit Blanchon",
|
|
||||||
"url": "https://blog.benoitblanchon.fr"
|
|
||||||
},
|
|
||||||
"export": {
|
|
||||||
"include": ["src", "examples", "LICENSE.txt", "ArduinoJson.h"]
|
|
||||||
},
|
|
||||||
"frameworks": "*",
|
|
||||||
"platforms": "*",
|
|
||||||
"build": {
|
|
||||||
"libArchive": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
name=ArduinoJson
|
|
||||||
version=7.0.2
|
|
||||||
author=Benoit Blanchon <blog.benoitblanchon.fr>
|
|
||||||
maintainer=Benoit Blanchon <blog.benoitblanchon.fr>
|
|
||||||
sentence=A simple and efficient JSON library for embedded C++.
|
|
||||||
paragraph=⭐ 6444 stars on GitHub! Supports serialization, deserialization, MessagePack, streams, filtering, and more. Fully tested and documented.
|
|
||||||
category=Data Processing
|
|
||||||
url=https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
|
|
||||||
architectures=*
|
|
||||||
repository=https://github.com/bblanchon/ArduinoJson.git
|
|
||||||
license=MIT
|
|
||||||
0
lib/ArduinoJson/src/ArduinoJson.h
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson.h
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
Normal file → Executable file
10
lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
Normal file → Executable file
10
lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
Normal file → Executable file
@@ -22,25 +22,25 @@ class ElementProxy : public VariantRefBase<ElementProxy<TUpstream>>,
|
|||||||
ElementProxy(const ElementProxy& src)
|
ElementProxy(const ElementProxy& src)
|
||||||
: upstream_(src.upstream_), index_(src.index_) {}
|
: upstream_(src.upstream_), index_(src.index_) {}
|
||||||
|
|
||||||
FORCE_INLINE ElementProxy& operator=(const ElementProxy& src) {
|
ElementProxy& operator=(const ElementProxy& src) {
|
||||||
this->set(src);
|
this->set(src);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
FORCE_INLINE ElementProxy& operator=(const T& src) {
|
ElementProxy& operator=(const T& src) {
|
||||||
this->set(src);
|
this->set(src);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
FORCE_INLINE ElementProxy& operator=(T* src) {
|
ElementProxy& operator=(T* src) {
|
||||||
this->set(src);
|
this->set(src);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FORCE_INLINE ResourceManager* getResourceManager() const {
|
ResourceManager* getResourceManager() const {
|
||||||
return VariantAttorney::getResourceManager(upstream_);
|
return VariantAttorney::getResourceManager(upstream_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ class ElementProxy : public VariantRefBase<ElementProxy<TUpstream>>,
|
|||||||
VariantAttorney::getResourceManager(upstream_));
|
VariantAttorney::getResourceManager(upstream_));
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE VariantData* getOrCreateData() const {
|
VariantData* getOrCreateData() const {
|
||||||
auto data = VariantAttorney::getOrCreateData(upstream_);
|
auto data = VariantAttorney::getOrCreateData(upstream_);
|
||||||
if (!data)
|
if (!data)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
29
lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
Normal file → Executable file
29
lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
Normal file → Executable file
@@ -20,11 +20,10 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
typedef JsonArrayIterator iterator;
|
typedef JsonArrayIterator iterator;
|
||||||
|
|
||||||
// Constructs an unbound reference.
|
// Constructs an unbound reference.
|
||||||
FORCE_INLINE JsonArray() : data_(0), resources_(0) {}
|
JsonArray() : data_(0), resources_(0) {}
|
||||||
|
|
||||||
// INTERNAL USE ONLY
|
// INTERNAL USE ONLY
|
||||||
FORCE_INLINE JsonArray(detail::ArrayData* data,
|
JsonArray(detail::ArrayData* data, detail::ResourceManager* resources)
|
||||||
detail::ResourceManager* resources)
|
|
||||||
: data_(data), resources_(resources) {}
|
: data_(data), resources_(resources) {}
|
||||||
|
|
||||||
// Returns a JsonVariant pointing to the array.
|
// Returns a JsonVariant pointing to the array.
|
||||||
@@ -63,20 +62,20 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
// Appends a value to the array.
|
// Appends a value to the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/add/
|
// https://arduinojson.org/v7/api/jsonarray/add/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
FORCE_INLINE bool add(const T& value) const {
|
bool add(const T& value) const {
|
||||||
return add<JsonVariant>().set(value);
|
return add<JsonVariant>().set(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Appends a value to the array.
|
// Appends a value to the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/add/
|
// https://arduinojson.org/v7/api/jsonarray/add/
|
||||||
template <typename T>
|
template <typename T>
|
||||||
FORCE_INLINE bool add(T* value) const {
|
bool add(T* value) const {
|
||||||
return add<JsonVariant>().set(value);
|
return add<JsonVariant>().set(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns an iterator to the first element of the array.
|
// Returns an iterator to the first element of the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/begin/
|
// https://arduinojson.org/v7/api/jsonarray/begin/
|
||||||
FORCE_INLINE iterator begin() const {
|
iterator begin() const {
|
||||||
if (!data_)
|
if (!data_)
|
||||||
return iterator();
|
return iterator();
|
||||||
return iterator(data_->createIterator(resources_), resources_);
|
return iterator(data_->createIterator(resources_), resources_);
|
||||||
@@ -84,13 +83,13 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
|
|
||||||
// Returns an iterator following the last element of the array.
|
// Returns an iterator following the last element of the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/end/
|
// https://arduinojson.org/v7/api/jsonarray/end/
|
||||||
FORCE_INLINE iterator end() const {
|
iterator end() const {
|
||||||
return iterator();
|
return iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copies an array.
|
// Copies an array.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/set/
|
// https://arduinojson.org/v7/api/jsonarray/set/
|
||||||
FORCE_INLINE bool set(JsonArrayConst src) const {
|
bool set(JsonArrayConst src) const {
|
||||||
if (!data_)
|
if (!data_)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -105,13 +104,13 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
|
|
||||||
// Removes the element at the specified iterator.
|
// Removes the element at the specified iterator.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/remove/
|
// https://arduinojson.org/v7/api/jsonarray/remove/
|
||||||
FORCE_INLINE void remove(iterator it) const {
|
void remove(iterator it) const {
|
||||||
detail::ArrayData::remove(data_, it.iterator_, resources_);
|
detail::ArrayData::remove(data_, it.iterator_, resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Removes the element at the specified index.
|
// Removes the element at the specified index.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/remove/
|
// https://arduinojson.org/v7/api/jsonarray/remove/
|
||||||
FORCE_INLINE void remove(size_t index) const {
|
void remove(size_t index) const {
|
||||||
detail::ArrayData::removeElement(data_, index, resources_);
|
detail::ArrayData::removeElement(data_, index, resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +122,7 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
|
|
||||||
// Gets or sets the element at the specified index.
|
// Gets or sets the element at the specified index.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/subscript/
|
// https://arduinojson.org/v7/api/jsonarray/subscript/
|
||||||
FORCE_INLINE detail::ElementProxy<JsonArray> operator[](size_t index) const {
|
detail::ElementProxy<JsonArray> operator[](size_t index) const {
|
||||||
return {*this, index};
|
return {*this, index};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,25 +132,25 @@ class JsonArray : public detail::VariantOperators<JsonArray> {
|
|||||||
|
|
||||||
// Returns true if the reference is unbound.
|
// Returns true if the reference is unbound.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/isnull/
|
// https://arduinojson.org/v7/api/jsonarray/isnull/
|
||||||
FORCE_INLINE bool isNull() const {
|
bool isNull() const {
|
||||||
return data_ == 0;
|
return data_ == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the reference is bound.
|
// Returns true if the reference is bound.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/isnull/
|
// https://arduinojson.org/v7/api/jsonarray/isnull/
|
||||||
FORCE_INLINE operator bool() const {
|
operator bool() const {
|
||||||
return data_ != 0;
|
return data_ != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the depth (nesting level) of the array.
|
// Returns the depth (nesting level) of the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/nesting/
|
// https://arduinojson.org/v7/api/jsonarray/nesting/
|
||||||
FORCE_INLINE size_t nesting() const {
|
size_t nesting() const {
|
||||||
return detail::VariantData::nesting(collectionToVariant(data_), resources_);
|
return detail::VariantData::nesting(collectionToVariant(data_), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of elements in the array.
|
// Returns the number of elements in the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarray/size/
|
// https://arduinojson.org/v7/api/jsonarray/size/
|
||||||
FORCE_INLINE size_t size() const {
|
size_t size() const {
|
||||||
return data_ ? data_->size(resources_) : 0;
|
return data_ ? data_->size(resources_) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
20
lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
Normal file → Executable file
20
lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
Normal file → Executable file
@@ -23,7 +23,7 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
|
|||||||
|
|
||||||
// Returns an iterator to the first element of the array.
|
// Returns an iterator to the first element of the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/begin/
|
// https://arduinojson.org/v7/api/jsonarrayconst/begin/
|
||||||
FORCE_INLINE iterator begin() const {
|
iterator begin() const {
|
||||||
if (!data_)
|
if (!data_)
|
||||||
return iterator();
|
return iterator();
|
||||||
return iterator(data_->createIterator(resources_), resources_);
|
return iterator(data_->createIterator(resources_), resources_);
|
||||||
@@ -31,21 +31,21 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
|
|||||||
|
|
||||||
// Returns an iterator to the element following the last element of the array.
|
// Returns an iterator to the element following the last element of the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/end/
|
// https://arduinojson.org/v7/api/jsonarrayconst/end/
|
||||||
FORCE_INLINE iterator end() const {
|
iterator end() const {
|
||||||
return iterator();
|
return iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates an unbound reference.
|
// Creates an unbound reference.
|
||||||
FORCE_INLINE JsonArrayConst() : data_(0) {}
|
JsonArrayConst() : data_(0) {}
|
||||||
|
|
||||||
// INTERNAL USE ONLY
|
// INTERNAL USE ONLY
|
||||||
FORCE_INLINE JsonArrayConst(const detail::ArrayData* data,
|
JsonArrayConst(const detail::ArrayData* data,
|
||||||
const detail::ResourceManager* resources)
|
const detail::ResourceManager* resources)
|
||||||
: data_(data), resources_(resources) {}
|
: data_(data), resources_(resources) {}
|
||||||
|
|
||||||
// Returns the element at the specified index.
|
// Returns the element at the specified index.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/subscript/
|
// https://arduinojson.org/v7/api/jsonarrayconst/subscript/
|
||||||
FORCE_INLINE JsonVariantConst operator[](size_t index) const {
|
JsonVariantConst operator[](size_t index) const {
|
||||||
return JsonVariantConst(
|
return JsonVariantConst(
|
||||||
detail::ArrayData::getElement(data_, index, resources_), resources_);
|
detail::ArrayData::getElement(data_, index, resources_), resources_);
|
||||||
}
|
}
|
||||||
@@ -56,25 +56,25 @@ class JsonArrayConst : public detail::VariantOperators<JsonArrayConst> {
|
|||||||
|
|
||||||
// Returns true if the reference is unbound.
|
// Returns true if the reference is unbound.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/isnull/
|
// https://arduinojson.org/v7/api/jsonarrayconst/isnull/
|
||||||
FORCE_INLINE bool isNull() const {
|
bool isNull() const {
|
||||||
return data_ == 0;
|
return data_ == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the reference is bound.
|
// Returns true if the reference is bound.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/isnull/
|
// https://arduinojson.org/v7/api/jsonarrayconst/isnull/
|
||||||
FORCE_INLINE operator bool() const {
|
operator bool() const {
|
||||||
return data_ != 0;
|
return data_ != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the depth (nesting level) of the array.
|
// Returns the depth (nesting level) of the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/nesting/
|
// https://arduinojson.org/v7/api/jsonarrayconst/nesting/
|
||||||
FORCE_INLINE size_t nesting() const {
|
size_t nesting() const {
|
||||||
return detail::VariantData::nesting(getData(), resources_);
|
return detail::VariantData::nesting(getData(), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of elements in the array.
|
// Returns the number of elements in the array.
|
||||||
// https://arduinojson.org/v7/api/jsonarrayconst/size/
|
// https://arduinojson.org/v7/api/jsonarrayconst/size/
|
||||||
FORCE_INLINE size_t size() const {
|
size_t size() const {
|
||||||
return data_ ? data_->size(resources_) : 0;
|
return data_ ? data_->size(resources_) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
Normal file → Executable file
4
lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
Normal file → Executable file
4
lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
Normal file → Executable file
@@ -107,6 +107,10 @@ class CollectionData {
|
|||||||
return collection->remove(it, resources);
|
return collection->remove(it, resources);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SlotId head() const {
|
||||||
|
return head_;
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
iterator addSlot(ResourceManager*);
|
iterator addSlot(ResourceManager*);
|
||||||
|
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
Normal file → Executable file
45
lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
Normal file → Executable file
45
lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
Normal file → Executable file
@@ -30,7 +30,8 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Move-constructor
|
// Move-constructor
|
||||||
JsonDocument(JsonDocument&& src) : JsonDocument() {
|
JsonDocument(JsonDocument&& src)
|
||||||
|
: JsonDocument(detail::DefaultAllocator::instance()) {
|
||||||
swap(*this, src);
|
swap(*this, src);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,9 +170,8 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
// Gets or sets a root object's member.
|
// Gets or sets a root object's member.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE typename detail::enable_if<
|
typename detail::enable_if<detail::IsString<TString>::value,
|
||||||
detail::IsString<TString>::value,
|
detail::MemberProxy<JsonDocument&, TString>>::type
|
||||||
detail::MemberProxy<JsonDocument&, TString>>::type
|
|
||||||
operator[](const TString& key) {
|
operator[](const TString& key) {
|
||||||
return {*this, key};
|
return {*this, key};
|
||||||
}
|
}
|
||||||
@@ -179,9 +179,8 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
// Gets or sets a root object's member.
|
// Gets or sets a root object's member.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE typename detail::enable_if<
|
typename detail::enable_if<detail::IsString<TChar*>::value,
|
||||||
detail::IsString<TChar*>::value,
|
detail::MemberProxy<JsonDocument&, TChar*>>::type
|
||||||
detail::MemberProxy<JsonDocument&, TChar*>>::type
|
|
||||||
operator[](TChar* key) {
|
operator[](TChar* key) {
|
||||||
return {*this, key};
|
return {*this, key};
|
||||||
}
|
}
|
||||||
@@ -189,8 +188,8 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
// Gets a root object's member.
|
// Gets a root object's member.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE typename detail::enable_if<detail::IsString<TString>::value,
|
typename detail::enable_if<detail::IsString<TString>::value,
|
||||||
JsonVariantConst>::type
|
JsonVariantConst>::type
|
||||||
operator[](const TString& key) const {
|
operator[](const TString& key) const {
|
||||||
return JsonVariantConst(
|
return JsonVariantConst(
|
||||||
data_.getMember(detail::adaptString(key), &resources_), &resources_);
|
data_.getMember(detail::adaptString(key), &resources_), &resources_);
|
||||||
@@ -199,8 +198,8 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
// Gets a root object's member.
|
// Gets a root object's member.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE typename detail::enable_if<detail::IsString<TChar*>::value,
|
typename detail::enable_if<detail::IsString<TChar*>::value,
|
||||||
JsonVariantConst>::type
|
JsonVariantConst>::type
|
||||||
operator[](TChar* key) const {
|
operator[](TChar* key) const {
|
||||||
return JsonVariantConst(
|
return JsonVariantConst(
|
||||||
data_.getMember(detail::adaptString(key), &resources_), &resources_);
|
data_.getMember(detail::adaptString(key), &resources_), &resources_);
|
||||||
@@ -208,13 +207,13 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
|
|
||||||
// Gets or sets a root array's element.
|
// Gets or sets a root array's element.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
||||||
FORCE_INLINE detail::ElementProxy<JsonDocument&> operator[](size_t index) {
|
detail::ElementProxy<JsonDocument&> operator[](size_t index) {
|
||||||
return {*this, index};
|
return {*this, index};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets a root array's member.
|
// Gets a root array's member.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
// https://arduinojson.org/v7/api/jsondocument/subscript/
|
||||||
FORCE_INLINE JsonVariantConst operator[](size_t index) const {
|
JsonVariantConst operator[](size_t index) const {
|
||||||
return JsonVariantConst(data_.getElement(index, &resources_), &resources_);
|
return JsonVariantConst(data_.getElement(index, &resources_), &resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -239,28 +238,28 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
// Appends a value to the root array.
|
// Appends a value to the root array.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/add/
|
// https://arduinojson.org/v7/api/jsondocument/add/
|
||||||
template <typename TValue>
|
template <typename TValue>
|
||||||
FORCE_INLINE bool add(const TValue& value) {
|
bool add(const TValue& value) {
|
||||||
return add<JsonVariant>().set(value);
|
return add<JsonVariant>().set(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Appends a value to the root array.
|
// Appends a value to the root array.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/add/
|
// https://arduinojson.org/v7/api/jsondocument/add/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE bool add(TChar* value) {
|
bool add(TChar* value) {
|
||||||
return add<JsonVariant>().set(value);
|
return add<JsonVariant>().set(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Removes an element of the root array.
|
// Removes an element of the root array.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/remove/
|
// https://arduinojson.org/v7/api/jsondocument/remove/
|
||||||
FORCE_INLINE void remove(size_t index) {
|
void remove(size_t index) {
|
||||||
detail::VariantData::removeElement(getData(), index, getResourceManager());
|
detail::VariantData::removeElement(getData(), index, getResourceManager());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Removes a member of the root object.
|
// Removes a member of the root object.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/remove/
|
// https://arduinojson.org/v7/api/jsondocument/remove/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE typename detail::enable_if<detail::IsString<TChar*>::value>::type
|
typename detail::enable_if<detail::IsString<TChar*>::value>::type remove(
|
||||||
remove(TChar* key) {
|
TChar* key) {
|
||||||
detail::VariantData::removeMember(getData(), detail::adaptString(key),
|
detail::VariantData::removeMember(getData(), detail::adaptString(key),
|
||||||
getResourceManager());
|
getResourceManager());
|
||||||
}
|
}
|
||||||
@@ -268,18 +267,18 @@ class JsonDocument : public detail::VariantOperators<const JsonDocument&> {
|
|||||||
// Removes a member of the root object.
|
// Removes a member of the root object.
|
||||||
// https://arduinojson.org/v7/api/jsondocument/remove/
|
// https://arduinojson.org/v7/api/jsondocument/remove/
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE
|
|
||||||
typename detail::enable_if<detail::IsString<TString>::value>::type
|
typename detail::enable_if<detail::IsString<TString>::value>::type remove(
|
||||||
remove(const TString& key) {
|
const TString& key) {
|
||||||
detail::VariantData::removeMember(getData(), detail::adaptString(key),
|
detail::VariantData::removeMember(getData(), detail::adaptString(key),
|
||||||
getResourceManager());
|
getResourceManager());
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE operator JsonVariant() {
|
operator JsonVariant() {
|
||||||
return getVariant();
|
return getVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE operator JsonVariantConst() const {
|
operator JsonVariantConst() const {
|
||||||
return getVariant();
|
return getVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
Normal file → Executable file
34
lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp
Normal file → Executable file
34
lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp
Normal file → Executable file
@@ -19,19 +19,20 @@ class JsonSerializer : public VariantDataVisitor<size_t> {
|
|||||||
JsonSerializer(TWriter writer, const ResourceManager* resources)
|
JsonSerializer(TWriter writer, const ResourceManager* resources)
|
||||||
: formatter_(writer), resources_(resources) {}
|
: formatter_(writer), resources_(resources) {}
|
||||||
|
|
||||||
FORCE_INLINE size_t visit(const ArrayData& array) {
|
size_t visit(const ArrayData& array) {
|
||||||
write('[');
|
write('[');
|
||||||
|
|
||||||
auto it = array.createIterator(resources_);
|
auto slotId = array.head();
|
||||||
|
|
||||||
while (!it.done()) {
|
while (slotId != NULL_SLOT) {
|
||||||
it->accept(*this);
|
auto slot = resources_->getSlot(slotId);
|
||||||
|
|
||||||
it.next(resources_);
|
slot->data()->accept(*this);
|
||||||
if (it.done())
|
|
||||||
break;
|
|
||||||
|
|
||||||
write(',');
|
slotId = slot->next();
|
||||||
|
|
||||||
|
if (slotId != NULL_SLOT)
|
||||||
|
write(',');
|
||||||
}
|
}
|
||||||
|
|
||||||
write(']');
|
write(']');
|
||||||
@@ -41,18 +42,19 @@ class JsonSerializer : public VariantDataVisitor<size_t> {
|
|||||||
size_t visit(const ObjectData& object) {
|
size_t visit(const ObjectData& object) {
|
||||||
write('{');
|
write('{');
|
||||||
|
|
||||||
auto it = object.createIterator(resources_);
|
auto slotId = object.head();
|
||||||
|
|
||||||
while (!it.done()) {
|
while (slotId != NULL_SLOT) {
|
||||||
formatter_.writeString(it.key());
|
auto slot = resources_->getSlot(slotId);
|
||||||
|
|
||||||
|
formatter_.writeString(slot->key());
|
||||||
write(':');
|
write(':');
|
||||||
it->accept(*this);
|
slot->data()->accept(*this);
|
||||||
|
|
||||||
it.next(resources_);
|
slotId = slot->next();
|
||||||
if (it.done())
|
|
||||||
break;
|
|
||||||
|
|
||||||
write(',');
|
if (slotId != NULL_SLOT)
|
||||||
|
write(',');
|
||||||
}
|
}
|
||||||
|
|
||||||
write('}');
|
write('}');
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/VariantPool.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/VariantPool.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/VariantPoolImpl.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/VariantPoolImpl.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/VariantPoolList.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Memory/VariantPoolList.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp
Normal file → Executable file
22
lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp
Normal file → Executable file
22
lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp
Normal file → Executable file
@@ -59,10 +59,14 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
|
|||||||
writeByte(0xDD);
|
writeByte(0xDD);
|
||||||
writeInteger(uint32_t(n));
|
writeInteger(uint32_t(n));
|
||||||
}
|
}
|
||||||
for (auto it = array.createIterator(resources_); !it.done();
|
|
||||||
it.next(resources_)) {
|
auto slotId = array.head();
|
||||||
it->accept(*this);
|
while (slotId != NULL_SLOT) {
|
||||||
|
auto slot = resources_->getSlot(slotId);
|
||||||
|
slot->data()->accept(*this);
|
||||||
|
slotId = slot->next();
|
||||||
}
|
}
|
||||||
|
|
||||||
return bytesWritten();
|
return bytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,11 +81,15 @@ class MsgPackSerializer : public VariantDataVisitor<size_t> {
|
|||||||
writeByte(0xDF);
|
writeByte(0xDF);
|
||||||
writeInteger(uint32_t(n));
|
writeInteger(uint32_t(n));
|
||||||
}
|
}
|
||||||
for (auto it = object.createIterator(resources_); !it.done();
|
|
||||||
it.next(resources_)) {
|
auto slotId = object.head();
|
||||||
visit(it.key());
|
while (slotId != NULL_SLOT) {
|
||||||
it->accept(*this);
|
auto slot = resources_->getSlot(slotId);
|
||||||
|
visit(slot->key());
|
||||||
|
slot->data()->accept(*this);
|
||||||
|
slotId = slot->next();
|
||||||
}
|
}
|
||||||
|
|
||||||
return bytesWritten();
|
return bytesWritten();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Namespace.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Namespace.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp
Normal file → Executable file
47
lib/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp
Normal file → Executable file
47
lib/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp
Normal file → Executable file
@@ -20,11 +20,10 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
typedef JsonObjectIterator iterator;
|
typedef JsonObjectIterator iterator;
|
||||||
|
|
||||||
// Creates an unbound reference.
|
// Creates an unbound reference.
|
||||||
FORCE_INLINE JsonObject() : data_(0), resources_(0) {}
|
JsonObject() : data_(0), resources_(0) {}
|
||||||
|
|
||||||
// INTERNAL USE ONLY
|
// INTERNAL USE ONLY
|
||||||
FORCE_INLINE JsonObject(detail::ObjectData* data,
|
JsonObject(detail::ObjectData* data, detail::ResourceManager* resource)
|
||||||
detail::ResourceManager* resource)
|
|
||||||
: data_(data), resources_(resource) {}
|
: data_(data), resources_(resource) {}
|
||||||
|
|
||||||
operator JsonVariant() const {
|
operator JsonVariant() const {
|
||||||
@@ -43,31 +42,31 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
|
|
||||||
// Returns true if the reference is unbound.
|
// Returns true if the reference is unbound.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/isnull/
|
// https://arduinojson.org/v7/api/jsonobject/isnull/
|
||||||
FORCE_INLINE bool isNull() const {
|
bool isNull() const {
|
||||||
return data_ == 0;
|
return data_ == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the reference is bound.
|
// Returns true if the reference is bound.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/isnull/
|
// https://arduinojson.org/v7/api/jsonobject/isnull/
|
||||||
FORCE_INLINE operator bool() const {
|
operator bool() const {
|
||||||
return data_ != 0;
|
return data_ != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the depth (nesting level) of the object.
|
// Returns the depth (nesting level) of the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/nesting/
|
// https://arduinojson.org/v7/api/jsonobject/nesting/
|
||||||
FORCE_INLINE size_t nesting() const {
|
size_t nesting() const {
|
||||||
return detail::VariantData::nesting(collectionToVariant(data_), resources_);
|
return detail::VariantData::nesting(collectionToVariant(data_), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of members in the object.
|
// Returns the number of members in the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/size/
|
// https://arduinojson.org/v7/api/jsonobject/size/
|
||||||
FORCE_INLINE size_t size() const {
|
size_t size() const {
|
||||||
return data_ ? data_->size(resources_) : 0;
|
return data_ ? data_->size(resources_) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns an iterator to the first key-value pair of the object.
|
// Returns an iterator to the first key-value pair of the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/begin/
|
// https://arduinojson.org/v7/api/jsonobject/begin/
|
||||||
FORCE_INLINE iterator begin() const {
|
iterator begin() const {
|
||||||
if (!data_)
|
if (!data_)
|
||||||
return iterator();
|
return iterator();
|
||||||
return iterator(data_->createIterator(resources_), resources_);
|
return iterator(data_->createIterator(resources_), resources_);
|
||||||
@@ -75,7 +74,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
|
|
||||||
// Returns an iterator following the last key-value pair of the object.
|
// Returns an iterator following the last key-value pair of the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/end/
|
// https://arduinojson.org/v7/api/jsonobject/end/
|
||||||
FORCE_INLINE iterator end() const {
|
iterator end() const {
|
||||||
return iterator();
|
return iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -87,7 +86,7 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
|
|
||||||
// Copies an object.
|
// Copies an object.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/set/
|
// https://arduinojson.org/v7/api/jsonobject/set/
|
||||||
FORCE_INLINE bool set(JsonObjectConst src) {
|
bool set(JsonObjectConst src) {
|
||||||
if (!data_ || !src.data_)
|
if (!data_ || !src.data_)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -103,20 +102,20 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
// Gets or sets the member with specified key.
|
// Gets or sets the member with specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/subscript/
|
// https://arduinojson.org/v7/api/jsonobject/subscript/
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE
|
|
||||||
typename detail::enable_if<detail::IsString<TString>::value,
|
typename detail::enable_if<detail::IsString<TString>::value,
|
||||||
detail::MemberProxy<JsonObject, TString>>::type
|
detail::MemberProxy<JsonObject, TString>>::type
|
||||||
operator[](const TString& key) const {
|
operator[](const TString& key) const {
|
||||||
return {*this, key};
|
return {*this, key};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets or sets the member with specified key.
|
// Gets or sets the member with specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/subscript/
|
// https://arduinojson.org/v7/api/jsonobject/subscript/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE
|
|
||||||
typename detail::enable_if<detail::IsString<TChar*>::value,
|
typename detail::enable_if<detail::IsString<TChar*>::value,
|
||||||
detail::MemberProxy<JsonObject, TChar*>>::type
|
detail::MemberProxy<JsonObject, TChar*>>::type
|
||||||
operator[](TChar* key) const {
|
operator[](TChar* key) const {
|
||||||
return {*this, key};
|
return {*this, key};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,9 +144,9 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
// Returns true if the object contains the specified key.
|
// Returns true if the object contains the specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/containskey/
|
// https://arduinojson.org/v7/api/jsonobject/containskey/
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE
|
|
||||||
typename detail::enable_if<detail::IsString<TString>::value, bool>::type
|
typename detail::enable_if<detail::IsString<TString>::value, bool>::type
|
||||||
containsKey(const TString& key) const {
|
containsKey(const TString& key) const {
|
||||||
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
||||||
resources_) != 0;
|
resources_) != 0;
|
||||||
}
|
}
|
||||||
@@ -155,9 +154,9 @@ class JsonObject : public detail::VariantOperators<JsonObject> {
|
|||||||
// Returns true if the object contains the specified key.
|
// Returns true if the object contains the specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobject/containskey/
|
// https://arduinojson.org/v7/api/jsonobject/containskey/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE
|
|
||||||
typename detail::enable_if<detail::IsString<TChar*>::value, bool>::type
|
typename detail::enable_if<detail::IsString<TChar*>::value, bool>::type
|
||||||
containsKey(TChar* key) const {
|
containsKey(TChar* key) const {
|
||||||
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
||||||
resources_) != 0;
|
resources_) != 0;
|
||||||
}
|
}
|
||||||
|
|||||||
24
lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp
Normal file → Executable file
24
lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp
Normal file → Executable file
@@ -32,31 +32,31 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
|
|
||||||
// Returns true if the reference is unbound.
|
// Returns true if the reference is unbound.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/isnull/
|
// https://arduinojson.org/v7/api/jsonobjectconst/isnull/
|
||||||
FORCE_INLINE bool isNull() const {
|
bool isNull() const {
|
||||||
return data_ == 0;
|
return data_ == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the reference is bound.
|
// Returns true if the reference is bound.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/isnull/
|
// https://arduinojson.org/v7/api/jsonobjectconst/isnull/
|
||||||
FORCE_INLINE operator bool() const {
|
operator bool() const {
|
||||||
return data_ != 0;
|
return data_ != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the depth (nesting level) of the object.
|
// Returns the depth (nesting level) of the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/nesting/
|
// https://arduinojson.org/v7/api/jsonobjectconst/nesting/
|
||||||
FORCE_INLINE size_t nesting() const {
|
size_t nesting() const {
|
||||||
return detail::VariantData::nesting(getData(), resources_);
|
return detail::VariantData::nesting(getData(), resources_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the number of members in the object.
|
// Returns the number of members in the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/size/
|
// https://arduinojson.org/v7/api/jsonobjectconst/size/
|
||||||
FORCE_INLINE size_t size() const {
|
size_t size() const {
|
||||||
return data_ ? data_->size(resources_) : 0;
|
return data_ ? data_->size(resources_) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns an iterator to the first key-value pair of the object.
|
// Returns an iterator to the first key-value pair of the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/begin/
|
// https://arduinojson.org/v7/api/jsonobjectconst/begin/
|
||||||
FORCE_INLINE iterator begin() const {
|
iterator begin() const {
|
||||||
if (!data_)
|
if (!data_)
|
||||||
return iterator();
|
return iterator();
|
||||||
return iterator(data_->createIterator(resources_), resources_);
|
return iterator(data_->createIterator(resources_), resources_);
|
||||||
@@ -64,14 +64,14 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
|
|
||||||
// Returns an iterator following the last key-value pair of the object.
|
// Returns an iterator following the last key-value pair of the object.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/end/
|
// https://arduinojson.org/v7/api/jsonobjectconst/end/
|
||||||
FORCE_INLINE iterator end() const {
|
iterator end() const {
|
||||||
return iterator();
|
return iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns true if the object contains the specified key.
|
// Returns true if the object contains the specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/containskey/
|
// https://arduinojson.org/v7/api/jsonobjectconst/containskey/
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE bool containsKey(const TString& key) const {
|
bool containsKey(const TString& key) const {
|
||||||
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
||||||
resources_) != 0;
|
resources_) != 0;
|
||||||
}
|
}
|
||||||
@@ -79,7 +79,7 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
// Returns true if the object contains the specified key.
|
// Returns true if the object contains the specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/containskey/
|
// https://arduinojson.org/v7/api/jsonobjectconst/containskey/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE bool containsKey(TChar* key) const {
|
bool containsKey(TChar* key) const {
|
||||||
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
return detail::ObjectData::getMember(data_, detail::adaptString(key),
|
||||||
resources_) != 0;
|
resources_) != 0;
|
||||||
}
|
}
|
||||||
@@ -87,8 +87,8 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
// Gets the member with specified key.
|
// Gets the member with specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/subscript/
|
// https://arduinojson.org/v7/api/jsonobjectconst/subscript/
|
||||||
template <typename TString>
|
template <typename TString>
|
||||||
FORCE_INLINE typename detail::enable_if<detail::IsString<TString>::value,
|
typename detail::enable_if<detail::IsString<TString>::value,
|
||||||
JsonVariantConst>::type
|
JsonVariantConst>::type
|
||||||
operator[](const TString& key) const {
|
operator[](const TString& key) const {
|
||||||
return JsonVariantConst(detail::ObjectData::getMember(
|
return JsonVariantConst(detail::ObjectData::getMember(
|
||||||
data_, detail::adaptString(key), resources_),
|
data_, detail::adaptString(key), resources_),
|
||||||
@@ -98,8 +98,8 @@ class JsonObjectConst : public detail::VariantOperators<JsonObjectConst> {
|
|||||||
// Gets the member with specified key.
|
// Gets the member with specified key.
|
||||||
// https://arduinojson.org/v7/api/jsonobjectconst/subscript/
|
// https://arduinojson.org/v7/api/jsonobjectconst/subscript/
|
||||||
template <typename TChar>
|
template <typename TChar>
|
||||||
FORCE_INLINE typename detail::enable_if<detail::IsString<TChar*>::value,
|
typename detail::enable_if<detail::IsString<TChar*>::value,
|
||||||
JsonVariantConst>::type
|
JsonVariantConst>::type
|
||||||
operator[](TChar* key) const {
|
operator[](TChar* key) const {
|
||||||
return JsonVariantConst(detail::ObjectData::getMember(
|
return JsonVariantConst(detail::ObjectData::getMember(
|
||||||
data_, detail::adaptString(key), resources_),
|
data_, detail::adaptString(key), resources_),
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp
Normal file → Executable file
14
lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp
Normal file → Executable file
14
lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp
Normal file → Executable file
@@ -17,41 +17,41 @@ class MemberProxy
|
|||||||
friend class VariantAttorney;
|
friend class VariantAttorney;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
FORCE_INLINE MemberProxy(TUpstream upstream, TStringRef key)
|
MemberProxy(TUpstream upstream, TStringRef key)
|
||||||
: upstream_(upstream), key_(key) {}
|
: upstream_(upstream), key_(key) {}
|
||||||
|
|
||||||
MemberProxy(const MemberProxy& src)
|
MemberProxy(const MemberProxy& src)
|
||||||
: upstream_(src.upstream_), key_(src.key_) {}
|
: upstream_(src.upstream_), key_(src.key_) {}
|
||||||
|
|
||||||
FORCE_INLINE MemberProxy& operator=(const MemberProxy& src) {
|
MemberProxy& operator=(const MemberProxy& src) {
|
||||||
this->set(src);
|
this->set(src);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
FORCE_INLINE MemberProxy& operator=(const T& src) {
|
MemberProxy& operator=(const T& src) {
|
||||||
this->set(src);
|
this->set(src);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
FORCE_INLINE MemberProxy& operator=(T* src) {
|
MemberProxy& operator=(T* src) {
|
||||||
this->set(src);
|
this->set(src);
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FORCE_INLINE ResourceManager* getResourceManager() const {
|
ResourceManager* getResourceManager() const {
|
||||||
return VariantAttorney::getResourceManager(upstream_);
|
return VariantAttorney::getResourceManager(upstream_);
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE VariantData* getData() const {
|
VariantData* getData() const {
|
||||||
return VariantData::getMember(
|
return VariantData::getMember(
|
||||||
VariantAttorney::getData(upstream_), adaptString(key_),
|
VariantAttorney::getData(upstream_), adaptString(key_),
|
||||||
VariantAttorney::getResourceManager(upstream_));
|
VariantAttorney::getResourceManager(upstream_));
|
||||||
}
|
}
|
||||||
|
|
||||||
FORCE_INLINE VariantData* getOrCreateData() const {
|
VariantData* getOrCreateData() const {
|
||||||
auto data = VariantAttorney::getOrCreateData(upstream_);
|
auto data = VariantAttorney::getOrCreateData(upstream_);
|
||||||
if (!data)
|
if (!data)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp
Normal file → Executable file
3
lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp
Normal file → Executable file
3
lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp
Normal file → Executable file
@@ -7,7 +7,6 @@
|
|||||||
#ifdef _MSC_VER // Visual Studio
|
#ifdef _MSC_VER // Visual Studio
|
||||||
|
|
||||||
# define FORCE_INLINE // __forceinline causes C4714 when returning std::string
|
# define FORCE_INLINE // __forceinline causes C4714 when returning std::string
|
||||||
# define NO_INLINE __declspec(noinline)
|
|
||||||
|
|
||||||
# ifndef ARDUINOJSON_DEPRECATED
|
# ifndef ARDUINOJSON_DEPRECATED
|
||||||
# define ARDUINOJSON_DEPRECATED(msg) __declspec(deprecated(msg))
|
# define ARDUINOJSON_DEPRECATED(msg) __declspec(deprecated(msg))
|
||||||
@@ -16,7 +15,6 @@
|
|||||||
#elif defined(__GNUC__) // GCC or Clang
|
#elif defined(__GNUC__) // GCC or Clang
|
||||||
|
|
||||||
# define FORCE_INLINE __attribute__((always_inline))
|
# define FORCE_INLINE __attribute__((always_inline))
|
||||||
# define NO_INLINE __attribute__((noinline))
|
|
||||||
|
|
||||||
# ifndef ARDUINOJSON_DEPRECATED
|
# ifndef ARDUINOJSON_DEPRECATED
|
||||||
# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
|
# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
|
||||||
@@ -29,7 +27,6 @@
|
|||||||
#else // Other compilers
|
#else // Other compilers
|
||||||
|
|
||||||
# define FORCE_INLINE
|
# define FORCE_INLINE
|
||||||
# define NO_INLINE
|
|
||||||
|
|
||||||
# ifndef ARDUINOJSON_DEPRECATED
|
# ifndef ARDUINOJSON_DEPRECATED
|
||||||
# define ARDUINOJSON_DEPRECATED(msg)
|
# define ARDUINOJSON_DEPRECATED(msg)
|
||||||
|
|||||||
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp
Normal file → Executable file
0
lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp
Normal file → Executable file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user