Browse Source

Backport/#2441 #2450 (#2486)

* * do not break on evaluating expression in a client context that doesn't match.
resolves #2441
* show warning only in debug mode

---------

Co-authored-by: Fred Lefévère-Laoide <Fred.Lefevere-Laoide@Taipy.io>
(cherry picked from commit cf9f976645d883291f73d212528d796699c3ac65)

* backport #2450

* backport #2217

* linter

* shouldn't have pushed this

* Delete frontend/taipy-gui/package-lock.json

* built from scratch

---------

Co-authored-by: Fred Lefévère-Laoide <Fred.Lefevere-Laoide@Taipy.io>
Fred Lefévère-Laoide 2 months ago
parent
commit
c6db325c9a

+ 260 - 215
frontend/taipy-gui/package-lock.json

@@ -550,9 +550,9 @@
       }
       }
     },
     },
     "node_modules/@babel/runtime": {
     "node_modules/@babel/runtime": {
-      "version": "7.25.7",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz",
-      "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==",
+      "version": "7.26.9",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz",
+      "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
       "dependencies": {
       "dependencies": {
         "regenerator-runtime": "^0.14.0"
         "regenerator-runtime": "^0.14.0"
       },
       },
@@ -1890,18 +1890,18 @@
       "dev": true
       "dev": true
     },
     },
     "node_modules/@mui/core-downloads-tracker": {
     "node_modules/@mui/core-downloads-tracker": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.2.tgz",
-      "integrity": "sha512-1oE4U38/TtzLWRYWEm/m70dUbpcvBx0QvDVg6NtpOmSNQC1Mbx0X/rNvYDdZnn8DIsAiVQ+SZ3am6doSswUQ4g==",
+      "version": "6.4.5",
+      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.5.tgz",
+      "integrity": "sha512-zoXvHU1YuoodgMlPS+epP084Pqv9V+Vg+5IGv9n/7IIFVQ2nkTngYHYxElCq8pdTTbDcgji+nNh0lxri2abWgA==",
       "funding": {
       "funding": {
         "type": "opencollective",
         "type": "opencollective",
         "url": "https://opencollective.com/mui-org"
         "url": "https://opencollective.com/mui-org"
       }
       }
     },
     },
     "node_modules/@mui/icons-material": {
     "node_modules/@mui/icons-material": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.2.tgz",
-      "integrity": "sha512-7NNcjW5JoT9jHagrVbARA1o41vQY2xezDamtke+mEKKZmsJyejfRBOacSrPDfjZQ//lyhIjNKyzAwisxYJR47w==",
+      "version": "6.4.5",
+      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.5.tgz",
+      "integrity": "sha512-4A//t8Nrc+4u4pbVhGarIFU98zpuB5AV9hTNzgXx1ySZJ1tWtx+i/1SbQ8PtGJxWeXlljhwimZJNPQ3x0CiIFw==",
       "dependencies": {
       "dependencies": {
         "@babel/runtime": "^7.25.6"
         "@babel/runtime": "^7.25.6"
       },
       },
@@ -1913,7 +1913,7 @@
         "url": "https://opencollective.com/mui-org"
         "url": "https://opencollective.com/mui-org"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
-        "@mui/material": "^6.1.2",
+        "@mui/material": "^6.4.5",
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
         "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
         "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       },
@@ -1924,15 +1924,15 @@
       }
       }
     },
     },
     "node_modules/@mui/material": {
     "node_modules/@mui/material": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.2.tgz",
-      "integrity": "sha512-5TtHeAVX9D5d2LYfB1GAUn29BcVETVsrQ76Dwb2SpAfQGW3JVy4deJCAd0RrIkI3eEUrsl0E4xuBdreszxdTTg==",
-      "dependencies": {
-        "@babel/runtime": "^7.25.6",
-        "@mui/core-downloads-tracker": "^6.1.2",
-        "@mui/system": "^6.1.2",
-        "@mui/types": "^7.2.17",
-        "@mui/utils": "^6.1.2",
+      "version": "6.4.5",
+      "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.5.tgz",
+      "integrity": "sha512-5eyEgSXocIeV1JkXs8mYyJXU0aFyXZIWI5kq2g/mCnIgJe594lkOBNAKnCIaGVfQTu2T6TTEHF8/hHIqpiIRGA==",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "@mui/core-downloads-tracker": "^6.4.5",
+        "@mui/system": "^6.4.3",
+        "@mui/types": "^7.2.21",
+        "@mui/utils": "^6.4.3",
         "@popperjs/core": "^2.11.8",
         "@popperjs/core": "^2.11.8",
         "@types/react-transition-group": "^4.4.11",
         "@types/react-transition-group": "^4.4.11",
         "clsx": "^2.1.1",
         "clsx": "^2.1.1",
@@ -1951,7 +1951,7 @@
       "peerDependencies": {
       "peerDependencies": {
         "@emotion/react": "^11.5.0",
         "@emotion/react": "^11.5.0",
         "@emotion/styled": "^11.3.0",
         "@emotion/styled": "^11.3.0",
-        "@mui/material-pigment-css": "^6.1.2",
+        "@mui/material-pigment-css": "^6.4.3",
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
         "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
         "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
         "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
         "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
@@ -1972,12 +1972,12 @@
       }
       }
     },
     },
     "node_modules/@mui/private-theming": {
     "node_modules/@mui/private-theming": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.2.tgz",
-      "integrity": "sha512-S8WcjZdNdi++8UhrrY8Lton5h/suRiQexvdTfdcPAlbajlvgM+kx+uJstuVIEyTb3gMkxzIZep87knZ0tqcR0g==",
+      "version": "6.4.3",
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.3.tgz",
+      "integrity": "sha512-7x9HaNwDCeoERc4BoEWLieuzKzXu5ZrhRnEM6AUcRXUScQLvF1NFkTlP59+IJfTbEMgcGg1wWHApyoqcksrBpQ==",
       "dependencies": {
       "dependencies": {
-        "@babel/runtime": "^7.25.6",
-        "@mui/utils": "^6.1.2",
+        "@babel/runtime": "^7.26.0",
+        "@mui/utils": "^6.4.3",
         "prop-types": "^15.8.1"
         "prop-types": "^15.8.1"
       },
       },
       "engines": {
       "engines": {
@@ -1998,9 +1998,9 @@
       }
       }
     },
     },
     "node_modules/@mui/styled-engine": {
     "node_modules/@mui/styled-engine": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.2.tgz",
-      "integrity": "sha512-uKOfWkR23X39xj7th2nyTcCHqInTAXtUnqD3T5qRVdJcOPvu1rlgTleTwJC/FJvWZJBU6ieuTWDhbcx5SNViHQ==",
+      "version": "6.4.3",
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.4.3.tgz",
+      "integrity": "sha512-OC402VfK+ra2+f12Gef8maY7Y9n7B6CZcoQ9u7mIkh/7PKwW/xH81xwX+yW+Ak1zBT3HYcVjh2X82k5cKMFGoQ==",
       "dependencies": {
       "dependencies": {
         "@babel/runtime": "^7.25.6",
         "@babel/runtime": "^7.25.6",
         "@emotion/cache": "^11.13.1",
         "@emotion/cache": "^11.13.1",
@@ -2030,15 +2030,15 @@
       }
       }
     },
     },
     "node_modules/@mui/system": {
     "node_modules/@mui/system": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.2.tgz",
-      "integrity": "sha512-mzW7F1ZMIYS1aLON48Nrk9c65OrVEVQ+R4lUcTWs1lCSul0VGK23eo4dmY0NX5PS7Oe4xz3P5B9tQZZ7SYgxcg==",
-      "dependencies": {
-        "@babel/runtime": "^7.25.6",
-        "@mui/private-theming": "^6.1.2",
-        "@mui/styled-engine": "^6.1.2",
-        "@mui/types": "^7.2.17",
-        "@mui/utils": "^6.1.2",
+      "version": "6.4.3",
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.4.3.tgz",
+      "integrity": "sha512-Q0iDwnH3+xoxQ0pqVbt8hFdzhq1g2XzzR4Y5pVcICTNtoCLJmpJS3vI4y/OIM1FHFmpfmiEC2IRIq7YcZ8nsmg==",
+      "dependencies": {
+        "@babel/runtime": "^7.26.0",
+        "@mui/private-theming": "^6.4.3",
+        "@mui/styled-engine": "^6.4.3",
+        "@mui/types": "^7.2.21",
+        "@mui/utils": "^6.4.3",
         "clsx": "^2.1.1",
         "clsx": "^2.1.1",
         "csstype": "^3.1.3",
         "csstype": "^3.1.3",
         "prop-types": "^15.8.1"
         "prop-types": "^15.8.1"
@@ -2069,9 +2069,9 @@
       }
       }
     },
     },
     "node_modules/@mui/types": {
     "node_modules/@mui/types": {
-      "version": "7.2.17",
-      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.17.tgz",
-      "integrity": "sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==",
+      "version": "7.2.21",
+      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.21.tgz",
+      "integrity": "sha512-6HstngiUxNqLU+/DPqlUJDIPbzUBxIVHb1MmXP0eTWDIROiCR2viugXpEif0PPe2mLqqakPzzRClWAnK+8UJww==",
       "peerDependencies": {
       "peerDependencies": {
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
         "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       },
@@ -2082,9 +2082,9 @@
       }
       }
     },
     },
     "node_modules/@mui/utils": {
     "node_modules/@mui/utils": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.2.tgz",
-      "integrity": "sha512-6+B1YZ8cCBWD1fc3RjqpclF9UA0MLUiuXhyCO+XowD/Z2ku5IlxeEhHHlgglyBWFGMu4kib4YU3CDsG5/zVjJQ==",
+      "version": "6.4.3",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.3.tgz",
+      "integrity": "sha512-jxHRHh3BqVXE9ABxDm+Tc3wlBooYz/4XPa0+4AI+iF38rV1/+btJmSUgG4shDtSWVs/I97aDn5jBCt6SF2Uq2A==",
       "dependencies": {
       "dependencies": {
         "@babel/runtime": "^7.25.6",
         "@babel/runtime": "^7.25.6",
         "@mui/types": "^7.2.17",
         "@mui/types": "^7.2.17",
@@ -2111,9 +2111,9 @@
       }
       }
     },
     },
     "node_modules/@mui/x-date-pickers": {
     "node_modules/@mui/x-date-pickers": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.18.0.tgz",
-      "integrity": "sha512-12tXIoMj9vpS8fS/bS3kWPCoVrH38vNGCxgplI0vOnUrN9rJuYJz3agLPJe1S0xciTw+9W8ZSe3soaW+owoz1Q==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-7.27.0.tgz",
+      "integrity": "sha512-wSx8JGk4WQ2hTObfQITc+zlmUKNleQYoH1hGocaQlpWpo1HhauDtcQfX6sDN0J0dPT2eeyxDWGj4uJmiSfQKcw==",
       "dependencies": {
       "dependencies": {
         "@babel/runtime": "^7.25.6",
         "@babel/runtime": "^7.25.6",
         "@mui/utils": "^5.16.6",
         "@mui/utils": "^5.16.6",
@@ -3063,9 +3063,9 @@
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
       "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="
     },
     },
     "node_modules/@types/lodash": {
     "node_modules/@types/lodash": {
-      "version": "4.17.10",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.10.tgz",
-      "integrity": "sha512-YpS0zzoduEhuOWjAotS6A5AVCva7X4lVlYLF0FYHAY9sdraBfnatttHItlWeZdGhuEkf+OzMNg2ZYAx8t+52uQ==",
+      "version": "4.17.15",
+      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.15.tgz",
+      "integrity": "sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==",
       "dev": true
       "dev": true
     },
     },
     "node_modules/@types/mapbox__point-geometry": {
     "node_modules/@types/mapbox__point-geometry": {
@@ -3097,9 +3097,9 @@
       "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
       "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
     },
     },
     "node_modules/@types/node": {
     "node_modules/@types/node": {
-      "version": "20.16.10",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.10.tgz",
-      "integrity": "sha512-vQUKgWTjEIRFCvK6CyriPH3MZYiYlNy0fKiEYHWbcoWLEgs4opurGGKlebrTLqdSMIbXImH6XExNiIyNUv3WpA==",
+      "version": "20.17.19",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.19.tgz",
+      "integrity": "sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A==",
       "dependencies": {
       "dependencies": {
         "undici-types": "~6.19.2"
         "undici-types": "~6.19.2"
       }
       }
@@ -3257,16 +3257,16 @@
       "dev": true
       "dev": true
     },
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.8.0.tgz",
-      "integrity": "sha512-wORFWjU30B2WJ/aXBfOm1LX9v9nyt9D3jsSOxC3cCaTQGCW5k4jNpmjFv3U7p/7s4yvdjHzwtv2Sd2dOyhjS0A==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz",
+      "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
         "@eslint-community/regexpp": "^4.10.0",
         "@eslint-community/regexpp": "^4.10.0",
-        "@typescript-eslint/scope-manager": "8.8.0",
-        "@typescript-eslint/type-utils": "8.8.0",
-        "@typescript-eslint/utils": "8.8.0",
-        "@typescript-eslint/visitor-keys": "8.8.0",
+        "@typescript-eslint/scope-manager": "8.24.1",
+        "@typescript-eslint/type-utils": "8.24.1",
+        "@typescript-eslint/utils": "8.24.1",
+        "@typescript-eslint/visitor-keys": "8.24.1",
         "graphemer": "^1.4.0",
         "graphemer": "^1.4.0",
         "ignore": "^5.3.1",
         "ignore": "^5.3.1",
         "natural-compare": "^1.4.0",
         "natural-compare": "^1.4.0",
@@ -3281,24 +3281,20 @@
       },
       },
       "peerDependencies": {
       "peerDependencies": {
         "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
         "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
-        "eslint": "^8.57.0 || ^9.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.8.0"
       }
       }
     },
     },
     "node_modules/@typescript-eslint/parser": {
     "node_modules/@typescript-eslint/parser": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.8.0.tgz",
-      "integrity": "sha512-uEFUsgR+tl8GmzmLjRqz+VrDv4eoaMqMXW7ruXfgThaAShO9JTciKpEsB+TvnfFfbg5IpujgMXVV36gOJRLtZg==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz",
+      "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
-        "@typescript-eslint/scope-manager": "8.8.0",
-        "@typescript-eslint/types": "8.8.0",
-        "@typescript-eslint/typescript-estree": "8.8.0",
-        "@typescript-eslint/visitor-keys": "8.8.0",
+        "@typescript-eslint/scope-manager": "8.24.1",
+        "@typescript-eslint/types": "8.24.1",
+        "@typescript-eslint/typescript-estree": "8.24.1",
+        "@typescript-eslint/visitor-keys": "8.24.1",
         "debug": "^4.3.4"
         "debug": "^4.3.4"
       },
       },
       "engines": {
       "engines": {
@@ -3309,22 +3305,18 @@
         "url": "https://opencollective.com/typescript-eslint"
         "url": "https://opencollective.com/typescript-eslint"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
-        "eslint": "^8.57.0 || ^9.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.8.0"
       }
       }
     },
     },
     "node_modules/@typescript-eslint/scope-manager": {
     "node_modules/@typescript-eslint/scope-manager": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.8.0.tgz",
-      "integrity": "sha512-EL8eaGC6gx3jDd8GwEFEV091210U97J0jeEHrAYvIYosmEGet4wJ+g0SYmLu+oRiAwbSA5AVrt6DxLHfdd+bUg==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz",
+      "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
-        "@typescript-eslint/types": "8.8.0",
-        "@typescript-eslint/visitor-keys": "8.8.0"
+        "@typescript-eslint/types": "8.24.1",
+        "@typescript-eslint/visitor-keys": "8.24.1"
       },
       },
       "engines": {
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -3335,13 +3327,13 @@
       }
       }
     },
     },
     "node_modules/@typescript-eslint/type-utils": {
     "node_modules/@typescript-eslint/type-utils": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.8.0.tgz",
-      "integrity": "sha512-IKwJSS7bCqyCeG4NVGxnOP6lLT9Okc3Zj8hLO96bpMkJab+10HIfJbMouLrlpyOr3yrQ1cA413YPFiGd1mW9/Q==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz",
+      "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
-        "@typescript-eslint/typescript-estree": "8.8.0",
-        "@typescript-eslint/utils": "8.8.0",
+        "@typescript-eslint/typescript-estree": "8.24.1",
+        "@typescript-eslint/utils": "8.24.1",
         "debug": "^4.3.4",
         "debug": "^4.3.4",
         "ts-api-utils": "^1.3.0"
         "ts-api-utils": "^1.3.0"
       },
       },
@@ -3352,16 +3344,15 @@
         "type": "opencollective",
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
         "url": "https://opencollective.com/typescript-eslint"
       },
       },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.8.0"
       }
       }
     },
     },
     "node_modules/@typescript-eslint/types": {
     "node_modules/@typescript-eslint/types": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.8.0.tgz",
-      "integrity": "sha512-QJwc50hRCgBd/k12sTykOJbESe1RrzmX6COk8Y525C9l7oweZ+1lw9JiU56im7Amm8swlz00DRIlxMYLizr2Vw==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz",
+      "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==",
       "dev": true,
       "dev": true,
       "engines": {
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -3372,13 +3363,13 @@
       }
       }
     },
     },
     "node_modules/@typescript-eslint/typescript-estree": {
     "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.8.0.tgz",
-      "integrity": "sha512-ZaMJwc/0ckLz5DaAZ+pNLmHv8AMVGtfWxZe/x2JVEkD5LnmhWiQMMcYT7IY7gkdJuzJ9P14fRy28lUrlDSWYdw==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz",
+      "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
-        "@typescript-eslint/types": "8.8.0",
-        "@typescript-eslint/visitor-keys": "8.8.0",
+        "@typescript-eslint/types": "8.24.1",
+        "@typescript-eslint/visitor-keys": "8.24.1",
         "debug": "^4.3.4",
         "debug": "^4.3.4",
         "fast-glob": "^3.3.2",
         "fast-glob": "^3.3.2",
         "is-glob": "^4.0.3",
         "is-glob": "^4.0.3",
@@ -3393,22 +3384,20 @@
         "type": "opencollective",
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
         "url": "https://opencollective.com/typescript-eslint"
       },
       },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
+      "peerDependencies": {
+        "typescript": ">=4.8.4 <5.8.0"
       }
       }
     },
     },
     "node_modules/@typescript-eslint/utils": {
     "node_modules/@typescript-eslint/utils": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.8.0.tgz",
-      "integrity": "sha512-QE2MgfOTem00qrlPgyByaCHay9yb1+9BjnMFnSFkUKQfu7adBXDTnCAivURnuPPAG/qiB+kzKkZKmKfaMT0zVg==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz",
+      "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
         "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "8.8.0",
-        "@typescript-eslint/types": "8.8.0",
-        "@typescript-eslint/typescript-estree": "8.8.0"
+        "@typescript-eslint/scope-manager": "8.24.1",
+        "@typescript-eslint/types": "8.24.1",
+        "@typescript-eslint/typescript-estree": "8.24.1"
       },
       },
       "engines": {
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -3418,17 +3407,18 @@
         "url": "https://opencollective.com/typescript-eslint"
         "url": "https://opencollective.com/typescript-eslint"
       },
       },
       "peerDependencies": {
       "peerDependencies": {
-        "eslint": "^8.57.0 || ^9.0.0"
+        "eslint": "^8.57.0 || ^9.0.0",
+        "typescript": ">=4.8.4 <5.8.0"
       }
       }
     },
     },
     "node_modules/@typescript-eslint/visitor-keys": {
     "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "8.8.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.8.0.tgz",
-      "integrity": "sha512-8mq51Lx6Hpmd7HnA2fcHQo3YgfX1qbccxQOgZcb4tvasu//zXRaA1j5ZRFeCw/VRAdFi4mRM9DnZw0Nu0Q2d1g==",
+      "version": "8.24.1",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz",
+      "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
-        "@typescript-eslint/types": "8.8.0",
-        "eslint-visitor-keys": "^3.4.3"
+        "@typescript-eslint/types": "8.24.1",
+        "eslint-visitor-keys": "^4.2.0"
       },
       },
       "engines": {
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -3438,6 +3428,18 @@
         "url": "https://opencollective.com/typescript-eslint"
         "url": "https://opencollective.com/typescript-eslint"
       }
       }
     },
     },
+    "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+      "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
+      "dev": true,
+      "engines": {
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/eslint"
+      }
+    },
     "node_modules/@ungap/structured-clone": {
     "node_modules/@ungap/structured-clone": {
       "version": "1.2.0",
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
       "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
@@ -4126,9 +4128,9 @@
       }
       }
     },
     },
     "node_modules/axios": {
     "node_modules/axios": {
-      "version": "1.7.7",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz",
-      "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==",
+      "version": "1.7.9",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
+      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
       "dependencies": {
       "dependencies": {
         "follow-redirects": "^1.15.6",
         "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
         "form-data": "^4.0.0",
@@ -4487,16 +4489,15 @@
       }
       }
     },
     },
     "node_modules/call-bind": {
     "node_modules/call-bind": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
-      "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==",
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+      "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
+        "call-bind-apply-helpers": "^1.0.0",
         "es-define-property": "^1.0.0",
         "es-define-property": "^1.0.0",
-        "es-errors": "^1.3.0",
-        "function-bind": "^1.1.2",
         "get-intrinsic": "^1.2.4",
         "get-intrinsic": "^1.2.4",
-        "set-function-length": "^1.2.1"
+        "set-function-length": "^1.2.2"
       },
       },
       "engines": {
       "engines": {
         "node": ">= 0.4"
         "node": ">= 0.4"
@@ -4505,6 +4506,19 @@
         "url": "https://github.com/sponsors/ljharb"
         "url": "https://github.com/sponsors/ljharb"
       }
       }
     },
     },
+    "node_modules/call-bind-apply-helpers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+      "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+      "dev": true,
+      "dependencies": {
+        "es-errors": "^1.3.0",
+        "function-bind": "^1.1.2"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/callsites": {
     "node_modules/callsites": {
       "version": "3.1.0",
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -4533,9 +4547,9 @@
       }
       }
     },
     },
     "node_modules/caniuse-lite": {
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001666",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001666.tgz",
-      "integrity": "sha512-gD14ICmoV5ZZM1OdzPWmpx+q4GyefaK06zi8hmfHV5xe4/2nOQX3+Dw5o+fSqOws2xVwL9j+anOPFwHzdEdV4g==",
+      "version": "1.0.30001700",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz",
+      "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==",
       "funding": [
       "funding": [
         {
         {
           "type": "opencollective",
           "type": "opencollective",
@@ -6070,6 +6084,20 @@
         "node": ">= 0.8.0"
         "node": ">= 0.8.0"
       }
       }
     },
     },
+    "node_modules/dunder-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+      "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+      "dev": true,
+      "dependencies": {
+        "call-bind-apply-helpers": "^1.0.1",
+        "es-errors": "^1.3.0",
+        "gopd": "^1.2.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/dup": {
     "node_modules/dup": {
       "version": "1.0.0",
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz",
       "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz",
@@ -6107,9 +6135,9 @@
       }
       }
     },
     },
     "node_modules/electron-to-chromium": {
     "node_modules/electron-to-chromium": {
-      "version": "1.5.31",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.31.tgz",
-      "integrity": "sha512-QcDoBbQeYt0+3CWcK/rEbuHvwpbT/8SV9T3OSgs6cX1FlcUAkgrkqbg9zLnDrMM/rLamzQwal4LYFCiWk861Tg=="
+      "version": "1.5.102",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.102.tgz",
+      "integrity": "sha512-eHhqaja8tE/FNpIiBrvBjFV/SSKpyWHLvxuR9dPTdo+3V9ppdLmFB7ZZQ98qNovcngPLYIz0oOBF9P0FfZef5Q=="
     },
     },
     "node_modules/element-size": {
     "node_modules/element-size": {
       "version": "1.1.1",
       "version": "1.1.1",
@@ -6307,13 +6335,10 @@
       }
       }
     },
     },
     "node_modules/es-define-property": {
     "node_modules/es-define-property": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz",
-      "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==",
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+      "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
       "dev": true,
       "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.2.4"
-      },
       "engines": {
       "engines": {
         "node": ">= 0.4"
         "node": ">= 0.4"
       }
       }
@@ -6509,6 +6534,7 @@
       "version": "8.57.1",
       "version": "8.57.1",
       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
       "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
       "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
       "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
+      "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@eslint-community/eslint-utils": "^4.2.0",
@@ -7122,9 +7148,9 @@
       }
       }
     },
     },
     "node_modules/fastq": {
     "node_modules/fastq": {
-      "version": "1.17.1",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
-      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz",
+      "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
         "reusify": "^1.0.4"
         "reusify": "^1.0.4"
@@ -7299,7 +7325,13 @@
       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
       "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
-        "is-callable": "^1.1.3"
+        "is-callable": "^1.2.7"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
       }
       }
     },
     },
     "node_modules/form-data": {
     "node_modules/form-data": {
@@ -7343,20 +7375,6 @@
       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
       "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
       "dev": true
       "dev": true
     },
     },
-    "node_modules/fsevents": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
-      "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
-      "dev": true,
-      "hasInstallScript": true,
-      "optional": true,
-      "os": [
-        "darwin"
-      ],
-      "engines": {
-        "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
-      }
-    },
     "node_modules/function-bind": {
     "node_modules/function-bind": {
       "version": "1.1.2",
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
       "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
@@ -7439,16 +7457,21 @@
       }
       }
     },
     },
     "node_modules/get-intrinsic": {
     "node_modules/get-intrinsic": {
-      "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz",
-      "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==",
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz",
+      "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
+        "call-bind-apply-helpers": "^1.0.1",
+        "es-define-property": "^1.0.1",
         "es-errors": "^1.3.0",
         "es-errors": "^1.3.0",
+        "es-object-atoms": "^1.0.0",
         "function-bind": "^1.1.2",
         "function-bind": "^1.1.2",
-        "has-proto": "^1.0.1",
-        "has-symbols": "^1.0.3",
-        "hasown": "^2.0.0"
+        "get-proto": "^1.0.0",
+        "gopd": "^1.2.0",
+        "has-symbols": "^1.1.0",
+        "hasown": "^2.0.2",
+        "math-intrinsics": "^1.1.0"
       },
       },
       "engines": {
       "engines": {
         "node": ">= 0.4"
         "node": ">= 0.4"
@@ -7466,6 +7489,19 @@
         "node": ">=8.0.0"
         "node": ">=8.0.0"
       }
       }
     },
     },
+    "node_modules/get-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+      "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+      "dev": true,
+      "dependencies": {
+        "dunder-proto": "^1.0.1",
+        "es-object-atoms": "^1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/get-stream": {
     "node_modules/get-stream": {
       "version": "6.0.1",
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
       "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@@ -7879,12 +7915,12 @@
       }
       }
     },
     },
     "node_modules/gopd": {
     "node_modules/gopd": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
-      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+      "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
       "dev": true,
       "dev": true,
-      "dependencies": {
-        "get-intrinsic": "^1.1.3"
+      "engines": {
+        "node": ">= 0.4"
       },
       },
       "funding": {
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
         "url": "https://github.com/sponsors/ljharb"
@@ -7964,9 +8000,9 @@
       }
       }
     },
     },
     "node_modules/has-symbols": {
     "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==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
       "dev": true,
       "dev": true,
       "engines": {
       "engines": {
         "node": ">= 0.4"
         "node": ">= 0.4"
@@ -8025,9 +8061,9 @@
       }
       }
     },
     },
     "node_modules/hast-util-to-jsx-runtime": {
     "node_modules/hast-util-to-jsx-runtime": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.0.tgz",
-      "integrity": "sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==",
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.3.tgz",
+      "integrity": "sha512-pdpkP8YD4v+qMKn2lnKSiJvZvb3FunDmFYQvVOsoO08+eTNWdaWKPMrC5wwNICtU3dQWHhElj5Sf5jPEnv4qJg==",
       "dependencies": {
       "dependencies": {
         "@types/estree": "^1.0.0",
         "@types/estree": "^1.0.0",
         "@types/hast": "^3.0.0",
         "@types/hast": "^3.0.0",
@@ -11799,6 +11835,15 @@
         "markdown-it": "bin/markdown-it.mjs"
         "markdown-it": "bin/markdown-it.mjs"
       }
       }
     },
     },
+    "node_modules/math-intrinsics": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+      "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.4"
+      }
+    },
     "node_modules/math-log2": {
     "node_modules/math-log2": {
       "version": "1.0.1",
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/math-log2/-/math-log2-1.0.1.tgz",
       "resolved": "https://registry.npmjs.org/math-log2/-/math-log2-1.0.1.tgz",
@@ -11977,9 +12022,9 @@
       }
       }
     },
     },
     "node_modules/micromark": {
     "node_modules/micromark": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.0.tgz",
-      "integrity": "sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz",
+      "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==",
       "funding": [
       "funding": [
         {
         {
           "type": "GitHub Sponsors",
           "type": "GitHub Sponsors",
@@ -12011,9 +12056,9 @@
       }
       }
     },
     },
     "node_modules/micromark-core-commonmark": {
     "node_modules/micromark-core-commonmark": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.1.tgz",
-      "integrity": "sha512-CUQyKr1e///ZODyD1U3xit6zXwy1a8q2a1S1HKtIlmgvurrEpaw/Y9y6KSIbF8P59cn/NjzHyO+Q2fAyYLQrAA==",
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz",
+      "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==",
       "funding": [
       "funding": [
         {
         {
           "type": "GitHub Sponsors",
           "type": "GitHub Sponsors",
@@ -12347,9 +12392,9 @@
       }
       }
     },
     },
     "node_modules/micromark-util-subtokenize": {
     "node_modules/micromark-util-subtokenize": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.1.tgz",
-      "integrity": "sha512-jZNtiFl/1aY73yS3UGQkutD0UbhTt68qnRpw2Pifmz5wV9h8gOVsN70v+Lq/f1rKaU/W8pxRe8y8Q9FX1AOe1Q==",
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.4.tgz",
+      "integrity": "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==",
       "funding": [
       "funding": [
         {
         {
           "type": "GitHub Sponsors",
           "type": "GitHub Sponsors",
@@ -12383,9 +12428,9 @@
       ]
       ]
     },
     },
     "node_modules/micromark-util-types": {
     "node_modules/micromark-util-types": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz",
-      "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz",
+      "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==",
       "funding": [
       "funding": [
         {
         {
           "type": "GitHub Sponsors",
           "type": "GitHub Sponsors",
@@ -12548,9 +12593,9 @@
       "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw=="
       "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw=="
     },
     },
     "node_modules/nanoid": {
     "node_modules/nanoid": {
-      "version": "5.0.7",
-      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz",
-      "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.0.tgz",
+      "integrity": "sha512-zDAl/llz8Ue/EblwSYwdxGBYfj46IM1dhjVi8dyp9LQffoIGxJEAHj2oeZ4uNcgycSRcQ83CnfcZqEJzVDLcDw==",
       "funding": [
       "funding": [
         {
         {
           "type": "github",
           "type": "github",
@@ -12718,9 +12763,9 @@
       }
       }
     },
     },
     "node_modules/nwsapi": {
     "node_modules/nwsapi": {
-      "version": "2.2.13",
-      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz",
-      "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==",
+      "version": "2.2.16",
+      "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz",
+      "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==",
       "dev": true
       "dev": true
     },
     },
     "node_modules/object-assign": {
     "node_modules/object-assign": {
@@ -14135,9 +14180,9 @@
       }
       }
     },
     },
     "node_modules/reusify": {
     "node_modules/reusify": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
-      "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
+      "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
       "dev": true,
       "dev": true,
       "engines": {
       "engines": {
         "iojs": ">=1.0.0",
         "iojs": ">=1.0.0",
@@ -14337,9 +14382,9 @@
       "dev": true
       "dev": true
     },
     },
     "node_modules/semver": {
     "node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
       "bin": {
       "bin": {
         "semver": "bin/semver.js"
         "semver": "bin/semver.js"
       },
       },
@@ -15134,9 +15179,9 @@
       }
       }
     },
     },
     "node_modules/terser-webpack-plugin": {
     "node_modules/terser-webpack-plugin": {
-      "version": "5.3.10",
-      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz",
-      "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==",
+      "version": "5.3.11",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz",
+      "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==",
       "dependencies": {
       "dependencies": {
         "@jridgewell/trace-mapping": "^0.3.20",
         "@jridgewell/trace-mapping": "^0.3.20",
         "jest-worker": "^27.4.5",
         "jest-worker": "^27.4.5",
@@ -15416,9 +15461,9 @@
       }
       }
     },
     },
     "node_modules/ts-jest": {
     "node_modules/ts-jest": {
-      "version": "29.2.5",
-      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz",
-      "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==",
+      "version": "29.2.6",
+      "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.6.tgz",
+      "integrity": "sha512-yTNZVZqc8lSixm+QGVFcPe6+yj7+TWZwIesuOWvfcn4B9bz5x4NDzVCQQjOs7Hfouu36aEqfEbo9Qpo+gq8dDg==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
         "bs-logger": "^0.2.6",
         "bs-logger": "^0.2.6",
@@ -15428,7 +15473,7 @@
         "json5": "^2.2.3",
         "json5": "^2.2.3",
         "lodash.memoize": "^4.1.2",
         "lodash.memoize": "^4.1.2",
         "make-error": "^1.3.6",
         "make-error": "^1.3.6",
-        "semver": "^7.6.3",
+        "semver": "^7.7.1",
         "yargs-parser": "^21.1.1"
         "yargs-parser": "^21.1.1"
       },
       },
       "bin": {
       "bin": {
@@ -15702,9 +15747,9 @@
       }
       }
     },
     },
     "node_modules/typedoc": {
     "node_modules/typedoc": {
-      "version": "0.26.7",
-      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.7.tgz",
-      "integrity": "sha512-gUeI/Wk99vjXXMi8kanwzyhmeFEGv1LTdTQsiyIsmSYsBebvFxhbcyAx7Zjo4cMbpLGxM4Uz3jVIjksu/I2v6Q==",
+      "version": "0.26.11",
+      "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.26.11.tgz",
+      "integrity": "sha512-sFEgRRtrcDl2FxVP58Ze++ZK2UQAEvtvvH8rRlig1Ja3o7dDaMHmaBfvJmdGnNEFaLTpQsN8dpvZaTqJSu/Ugw==",
       "dev": true,
       "dev": true,
       "dependencies": {
       "dependencies": {
         "lunr": "^2.3.9",
         "lunr": "^2.3.9",
@@ -15748,9 +15793,9 @@
       }
       }
     },
     },
     "node_modules/typescript": {
     "node_modules/typescript": {
-      "version": "5.6.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
-      "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+      "version": "5.6.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
+      "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
       "dev": true,
       "dev": true,
       "bin": {
       "bin": {
         "tsc": "bin/tsc",
         "tsc": "bin/tsc",
@@ -15940,9 +15985,9 @@
       "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
       "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg=="
     },
     },
     "node_modules/update-browserslist-db": {
     "node_modules/update-browserslist-db": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
-      "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz",
+      "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==",
       "funding": [
       "funding": [
         {
         {
           "type": "opencollective",
           "type": "opencollective",
@@ -16517,9 +16562,9 @@
       }
       }
     },
     },
     "node_modules/ws": {
     "node_modules/ws": {
-      "version": "8.18.0",
-      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
-      "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
+      "version": "8.18.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz",
+      "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==",
       "dev": true,
       "dev": true,
       "engines": {
       "engines": {
         "node": ">=10.0.0"
         "node": ">=10.0.0"

+ 5 - 5
frontend/taipy-gui/src/components/Taipy/GuiDownload.tsx

@@ -11,7 +11,7 @@
  * specific language governing permissions and limitations under the License.
  * specific language governing permissions and limitations under the License.
  */
  */
 
 
-import React, { useEffect } from "react";
+import { useEffect } from "react";
 
 
 import { createDownloadAction, createSendActionNameAction, FileDownloadProps } from "../../context/taipyReducers";
 import { createDownloadAction, createSendActionNameAction, FileDownloadProps } from "../../context/taipyReducers";
 import { useDispatch, useModule } from "../../utils/hooks";
 import { useDispatch, useModule } from "../../utils/hooks";
@@ -22,18 +22,18 @@ interface GuiDownloadProps {
 }
 }
 
 
 const GuiDownload = ({ download }: GuiDownloadProps) => {
 const GuiDownload = ({ download }: GuiDownloadProps) => {
-    const { name = "", onAction, content } = download || {};
+    const { name = "", onAction, content, context } = download || {};
     const dispatch = useDispatch();
     const dispatch = useDispatch();
     const module = useModule();
     const module = useModule();
 
 
     useEffect(() => {
     useEffect(() => {
         if (content) {
         if (content) {
-            runXHR(undefined, content, name, onAction ? (() => dispatch(createSendActionNameAction("Gui.download", module, onAction, name, content))) : undefined);
+            runXHR(undefined, content, name, onAction ? (() => dispatch(createSendActionNameAction("Gui.download", context || module, onAction, name, content))) : undefined);
             dispatch(createDownloadAction());
             dispatch(createDownloadAction());
         }
         }
-    }, [content, name, dispatch, onAction, module]);
+    }, [content, name, dispatch, onAction, module, context]);
 
 
-    return <></>;
+    return null;
 };
 };
 
 
 export default GuiDownload;
 export default GuiDownload;

+ 2 - 2
frontend/taipy-gui/src/components/Taipy/tableUtils.tsx

@@ -248,11 +248,11 @@ const defaultCursorIcon = { ...iconInRowSx, "& .MuiSwitch-input": defaultCursor
 const getCellProps = (col: ColumnDesc, base: Partial<TableCellProps> = {}): Partial<TableCellProps> => {
 const getCellProps = (col: ColumnDesc, base: Partial<TableCellProps> = {}): Partial<TableCellProps> => {
     switch (col.type) {
     switch (col.type) {
         case "bool":
         case "bool":
-            base.align = "center";
+            base = {...base, align: "center"};
             break;
             break;
     }
     }
     if (col.width) {
     if (col.width) {
-        base.width = col.width;
+        base = {...base, width: col.width};
     }
     }
     return base;
     return base;
 };
 };

+ 3 - 1
frontend/taipy-gui/src/context/taipyReducers.ts

@@ -132,6 +132,7 @@ export interface FileDownloadProps {
     content?: string;
     content?: string;
     name?: string;
     name?: string;
     onAction?: string;
     onAction?: string;
+    context?: string;
 }
 }
 
 
 interface TaipyIdAction extends TaipyBaseAction, IdMessage {}
 interface TaipyIdAction extends TaipyBaseAction, IdMessage {}
@@ -461,7 +462,7 @@ export const taipyReducer = (state: TaipyState, baseAction: TaipyBaseAction): Ta
                 delete state.download;
                 delete state.download;
                 return { ...state };
                 return { ...state };
             }
             }
-            return { ...state, download: { content: dAction.content, name: dAction.name, onAction: dAction.onAction } };
+            return { ...state, download: { content: dAction.content, name: dAction.name, onAction: dAction.onAction, context: dAction.context } };
         }
         }
         case Types.Partial: {
         case Types.Partial: {
             const pAction = baseAction as TaipyPartialAction;
             const pAction = baseAction as TaipyPartialAction;
@@ -860,6 +861,7 @@ export const createDownloadAction = (dMessage?: FileDownloadProps): TaipyDownloa
     content: dMessage?.content,
     content: dMessage?.content,
     name: dMessage?.name,
     name: dMessage?.name,
     onAction: dMessage?.onAction,
     onAction: dMessage?.onAction,
+    context: dMessage?.context,
 });
 });
 
 
 export const createSetMenuAction = (menu: MenuProps): TaipySetMenuAction => ({
 export const createSetMenuAction = (menu: MenuProps): TaipySetMenuAction => ({

+ 5 - 6
taipy/gui/_renderers/builder.py

@@ -700,15 +700,14 @@ class _Builder:
                 list_val = list(list_val.split(";"))
                 list_val = list(list_val.split(";"))
             if isinstance(list_val, list):
             if isinstance(list_val, list):
                 # TODO catch the cast exception
                 # TODO catch the cast exception
-                if list_type.value == PropertyType.number.value:
+                if list_type is PropertyType.number:
                     list_val = [int(v) for v in list_val]
                     list_val = [int(v) for v in list_val]
                 else:
                 else:
-                    list_val = [int(v) for v in list_val]
-            else:
-                if list_val is not None:
+                    list_val = [str(v) for v in list_val]
+                if list_val:
+                    self.__set_react_attribute(_to_camel_case(name), list_val)
+            elif list_val is not None:
                     _warn(f"{self.__element_name}: {name} should be a list.")
                     _warn(f"{self.__element_name}: {name} should be a list.")
-                list_val = []
-            self.__set_react_attribute(_to_camel_case(name), list_val)
         else:
         else:
             self.__set_react_attribute(_to_camel_case(name), hash_name)
             self.__set_react_attribute(_to_camel_case(name), hash_name)
             self.__update_vars.append(f"{_to_camel_case(name)}={hash_name}")
             self.__update_vars.append(f"{_to_camel_case(name)}={hash_name}")

+ 16 - 5
taipy/gui/gui.py

@@ -1327,9 +1327,15 @@ class Gui:
             allow_grouping=False,
             allow_grouping=False,
         )
         )
 
 
-    def __send_ws_download(self, content: str, name: str, on_action: str) -> None:
+    def __send_ws_download(self, content: str, name: str, on_action: str, module: str) -> None:
         self.__send_ws(
         self.__send_ws(
-            {"type": _WsType.DOWNLOAD_FILE.value, "content": content, "name": name, "onAction": on_action},
+            {
+                "type": _WsType.DOWNLOAD_FILE.value,
+                "content": content,
+                "name": name,
+                "onAction": on_action,
+                "context": module,
+            },
             send_back_only=True,
             send_back_only=True,
         )
         )
 
 
@@ -2152,6 +2158,8 @@ class Gui:
         partial = partials.get(route)
         partial = partials.get(route)
         if partial is None:
         if partial is None:
             partial = next((p for p in self._config.partials if p._route == route), None)
             partial = next((p for p in self._config.partials if p._route == route), None)
+            partials[route] = partial
+            _setscopeattr(self, Partial._PARTIALS, partials)
         return partial
         return partial
 
 
     # Main binding method (bind in markdown declaration)
     # Main binding method (bind in markdown declaration)
@@ -2241,12 +2249,15 @@ class Gui:
                 else _get_expr_var_name(on_action.__name__)
                 else _get_expr_var_name(on_action.__name__)
             )
             )
             if on_action_name:
             if on_action_name:
-                self._bind_var_val(on_action_name, on_action)
-                on_action = on_action_name
+                encoded_action_name = self.__var_dir.add_var(on_action_name, self._get_locals_context())
+                self._bind_var_val(encoded_action_name, on_action)
+                on_action = encoded_action_name
             else:
             else:
                 _warn("download() on_action is invalid.")
                 _warn("download() on_action is invalid.")
         content_str = self._get_content("Gui.download", content, False)
         content_str = self._get_content("Gui.download", content, False)
-        self.__send_ws_download(content_str, str(name), str(on_action) if on_action is not None else "")
+        self.__send_ws_download(
+            content_str, str(name), str(on_action) if on_action is not None else "", self._get_locals_context()
+        )
 
 
     def _notify(
     def _notify(
         self,
         self,

+ 6 - 2
taipy/gui/utils/_evaluator.py

@@ -35,6 +35,7 @@ from . import (
     _TaipyBase,
     _TaipyBase,
     _variable_decode,
     _variable_decode,
     _variable_encode,
     _variable_encode,
+    is_debugging,
 )
 )
 
 
 
 
@@ -368,14 +369,17 @@ class _Evaluator:
                         expr_evaluated = eval(expr_string, ctx)
                         expr_evaluated = eval(expr_string, ctx)
                         _setscopeattr(gui, hash_expr, expr_evaluated)
                         _setscopeattr(gui, hash_expr, expr_evaluated)
                     except Exception as e:
                     except Exception as e:
-                        _warn(f"Exception raised evaluating {expr_string}", e)
+                        if is_debugging():
+                            _warn(f"Exception raised evaluating {expr_string}", e)
+                        hash_expr = ""
             # refresh holders if any
             # refresh holders if any
             for h in self.__expr_to_holders.get(expr, []):
             for h in self.__expr_to_holders.get(expr, []):
                 holder_hash = self.__get_holder_hash(h, self.get_hash_from_expr(expr))
                 holder_hash = self.__get_holder_hash(h, self.get_hash_from_expr(expr))
                 if holder_hash not in modified_vars:
                 if holder_hash not in modified_vars:
                     _setscopeattr(gui, holder_hash, self.__evaluate_holder(gui, h, expr))
                     _setscopeattr(gui, holder_hash, self.__evaluate_holder(gui, h, expr))
                     modified_vars.add(holder_hash)
                     modified_vars.add(holder_hash)
-            modified_vars.add(hash_expr)
+            if hash_expr:
+                modified_vars.add(hash_expr)
         return modified_vars
         return modified_vars
 
 
     def _get_instance_in_context(self, name: str):
     def _get_instance_in_context(self, name: str):

+ 35 - 1
tests/gui/actions/test_download.py

@@ -10,8 +10,10 @@
 # specific language governing permissions and limitations under the License.
 # specific language governing permissions and limitations under the License.
 
 
 import inspect
 import inspect
+import typing as t
+import warnings
 
 
-from flask import g
+from flask import Flask, g
 
 
 from taipy.gui import Gui, Markdown, State, download
 from taipy.gui import Gui, Markdown, State, download
 
 
@@ -42,3 +44,35 @@ def test_download(gui: Gui, helpers):
     helpers.assert_outward_ws_simple_message(
     helpers.assert_outward_ws_simple_message(
         received_messages[0], "DF", {"name": "filename.txt", "onAction": "on_download_action"}
         received_messages[0], "DF", {"name": "filename.txt", "onAction": "on_download_action"}
     )
     )
+
+
+def test_download_fn(gui: Gui, helpers):
+    def on_download_action(state: State):
+        pass
+
+    # set gui frame
+    gui._set_frame(inspect.currentframe())
+
+    gui.add_page("test", Markdown("<|Hello|button|>"))
+    gui.run(run_server=False)
+    flask_client = gui._server.test_client()
+    # WS client and emit
+    ws_client = gui._server._ws.test_client(t.cast(Flask, gui._server.get_flask()))
+    cid = helpers.create_scope_and_get_sid(gui)
+    flask_client.get(f"/taipy-jsx/test?client_id={cid}")
+    with gui.get_flask_app().test_request_context(f"/taipy-jsx/test/?client_id={cid}", data={"client_id": cid}):
+        g.client_id = cid
+        download(gui._Gui__state, "some text", "filename.txt", on_download_action)  # type: ignore[attr-defined]
+
+    received_messages = ws_client.get_received()
+    helpers.assert_outward_ws_simple_message(
+        received_messages[0],
+        "DF",
+        {"name": "filename.txt", "context": "test_download", "onAction": "tp_on_download_action_0"},
+    )
+
+
+def test_bad_download(gui: Gui, helpers):
+    with warnings.catch_warnings(record=True) as records:
+        download(None, "some text", "filename.txt", "on_download_action")  # type: ignore[arg-type]
+        assert len(records) == 1

+ 0 - 3
tests/gui/builder/control/test_table.py

@@ -31,7 +31,6 @@ def test_table_builder_1(gui: Gui, helpers, csvdata):
         'width="100%"',
         'width="100%"',
         'pageSizeOptions="[10, 30, 100]"',
         'pageSizeOptions="[10, 30, 100]"',
         "pageSize={10.0}",
         "pageSize={10.0}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
     ]
     ]
@@ -56,7 +55,6 @@ def test_table_reset_builder(gui: Gui, helpers, csvdata):
         'width="100%"',
         'width="100%"',
         'pageSizeOptions="[10, 30, 100]"',
         'pageSizeOptions="[10, 30, 100]"',
         "pageSize={10.0}",
         "pageSize={10.0}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "columns={tp_TpExPr_gui_tbl_cols_True_None_7B_22columns_22_3A_20_22Day_3BEntity_3BCode_3BDaily_20hospital_20occupancy_22_2C_20_22date_format_22_3A_20_22eee_20dd_20MMM_20yyyy_22_7D_7B_22data_22_3A_20_22tpec_TpExPr_csvdata_TPMDL_0_22_7D_tpec_TpExPr_csvdata_TPMDL_0_csvdata_TPMDL_0_0}",
         "columns={tp_TpExPr_gui_tbl_cols_True_None_7B_22columns_22_3A_20_22Day_3BEntity_3BCode_3BDaily_20hospital_20occupancy_22_2C_20_22date_format_22_3A_20_22eee_20dd_20MMM_20yyyy_22_7D_7B_22data_22_3A_20_22tpec_TpExPr_csvdata_TPMDL_0_22_7D_tpec_TpExPr_csvdata_TPMDL_0_csvdata_TPMDL_0_0}",
@@ -96,7 +94,6 @@ def test_table_builder_2(gui: Gui, helpers, csvdata):
         'width="60vw"',
         'width="60vw"',
         'pageSizeOptions="[10, 50, 100, 500]"',
         'pageSizeOptions="[10, 50, 100, 500]"',
         "pageSize={10}",
         "pageSize={10}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
     ]
     ]

+ 0 - 5
tests/gui/control/test_table.py

@@ -23,7 +23,6 @@ def test_table_md_1(gui: Gui, helpers, csvdata):
         'width="100%"',
         'width="100%"',
         'pageSizeOptions="[10, 30, 100]"',
         'pageSizeOptions="[10, 30, 100]"',
         "pageSize={10.0}",
         "pageSize={10.0}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
     ]
     ]
@@ -40,7 +39,6 @@ def test_table_reset_md(gui: Gui, helpers, csvdata):
         'width="100%"',
         'width="100%"',
         'pageSizeOptions="[10, 30, 100]"',
         'pageSizeOptions="[10, 30, 100]"',
         "pageSize={10.0}",
         "pageSize={10.0}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "columns={tp_TpExPr_gui_tbl_cols_True_None_7B_22columns_22_3A_20_22Day_3BEntity_3BCode_3BDaily_20hospital_20occupancy_22_2C_20_22date_format_22_3A_20_22eee_20dd_20MMM_20yyyy_22_7D_7B_22data_22_3A_20_22tpec_TpExPr_csvdata_TPMDL_0_22_7D_tpec_TpExPr_csvdata_TPMDL_0_csvdata_TPMDL_0_0}",
         "columns={tp_TpExPr_gui_tbl_cols_True_None_7B_22columns_22_3A_20_22Day_3BEntity_3BCode_3BDaily_20hospital_20occupancy_22_2C_20_22date_format_22_3A_20_22eee_20dd_20MMM_20yyyy_22_7D_7B_22data_22_3A_20_22tpec_TpExPr_csvdata_TPMDL_0_22_7D_tpec_TpExPr_csvdata_TPMDL_0_csvdata_TPMDL_0_0}",
@@ -79,7 +77,6 @@ def test_table_md_2(gui: Gui, helpers, csvdata):
         'width="60vw"',
         'width="60vw"',
         'pageSizeOptions="[10, 50, 100, 500]"',
         'pageSizeOptions="[10, 50, 100, 500]"',
         "pageSize={10}",
         "pageSize={10}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
     ]
     ]
@@ -96,7 +93,6 @@ def test_table_html_1(gui: Gui, helpers, csvdata):
         'width="100%"',
         'width="100%"',
         'pageSizeOptions="[10, 30, 100]"',
         'pageSizeOptions="[10, 30, 100]"',
         "pageSize={10.0}",
         "pageSize={10.0}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
     ]
     ]
@@ -131,7 +127,6 @@ def test_table_html_2(gui: Gui, helpers, csvdata):
         'width="60vw"',
         'width="60vw"',
         'pageSizeOptions="[10, 50, 100, 500]"',
         'pageSizeOptions="[10, 50, 100, 500]"',
         "pageSize={10}",
         "pageSize={10}",
-        "selected={[]}",
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         'updateVarName="_TpD_tpec_TpExPr_csvdata_TPMDL_0"',
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
         "data={_TpD_tpec_TpExPr_csvdata_TPMDL_0}",
     ]
     ]