Merge pull request #481 from proddy/dev

table formatting, upgrade packages & arduinojson, fix mqtt retry
This commit is contained in:
Proddy
2022-05-01 16:04:46 +02:00
committed by GitHub
32 changed files with 540 additions and 308 deletions

View File

@@ -12,15 +12,15 @@
"@emotion/styled": "^11.8.1", "@emotion/styled": "^11.8.1",
"@msgpack/msgpack": "^2.7.2", "@msgpack/msgpack": "^2.7.2",
"@mui/icons-material": "^5.6.2", "@mui/icons-material": "^5.6.2",
"@mui/material": "^5.6.2", "@mui/material": "^5.6.3",
"@table-library/react-table-library": "^3.1.0", "@table-library/react-table-library": "^3.1.0",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"@types/node": "^17.0.26", "@types/node": "^17.0.30",
"@types/react": "^17.0.43", "@types/react": "^17.0.43",
"@types/react-dom": "^17.0.14", "@types/react-dom": "^17.0.14",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",
"async-validator": "^4.0.8", "async-validator": "^4.1.1",
"axios": "^0.26.1", "axios": "^0.27.2",
"http-proxy-middleware": "^2.0.6", "http-proxy-middleware": "^2.0.6",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"lodash": "^4.17.21", "lodash": "^4.17.21",
@@ -29,15 +29,15 @@
"react": "^17.0.2", "react": "^17.0.2",
"react-app-rewired": "^2.2.1", "react-app-rewired": "^2.2.1",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-dropzone": "^12.0.5", "react-dropzone": "^13.0.0",
"react-icons": "^4.3.1", "react-icons": "^4.3.1",
"react-router-dom": "^6.3.0", "react-router-dom": "^6.3.0",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"sockette": "^2.0.6", "sockette": "^2.0.6",
"typescript": "^4.6.3" "typescript": "^4.6.4"
}, },
"devDependencies": { "devDependencies": {
"nodemon": "^2.0.15", "nodemon": "^2.0.16",
"npm-run-all": "^4.1.5" "npm-run-all": "^4.1.5"
} }
}, },
@@ -2856,9 +2856,9 @@
} }
}, },
"node_modules/@mui/base": { "node_modules/@mui/base": {
"version": "5.0.0-alpha.77", "version": "5.0.0-alpha.78",
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.77.tgz", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.78.tgz",
"integrity": "sha512-Zqm3qlczGViD3lJSYo8ZnQLHJ3PwGYftbDfVuh2Rq5OD88F7H6oDILlqknzty59NDkeSVO2qlymYmHOY1nLodg==", "integrity": "sha512-5L+GNe2M9/tFjQpjK2r837+kzRg/l6D5R9SQbG1wmSWejw5Ei8P+KXIgS/NLNi9g7dUT8bnCyzz9AZKQX1Jsfg==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@emotion/is-prop-valid": "^1.1.2", "@emotion/is-prop-valid": "^1.1.2",
@@ -2913,13 +2913,13 @@
} }
}, },
"node_modules/@mui/material": { "node_modules/@mui/material": {
"version": "5.6.2", "version": "5.6.3",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.2.tgz", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.3.tgz",
"integrity": "sha512-bwMvroBrMgUTwUh/BcjhtcJwEw9uH4chV3+ZSj6RckOJtMj8U4yEeD7S4NgHE8Ioj5eObKFzHpih/cTD1sDRpg==", "integrity": "sha512-2VovFsbCEhic29NYoBF7zFrpH2sEOlKXXDhGjzxmWiI9OnC3SX63hapWunjaVsiRINVnjuMHuW1MOs4UtV8Gfg==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/base": "5.0.0-alpha.77", "@mui/base": "5.0.0-alpha.78",
"@mui/system": "^5.6.2", "@mui/system": "^5.6.3",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.6.1", "@mui/utils": "^5.6.1",
"@types/react-transition-group": "^4.4.4", "@types/react-transition-group": "^4.4.4",
@@ -3013,9 +3013,9 @@
} }
}, },
"node_modules/@mui/system": { "node_modules/@mui/system": {
"version": "5.6.2", "version": "5.6.3",
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.2.tgz", "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.3.tgz",
"integrity": "sha512-Wg9TRbvavSwEYk6UdpnoDx+CqJfaAN7AzlmwEx7DtGmx0snFVBST8FVb1Ev1vXosxEnq6/fe7ZDRobFVewvEPQ==", "integrity": "sha512-4SRi52a4ttZ2S4EHEDE8arVNuKqyQLTYUTF80WAZ0tQwnG20qwlBtzcrywCGItmVAMl7RUaYopyWOx3yVPvrmQ==",
"dependencies": { "dependencies": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/private-theming": "^5.6.2", "@mui/private-theming": "^5.6.2",
@@ -3763,9 +3763,9 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "17.0.26", "version": "17.0.30",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.26.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.30.tgz",
"integrity": "sha512-z/FG/6DUO7pnze3AE3TBGIjGGKkvCcGcWINe1C7cADY8hKLJPDYpzsNE37uExQ4md5RFtTCvg+M8Mu1Enyeg2A==" "integrity": "sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw=="
}, },
"node_modules/@types/parse-json": { "node_modules/@types/parse-json": {
"version": "4.0.0", "version": "4.0.0",
@@ -4670,9 +4670,9 @@
} }
}, },
"node_modules/async-validator": { "node_modules/async-validator": {
"version": "4.0.8", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.0.8.tgz", "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.1.1.tgz",
"integrity": "sha512-vx1kyOCuSJqB5IVatlybUkV/e22sdx+V0XohCWbBfbbzbiLFt6fHxfWg6UEBhFw0gVgZtaSLTJtugmP4rdGQAQ==" "integrity": "sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA=="
}, },
"node_modules/asynckit": { "node_modules/asynckit": {
"version": "0.4.0", "version": "0.4.0",
@@ -4736,11 +4736,25 @@
} }
}, },
"node_modules/axios": { "node_modules/axios": {
"version": "0.26.1", "version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"dependencies": { "dependencies": {
"follow-redirects": "^1.14.8" "follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
}
},
"node_modules/axios/node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
} }
}, },
"node_modules/axobject-query": { "node_modules/axobject-query": {
@@ -7962,9 +7976,9 @@
} }
}, },
"node_modules/file-selector": { "node_modules/file-selector": {
"version": "0.4.0", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.4.0.tgz", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.5.0.tgz",
"integrity": "sha512-iACCiXeMYOvZqlF1kTiYINzgepRBymz1wwjiuup9u9nayhb6g4fSwiyJ/6adli+EPwrWtpgQAh2PoS7HukEGEg==", "integrity": "sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==",
"dependencies": { "dependencies": {
"tslib": "^2.0.3" "tslib": "^2.0.3"
}, },
@@ -12026,9 +12040,9 @@
"integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==" "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw=="
}, },
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "2.0.15", "version": "2.0.16",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz",
"integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
@@ -14423,12 +14437,12 @@
} }
}, },
"node_modules/react-dropzone": { "node_modules/react-dropzone": {
"version": "12.0.5", "version": "13.0.0",
"resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-12.0.5.tgz", "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-13.0.0.tgz",
"integrity": "sha512-zUjZigD0VJ91CSm9T1h7ErxFReBLaa9sjS2dUL0+inb0RROZpSJTNDHPY1rrBES5V2NXhF8v0kghmaHc81BMFg==", "integrity": "sha512-BwzHZlmwC2wFKtGbuWw6A+D+uUaJgUGuheALoVFwTNztwV+7NLzdUrHHUkF9mRkI9u5pJDivH3wo+BgSyYVoTQ==",
"dependencies": { "dependencies": {
"attr-accept": "^2.2.2", "attr-accept": "^2.2.2",
"file-selector": "^0.4.0", "file-selector": "^0.5.0",
"prop-types": "^15.8.1" "prop-types": "^15.8.1"
}, },
"engines": { "engines": {
@@ -16354,9 +16368,9 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "4.6.3", "version": "4.6.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==",
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
@@ -19555,9 +19569,9 @@
"integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw==" "integrity": "sha512-rYEi46+gIzufyYUAoHDnRzkWGxajpD9vVXFQ3g1vbjrBm6P7MBmm+s/fqPa46sxa+8FOUdEuRQKaugo5a4JWpw=="
}, },
"@mui/base": { "@mui/base": {
"version": "5.0.0-alpha.77", "version": "5.0.0-alpha.78",
"resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.77.tgz", "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.78.tgz",
"integrity": "sha512-Zqm3qlczGViD3lJSYo8ZnQLHJ3PwGYftbDfVuh2Rq5OD88F7H6oDILlqknzty59NDkeSVO2qlymYmHOY1nLodg==", "integrity": "sha512-5L+GNe2M9/tFjQpjK2r837+kzRg/l6D5R9SQbG1wmSWejw5Ei8P+KXIgS/NLNi9g7dUT8bnCyzz9AZKQX1Jsfg==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@emotion/is-prop-valid": "^1.1.2", "@emotion/is-prop-valid": "^1.1.2",
@@ -19578,13 +19592,13 @@
} }
}, },
"@mui/material": { "@mui/material": {
"version": "5.6.2", "version": "5.6.3",
"resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.2.tgz", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.6.3.tgz",
"integrity": "sha512-bwMvroBrMgUTwUh/BcjhtcJwEw9uH4chV3+ZSj6RckOJtMj8U4yEeD7S4NgHE8Ioj5eObKFzHpih/cTD1sDRpg==", "integrity": "sha512-2VovFsbCEhic29NYoBF7zFrpH2sEOlKXXDhGjzxmWiI9OnC3SX63hapWunjaVsiRINVnjuMHuW1MOs4UtV8Gfg==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/base": "5.0.0-alpha.77", "@mui/base": "5.0.0-alpha.78",
"@mui/system": "^5.6.2", "@mui/system": "^5.6.3",
"@mui/types": "^7.1.3", "@mui/types": "^7.1.3",
"@mui/utils": "^5.6.1", "@mui/utils": "^5.6.1",
"@types/react-transition-group": "^4.4.4", "@types/react-transition-group": "^4.4.4",
@@ -19617,9 +19631,9 @@
} }
}, },
"@mui/system": { "@mui/system": {
"version": "5.6.2", "version": "5.6.3",
"resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.2.tgz", "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.6.3.tgz",
"integrity": "sha512-Wg9TRbvavSwEYk6UdpnoDx+CqJfaAN7AzlmwEx7DtGmx0snFVBST8FVb1Ev1vXosxEnq6/fe7ZDRobFVewvEPQ==", "integrity": "sha512-4SRi52a4ttZ2S4EHEDE8arVNuKqyQLTYUTF80WAZ0tQwnG20qwlBtzcrywCGItmVAMl7RUaYopyWOx3yVPvrmQ==",
"requires": { "requires": {
"@babel/runtime": "^7.17.2", "@babel/runtime": "^7.17.2",
"@mui/private-theming": "^5.6.2", "@mui/private-theming": "^5.6.2",
@@ -20136,9 +20150,9 @@
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
}, },
"@types/node": { "@types/node": {
"version": "17.0.26", "version": "17.0.30",
"resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.26.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.30.tgz",
"integrity": "sha512-z/FG/6DUO7pnze3AE3TBGIjGGKkvCcGcWINe1C7cADY8hKLJPDYpzsNE37uExQ4md5RFtTCvg+M8Mu1Enyeg2A==" "integrity": "sha512-oNBIZjIqyHYP8VCNAV9uEytXVeXG2oR0w9lgAXro20eugRQfY002qr3CUl6BAe+Yf/z3CRjPdz27Pu6WWtuSRw=="
}, },
"@types/parse-json": { "@types/parse-json": {
"version": "4.0.0", "version": "4.0.0",
@@ -20838,9 +20852,9 @@
} }
}, },
"async-validator": { "async-validator": {
"version": "4.0.8", "version": "4.1.1",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.0.8.tgz", "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.1.1.tgz",
"integrity": "sha512-vx1kyOCuSJqB5IVatlybUkV/e22sdx+V0XohCWbBfbbzbiLFt6fHxfWg6UEBhFw0gVgZtaSLTJtugmP4rdGQAQ==" "integrity": "sha512-p4DO/JXwjs8klJyJL8Q2oM4ks5fUTze/h5k10oPPKMiLe1fj3G1QMzPHNmN1Py4ycOk7WlO2DcGXv1qiESJCZA=="
}, },
"asynckit": { "asynckit": {
"version": "0.4.0", "version": "0.4.0",
@@ -20876,11 +20890,24 @@
"integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==" "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw=="
}, },
"axios": { "axios": {
"version": "0.26.1", "version": "0.27.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz",
"integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==",
"requires": { "requires": {
"follow-redirects": "^1.14.8" "follow-redirects": "^1.14.9",
"form-data": "^4.0.0"
},
"dependencies": {
"form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
}
} }
}, },
"axobject-query": { "axobject-query": {
@@ -23253,9 +23280,9 @@
} }
}, },
"file-selector": { "file-selector": {
"version": "0.4.0", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.4.0.tgz", "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.5.0.tgz",
"integrity": "sha512-iACCiXeMYOvZqlF1kTiYINzgepRBymz1wwjiuup9u9nayhb6g4fSwiyJ/6adli+EPwrWtpgQAh2PoS7HukEGEg==", "integrity": "sha512-s8KNnmIDTBoD0p9uJ9uD0XY38SCeBOtj0UMXyQSLg1Ypfrfj8+dAvwsLjYQkQ2GjhVtp2HrnF5cJzMhBjfD8HA==",
"requires": { "requires": {
"tslib": "^2.0.3" "tslib": "^2.0.3"
} }
@@ -26186,9 +26213,9 @@
"integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==" "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw=="
}, },
"nodemon": { "nodemon": {
"version": "2.0.15", "version": "2.0.16",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz",
"integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==",
"dev": true, "dev": true,
"requires": { "requires": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
@@ -27766,12 +27793,12 @@
} }
}, },
"react-dropzone": { "react-dropzone": {
"version": "12.0.5", "version": "13.0.0",
"resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-12.0.5.tgz", "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-13.0.0.tgz",
"integrity": "sha512-zUjZigD0VJ91CSm9T1h7ErxFReBLaa9sjS2dUL0+inb0RROZpSJTNDHPY1rrBES5V2NXhF8v0kghmaHc81BMFg==", "integrity": "sha512-BwzHZlmwC2wFKtGbuWw6A+D+uUaJgUGuheALoVFwTNztwV+7NLzdUrHHUkF9mRkI9u5pJDivH3wo+BgSyYVoTQ==",
"requires": { "requires": {
"attr-accept": "^2.2.2", "attr-accept": "^2.2.2",
"file-selector": "^0.4.0", "file-selector": "^0.5.0",
"prop-types": "^15.8.1" "prop-types": "^15.8.1"
} }
}, },
@@ -29213,9 +29240,9 @@
} }
}, },
"typescript": { "typescript": {
"version": "4.6.3", "version": "4.6.4",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz",
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==" "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg=="
}, },
"unbox-primitive": { "unbox-primitive": {
"version": "1.0.1", "version": "1.0.1",

View File

@@ -8,15 +8,15 @@
"@emotion/styled": "^11.8.1", "@emotion/styled": "^11.8.1",
"@msgpack/msgpack": "^2.7.2", "@msgpack/msgpack": "^2.7.2",
"@mui/icons-material": "^5.6.2", "@mui/icons-material": "^5.6.2",
"@mui/material": "^5.6.2", "@mui/material": "^5.6.3",
"@table-library/react-table-library": "^3.1.0", "@table-library/react-table-library": "^3.1.0",
"@types/lodash": "^4.14.182", "@types/lodash": "^4.14.182",
"@types/node": "^17.0.26", "@types/node": "^17.0.30",
"@types/react": "^17.0.43", "@types/react": "^17.0.43",
"@types/react-dom": "^17.0.14", "@types/react-dom": "^17.0.14",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",
"async-validator": "^4.0.8", "async-validator": "^4.1.1",
"axios": "^0.26.1", "axios": "^0.27.2",
"http-proxy-middleware": "^2.0.6", "http-proxy-middleware": "^2.0.6",
"jwt-decode": "^3.1.2", "jwt-decode": "^3.1.2",
"lodash": "^4.17.21", "lodash": "^4.17.21",
@@ -25,12 +25,12 @@
"react": "^17.0.2", "react": "^17.0.2",
"react-app-rewired": "^2.2.1", "react-app-rewired": "^2.2.1",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"react-dropzone": "^12.0.5", "react-dropzone": "^13.0.0",
"react-icons": "^4.3.1", "react-icons": "^4.3.1",
"react-router-dom": "^6.3.0", "react-router-dom": "^6.3.0",
"react-scripts": "5.0.1", "react-scripts": "5.0.1",
"sockette": "^2.0.6", "sockette": "^2.0.6",
"typescript": "^4.6.3" "typescript": "^4.6.4"
}, },
"scripts": { "scripts": {
"start": "react-app-rewired start", "start": "react-app-rewired start",
@@ -97,7 +97,7 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"nodemon": "^2.0.15", "nodemon": "^2.0.16",
"npm-run-all": "^4.1.5" "npm-run-all": "^4.1.5"
} }
} }

View File

@@ -9,6 +9,8 @@ import * as AuthenticationApi from './api/authentication';
import { PROJECT_NAME } from './api/env'; import { PROJECT_NAME } from './api/env';
import { AuthenticationContext } from './contexts/authentication'; import { AuthenticationContext } from './contexts/authentication';
import { AxiosError } from 'axios';
import { extractErrorMessage, onEnterCallback, updateValue } from './utils'; import { extractErrorMessage, onEnterCallback, updateValue } from './utils';
import { SignInRequest } from './types'; import { SignInRequest } from './types';
import { ValidatedTextField } from './components'; import { ValidatedTextField } from './components';
@@ -42,9 +44,11 @@ const SignIn: FC = () => {
try { try {
const { data: loginResponse } = await AuthenticationApi.signIn(signInRequest); const { data: loginResponse } = await AuthenticationApi.signIn(signInRequest);
authenticationContext.signIn(loginResponse.access_token); authenticationContext.signIn(loginResponse.access_token);
} catch (error: any) { } catch (error: unknown) {
if (error.response?.status === 401) { if (error instanceof AxiosError) {
enqueueSnackbar('Invalid login details', { variant: 'warning' }); if (error.response?.status === 401) {
enqueueSnackbar('Invalid login details', { variant: 'warning' });
}
} else { } else {
enqueueSnackbar(extractErrorMessage(error, 'Unexpected error, please try again'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Unexpected error, please try again'), { variant: 'error' });
} }

View File

@@ -24,13 +24,19 @@ const getBorderColor = (theme: Theme, props: DropzoneState) => {
export interface SingleUploadProps { export interface SingleUploadProps {
onDrop: (acceptedFiles: File[]) => void; onDrop: (acceptedFiles: File[]) => void;
onCancel: () => void; onCancel: () => void;
accept?: string | string[];
uploading: boolean; uploading: boolean;
progress?: ProgressEvent; progress?: ProgressEvent;
} }
const SingleUpload: FC<SingleUploadProps> = ({ onDrop, onCancel, accept, uploading, progress }) => { const SingleUpload: FC<SingleUploadProps> = ({ onDrop, onCancel, uploading, progress }) => {
const dropzoneState = useDropzone({ onDrop, accept, disabled: uploading, multiple: false }); const dropzoneState = useDropzone({
onDrop,
accept: {
'application/octet-stream': ['.bin']
},
disabled: uploading,
multiple: false
});
const { getRootProps, getInputProps } = dropzoneState; const { getRootProps, getInputProps } = dropzoneState;
const theme = useTheme(); const theme = useTheme();

View File

@@ -43,7 +43,7 @@ const useFileUpload = ({ upload }: MediaUploadOptions) => {
}); });
resetUploadingStates(); resetUploadingStates();
enqueueSnackbar('Upload successful', { variant: 'success' }); enqueueSnackbar('Upload successful', { variant: 'success' });
} catch (error: any) { } catch (error: unknown) {
if (axios.isCancel(error)) { if (axios.isCancel(error)) {
enqueueSnackbar('Upload aborted', { variant: 'warning' }); enqueueSnackbar('Upload aborted', { variant: 'warning' });
} else { } else {

View File

@@ -23,9 +23,9 @@ const Authentication: FC = ({ children }) => {
const decodedMe = AuthenticationApi.decodeMeJWT(accessToken); const decodedMe = AuthenticationApi.decodeMeJWT(accessToken);
setMe(decodedMe); setMe(decodedMe);
enqueueSnackbar(`Logged in as ${decodedMe.username}`, { variant: 'success' }); enqueueSnackbar(`Logged in as ${decodedMe.username}`, { variant: 'success' });
} catch (error: any) { } catch (error: unknown) {
setMe(undefined); setMe(undefined);
throw new Error('Failed to parse JWT ' + error.message); throw new Error('Failed to parse JWT');
} }
}; };
@@ -49,7 +49,7 @@ const Authentication: FC = ({ children }) => {
await AuthenticationApi.verifyAuthorization(); await AuthenticationApi.verifyAuthorization();
setMe(AuthenticationApi.decodeMeJWT(accessToken)); setMe(AuthenticationApi.decodeMeJWT(accessToken));
setInitialized(true); setInitialized(true);
} catch (error: any) { } catch (error: unknown) {
setMe(undefined); setMe(undefined);
setInitialized(true); setInitialized(true);
} }

View File

@@ -16,7 +16,7 @@ const FeaturesLoader: FC = (props) => {
try { try {
const response = await FeaturesApi.readFeatures(); const response = await FeaturesApi.readFeatures();
setFeatures(response.data); setFeatures(response.data);
} catch (error: any) { } catch (error: unknown) {
setErrorMessage(extractErrorMessage(error, 'Failed to fetch application details.')); setErrorMessage(extractErrorMessage(error, 'Failed to fetch application details.'));
} }
}, []); }, []);

View File

@@ -1,13 +1,14 @@
import { useEffect, FC, useState, useCallback, useRef } from 'react'; import { useEffect, FC, useState, useCallback, useRef } from 'react';
import { useSnackbar } from 'notistack'; import { useSnackbar } from 'notistack';
import { AxiosError } from 'axios';
import { Button } from '@mui/material'; import { Button } from '@mui/material';
import PermScanWifiIcon from '@mui/icons-material/PermScanWifi'; import PermScanWifiIcon from '@mui/icons-material/PermScanWifi';
import * as NetworkApi from '../../api/network'; import * as NetworkApi from '../../api/network';
import { WiFiNetwork, WiFiNetworkList } from '../../types'; import { WiFiNetwork, WiFiNetworkList } from '../../types';
import { ButtonRow, FormLoader, SectionContent } from '../../components'; import { ButtonRow, FormLoader, SectionContent } from '../../components';
import { extractErrorMessage } from '../../utils';
import WiFiNetworkSelector from './WiFiNetworkSelector'; import WiFiNetworkSelector from './WiFiNetworkSelector';
@@ -52,8 +53,12 @@ const WiFiNetworkScanner: FC = () => {
newNetworkList.networks.sort(compareNetworks); newNetworkList.networks.sort(compareNetworks);
setNetworkList(newNetworkList); setNetworkList(newNetworkList);
} }
} catch (error: any) { } catch (error: unknown) {
finishedWithError(extractErrorMessage(error, 'Problem listing WiFi networks')); if (error instanceof AxiosError) {
finishedWithError('Problem listing WiFi networks ' + error.response?.data.message);
} else {
finishedWithError('Problem listing WiFi networks');
}
} }
}, [finishedWithError]); }, [finishedWithError]);
@@ -64,8 +69,12 @@ const WiFiNetworkScanner: FC = () => {
try { try {
await NetworkApi.scanNetworks(); await NetworkApi.scanNetworks();
setTimeout(pollNetworkList, POLLING_FREQUENCY); setTimeout(pollNetworkList, POLLING_FREQUENCY);
} catch (error: any) { } catch (error: unknown) {
finishedWithError(extractErrorMessage(error, 'Problem scanning for WiFi networks')); if (error instanceof AxiosError) {
finishedWithError('Problem scanning for WiFi networks ' + error.response?.data.message);
} else {
finishedWithError('Problem scanning for WiFi networks');
}
} }
}, [finishedWithError, pollNetworkList]); }, [finishedWithError, pollNetworkList]);

View File

@@ -86,7 +86,7 @@ const NTPStatusForm: FC = () => {
enqueueSnackbar('Time set', { variant: 'success' }); enqueueSnackbar('Time set', { variant: 'success' });
setSettingTime(false); setSettingTime(false);
loadData(); loadData();
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem updating time'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem updating time'), { variant: 'error' });
} finally { } finally {
setProcessing(false); setProcessing(false);

View File

@@ -33,7 +33,7 @@ const GenerateToken: FC<GenerateTokenProps> = ({ username, onClose }) => {
const getToken = useCallback(async () => { const getToken = useCallback(async () => {
try { try {
setToken((await SecurityApi.generateToken(username)).data); setToken((await SecurityApi.generateToken(username)).data);
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem generating token'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem generating token'), { variant: 'error' });
} }
}, [username, enqueueSnackbar]); }, [username, enqueueSnackbar]);

View File

@@ -21,7 +21,6 @@ const FirmwareFileUpload: FC<UploadFirmwareProps> = ({ uploadFirmware }) => {
/> />
)} )}
<SingleUpload <SingleUpload
accept=".bin"
onDrop={uploadFile} onDrop={uploadFile}
onCancel={cancelUpload} onCancel={cancelUpload}
uploading={uploading} uploading={uploading}

View File

@@ -17,7 +17,7 @@ const FirmwareRestartMonitor: FC = () => {
try { try {
await SystemApi.readSystemStatus(POLL_TIMEOUT); await SystemApi.readSystemStatus(POLL_TIMEOUT);
document.location.href = '/firmwareUpdated'; document.location.href = '/firmwareUpdated';
} catch (error: any) { } catch (error: unknown) {
if (new Date().getTime() < timeoutAt.current) { if (new Date().getTime() < timeoutAt.current) {
setTimeoutId(setTimeout(poll.current, POLL_INTERVAL)); setTimeoutId(setTimeout(poll.current, POLL_INTERVAL));
} else { } else {

View File

@@ -106,7 +106,7 @@ const SystemLog: FC = () => {
if (response.status !== 200) { if (response.status !== 200) {
enqueueSnackbar('Problem applying log settings', { variant: 'error' }); enqueueSnackbar('Problem applying log settings', { variant: 'error' });
} }
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem applying log settings'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem applying log settings'), { variant: 'error' });
} }
} }
@@ -158,7 +158,7 @@ const SystemLog: FC = () => {
const fetchLog = useCallback(async () => { const fetchLog = useCallback(async () => {
try { try {
setLogEntries((await SystemApi.readLogEntries()).data); setLogEntries((await SystemApi.readLogEntries()).data);
} catch (error: any) { } catch (error: unknown) {
setErrorMessage(extractErrorMessage(error, 'Failed to fetch log')); setErrorMessage(extractErrorMessage(error, 'Failed to fetch log'));
} }
}, []); }, []);

View File

@@ -81,7 +81,7 @@ const SystemStatusForm: FC = () => {
try { try {
await SystemApi.restart(); await SystemApi.restart();
enqueueSnackbar('EMS-ESP is restarting...', { variant: 'info' }); enqueueSnackbar('EMS-ESP is restarting...', { variant: 'info' });
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem restarting device'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem restarting device'), { variant: 'error' });
} finally { } finally {
setConfirmRestart(false); setConfirmRestart(false);
@@ -179,7 +179,7 @@ const SystemStatusForm: FC = () => {
try { try {
await SystemApi.factoryReset(); await SystemApi.factoryReset();
enqueueSnackbar('Device has been factory reset and will now restart', { variant: 'info' }); enqueueSnackbar('Device has been factory reset and will now restart', { variant: 'info' });
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem factory resetting the device'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem factory resetting the device'), { variant: 'error' });
} finally { } finally {
setConfirmFactoryReset(false); setConfirmFactoryReset(false);

View File

@@ -197,24 +197,29 @@ const DashboardData: FC = () => {
border-top: 1px solid #177ac9; border-top: 1px solid #177ac9;
border-bottom: 1px solid #177ac9; border-bottom: 1px solid #177ac9;
color: white; color: white;
cursor: 'pointer',
} }
`, `,
BaseCell: ` BaseCell: `
padding-left: 8px; cursor: pointer;
border-top: 1px solid transparent; border-top: 1px solid transparent;
border-right: 1px solid transparent; border-right: 1px solid transparent;
border-bottom: 1px solid transparent; border-bottom: 1px solid transparent;
padding-left: 16px;
width: 124px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&:last-of-type { &:last-of-type {
text-align: right; text-align: right;
min-width: 64px;
} }
`, `,
HeaderCell: ` HeaderCell: `
padding-left: 0px; &:nth-of-type(1) {
&:not(:last-of-type) { padding-left: 8px;
border-right: 1px solid #565656; }
} &:not(:last-of-type) {
border-right: 1px solid #565656;
}
` `
}); });
@@ -360,7 +365,7 @@ const DashboardData: FC = () => {
const fetchCoreData = useCallback(async () => { const fetchCoreData = useCallback(async () => {
try { try {
setCoreData((await EMSESP.readCoreData()).data); setCoreData((await EMSESP.readCoreData()).data);
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Failed to fetch core data'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Failed to fetch core data'), { variant: 'error' });
} }
}, [enqueueSnackbar]); }, [enqueueSnackbar]);
@@ -381,7 +386,7 @@ const DashboardData: FC = () => {
const unique_id = parseInt(id); const unique_id = parseInt(id);
try { try {
setDeviceData((await EMSESP.readDeviceData({ id: unique_id })).data); setDeviceData((await EMSESP.readDeviceData({ id: unique_id })).data);
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem fetching device data'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem fetching device data'), { variant: 'error' });
} }
}; };
@@ -389,7 +394,7 @@ const DashboardData: FC = () => {
const fetchSensorData = async () => { const fetchSensorData = async () => {
try { try {
setSensorData((await EMSESP.readSensorData()).data); setSensorData((await EMSESP.readSensorData()).data);
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem fetching sensor data'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem fetching sensor data'), { variant: 'error' });
} }
}; };
@@ -442,7 +447,7 @@ const DashboardData: FC = () => {
enqueueSnackbar('Write command sent', { variant: 'success' }); enqueueSnackbar('Write command sent', { variant: 'success' });
} }
setDeviceValue(undefined); setDeviceValue(undefined);
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem writing value'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem writing value'), { variant: 'error' });
} finally { } finally {
refreshData(); refreshData();
@@ -533,7 +538,7 @@ const DashboardData: FC = () => {
enqueueSnackbar('Sensor updated', { variant: 'success' }); enqueueSnackbar('Sensor updated', { variant: 'success' });
} }
setSensor(undefined); setSensor(undefined);
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem updating sensor'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem updating sensor'), { variant: 'error' });
} finally { } finally {
setSensor(undefined); setSensor(undefined);
@@ -741,6 +746,7 @@ const DashboardData: FC = () => {
}} }}
theme={data_theme} theme={data_theme}
sort={dv_sort} sort={dv_sort}
// layout={{ custom: true }}
> >
{(tableList: any) => ( {(tableList: any) => (
<> <>
@@ -940,7 +946,7 @@ const DashboardData: FC = () => {
} else { } else {
enqueueSnackbar('Analog sensor removed', { variant: 'success' }); enqueueSnackbar('Analog sensor removed', { variant: 'success' });
} }
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem updating analog sensor'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem updating analog sensor'), { variant: 'error' });
} finally { } finally {
setAnalog(undefined); setAnalog(undefined);
@@ -968,7 +974,7 @@ const DashboardData: FC = () => {
} else { } else {
enqueueSnackbar('Analog sensor updated', { variant: 'success' }); enqueueSnackbar('Analog sensor updated', { variant: 'success' });
} }
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem updating analog'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem updating analog'), { variant: 'error' });
} finally { } finally {
setAnalog(undefined); setAnalog(undefined);

View File

@@ -91,6 +91,7 @@ const DashboardStatus: FC = () => {
BaseRow: ` BaseRow: `
font-size: 14px; font-size: 14px;
color: white; color: white;
height: 32px;
`, `,
HeaderRow: ` HeaderRow: `
text-transform: uppercase; text-transform: uppercase;
@@ -123,9 +124,29 @@ const DashboardStatus: FC = () => {
border-top: 1px solid transparent; border-top: 1px solid transparent;
border-right: 1px solid transparent; border-right: 1px solid transparent;
border-bottom: 1px solid transparent; border-bottom: 1px solid transparent;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&:nth-of-type(1) { &:nth-of-type(1) {
padding-left: 8px;
flex: 1; flex: 1;
} }
&:nth-of-type(2) {
min-width: 15%;
width: 15%;
text-align: right;
}
&:nth-of-type(3) {
min-width: 15%;
width: 15%;
text-align: right;
}
&:last-of-type {
min-width: 15%;
width: 15%;
text-align: right;
padding-right: 8px;
}
` `
}); });
@@ -141,7 +162,7 @@ const DashboardStatus: FC = () => {
try { try {
await EMSESP.scanDevices(); await EMSESP.scanDevices();
enqueueSnackbar('Scanning for devices...', { variant: 'info' }); enqueueSnackbar('Scanning for devices...', { variant: 'info' });
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem initiating scan'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem initiating scan'), { variant: 'error' });
} finally { } finally {
setConfirmScan(false); setConfirmScan(false);

View File

@@ -48,7 +48,7 @@ const HelpInformation: FC = () => {
document.body.removeChild(a); document.body.removeChild(a);
enqueueSnackbar('File downloaded', { variant: 'info' }); enqueueSnackbar('File downloaded', { variant: 'info' });
} }
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem with downloading'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem with downloading'), { variant: 'error' });
} }
}; };

View File

@@ -64,7 +64,7 @@ const SettingsApplication: FC = () => {
eth_clock_mode: response.data.eth_clock_mode eth_clock_mode: response.data.eth_clock_mode
}); });
} }
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem fetching board profile'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem fetching board profile'), { variant: 'error' });
} finally { } finally {
setProcessingBoard(false); setProcessingBoard(false);
@@ -103,7 +103,7 @@ const SettingsApplication: FC = () => {
try { try {
await EMSESP.restart(); await EMSESP.restart();
enqueueSnackbar('EMS-ESP is restarting...', { variant: 'info' }); enqueueSnackbar('EMS-ESP is restarting...', { variant: 'info' });
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem restarting device'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem restarting device'), { variant: 'error' });
} }
}; };

View File

@@ -63,6 +63,7 @@ const SettingsCustomization: FC = () => {
font-size: 14px; font-size: 14px;
color: white; color: white;
height: 32px; height: 32px;
min-height: 32px;
`, `,
HeaderRow: ` HeaderRow: `
text-transform: uppercase; text-transform: uppercase;
@@ -103,12 +104,14 @@ const SettingsCustomization: FC = () => {
border-top: 1px solid transparent; border-top: 1px solid transparent;
border-right: 1px solid transparent; border-right: 1px solid transparent;
border-bottom: 1px solid transparent; border-bottom: 1px solid transparent;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&:nth-of-type(1) { &:nth-of-type(1) {
left: 0px; left: 0px;
min-width: 124px; min-width: 124px;
width: 124px; width: 124px;
padding-left: 0px; padding-left: 0px;
} }
&:nth-of-type(2) { &:nth-of-type(2) {
min-width: 70%; min-width: 70%;
@@ -116,12 +119,14 @@ const SettingsCustomization: FC = () => {
} }
`, `,
HeaderCell: ` HeaderCell: `
padding-left: 0px;
&:nth-of-type(1) { &:nth-of-type(1) {
padding-left: 24px; padding-left: 24px;
} }
&:nth-of-type(3) { &:nth-of-type(2) {
border-left: 1px solid #565656; padding-left: 0px;
}
&:not(:last-of-type) {
border-right: 1px solid #565656;
} }
` `
}); });
@@ -155,7 +160,7 @@ const SettingsCustomization: FC = () => {
const fetchDevices = useCallback(async () => { const fetchDevices = useCallback(async () => {
try { try {
setDevices((await EMSESP.readDevices()).data); setDevices((await EMSESP.readDevices()).data);
} catch (error: any) { } catch (error: unknown) {
setErrorMessage(extractErrorMessage(error, 'Failed to fetch device list')); setErrorMessage(extractErrorMessage(error, 'Failed to fetch device list'));
} }
}, []); }, []);
@@ -168,7 +173,7 @@ const SettingsCustomization: FC = () => {
try { try {
const data = (await EMSESP.readDeviceEntities({ id: unique_id })).data; const data = (await EMSESP.readDeviceEntities({ id: unique_id })).data;
setInitialMask(data); setInitialMask(data);
} catch (error: any) { } catch (error: unknown) {
setErrorMessage(extractErrorMessage(error, 'Problem fetching device entities')); setErrorMessage(extractErrorMessage(error, 'Problem fetching device entities'));
} }
}; };
@@ -250,7 +255,7 @@ const SettingsCustomization: FC = () => {
try { try {
await EMSESP.resetCustomizations(); await EMSESP.resetCustomizations();
enqueueSnackbar('All customizations have been removed. Restarting...', { variant: 'info' }); enqueueSnackbar('All customizations have been removed. Restarting...', { variant: 'info' });
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem resetting customizations'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem resetting customizations'), { variant: 'error' });
} finally { } finally {
setConfirmReset(false); setConfirmReset(false);
@@ -278,7 +283,7 @@ const SettingsCustomization: FC = () => {
} else { } else {
enqueueSnackbar('Customization save failed', { variant: 'error' }); enqueueSnackbar('Customization save failed', { variant: 'error' });
} }
} catch (error: any) { } catch (error: unknown) {
enqueueSnackbar(extractErrorMessage(error, 'Problem sending entity list'), { variant: 'error' }); enqueueSnackbar(extractErrorMessage(error, 'Problem sending entity list'), { variant: 'error' });
} }
setInitialMask(deviceEntities); setInitialMask(deviceEntities);
@@ -414,17 +419,12 @@ const SettingsCustomization: FC = () => {
</Button> </Button>
</Grid> </Grid>
</Grid> </Grid>
<Table <Table data={{ nodes: shown_data }} theme={entities_theme} sort={entity_sort} layout={{ custom: true }}>
data={{ nodes: shown_data }}
theme={entities_theme}
sort={entity_sort}
layout={{ custom: true, horizontalScroll: true }}
>
{(tableList: any) => ( {(tableList: any) => (
<> <>
<Header> <Header>
<HeaderRow> <HeaderRow>
<HeaderCell pinLeft>OPTIONS</HeaderCell> <HeaderCell>OPTIONS</HeaderCell>
<HeaderCell resize> <HeaderCell resize>
<Button <Button
fullWidth fullWidth
@@ -435,8 +435,7 @@ const SettingsCustomization: FC = () => {
NAME NAME
</Button> </Button>
</HeaderCell> </HeaderCell>
<HeaderCell>VALUE</HeaderCell> <HeaderCell resize>VALUE</HeaderCell>
<HeaderCell />
</HeaderRow> </HeaderRow>
</Header> </Header>
<Body> <Body>

View File

@@ -1,4 +1,10 @@
import { AxiosError } from 'axios'; import { AxiosError } from 'axios';
export const extractErrorMessage = (error: AxiosError, defaultMessage: string) => export const extractErrorMessage = (error: unknown, defaultMessage: string) => {
(error.response && error.response.data ? error.response.data.message : error.message) || defaultMessage; if (error instanceof AxiosError) {
return error.response && error.response.data && error?.response?.data?.message;
} else if (error instanceof Error) {
return error.message;
}
return defaultMessage;
};

View File

@@ -22,7 +22,7 @@ export const useRest = <D>({ read, update }: RestRequestOptions<D>) => {
setErrorMessage(undefined); setErrorMessage(undefined);
try { try {
setData((await read()).data); setData((await read()).data);
} catch (error: any) { } catch (error: unknown) {
const message = extractErrorMessage(error, 'Problem loading data'); const message = extractErrorMessage(error, 'Problem loading data');
enqueueSnackbar(message, { variant: 'error' }); enqueueSnackbar(message, { variant: 'error' });
setErrorMessage(message); setErrorMessage(message);
@@ -45,7 +45,7 @@ export const useRest = <D>({ read, update }: RestRequestOptions<D>) => {
} else { } else {
enqueueSnackbar('Settings saved', { variant: 'success' }); enqueueSnackbar('Settings saved', { variant: 'success' });
} }
} catch (error: any) { } catch (error: unknown) {
const message = extractErrorMessage(error, 'Problem saving data'); const message = extractErrorMessage(error, 'Problem saving data');
enqueueSnackbar(message, { variant: 'error' }); enqueueSnackbar(message, { variant: 'error' });
setErrorMessage(message); setErrorMessage(message);

View File

@@ -1,6 +1,14 @@
ArduinoJson: change log ArduinoJson: change log
======================= =======================
v6.19.4 (2022-04-05)
-------
* Add `ElementProxy::memoryUsage()`
* Add `MemberProxy::memoryUsage()` (issue #1730)
* Add implicit conversion from `JsonDocument` to `JsonVariant`
* Fix comparisons operators with `const JsonDocument&`
v6.19.3 (2022-03-08) v6.19.3 (2022-03-08)
------- -------

View File

@@ -7,8 +7,8 @@
[![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/arduinojson.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/arduinojson.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson)
[![LGTM Grade](https://img.shields.io/lgtm/grade/cpp/github/bblanchon/ArduinoJson?label=quality&logo=lgtm)](https://lgtm.com/projects/g/bblanchon/ArduinoJson/) [![LGTM Grade](https://img.shields.io/lgtm/grade/cpp/github/bblanchon/ArduinoJson?label=quality&logo=lgtm)](https://lgtm.com/projects/g/bblanchon/ArduinoJson/)
[![Coveralls branch](https://img.shields.io/coveralls/github/bblanchon/ArduinoJson/6.x?logo=coveralls)](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x) [![Coveralls branch](https://img.shields.io/coveralls/github/bblanchon/ArduinoJson/6.x?logo=coveralls)](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x)
[![Arduino Library Manager](https://img.shields.io/static/v1?label=Arduino&message=v6.19.3&logo=arduino&logoColor=white&color=blue)](https://www.ardu-badge.com/ArduinoJson/6.19.3) [![Arduino Library Manager](https://img.shields.io/static/v1?label=Arduino&message=v6.19.4&logo=arduino&logoColor=white&color=blue)](https://www.ardu-badge.com/ArduinoJson/6.19.4)
[![PlatformIO Registry](https://badges.registry.platformio.org/packages/bblanchon/library/ArduinoJson.svg?version=6.19.3)](https://registry.platformio.org/packages/libraries/bblanchon/ArduinoJson?version=6.19.3) [![PlatformIO Registry](https://badges.registry.platformio.org/packages/bblanchon/library/ArduinoJson.svg?version=6.19.4)](https://registry.platformio.org/packages/libraries/bblanchon/ArduinoJson?version=6.19.4)
[![GitHub stars](https://img.shields.io/github/stars/bblanchon/ArduinoJson?style=flat&logo=github)](https://github.com/bblanchon/ArduinoJson/stargazers) [![GitHub stars](https://img.shields.io/github/stars/bblanchon/ArduinoJson?style=flat&logo=github)](https://github.com/bblanchon/ArduinoJson/stargazers)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/bblanchon?logo=github)](https://github.com/sponsors/bblanchon) [![GitHub Sponsors](https://img.shields.io/github/sponsors/bblanchon?logo=github)](https://github.com/sponsors/bblanchon)

View File

@@ -118,6 +118,10 @@ class ElementProxy : public VariantOperators<ElementProxy<TArray> >,
return getUpstreamElement().size(); return getUpstreamElement().size();
} }
FORCE_INLINE size_t memoryUsage() const {
return getUpstreamElement().memoryUsage();
}
template <typename TNestedKey> template <typename TNestedKey>
VariantRef getMember(TNestedKey* key) const { VariantRef getMember(TNestedKey* key) const {
return getUpstreamElement().getMember(key); return getUpstreamElement().getMember(key);

View File

@@ -14,7 +14,8 @@
namespace ARDUINOJSON_NAMESPACE { namespace ARDUINOJSON_NAMESPACE {
class JsonDocument : public Visitable { class JsonDocument : public Visitable,
public VariantOperators<const JsonDocument&> {
public: public:
template <typename TVisitor> template <typename TVisitor>
typename TVisitor::result_type accept(TVisitor& visitor) const { typename TVisitor::result_type accept(TVisitor& visitor) const {
@@ -295,16 +296,12 @@ class JsonDocument : public Visitable {
_data.remove(adaptString(key)); _data.remove(adaptString(key));
} }
FORCE_INLINE operator VariantRef() {
return getVariant();
}
FORCE_INLINE operator VariantConstRef() const { FORCE_INLINE operator VariantConstRef() const {
return VariantConstRef(&_data); return getVariant();
}
bool operator==(VariantConstRef rhs) const {
return getVariant() == rhs;
}
bool operator!=(VariantConstRef rhs) const {
return getVariant() != rhs;
} }
protected: protected:

View File

@@ -94,6 +94,10 @@ class MemberProxy : public VariantOperators<MemberProxy<TObject, TStringRef> >,
return getUpstreamMember().size(); return getUpstreamMember().size();
} }
FORCE_INLINE size_t memoryUsage() const {
return getUpstreamMember().memoryUsage();
}
FORCE_INLINE void remove(size_t index) const { FORCE_INLINE void remove(size_t index) const {
getUpstreamMember().remove(index); getUpstreamMember().remove(index);
} }

View File

@@ -131,9 +131,9 @@ struct RawComparer : ComparerBase {
template <typename T> template <typename T>
struct Comparer<T, typename enable_if<IsVisitable<T>::value>::type> struct Comparer<T, typename enable_if<IsVisitable<T>::value>::type>
: ComparerBase { : ComparerBase {
T rhs; const T *rhs; // TODO: should be a VariantConstRef
explicit Comparer(T value) : rhs(value) {} explicit Comparer(const T &value) : rhs(&value) {}
CompareResult visitArray(const CollectionData &lhs) { CompareResult visitArray(const CollectionData &lhs) {
ArrayComparer comparer(lhs); ArrayComparer comparer(lhs);
@@ -183,7 +183,7 @@ struct Comparer<T, typename enable_if<IsVisitable<T>::value>::type>
private: private:
template <typename TComparer> template <typename TComparer>
CompareResult accept(TComparer &comparer) { CompareResult accept(TComparer &comparer) {
CompareResult reversedResult = rhs.accept(comparer); CompareResult reversedResult = rhs->accept(comparer);
switch (reversedResult) { switch (reversedResult) {
case COMPARE_RESULT_GREATER: case COMPARE_RESULT_GREATER:
return COMPARE_RESULT_LESS; return COMPARE_RESULT_LESS;

View File

@@ -4,7 +4,7 @@
#pragma once #pragma once
#define ARDUINOJSON_VERSION "6.19.3" #define ARDUINOJSON_VERSION "6.19.4"
#define ARDUINOJSON_VERSION_MAJOR 6 #define ARDUINOJSON_VERSION_MAJOR 6
#define ARDUINOJSON_VERSION_MINOR 19 #define ARDUINOJSON_VERSION_MINOR 19
#define ARDUINOJSON_VERSION_REVISION 3 #define ARDUINOJSON_VERSION_REVISION 4

View File

@@ -426,7 +426,7 @@ void AsyncMqttClient::_handleQueue() {
(void)realSent; (void)realSent;
_client.send(); _client.send();
_lastClientActivity = millis(); _lastClientActivity = millis();
_lastPingRequestTime = 0; // _lastPingRequestTime = 0; // https://github.com/marvinroger/async-mqtt-client/issues/281#issuecomment-1112897839
#if ASYNC_TCP_SSL_ENABLED #if ASYNC_TCP_SSL_ENABLED
log_i("snd #%u: (tls: %u) %u/%u", _head->packetType(), realSent, _sent, _head->size()); log_i("snd #%u: (tls: %u) %u/%u", _head->packetType(), realSent, _sent, _head->size());
#else #else

View File

@@ -11,9 +11,9 @@
"dependencies": { "dependencies": {
"@msgpack/msgpack": "^2.7.2", "@msgpack/msgpack": "^2.7.2",
"compression": "^1.7.4", "compression": "^1.7.4",
"express": "^4.17.3", "express": "^4.18.1",
"express-sse": "^0.5.3", "express-sse": "^0.5.3",
"nodemon": "^2.0.15", "nodemon": "^2.0.16",
"ws": "^8.5.0" "ws": "^8.5.0"
} }
}, },
@@ -122,23 +122,26 @@
} }
}, },
"node_modules/body-parser": { "node_modules/body-parser": {
"version": "1.19.2", "version": "1.20.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
"integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
"dependencies": { "dependencies": {
"bytes": "3.1.2", "bytes": "3.1.2",
"content-type": "~1.0.4", "content-type": "~1.0.4",
"debug": "2.6.9", "debug": "2.6.9",
"depd": "~1.1.2", "depd": "2.0.0",
"http-errors": "1.8.1", "destroy": "1.2.0",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24", "iconv-lite": "0.4.24",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"qs": "6.9.7", "qs": "6.10.3",
"raw-body": "2.4.3", "raw-body": "2.5.1",
"type-is": "~1.6.18" "type-is": "~1.6.18",
"unpipe": "1.0.0"
}, },
"engines": { "engines": {
"node": ">= 0.8" "node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
} }
}, },
"node_modules/boxen": { "node_modules/boxen": {
@@ -229,6 +232,18 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dependencies": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/camelcase": { "node_modules/camelcase": {
"version": "6.2.1", "version": "6.2.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
@@ -430,9 +445,9 @@
} }
}, },
"node_modules/cookie": { "node_modules/cookie": {
"version": "0.4.2", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.6"
} }
@@ -483,17 +498,21 @@
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
}, },
"node_modules/depd": { "node_modules/depd": {
"version": "1.1.2", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.8"
} }
}, },
"node_modules/destroy": { "node_modules/destroy": {
"version": "1.0.4", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
"engines": {
"node": ">= 0.8",
"npm": "1.2.8000 || >= 1.4.16"
}
}, },
"node_modules/dot-prop": { "node_modules/dot-prop": {
"version": "5.3.0", "version": "5.3.0",
@@ -559,37 +578,38 @@
} }
}, },
"node_modules/express": { "node_modules/express": {
"version": "4.17.3", "version": "4.18.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
"integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
"dependencies": { "dependencies": {
"accepts": "~1.3.8", "accepts": "~1.3.8",
"array-flatten": "1.1.1", "array-flatten": "1.1.1",
"body-parser": "1.19.2", "body-parser": "1.20.0",
"content-disposition": "0.5.4", "content-disposition": "0.5.4",
"content-type": "~1.0.4", "content-type": "~1.0.4",
"cookie": "0.4.2", "cookie": "0.5.0",
"cookie-signature": "1.0.6", "cookie-signature": "1.0.6",
"debug": "2.6.9", "debug": "2.6.9",
"depd": "~1.1.2", "depd": "2.0.0",
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"etag": "~1.8.1", "etag": "~1.8.1",
"finalhandler": "~1.1.2", "finalhandler": "1.2.0",
"fresh": "0.5.2", "fresh": "0.5.2",
"http-errors": "2.0.0",
"merge-descriptors": "1.0.1", "merge-descriptors": "1.0.1",
"methods": "~1.1.2", "methods": "~1.1.2",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"path-to-regexp": "0.1.7", "path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7", "proxy-addr": "~2.0.7",
"qs": "6.9.7", "qs": "6.10.3",
"range-parser": "~1.2.1", "range-parser": "~1.2.1",
"safe-buffer": "5.2.1", "safe-buffer": "5.2.1",
"send": "0.17.2", "send": "0.18.0",
"serve-static": "1.14.2", "serve-static": "1.15.0",
"setprototypeof": "1.2.0", "setprototypeof": "1.2.0",
"statuses": "~1.5.0", "statuses": "2.0.1",
"type-is": "~1.6.18", "type-is": "~1.6.18",
"utils-merge": "1.0.1", "utils-merge": "1.0.1",
"vary": "~1.1.2" "vary": "~1.1.2"
@@ -634,16 +654,16 @@
} }
}, },
"node_modules/finalhandler": { "node_modules/finalhandler": {
"version": "1.1.2", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"dependencies": { "dependencies": {
"debug": "2.6.9", "debug": "2.6.9",
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"statuses": "~1.5.0", "statuses": "2.0.1",
"unpipe": "~1.0.0" "unpipe": "~1.0.0"
}, },
"engines": { "engines": {
@@ -679,6 +699,24 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0" "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
} }
}, },
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"node_modules/get-intrinsic": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dependencies": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.1"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-stream": { "node_modules/get-stream": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -741,6 +779,17 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
}, },
"node_modules/has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dependencies": {
"function-bind": "^1.1.1"
},
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/has-flag": { "node_modules/has-flag": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
@@ -749,6 +798,17 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-yarn": { "node_modules/has-yarn": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
@@ -763,18 +823,18 @@
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
}, },
"node_modules/http-errors": { "node_modules/http-errors": {
"version": "1.8.1", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"dependencies": { "dependencies": {
"depd": "~1.1.2", "depd": "2.0.0",
"inherits": "2.0.4", "inherits": "2.0.4",
"setprototypeof": "1.2.0", "setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2", "statuses": "2.0.1",
"toidentifier": "1.0.1" "toidentifier": "1.0.1"
}, },
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.8"
} }
}, },
"node_modules/iconv-lite": { "node_modules/iconv-lite": {
@@ -1093,9 +1153,9 @@
} }
}, },
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "2.0.15", "version": "2.0.16",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz",
"integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==",
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
@@ -1163,10 +1223,18 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/object-inspect": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/on-finished": { "node_modules/on-finished": {
"version": "2.3.0", "version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"dependencies": { "dependencies": {
"ee-first": "1.1.1" "ee-first": "1.1.1"
}, },
@@ -1290,9 +1358,12 @@
} }
}, },
"node_modules/qs": { "node_modules/qs": {
"version": "6.9.7", "version": "6.10.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
"integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": { "engines": {
"node": ">=0.6" "node": ">=0.6"
}, },
@@ -1309,12 +1380,12 @@
} }
}, },
"node_modules/raw-body": { "node_modules/raw-body": {
"version": "2.4.3", "version": "2.5.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"dependencies": { "dependencies": {
"bytes": "3.1.2", "bytes": "3.1.2",
"http-errors": "1.8.1", "http-errors": "2.0.0",
"iconv-lite": "0.4.24", "iconv-lite": "0.4.24",
"unpipe": "1.0.0" "unpipe": "1.0.0"
}, },
@@ -1420,23 +1491,23 @@
} }
}, },
"node_modules/send": { "node_modules/send": {
"version": "0.17.2", "version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"dependencies": { "dependencies": {
"debug": "2.6.9", "debug": "2.6.9",
"depd": "~1.1.2", "depd": "2.0.0",
"destroy": "~1.0.4", "destroy": "1.2.0",
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"etag": "~1.8.1", "etag": "~1.8.1",
"fresh": "0.5.2", "fresh": "0.5.2",
"http-errors": "1.8.1", "http-errors": "2.0.0",
"mime": "1.6.0", "mime": "1.6.0",
"ms": "2.1.3", "ms": "2.1.3",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"range-parser": "~1.2.1", "range-parser": "~1.2.1",
"statuses": "~1.5.0" "statuses": "2.0.1"
}, },
"engines": { "engines": {
"node": ">= 0.8.0" "node": ">= 0.8.0"
@@ -1448,14 +1519,14 @@
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
}, },
"node_modules/serve-static": { "node_modules/serve-static": {
"version": "1.14.2", "version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"dependencies": { "dependencies": {
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"send": "0.17.2" "send": "0.18.0"
}, },
"engines": { "engines": {
"node": ">= 0.8.0" "node": ">= 0.8.0"
@@ -1466,17 +1537,30 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
}, },
"node_modules/side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"dependencies": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/signal-exit": { "node_modules/signal-exit": {
"version": "3.0.6", "version": "3.0.6",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz",
"integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ=="
}, },
"node_modules/statuses": { "node_modules/statuses": {
"version": "1.5.0", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
"engines": { "engines": {
"node": ">= 0.6" "node": ">= 0.8"
} }
}, },
"node_modules/string-width": { "node_modules/string-width": {
@@ -1839,20 +1923,22 @@
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
}, },
"body-parser": { "body-parser": {
"version": "1.19.2", "version": "1.20.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz",
"integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==",
"requires": { "requires": {
"bytes": "3.1.2", "bytes": "3.1.2",
"content-type": "~1.0.4", "content-type": "~1.0.4",
"debug": "2.6.9", "debug": "2.6.9",
"depd": "~1.1.2", "depd": "2.0.0",
"http-errors": "1.8.1", "destroy": "1.2.0",
"http-errors": "2.0.0",
"iconv-lite": "0.4.24", "iconv-lite": "0.4.24",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"qs": "6.9.7", "qs": "6.10.3",
"raw-body": "2.4.3", "raw-body": "2.5.1",
"type-is": "~1.6.18" "type-is": "~1.6.18",
"unpipe": "1.0.0"
} }
}, },
"boxen": { "boxen": {
@@ -1921,6 +2007,15 @@
} }
} }
}, },
"call-bind": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"requires": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
}
},
"camelcase": { "camelcase": {
"version": "6.2.1", "version": "6.2.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz",
@@ -2064,9 +2159,9 @@
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
}, },
"cookie": { "cookie": {
"version": "0.4.2", "version": "0.5.0",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
}, },
"cookie-signature": { "cookie-signature": {
"version": "1.0.6", "version": "1.0.6",
@@ -2105,14 +2200,14 @@
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ=="
}, },
"depd": { "depd": {
"version": "1.1.2", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="
}, },
"destroy": { "destroy": {
"version": "1.0.4", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="
}, },
"dot-prop": { "dot-prop": {
"version": "5.3.0", "version": "5.3.0",
@@ -2166,37 +2261,38 @@
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
}, },
"express": { "express": {
"version": "4.17.3", "version": "4.18.1",
"resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz",
"integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==",
"requires": { "requires": {
"accepts": "~1.3.8", "accepts": "~1.3.8",
"array-flatten": "1.1.1", "array-flatten": "1.1.1",
"body-parser": "1.19.2", "body-parser": "1.20.0",
"content-disposition": "0.5.4", "content-disposition": "0.5.4",
"content-type": "~1.0.4", "content-type": "~1.0.4",
"cookie": "0.4.2", "cookie": "0.5.0",
"cookie-signature": "1.0.6", "cookie-signature": "1.0.6",
"debug": "2.6.9", "debug": "2.6.9",
"depd": "~1.1.2", "depd": "2.0.0",
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"etag": "~1.8.1", "etag": "~1.8.1",
"finalhandler": "~1.1.2", "finalhandler": "1.2.0",
"fresh": "0.5.2", "fresh": "0.5.2",
"http-errors": "2.0.0",
"merge-descriptors": "1.0.1", "merge-descriptors": "1.0.1",
"methods": "~1.1.2", "methods": "~1.1.2",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"path-to-regexp": "0.1.7", "path-to-regexp": "0.1.7",
"proxy-addr": "~2.0.7", "proxy-addr": "~2.0.7",
"qs": "6.9.7", "qs": "6.10.3",
"range-parser": "~1.2.1", "range-parser": "~1.2.1",
"safe-buffer": "5.2.1", "safe-buffer": "5.2.1",
"send": "0.17.2", "send": "0.18.0",
"serve-static": "1.14.2", "serve-static": "1.15.0",
"setprototypeof": "1.2.0", "setprototypeof": "1.2.0",
"statuses": "~1.5.0", "statuses": "2.0.1",
"type-is": "~1.6.18", "type-is": "~1.6.18",
"utils-merge": "1.0.1", "utils-merge": "1.0.1",
"vary": "~1.1.2" "vary": "~1.1.2"
@@ -2223,16 +2319,16 @@
} }
}, },
"finalhandler": { "finalhandler": {
"version": "1.1.2", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==",
"requires": { "requires": {
"debug": "2.6.9", "debug": "2.6.9",
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"statuses": "~1.5.0", "statuses": "2.0.1",
"unpipe": "~1.0.0" "unpipe": "~1.0.0"
} }
}, },
@@ -2252,6 +2348,21 @@
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"optional": true "optional": true
}, },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"get-intrinsic": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"requires": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
"has-symbols": "^1.0.1"
}
},
"get-stream": { "get-stream": {
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -2299,11 +2410,24 @@
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz",
"integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg=="
}, },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"requires": {
"function-bind": "^1.1.1"
}
},
"has-flag": { "has-flag": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
}, },
"has-symbols": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
"integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A=="
},
"has-yarn": { "has-yarn": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz",
@@ -2315,14 +2439,14 @@
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
}, },
"http-errors": { "http-errors": {
"version": "1.8.1", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
"integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
"requires": { "requires": {
"depd": "~1.1.2", "depd": "2.0.0",
"inherits": "2.0.4", "inherits": "2.0.4",
"setprototypeof": "1.2.0", "setprototypeof": "1.2.0",
"statuses": ">= 1.5.0 < 2", "statuses": "2.0.1",
"toidentifier": "1.0.1" "toidentifier": "1.0.1"
} }
}, },
@@ -2548,9 +2672,9 @@
"integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="
}, },
"nodemon": { "nodemon": {
"version": "2.0.15", "version": "2.0.16",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.16.tgz",
"integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", "integrity": "sha512-zsrcaOfTWRuUzBn3P44RDliLlp263Z/76FPoHFr3cFFkOz0lTPAcIw8dCzfdVIx/t3AtDYCZRCDkoCojJqaG3w==",
"requires": { "requires": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"debug": "^3.2.7", "debug": "^3.2.7",
@@ -2597,10 +2721,15 @@
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA=="
}, },
"object-inspect": {
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
},
"on-finished": { "on-finished": {
"version": "2.3.0", "version": "2.4.1",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
"requires": { "requires": {
"ee-first": "1.1.1" "ee-first": "1.1.1"
} }
@@ -2693,9 +2822,12 @@
} }
}, },
"qs": { "qs": {
"version": "6.9.7", "version": "6.10.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
"integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
"requires": {
"side-channel": "^1.0.4"
}
}, },
"range-parser": { "range-parser": {
"version": "1.2.1", "version": "1.2.1",
@@ -2703,12 +2835,12 @@
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
}, },
"raw-body": { "raw-body": {
"version": "2.4.3", "version": "2.5.1",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
"integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
"requires": { "requires": {
"bytes": "3.1.2", "bytes": "3.1.2",
"http-errors": "1.8.1", "http-errors": "2.0.0",
"iconv-lite": "0.4.24", "iconv-lite": "0.4.24",
"unpipe": "1.0.0" "unpipe": "1.0.0"
} }
@@ -2794,23 +2926,23 @@
} }
}, },
"send": { "send": {
"version": "0.17.2", "version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
"integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
"requires": { "requires": {
"debug": "2.6.9", "debug": "2.6.9",
"depd": "~1.1.2", "depd": "2.0.0",
"destroy": "~1.0.4", "destroy": "1.2.0",
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"etag": "~1.8.1", "etag": "~1.8.1",
"fresh": "0.5.2", "fresh": "0.5.2",
"http-errors": "1.8.1", "http-errors": "2.0.0",
"mime": "1.6.0", "mime": "1.6.0",
"ms": "2.1.3", "ms": "2.1.3",
"on-finished": "~2.3.0", "on-finished": "2.4.1",
"range-parser": "~1.2.1", "range-parser": "~1.2.1",
"statuses": "~1.5.0" "statuses": "2.0.1"
}, },
"dependencies": { "dependencies": {
"ms": { "ms": {
@@ -2821,14 +2953,14 @@
} }
}, },
"serve-static": { "serve-static": {
"version": "1.14.2", "version": "1.15.0",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
"integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
"requires": { "requires": {
"encodeurl": "~1.0.2", "encodeurl": "~1.0.2",
"escape-html": "~1.0.3", "escape-html": "~1.0.3",
"parseurl": "~1.3.3", "parseurl": "~1.3.3",
"send": "0.17.2" "send": "0.18.0"
} }
}, },
"setprototypeof": { "setprototypeof": {
@@ -2836,15 +2968,25 @@
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
"integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
}, },
"side-channel": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
"integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
"requires": {
"call-bind": "^1.0.0",
"get-intrinsic": "^1.0.2",
"object-inspect": "^1.9.0"
}
},
"signal-exit": { "signal-exit": {
"version": "3.0.6", "version": "3.0.6",
"resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz",
"integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ=="
}, },
"statuses": { "statuses": {
"version": "1.5.0", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="
}, },
"string-width": { "string-width": {
"version": "4.2.3", "version": "4.2.3",

View File

@@ -13,9 +13,9 @@
"dependencies": { "dependencies": {
"@msgpack/msgpack": "^2.7.2", "@msgpack/msgpack": "^2.7.2",
"compression": "^1.7.4", "compression": "^1.7.4",
"express": "^4.17.3", "express": "^4.18.1",
"express-sse": "^0.5.3", "express-sse": "^0.5.3",
"nodemon": "^2.0.15", "nodemon": "^2.0.16",
"ws": "^8.5.0" "ws": "^8.5.0"
} }
} }

View File

@@ -1 +1 @@
#define EMSESP_APP_VERSION "3.4.0b13" #define EMSESP_APP_VERSION "3.4.0b14"