diff --git a/api-summary.json b/api-summary.json
index 7d0b7e2..f00a26d 100644
--- a/api-summary.json
+++ b/api-summary.json
@@ -147,14 +147,14 @@
"label": null
},
{
- "name": "attachment",
- "type": "DTO.FileAttachment",
+ "name": "attachments",
+ "type": "DTO.FileAttachment[]",
"required": false,
"nullable": true,
"unique": false,
"primary": false,
"description": "Вложение (файл в MinIO/S3)",
- "map": "Equipment.attachment",
+ "map": "Equipment.attachments",
"sync": false,
"label": null
}
@@ -763,9 +763,9 @@
},
{
"name": "uploadEquipmentAttachment",
- "label": "POST /equipment/{id}/attachment",
+ "label": "POST /equipment/{id}/attachments",
"method": "POST",
- "path": "/equipment/{id}/attachment",
+ "path": "/equipment/{id}/attachments",
"description": "Загрузить файл-вложение (multipart/form-data, поле file)",
"attributes": [
{
@@ -777,29 +777,39 @@
},
{
"name": "deleteEquipmentAttachment",
- "label": "DELETE /equipment/{id}/attachment",
+ "label": "DELETE /equipment/{id}/attachments/{attachmentId}",
"method": "DELETE",
- "path": "/equipment/{id}/attachment",
+ "path": "/equipment/{id}/attachments/{attachmentId}",
"description": "Удалить файл-вложение из хранилища и из записи",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
+ },
+ {
+ "name": "attachmentId",
+ "type": "uuid",
+ "description": null
}
]
},
{
"name": "downloadEquipmentAttachment",
- "label": "GET /equipment/{id}/attachment/download",
+ "label": "GET /equipment/{id}/attachments/{attachmentId}/download",
"method": "GET",
- "path": "/equipment/{id}/attachment/download",
+ "path": "/equipment/{id}/attachments/{attachmentId}/download",
"description": "Скачать файл-вложение (Content-Disposition: attachment, поток из MinIO)",
"attributes": [
{
"name": "id",
"type": "uuid",
"description": null
+ },
+ {
+ "name": "attachmentId",
+ "type": "uuid",
+ "description": null
}
]
}
diff --git a/client/.env.example b/client/.env.example
index f0da5a7..e3ccfca 100644
--- a/client/.env.example
+++ b/client/.env.example
@@ -1,4 +1,4 @@
-VITE_API_URL=http://localhost:3000
+VITE_API_URL=/api
VITE_KEYCLOAK_URL=https://sso.greact.ru
VITE_KEYCLOAK_REALM=toir
VITE_KEYCLOAK_CLIENT_ID=toir-frontend
diff --git a/client/package-lock.json b/client/package-lock.json
index d0a0900..67d4baf 100644
--- a/client/package-lock.json
+++ b/client/package-lock.json
@@ -49,9 +49,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
- "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+ "version": "7.29.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz",
+ "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -212,9 +212,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
- "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
+ "version": "7.29.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz",
+ "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.29.0"
@@ -281,26 +281,24 @@
}
},
"node_modules/@emnapi/core": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz",
- "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
+ "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
"dev": true,
"license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"@emnapi/wasi-threads": "1.2.1",
"tslib": "^2.4.0"
}
},
"node_modules/@emnapi/runtime": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz",
- "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
+ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
"dev": true,
"license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"tslib": "^2.4.0"
}
@@ -312,7 +310,6 @@
"dev": true,
"license": "MIT",
"optional": true,
- "peer": true,
"dependencies": {
"tslib": "^2.4.0"
}
@@ -621,29 +618,43 @@
}
},
"node_modules/@humanfs/core": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
- "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
+ "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
"dev": true,
"license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/types": "^0.15.0"
+ },
"engines": {
"node": ">=18.18.0"
}
},
"node_modules/@humanfs/node": {
- "version": "0.16.7",
- "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
- "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
+ "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@humanfs/core": "^0.19.1",
+ "@humanfs/core": "^0.19.2",
+ "@humanfs/types": "^0.15.0",
"@humanwhocodes/retry": "^0.4.0"
},
"engines": {
"node": ">=18.18.0"
}
},
+ "node_modules/@humanfs/types": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
+ "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -719,9 +730,9 @@
}
},
"node_modules/@mui/core-downloads-tracker": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.9.tgz",
- "integrity": "sha512-MOkOCTfbMJwLshlBCKJ59V2F/uaLYfmKnN76kksj6jlGUVdI25A9Hzs08m+zjBRdLv+sK7Rqdsefe8X7h/6PCw==",
+ "version": "7.3.10",
+ "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-7.3.10.tgz",
+ "integrity": "sha512-vrOpWRmPJSuwLo23J62wggEm/jvGdzqctej+UOCtgDUz6nZJQuj3ByPccVyaa7eQmwAzUwKN56FQPMKkqbj1GA==",
"license": "MIT",
"funding": {
"type": "opencollective",
@@ -729,9 +740,9 @@
}
},
"node_modules/@mui/icons-material": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.3.9.tgz",
- "integrity": "sha512-BT+zPJXss8Hg/oEMRmHl17Q97bPACG4ufFSfGEdhiE96jOyR5Dz1ty7ZWt1fVGR0y1p+sSgEwQT/MNZQmoWDCw==",
+ "version": "7.3.10",
+ "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-7.3.10.tgz",
+ "integrity": "sha512-Au0ma4NSKGKNiimukj8UT/W1x2Qx6Qwn2RvFGykiSqVLYBNlIOPbjnIMvrwLGLu89EEpTVdu/ys/OduZR+tWqw==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.28.6"
@@ -744,7 +755,7 @@
"url": "https://opencollective.com/mui-org"
},
"peerDependencies": {
- "@mui/material": "^7.3.9",
+ "@mui/material": "^7.3.10",
"@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0",
"react": "^17.0.0 || ^18.0.0 || ^19.0.0"
},
@@ -755,16 +766,16 @@
}
},
"node_modules/@mui/material": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.9.tgz",
- "integrity": "sha512-I8yO3t4T0y7bvDiR1qhIN6iBWZOTBfVOnmLlM7K6h3dx5YX2a7rnkuXzc2UkZaqhxY9NgTnEbdPlokR1RxCNRQ==",
+ "version": "7.3.10",
+ "resolved": "https://registry.npmjs.org/@mui/material/-/material-7.3.10.tgz",
+ "integrity": "sha512-cHvGOk2ZEfbQt3LnGe0ZKd/ETs9gsUpkW66DCO+GSjMZhpdKU4XsuIr7zJ/B/2XaN8ihxuzHfYAR4zPtCN4RYg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.28.6",
- "@mui/core-downloads-tracker": "^7.3.9",
- "@mui/system": "^7.3.9",
+ "@mui/core-downloads-tracker": "^7.3.10",
+ "@mui/system": "^7.3.10",
"@mui/types": "^7.4.12",
- "@mui/utils": "^7.3.9",
+ "@mui/utils": "^7.3.10",
"@popperjs/core": "^2.11.8",
"@types/react-transition-group": "^4.4.12",
"clsx": "^2.1.1",
@@ -783,7 +794,7 @@
"peerDependencies": {
"@emotion/react": "^11.5.0",
"@emotion/styled": "^11.3.0",
- "@mui/material-pigment-css": "^7.3.9",
+ "@mui/material-pigment-css": "^7.3.10",
"@types/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"
@@ -804,13 +815,13 @@
}
},
"node_modules/@mui/private-theming": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.9.tgz",
- "integrity": "sha512-ErIyRQvsiQEq7Yvcvfw9UDHngaqjMy9P3JDPnRAaKG5qhpl2C4tX/W1S4zJvpu+feihmZJStjIyvnv6KDbIrlw==",
+ "version": "7.3.10",
+ "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-7.3.10.tgz",
+ "integrity": "sha512-j3EZN+zOctxUISvJSmsEPo5o2F8zse4l5vRkBY+ps6UtnL6J7o14kUaI4w7gwo73id9e3cDNMVQK/9BVaMHVBw==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.28.6",
- "@mui/utils": "^7.3.9",
+ "@mui/utils": "^7.3.10",
"prop-types": "^15.8.1"
},
"engines": {
@@ -831,9 +842,9 @@
}
},
"node_modules/@mui/styled-engine": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.9.tgz",
- "integrity": "sha512-JqujWt5bX4okjUPGpVof/7pvgClqh7HvIbsIBIOOlCh2u3wG/Bwp4+E1bc1dXSwkrkp9WUAoNdI5HEC+5HKvMw==",
+ "version": "7.3.10",
+ "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-7.3.10.tgz",
+ "integrity": "sha512-WxE9SiF8xskAQqGjsp0poXCkCqsoXFEsSr0HBXfApmGHR+DBnXRp+z46Vsltg4gpPM4Z96DeAQRpeAOnhNg7Ng==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.28.6",
@@ -865,16 +876,16 @@
}
},
"node_modules/@mui/system": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.9.tgz",
- "integrity": "sha512-aL1q9am8XpRrSabv9qWf5RHhJICJql34wnrc1nz0MuOglPRYF/liN+c8VqZdTvUn9qg+ZjRVbKf4sJVFfIDtmg==",
+ "version": "7.3.10",
+ "resolved": "https://registry.npmjs.org/@mui/system/-/system-7.3.10.tgz",
+ "integrity": "sha512-/sfPpdpJaQn7BSF+avjIdHSYmxHp0UOBYNxSG9QGKfMOD6sLANCpRPCnanq1Pe0lFf0NHkO2iUk0TNzdWC1USQ==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.28.6",
- "@mui/private-theming": "^7.3.9",
- "@mui/styled-engine": "^7.3.9",
+ "@mui/private-theming": "^7.3.10",
+ "@mui/styled-engine": "^7.3.10",
"@mui/types": "^7.4.12",
- "@mui/utils": "^7.3.9",
+ "@mui/utils": "^7.3.10",
"clsx": "^2.1.1",
"csstype": "^3.2.3",
"prop-types": "^15.8.1"
@@ -922,9 +933,9 @@
}
},
"node_modules/@mui/utils": {
- "version": "7.3.9",
- "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.9.tgz",
- "integrity": "sha512-U6SdZaGbfb65fqTsH3V5oJdFj9uYwyLE2WVuNvmbggTSDBb8QHrFsqY8BN3taK9t3yJ8/BPHD/kNvLNyjwM7Yw==",
+ "version": "7.3.10",
+ "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-7.3.10.tgz",
+ "integrity": "sha512-7y2eIfy0h7JPz+Yy4pS+wgV68d46PuuxDqKBN4Q8VlPQSsCAGwroMCV6xWyc7g9dvEp8ZNFsknc59GHWO+r6Ow==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.28.6",
@@ -952,9 +963,9 @@
}
},
"node_modules/@napi-rs/wasm-runtime": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.2.tgz",
- "integrity": "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz",
+ "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -971,9 +982,9 @@
}
},
"node_modules/@oxc-project/types": {
- "version": "0.122.0",
- "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.122.0.tgz",
- "integrity": "sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==",
+ "version": "0.127.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.127.0.tgz",
+ "integrity": "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==",
"dev": true,
"license": "MIT",
"funding": {
@@ -991,9 +1002,9 @@
}
},
"node_modules/@rolldown/binding-android-arm64": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.12.tgz",
- "integrity": "sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.17.tgz",
+ "integrity": "sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==",
"cpu": [
"arm64"
],
@@ -1008,9 +1019,9 @@
}
},
"node_modules/@rolldown/binding-darwin-arm64": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.12.tgz",
- "integrity": "sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.17.tgz",
+ "integrity": "sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==",
"cpu": [
"arm64"
],
@@ -1025,9 +1036,9 @@
}
},
"node_modules/@rolldown/binding-darwin-x64": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.12.tgz",
- "integrity": "sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.17.tgz",
+ "integrity": "sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==",
"cpu": [
"x64"
],
@@ -1042,9 +1053,9 @@
}
},
"node_modules/@rolldown/binding-freebsd-x64": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.12.tgz",
- "integrity": "sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.17.tgz",
+ "integrity": "sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==",
"cpu": [
"x64"
],
@@ -1059,9 +1070,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm-gnueabihf": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.12.tgz",
- "integrity": "sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.17.tgz",
+ "integrity": "sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==",
"cpu": [
"arm"
],
@@ -1076,9 +1087,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-gnu": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.12.tgz",
- "integrity": "sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.17.tgz",
+ "integrity": "sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==",
"cpu": [
"arm64"
],
@@ -1093,9 +1104,9 @@
}
},
"node_modules/@rolldown/binding-linux-arm64-musl": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.12.tgz",
- "integrity": "sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.17.tgz",
+ "integrity": "sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==",
"cpu": [
"arm64"
],
@@ -1110,9 +1121,9 @@
}
},
"node_modules/@rolldown/binding-linux-ppc64-gnu": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.12.tgz",
- "integrity": "sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.17.tgz",
+ "integrity": "sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==",
"cpu": [
"ppc64"
],
@@ -1127,9 +1138,9 @@
}
},
"node_modules/@rolldown/binding-linux-s390x-gnu": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.12.tgz",
- "integrity": "sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.17.tgz",
+ "integrity": "sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==",
"cpu": [
"s390x"
],
@@ -1144,9 +1155,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-gnu": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.12.tgz",
- "integrity": "sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.17.tgz",
+ "integrity": "sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==",
"cpu": [
"x64"
],
@@ -1161,9 +1172,9 @@
}
},
"node_modules/@rolldown/binding-linux-x64-musl": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.12.tgz",
- "integrity": "sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.17.tgz",
+ "integrity": "sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==",
"cpu": [
"x64"
],
@@ -1178,9 +1189,9 @@
}
},
"node_modules/@rolldown/binding-openharmony-arm64": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.12.tgz",
- "integrity": "sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.17.tgz",
+ "integrity": "sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==",
"cpu": [
"arm64"
],
@@ -1195,9 +1206,9 @@
}
},
"node_modules/@rolldown/binding-wasm32-wasi": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.12.tgz",
- "integrity": "sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.17.tgz",
+ "integrity": "sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==",
"cpu": [
"wasm32"
],
@@ -1205,16 +1216,18 @@
"license": "MIT",
"optional": true,
"dependencies": {
- "@napi-rs/wasm-runtime": "^1.1.1"
+ "@emnapi/core": "1.10.0",
+ "@emnapi/runtime": "1.10.0",
+ "@napi-rs/wasm-runtime": "^1.1.4"
},
"engines": {
- "node": ">=14.0.0"
+ "node": "^20.19.0 || >=22.12.0"
}
},
"node_modules/@rolldown/binding-win32-arm64-msvc": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.12.tgz",
- "integrity": "sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.17.tgz",
+ "integrity": "sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==",
"cpu": [
"arm64"
],
@@ -1229,9 +1242,9 @@
}
},
"node_modules/@rolldown/binding-win32-x64-msvc": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.12.tgz",
- "integrity": "sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.17.tgz",
+ "integrity": "sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==",
"cpu": [
"x64"
],
@@ -1253,9 +1266,9 @@
"license": "MIT"
},
"node_modules/@tanstack/query-core": {
- "version": "5.96.2",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.96.2.tgz",
- "integrity": "sha512-hzI6cTVh4KNRk8UtoIBS7Lv9g6BnJPXvBKsvYH1aGWvv0347jT3BnSvztOE+kD76XGvZnRC/t6qdW1CaIfwCeA==",
+ "version": "5.100.9",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.100.9.tgz",
+ "integrity": "sha512-SJSFw1S8+kQ0+knv/XGfrbocWoAlT7vDKsSImtLx3ZPQmEcR46hkDjLSvynSy25N8Ms4tIEini1FuBd5k7IscQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -1263,12 +1276,12 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.96.2",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.96.2.tgz",
- "integrity": "sha512-sYyzzJT4G0g02azzJ8o55VFFV31XvFpdUpG+unxS0vSaYsJnSPKGoI6WdPwUucJL1wpgGfwfmntNX/Ub1uOViA==",
+ "version": "5.100.9",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.100.9.tgz",
+ "integrity": "sha512-Oa44XkaI3kCNN6ME0KByU3xT3SEUNOMfZpHxL6+wFoTm+OeUFYHKdeYVe0aOXlRDm/f15sgLwEt2HDorIdW8+A==",
"license": "MIT",
"dependencies": {
- "@tanstack/query-core": "5.96.2"
+ "@tanstack/query-core": "5.100.9"
},
"funding": {
"type": "github",
@@ -1279,9 +1292,9 @@
}
},
"node_modules/@tybys/wasm-util": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
- "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
+ "version": "0.10.2",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
+ "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1361,17 +1374,17 @@
"optional": true
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz",
- "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.2.tgz",
+ "integrity": "sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.58.0",
- "@typescript-eslint/type-utils": "8.58.0",
- "@typescript-eslint/utils": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0",
+ "@typescript-eslint/scope-manager": "8.59.2",
+ "@typescript-eslint/type-utils": "8.59.2",
+ "@typescript-eslint/utils": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0"
@@ -1384,7 +1397,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.58.0",
+ "@typescript-eslint/parser": "^8.59.2",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0"
}
@@ -1400,16 +1413,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz",
- "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.2.tgz",
+ "integrity": "sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.58.0",
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0",
+ "@typescript-eslint/scope-manager": "8.59.2",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2",
"debug": "^4.4.3"
},
"engines": {
@@ -1425,14 +1438,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz",
- "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.2.tgz",
+ "integrity": "sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.58.0",
- "@typescript-eslint/types": "^8.58.0",
+ "@typescript-eslint/tsconfig-utils": "^8.59.2",
+ "@typescript-eslint/types": "^8.59.2",
"debug": "^4.4.3"
},
"engines": {
@@ -1447,14 +1460,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz",
- "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz",
+ "integrity": "sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0"
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1465,9 +1478,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz",
- "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz",
+ "integrity": "sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1482,15 +1495,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz",
- "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.2.tgz",
+ "integrity": "sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0",
- "@typescript-eslint/utils": "8.58.0",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2",
+ "@typescript-eslint/utils": "8.59.2",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@@ -1507,9 +1520,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz",
- "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz",
+ "integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1521,16 +1534,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz",
- "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz",
+ "integrity": "sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.58.0",
- "@typescript-eslint/tsconfig-utils": "8.58.0",
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0",
+ "@typescript-eslint/project-service": "8.59.2",
+ "@typescript-eslint/tsconfig-utils": "8.59.2",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@@ -1601,16 +1614,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz",
- "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.2.tgz",
+ "integrity": "sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.58.0",
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0"
+ "@typescript-eslint/scope-manager": "8.59.2",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -1625,13 +1638,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz",
- "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz",
+ "integrity": "sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.58.0",
+ "@typescript-eslint/types": "8.59.2",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@@ -1705,9 +1718,9 @@
}
},
"node_modules/ajv": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
- "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1785,9 +1798,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.10.14",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.14.tgz",
- "integrity": "sha512-fOVLPAsFTsQfuCkvahZkzq6nf8KvGWanlYoTh0SVA0A/PIUxQGU2AOZAoD95n2gFLVDW/jP6sbGLny95nmEuHA==",
+ "version": "2.10.27",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz",
+ "integrity": "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -1798,9 +1811,9 @@
}
},
"node_modules/brace-expansion": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",
- "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1843,14 +1856,14 @@
}
},
"node_modules/call-bind": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
- "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.9.tgz",
+ "integrity": "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==",
"license": "MIT",
"dependencies": {
- "call-bind-apply-helpers": "^1.0.0",
- "es-define-property": "^1.0.0",
- "get-intrinsic": "^1.2.4",
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "get-intrinsic": "^1.3.0",
"set-function-length": "^1.2.2"
},
"engines": {
@@ -1899,9 +1912,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001784",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz",
- "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==",
+ "version": "1.0.30001791",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz",
+ "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==",
"dev": true,
"funding": [
{
@@ -2147,9 +2160,9 @@
}
},
"node_modules/dompurify": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz",
- "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==",
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.4.2.tgz",
+ "integrity": "sha512-lHeS9SA/IKeIFFyYciHBr2n0v1VMPlSj843HdLOwjb2OxNwdq9Xykxqhk+FE42MzAdHvInbAolSE4mhahPpjXA==",
"license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
@@ -2170,9 +2183,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.331",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz",
- "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==",
+ "version": "1.5.349",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.349.tgz",
+ "integrity": "sha512-QsWVGyRuY07Aqb234QytTfwd5d9AJlfNIQ5wIOl1L+PZDzI9d9+Fn0FRale/QYlFxt/bUnB0/nLd1jFPGxGK1A==",
"dev": true,
"license": "ISC"
},
@@ -2298,9 +2311,9 @@
}
},
"node_modules/eslint-plugin-react-hooks": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz",
- "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.1.1.tgz",
+ "integrity": "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -2314,7 +2327,7 @@
"node": ">=18"
},
"peerDependencies": {
- "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0"
+ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0"
}
},
"node_modules/eslint-plugin-react-refresh": {
@@ -2629,9 +2642,9 @@
}
},
"node_modules/globals": {
- "version": "17.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz",
- "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==",
+ "version": "17.6.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz",
+ "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2688,9 +2701,9 @@
}
},
"node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -2908,9 +2921,9 @@
}
},
"node_modules/keycloak-js": {
- "version": "26.2.3",
- "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-26.2.3.tgz",
- "integrity": "sha512-widjzw/9T6bHRgEp6H/Se3NCCarU7u5CwFKBcwtu7xfA1IfdZb+7Q7/KGusAnBo34Vtls8Oz9vzSqkQvQ7+b4Q==",
+ "version": "26.2.4",
+ "resolved": "https://registry.npmjs.org/keycloak-js/-/keycloak-js-26.2.4.tgz",
+ "integrity": "sha512-PnXpR3ubETGOt0B/Qt2lxmPbkZr5bc3vlQsOqDoTPPQsZRp7JjhTKxlJ187uWh8qJhvBab6Gsjb06a8ayOPfuw==",
"license": "Apache-2.0",
"workspaces": [
"test"
@@ -3287,9 +3300,9 @@
"license": "MIT"
},
"node_modules/nanoid": {
- "version": "3.3.11",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz",
- "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
+ "version": "3.3.12",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz",
+ "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==",
"dev": true,
"funding": [
{
@@ -3327,9 +3340,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.37",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz",
- "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==",
+ "version": "2.0.38",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz",
+ "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==",
"dev": true,
"license": "MIT"
},
@@ -3501,9 +3514,9 @@
}
},
"node_modules/postcss": {
- "version": "8.5.8",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
- "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
+ "version": "8.5.14",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz",
+ "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==",
"dev": true,
"funding": [
{
@@ -3585,9 +3598,9 @@
}
},
"node_modules/ra-core": {
- "version": "5.14.5",
- "resolved": "https://registry.npmjs.org/ra-core/-/ra-core-5.14.5.tgz",
- "integrity": "sha512-Ztis8Rb1f0XZbnT3ZQTP0W6dmpb26S/ml/IhtSKG299p6t7Pm70DE1N5QA1G+AM3gx3iz17LX5gJSv7+iuly2A==",
+ "version": "5.14.6",
+ "resolved": "https://registry.npmjs.org/ra-core/-/ra-core-5.14.6.tgz",
+ "integrity": "sha512-/3LOanIhCLTLTpOd6Dma9rsLrksLhqpE5dq6GUW1Xe7jI46xPC/6O5WlqCDwUJqe3aDZG3kJRGu6U8iHb2OU/A==",
"license": "MIT",
"dependencies": {
"date-fns": "^3.6.0",
@@ -3603,28 +3616,28 @@
"@tanstack/react-query": "^5.83.0",
"react": "^18.0.0 || ^19.0.0",
"react-dom": "^18.0.0 || ^19.0.0",
- "react-hook-form": "^7.65.0",
+ "react-hook-form": "^7.72.0",
"react-router": "^6.28.1 || ^7.1.1",
"react-router-dom": "^6.28.1 || ^7.1.1"
}
},
"node_modules/ra-i18n-polyglot": {
- "version": "5.14.5",
- "resolved": "https://registry.npmjs.org/ra-i18n-polyglot/-/ra-i18n-polyglot-5.14.5.tgz",
- "integrity": "sha512-qP/qxAgyoJgxGJBqWZdliHc5vCK8WZM7YL3Jkre8URnmru9hPZD3vilQH4LSW/W+5yLfYoLk81597Gig9g9euw==",
+ "version": "5.14.6",
+ "resolved": "https://registry.npmjs.org/ra-i18n-polyglot/-/ra-i18n-polyglot-5.14.6.tgz",
+ "integrity": "sha512-qUPMrurTj5Tr90nku6DSzdqWyoPLpjNQG8W3p09L7fII7KSeJ0uTvAJBZdNTibnr9Wxu9rSMQSgTp/oEGFUQ3Q==",
"license": "MIT",
"dependencies": {
"node-polyglot": "^2.2.2",
- "ra-core": "^5.14.5"
+ "ra-core": "^5.14.6"
}
},
"node_modules/ra-language-english": {
- "version": "5.14.5",
- "resolved": "https://registry.npmjs.org/ra-language-english/-/ra-language-english-5.14.5.tgz",
- "integrity": "sha512-5lB3O1/gNSgvKRDR1NA9yOEMSwGdrJYzv4etpLBaVVnAX268BHubZbm1pLmT7j4xEc9kvUQC58/rAnFDORqbiQ==",
+ "version": "5.14.6",
+ "resolved": "https://registry.npmjs.org/ra-language-english/-/ra-language-english-5.14.6.tgz",
+ "integrity": "sha512-cxKXQsOvDY4m6i8KmDC3M931DK0QXeW/pUuZAPySXma9kzmNd17EMkv7ZGSDi3syFsyOhoe0N5+TUCbDMFFu+w==",
"license": "MIT",
"dependencies": {
- "ra-core": "^5.14.5"
+ "ra-core": "^5.14.6"
}
},
"node_modules/ra-language-russian": {
@@ -3637,9 +3650,9 @@
}
},
"node_modules/ra-ui-materialui": {
- "version": "5.14.5",
- "resolved": "https://registry.npmjs.org/ra-ui-materialui/-/ra-ui-materialui-5.14.5.tgz",
- "integrity": "sha512-0FNrBL6k+Yu1PLRZOKAc6TDGcRk8ZAWBb0OnujlvdCOgYHgFKYtLa4nZ5L9a0EYsUsOogbmx4zKiETsJUYIfqg==",
+ "version": "5.14.6",
+ "resolved": "https://registry.npmjs.org/ra-ui-materialui/-/ra-ui-materialui-5.14.6.tgz",
+ "integrity": "sha512-OJMm0G/MKYyUXHZkvCCtS9Zrb+N1ghR9YlxiYumQg/0+LowM/yPxdacdUoP1TapY1sXNuHaiqM5V9X8ftFM1yQ==",
"license": "MIT",
"dependencies": {
"autosuggest-highlight": "^3.1.1",
@@ -3649,7 +3662,7 @@
"dompurify": "^3.2.4",
"inflection": "^3.0.0",
"jsonexport": "^3.2.0",
- "lodash": "~4.17.5",
+ "lodash": "~4.18.1",
"query-string": "^7.1.3",
"react-dropzone": "^14.2.3",
"react-error-boundary": "^4.0.13",
@@ -3672,25 +3685,19 @@
"react-router-dom": "^6.28.1 || ^7.1.1"
}
},
- "node_modules/ra-ui-materialui/node_modules/lodash": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
- "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
- "license": "MIT"
- },
"node_modules/react": {
- "version": "19.2.4",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
- "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
+ "version": "19.2.5",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
+ "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-admin": {
- "version": "5.14.5",
- "resolved": "https://registry.npmjs.org/react-admin/-/react-admin-5.14.5.tgz",
- "integrity": "sha512-1XQxqL+ArkL3o5USs/AsC9fdQX4F/vzBJXwelq8jEXABcbx58d51Ug2WkXi+7WuxPrLZCOPW1kVD7l4+ahbeww==",
+ "version": "5.14.6",
+ "resolved": "https://registry.npmjs.org/react-admin/-/react-admin-5.14.6.tgz",
+ "integrity": "sha512-5mCgrp84+HgBnh6/1gqrxO3WeemOMzubDqJDWZF29smf2X38sddS37NBGq/1O49zLVTfD+rGc25G4uZZjYtGEQ==",
"license": "MIT",
"dependencies": {
"@emotion/react": "^11.14.0",
@@ -3698,11 +3705,11 @@
"@mui/icons-material": "^5.16.12 || ^6.0.0 || ^7.0.0",
"@mui/material": "^5.16.12 || ^6.0.0 || ^7.0.0",
"@tanstack/react-query": "^5.83.0",
- "ra-core": "^5.14.5",
- "ra-i18n-polyglot": "^5.14.5",
- "ra-language-english": "^5.14.5",
- "ra-ui-materialui": "^5.14.5",
- "react-hook-form": "^7.65.0",
+ "ra-core": "^5.14.6",
+ "ra-i18n-polyglot": "^5.14.6",
+ "ra-language-english": "^5.14.6",
+ "ra-ui-materialui": "^5.14.6",
+ "react-hook-form": "^7.72.0",
"react-router": "^6.28.1 || ^7.1.1",
"react-router-dom": "^6.28.1 || ^7.1.1"
},
@@ -3712,15 +3719,15 @@
}
},
"node_modules/react-dom": {
- "version": "19.2.4",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
- "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
+ "version": "19.2.5",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
+ "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
"license": "MIT",
"dependencies": {
"scheduler": "^0.27.0"
},
"peerDependencies": {
- "react": "^19.2.4"
+ "react": "^19.2.5"
}
},
"node_modules/react-dropzone": {
@@ -3753,9 +3760,9 @@
}
},
"node_modules/react-hook-form": {
- "version": "7.72.1",
- "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.72.1.tgz",
- "integrity": "sha512-RhwBoy2ygeVZje+C+bwJ8g0NjTdBmDlJvAUHTxRjTmSUKPYsKfMphkS2sgEMotsY03bP358yEYlnUeZy//D9Ig==",
+ "version": "7.75.0",
+ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.75.0.tgz",
+ "integrity": "sha512-Ovv94H+0p3sJ7B9B5QxPuCP1u8V/cHuVGyH55cSwodYDtoJwK+fqk3vjfIgSX59I2U/bU4z0nRJ9HMLpNiWEmw==",
"license": "MIT",
"engines": {
"node": ">=18.0.0"
@@ -3769,9 +3776,9 @@
}
},
"node_modules/react-hotkeys-hook": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-5.2.4.tgz",
- "integrity": "sha512-BgKg+A1+TawkYluh5Bo4cTmcgMN5L29uhJbDUQdHwPX+qgXRjIPYU5kIDHyxnAwCkCBiu9V5OpB2mpyeluVF2A==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-5.3.1.tgz",
+ "integrity": "sha512-R7lJlz8LLWWz29fArS5skXL6KyYoSLoO5rWYg/swtTNZPDpOPWgmE5oLJbQOCE4nsbJ54OOiR0bUKtl34wI1bA==",
"license": "MIT",
"peerDependencies": {
"react": ">=16.8.0",
@@ -3779,15 +3786,15 @@
}
},
"node_modules/react-is": {
- "version": "19.2.4",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz",
- "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==",
+ "version": "19.2.5",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.5.tgz",
+ "integrity": "sha512-Dn0t8IQhCmeIT3wu+Apm1/YVsJXsGWi6k4sPdnBIdqMVtHtv0IGi6dcpNpNkNac0zB2uUAqNX3MHzN8c+z2rwQ==",
"license": "MIT"
},
"node_modules/react-router": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.0.tgz",
- "integrity": "sha512-m/xR9N4LQLmAS0ZhkY2nkPA1N7gQ5TUVa5n8TgANuDTARbn1gt+zLPXEm7W0XDTbrQ2AJSJKhoa6yx1D8BcpxQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.2.tgz",
+ "integrity": "sha512-yCqNne6I8IB6rVCH7XUvlBK7/QKyqypBFGv+8dj4QBFJiiRX+FG7/nkdAvGElyvVZ/HQP5N19wzteuTARXi5Gw==",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -3807,12 +3814,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.14.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.0.tgz",
- "integrity": "sha512-2G3ajSVSZMEtmTjIklRWlNvo8wICEpLihfD/0YMDxbWK2UyP5EGfnoIn9AIQGnF3G/FX0MRbHXdFcD+rL1ZreQ==",
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.2.tgz",
+ "integrity": "sha512-YZcM5ES8jJSM+KrJ9BdvHHqlnGTg5tH3sC5ChFRj4inosKctdyzBDhOyyHdGk597q2OT6NTrCA1OvB/YDwfekQ==",
"license": "MIT",
"dependencies": {
- "react-router": "7.14.0"
+ "react-router": "7.14.2"
},
"engines": {
"node": ">=20.0.0"
@@ -3845,11 +3852,12 @@
"license": "MIT"
},
"node_modules/resolve": {
- "version": "1.22.11",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
- "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "version": "1.22.12",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz",
+ "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==",
"license": "MIT",
"dependencies": {
+ "es-errors": "^1.3.0",
"is-core-module": "^2.16.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
@@ -3874,14 +3882,14 @@
}
},
"node_modules/rolldown": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.12.tgz",
- "integrity": "sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.17.tgz",
+ "integrity": "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@oxc-project/types": "=0.122.0",
- "@rolldown/pluginutils": "1.0.0-rc.12"
+ "@oxc-project/types": "=0.127.0",
+ "@rolldown/pluginutils": "1.0.0-rc.17"
},
"bin": {
"rolldown": "bin/cli.mjs"
@@ -3890,27 +3898,27 @@
"node": "^20.19.0 || >=22.12.0"
},
"optionalDependencies": {
- "@rolldown/binding-android-arm64": "1.0.0-rc.12",
- "@rolldown/binding-darwin-arm64": "1.0.0-rc.12",
- "@rolldown/binding-darwin-x64": "1.0.0-rc.12",
- "@rolldown/binding-freebsd-x64": "1.0.0-rc.12",
- "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.12",
- "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.12",
- "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.12",
- "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.12",
- "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.12",
- "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.12",
- "@rolldown/binding-linux-x64-musl": "1.0.0-rc.12",
- "@rolldown/binding-openharmony-arm64": "1.0.0-rc.12",
- "@rolldown/binding-wasm32-wasi": "1.0.0-rc.12",
- "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.12",
- "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.12"
+ "@rolldown/binding-android-arm64": "1.0.0-rc.17",
+ "@rolldown/binding-darwin-arm64": "1.0.0-rc.17",
+ "@rolldown/binding-darwin-x64": "1.0.0-rc.17",
+ "@rolldown/binding-freebsd-x64": "1.0.0-rc.17",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.17",
+ "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.17",
+ "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.17",
+ "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.17",
+ "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.17",
+ "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.17",
+ "@rolldown/binding-linux-x64-musl": "1.0.0-rc.17",
+ "@rolldown/binding-openharmony-arm64": "1.0.0-rc.17",
+ "@rolldown/binding-wasm32-wasi": "1.0.0-rc.17",
+ "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.17",
+ "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.17"
}
},
"node_modules/rolldown/node_modules/@rolldown/pluginutils": {
- "version": "1.0.0-rc.12",
- "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.12.tgz",
- "integrity": "sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==",
+ "version": "1.0.0-rc.17",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.17.tgz",
+ "integrity": "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==",
"dev": true,
"license": "MIT"
},
@@ -4058,14 +4066,14 @@
}
},
"node_modules/tinyglobby": {
- "version": "0.2.15",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
- "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+ "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
- "picomatch": "^4.0.3"
+ "picomatch": "^4.0.4"
},
"engines": {
"node": ">=12.0.0"
@@ -4121,16 +4129,16 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz",
- "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.2.tgz",
+ "integrity": "sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.58.0",
- "@typescript-eslint/parser": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0",
- "@typescript-eslint/utils": "8.58.0"
+ "@typescript-eslint/eslint-plugin": "8.59.2",
+ "@typescript-eslint/parser": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2",
+ "@typescript-eslint/utils": "8.59.2"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -4193,17 +4201,17 @@
}
},
"node_modules/vite": {
- "version": "8.0.3",
- "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.3.tgz",
- "integrity": "sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==",
+ "version": "8.0.10",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.10.tgz",
+ "integrity": "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==",
"dev": true,
"license": "MIT",
"dependencies": {
"lightningcss": "^1.32.0",
"picomatch": "^4.0.4",
- "postcss": "^8.5.8",
- "rolldown": "1.0.0-rc.12",
- "tinyglobby": "^0.2.15"
+ "postcss": "^8.5.10",
+ "rolldown": "1.0.0-rc.17",
+ "tinyglobby": "^0.2.16"
},
"bin": {
"vite": "bin/vite.js"
@@ -4220,7 +4228,7 @@
"peerDependencies": {
"@types/node": "^20.19.0 || >=22.12.0",
"@vitejs/devtools": "^0.1.0",
- "esbuild": "^0.27.0",
+ "esbuild": "^0.27.0 || ^0.28.0",
"jiti": ">=1.21.0",
"less": "^4.0.0",
"sass": "^1.70.0",
@@ -4313,9 +4321,9 @@
"license": "ISC"
},
"node_modules/yaml": {
- "version": "2.8.3",
- "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz",
- "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==",
+ "version": "2.8.4",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz",
+ "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==",
"dev": true,
"license": "ISC",
"optional": true,
@@ -4344,9 +4352,9 @@
}
},
"node_modules/zod": {
- "version": "4.3.6",
- "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz",
- "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.4.3.tgz",
+ "integrity": "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==",
"dev": true,
"license": "MIT",
"funding": {
diff --git a/client/src/config/env.ts b/client/src/config/env.ts
index f20968e..9d0d935 100644
--- a/client/src/config/env.ts
+++ b/client/src/config/env.ts
@@ -1,5 +1,5 @@
export const env = {
- apiUrl: import.meta.env.VITE_API_URL ?? 'http://localhost:3000',
+ apiUrl: import.meta.env.VITE_API_URL ?? '/api',
keycloakUrl: import.meta.env.VITE_KEYCLOAK_URL ?? 'https://sso.greact.ru',
keycloakRealm: import.meta.env.VITE_KEYCLOAK_REALM ?? 'toir',
keycloakClientId: import.meta.env.VITE_KEYCLOAK_CLIENT_ID ?? 'toir-frontend',
diff --git a/client/src/i18n/ru.ts b/client/src/i18n/ru.ts
index ca64507..9d2e521 100644
--- a/client/src/i18n/ru.ts
+++ b/client/src/i18n/ru.ts
@@ -10,6 +10,8 @@ const customRu = {
serialNumber: 'Серийный номер',
dateOfInspection: 'Дата поверки',
commissionedAt: 'Дата изготовления',
+ installationDate: 'Дата установки',
+ writeOffDate: 'Дата списания',
status: 'Статус',
},
},
@@ -28,7 +30,7 @@ const customRu = {
},
toir: {
actions: {
- addFiles: 'Добавить файлы…',
+ addFiles: 'Добавить файлы...',
},
},
};
@@ -41,4 +43,3 @@ export const messagesRu = {
...customRu.resources,
},
};
-
diff --git a/client/src/layout/ToirMenu.css b/client/src/layout/ToirMenu.css
new file mode 100644
index 0000000..149e994
--- /dev/null
+++ b/client/src/layout/ToirMenu.css
@@ -0,0 +1,131 @@
+.toir-menu-item.MuiMenuItem-root,
+.toir-menu-group.MuiListItemButton-root {
+ min-height: var(--toir-menu-item-height);
+ gap: var(--toir-menu-item-gap);
+ padding: var(--toir-menu-item-padding-y) var(--toir-menu-item-padding-x);
+ color: var(--toir-menu-text);
+ border-radius: 0 var(--toir-menu-radius) var(--toir-menu-radius) 0;
+ transition:
+ background-color var(--toir-menu-transition),
+ color var(--toir-menu-transition);
+}
+
+.toir-menu-item.MuiMenuItem-root:hover,
+.toir-menu-item.RaMenuItemLink-active,
+.toir-menu-group.MuiListItemButton-root:hover,
+.toir-menu-group.Mui-selected {
+ background-color: var(--toir-menu-active-bg);
+ color: var(--toir-menu-text);
+}
+
+.toir-menu-item.MuiMenuItem-root:hover,
+.toir-menu-group.MuiListItemButton-root:hover {
+ background-color: var(--toir-menu-hover-bg);
+}
+
+.toir-menu-item.MuiMenuItem-root .MuiListItemIcon-root {
+ min-width: var(--toir-menu-icon-slot);
+ color: currentColor;
+}
+
+.toir-menu-item.MuiMenuItem-root > .MuiTypography-root,
+.toir-menu-group .MuiListItemText-primary {
+ font-size: var(--toir-menu-font-size);
+ font-weight: 500;
+ line-height: 1.25;
+}
+
+.toir-menu-group__chevron {
+ display: inline-flex;
+ width: var(--toir-menu-chevron-size);
+ height: var(--toir-menu-chevron-size);
+ align-items: center;
+ justify-content: center;
+ margin-left: auto;
+}
+
+.toir-menu-group__chevron span {
+ width: var(--toir-menu-chevron-stroke-size);
+ height: var(--toir-menu-chevron-stroke-size);
+ border-right: var(--toir-menu-guide-width) solid currentColor;
+ border-bottom: var(--toir-menu-guide-width) solid currentColor;
+ transform: rotate(45deg) translate(-2px, -2px);
+ transition: transform var(--toir-menu-transition);
+}
+
+.toir-menu-group__chevron.is-open span {
+ transform: rotate(225deg) translate(-2px, -2px);
+}
+
+.toir-menu-subtree {
+ position: relative;
+ margin-left: var(--toir-menu-item-padding-x);
+ padding: 4px 0 var(--toir-menu-item-padding-y) var(--toir-menu-subtree-offset);
+}
+
+.toir-menu-subtree::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ bottom: calc(var(--toir-menu-subitem-height) / 2 + 6px);
+ left: 0;
+ border-left: var(--toir-menu-guide-width) dashed var(--toir-menu-guide);
+}
+
+.toir-menu-subitem.MuiMenuItem-root {
+ position: relative;
+ min-height: var(--toir-menu-subitem-height);
+ padding: 8px var(--toir-menu-subitem-padding-x) 8px var(--toir-menu-subitem-label-offset);
+ color: var(--toir-menu-text-muted);
+ border-radius: 0 var(--toir-menu-radius) var(--toir-menu-radius) 0;
+ white-space: normal;
+ transition:
+ background-color var(--toir-menu-transition),
+ color var(--toir-menu-transition);
+}
+
+.toir-menu-subitem.MuiMenuItem-root::before {
+ content: '';
+ position: absolute;
+ left: calc(var(--toir-menu-subtree-offset) * -1);
+ top: 50%;
+ width: var(--toir-menu-subtree-offset);
+ border-top: var(--toir-menu-guide-width) dashed var(--toir-menu-guide);
+}
+
+.toir-menu-subitem.MuiMenuItem-root::after {
+ content: '';
+ position: absolute;
+ left: calc(var(--toir-menu-marker-size) / -2);
+ top: calc(50% - var(--toir-menu-marker-size) / 2);
+ width: var(--toir-menu-marker-size);
+ height: var(--toir-menu-marker-size);
+ box-sizing: border-box;
+ background: var(--toir-menu-marker-bg);
+ border: var(--toir-menu-guide-width) solid var(--toir-menu-guide-strong);
+ border-radius: 50%;
+}
+
+.toir-menu-subitem.MuiMenuItem-root .MuiListItemIcon-root {
+ display: none;
+}
+
+.toir-menu-subitem.MuiMenuItem-root .MuiListItemText-primary {
+ font-size: var(--toir-menu-subitem-font-size);
+ font-weight: 500;
+ line-height: 1.25;
+}
+
+.toir-menu-subitem.MuiMenuItem-root > .MuiTypography-root {
+ min-width: 0;
+ white-space: normal;
+ overflow: visible;
+ text-overflow: clip;
+ line-height: 1.25;
+}
+
+.toir-menu-subitem.MuiMenuItem-root:hover,
+.toir-menu-subitem.RaMenuItemLink-active {
+ background-color: var(--toir-menu-hover-bg);
+ color: var(--toir-menu-text);
+}
diff --git a/client/src/layout/ToirMenu.tsx b/client/src/layout/ToirMenu.tsx
index 51f22ff..f30f421 100644
--- a/client/src/layout/ToirMenu.tsx
+++ b/client/src/layout/ToirMenu.tsx
@@ -1,22 +1,66 @@
+import { useMemo, useState } from 'react';
+import { Box, Collapse, ListItemButton, ListItemText } from '@mui/material';
import { Menu, MenuItemLink } from 'react-admin';
+import { useLocation } from 'react-router-dom';
import {
EQUIPMENT_SIDEBAR_ARCHIVE_FILTER,
EQUIPMENT_SIDEBAR_IN_WORK_FILTER,
+ STATUS_CHANGES_CLOSING_FILTER,
+ STATUS_CHANGES_DOWNTIME_FILTER,
equipmentListSearch,
+ statusChangesListSearch,
} from './toirMenuLinks';
+import './ToirMenu.css';
export function ToirMenu() {
+ const location = useLocation();
+ const isStatusChangesRoute = location.pathname.startsWith('/status-changes');
+ const [statusChangesOpen, setStatusChangesOpen] = useState(false);
+
+ const statusChangesLinks = useMemo(
+ () => ({
+ downtime: `/status-changes?${statusChangesListSearch(STATUS_CHANGES_DOWNTIME_FILTER)}`,
+ closing: `/status-changes?${statusChangesListSearch(STATUS_CHANGES_CLOSING_FILTER)}`,
+ }),
+ [],
+ );
+
return (
);
}
diff --git a/client/src/layout/toirMenuLinks.ts b/client/src/layout/toirMenuLinks.ts
index 435b381..c569d92 100644
--- a/client/src/layout/toirMenuLinks.ts
+++ b/client/src/layout/toirMenuLinks.ts
@@ -11,3 +11,16 @@ export const EQUIPMENT_SIDEBAR_IN_WORK_FILTER = { status: ['Active'] };
/** «Архив» → списанное оборудование (WriteOff). */
export const EQUIPMENT_SIDEBAR_ARCHIVE_FILTER = { status: ['WriteOff'] };
+
+/** Параметры списка журнала актов в формате react-admin. */
+export function statusChangesListSearch(filter: Record): string {
+ const params = new URLSearchParams();
+ params.set('filter', JSON.stringify(filter));
+ return params.toString();
+}
+
+/** «Простои» → акты, переводящие оборудование в ремонт. */
+export const STATUS_CHANGES_DOWNTIME_FILTER = { newStatus: ['Repair'] };
+
+/** «Закрывающие документы» → акты списания оборудования. */
+export const STATUS_CHANGES_CLOSING_FILTER = { newStatus: ['WriteOff'] };
diff --git a/client/src/pages/EmbeddedActiveEquipmentPage.tsx b/client/src/pages/EmbeddedActiveEquipmentPage.tsx
index 3696ec2..b9662aa 100644
--- a/client/src/pages/EmbeddedActiveEquipmentPage.tsx
+++ b/client/src/pages/EmbeddedActiveEquipmentPage.tsx
@@ -23,6 +23,7 @@ type EquipmentRecord = {
serialNumber: string;
dateOfInspection: string | null;
commissionedAt: string | null;
+ installationDate: string | null;
};
function formatDate(value: string | null) {
@@ -171,7 +172,7 @@ export function EmbeddedActiveEquipmentPage() {
Наименование
Заводской номер
- Дата изготовления
+ Дата установки
Дата поверки
@@ -180,7 +181,7 @@ export function EmbeddedActiveEquipmentPage() {
{item.name}
{item.serialNumber}
- {formatDate(item.commissionedAt)}
+ {formatDate(item.installationDate)}
{formatDate(item.dateOfInspection)}
))}
diff --git a/client/src/resources/change-equipment-status/ChangeEquipmentStatusList.tsx b/client/src/resources/change-equipment-status/ChangeEquipmentStatusList.tsx
index 4fdec9a..f83b2c4 100644
--- a/client/src/resources/change-equipment-status/ChangeEquipmentStatusList.tsx
+++ b/client/src/resources/change-equipment-status/ChangeEquipmentStatusList.tsx
@@ -1,3 +1,5 @@
+import { useMemo } from 'react';
+import { useLocation } from 'react-router-dom';
import {
CreateButton,
Datagrid,
@@ -6,7 +8,6 @@ import {
FunctionField,
List,
ReferenceField,
- SelectArrayInput,
SelectField,
TextField,
TextInput,
@@ -15,10 +16,24 @@ import {
import { equipmentStatusChoices } from '../equipment/shared';
import { StatusChangeAttachmentLink } from './StatusChangeAttachmentLink';
+function parseStatusChangesFilterFromSearch(search: string): Record | undefined {
+ const params = new URLSearchParams(search);
+ const raw = params.get('filter');
+ if (!raw) {
+ return undefined;
+ }
+
+ try {
+ const parsed = JSON.parse(raw) as Record;
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;
+ } catch {
+ return undefined;
+ }
+}
+
const statusFilters = [
,
,
- ,
];
const ListActions = () => (
@@ -29,16 +44,29 @@ const ListActions = () => (
);
export function ChangeEquipmentStatusList() {
+ const location = useLocation();
+ const filterDefaultValues = useMemo(
+ () => parseStatusChangesFilterFromSearch(location.search),
+ [location.search],
+ );
+ const listKey = `${location.pathname}${location.search}`;
+
return (
-
} sort={{ field: 'date', order: 'DESC' }}>
+
}
+ sort={{ field: 'date', order: 'DESC' }}
+ filterDefaultValues={filterDefaultValues}
+ >
-
-
+
+
-
+
-
-
+
+
{
+ e.preventDefault();
+ e.stopPropagation();
+ void downloadEquipmentAttachmentFile(equipmentId, attachmentId, label).catch(() =>
+ notify('Не удалось скачать файл', { type: 'warning' }),
+ );
+ }}
+ sx={{ cursor: 'pointer', textAlign: 'left', verticalAlign: 'inherit' }}
+ >
+ {label}
+
+ );
+}
diff --git a/client/src/resources/equipment/EquipmentAttachmentsInput.tsx b/client/src/resources/equipment/EquipmentAttachmentsInput.tsx
new file mode 100644
index 0000000..d618231
--- /dev/null
+++ b/client/src/resources/equipment/EquipmentAttachmentsInput.tsx
@@ -0,0 +1,172 @@
+import { Button, Stack, Typography } from '@mui/material';
+import { useNotify, useRecordContext, useRefresh } from 'react-admin';
+import { useCallback, useMemo, useState, type ChangeEvent } from 'react';
+import { ensureFreshToken, getAccessToken } from '../../auth/keycloak';
+import { resolveApiBaseUrl } from '../../lib/apiBase';
+import { EquipmentAttachmentLink } from './EquipmentAttachmentLink';
+
+export type EquipmentAttachmentValue = {
+ id: string;
+ originalFileName?: string | null;
+ sizeBytes?: number | null;
+}[];
+
+function formatBytes(bytes: number | null | undefined) {
+ if (!bytes || bytes <= 0) return null;
+ const kb = bytes / 1024;
+ if (kb < 1024) return `${Math.round(kb)} КБ`;
+ return `${(kb / 1024).toFixed(1)} МБ`;
+}
+
+export function EquipmentAttachmentsInput() {
+ const record = useRecordContext();
+ const notify = useNotify();
+ const refresh = useRefresh();
+ const [busy, setBusy] = useState(false);
+
+ const equipmentId = record?.id ? String(record.id) : null;
+ const attachments = useMemo(() => {
+ const raw = (record as { attachments?: EquipmentAttachmentValue | null })?.attachments;
+ return Array.isArray(raw) ? raw : [];
+ }, [record]);
+
+ const upload = useCallback(
+ async (event: ChangeEvent) => {
+ const files = Array.from(event.target.files ?? []);
+ event.target.value = '';
+ if (!files.length || !equipmentId) {
+ return;
+ }
+
+ setBusy(true);
+ try {
+ await ensureFreshToken();
+ const token = getAccessToken();
+ const url = `${resolveApiBaseUrl()}/equipment/${equipmentId}/attachments`;
+
+ for (const file of files) {
+ const form = new FormData();
+ form.append('file', file);
+ const response = await fetch(url, {
+ method: 'POST',
+ headers: token ? { Authorization: `Bearer ${token}` } : undefined,
+ body: form,
+ });
+ if (!response.ok) {
+ throw new Error(`HTTP ${response.status}`);
+ }
+ }
+
+ notify(files.length === 1 ? 'Файл добавлен' : `Файлы добавлены: ${files.length}`, {
+ type: 'success',
+ });
+ refresh();
+ } catch {
+ notify('Не удалось загрузить файл', { type: 'warning' });
+ } finally {
+ setBusy(false);
+ }
+ },
+ [equipmentId, notify, refresh],
+ );
+
+ const remove = useCallback(
+ async (attachmentId: string) => {
+ if (!equipmentId) {
+ return;
+ }
+ setBusy(true);
+ try {
+ await ensureFreshToken();
+ const token = getAccessToken();
+ const url = `${resolveApiBaseUrl()}/equipment/${equipmentId}/attachments/${attachmentId}`;
+ const response = await fetch(url, {
+ method: 'DELETE',
+ headers: token
+ ? { Authorization: `Bearer ${token}`, Accept: 'application/json' }
+ : { Accept: 'application/json' },
+ });
+ if (!response.ok) {
+ throw new Error(`HTTP ${response.status}`);
+ }
+ notify('Вложение удалено', { type: 'success' });
+ refresh();
+ } catch {
+ notify('Не удалось удалить файл', { type: 'warning' });
+ } finally {
+ setBusy(false);
+ }
+ },
+ [equipmentId, notify, refresh],
+ );
+
+ return (
+
+
+ Вложения (файлы)
+
+
+ {!equipmentId ? (
+
+ Сначала сохраните запись, затем можно будет прикреплять файлы.
+
+ ) : attachments.length ? (
+
+ {attachments.map((att) => (
+ `1px solid ${theme.palette.divider}`,
+ background:
+ 'linear-gradient(155deg, rgba(255,255,255,0.06), rgba(0,0,0,0.08))',
+ }}
+ >
+
+
+
+
+ {formatBytes(att.sizeBytes) ? (
+
+ {formatBytes(att.sizeBytes)}
+
+ ) : null}
+
+
+
+
+ ))}
+
+ ) : (
+
+ Файлы не прикреплены
+
+ )}
+
+
+
+
+
+ );
+}
diff --git a/client/src/resources/equipment/EquipmentCreate.tsx b/client/src/resources/equipment/EquipmentCreate.tsx
index 0136872..82be35a 100644
--- a/client/src/resources/equipment/EquipmentCreate.tsx
+++ b/client/src/resources/equipment/EquipmentCreate.tsx
@@ -1,23 +1,25 @@
+import { useLocation } from 'react-router-dom';
import { Create, DateInput, SelectInput, SimpleForm, TextInput as RaTextInput } from 'react-admin';
-import { equipmentStatusChoices } from './shared';
-
-const equipmentLabels = {
- dateOfInspection: 'Дата поверки',
- commissionedAt: 'Дата изготовления',
- name: 'Название',
- serialNumber: 'Серийный номер',
- status: 'Статус',
-};
+import {
+ equipmentLabels,
+ equipmentStatusChoices,
+ getEquipmentCreateDefaultValues,
+ getEquipmentPageContextFromSearch,
+} from './shared';
export function EquipmentCreate() {
+ const location = useLocation();
+ const pageContext = getEquipmentPageContextFromSearch(location.search);
+
return (
-
-
-
+
+
+
+
);
diff --git a/client/src/resources/equipment/EquipmentEdit.tsx b/client/src/resources/equipment/EquipmentEdit.tsx
index 38530eb..986723b 100644
--- a/client/src/resources/equipment/EquipmentEdit.tsx
+++ b/client/src/resources/equipment/EquipmentEdit.tsx
@@ -1,13 +1,6 @@
import { DateInput, Edit, SelectInput, SimpleForm, TextInput as RaTextInput } from 'react-admin';
-import { equipmentStatusChoices } from './shared';
-
-const equipmentLabels = {
- dateOfInspection: 'Дата поверки',
- commissionedAt: 'Дата изготовления',
- name: 'Название',
- serialNumber: 'Серийный номер',
- status: 'Статус',
-};
+import { EquipmentAttachmentsInput } from './EquipmentAttachmentsInput';
+import { equipmentLabels, equipmentStatusChoices } from './shared';
export function EquipmentEdit() {
return (
@@ -27,8 +20,11 @@ export function EquipmentEdit() {
fullWidth
required
/>
-
+
+
+
+
);
diff --git a/client/src/resources/equipment/EquipmentList.tsx b/client/src/resources/equipment/EquipmentList.tsx
index 246383d..7764fed 100644
--- a/client/src/resources/equipment/EquipmentList.tsx
+++ b/client/src/resources/equipment/EquipmentList.tsx
@@ -1,60 +1,171 @@
-import { useMemo } from 'react';
+import { useMemo, type ReactNode } from 'react';
import { useLocation } from 'react-router-dom';
import {
CreateButton,
Datagrid,
DateField,
FilterButton,
+ FunctionField,
List,
TextField,
TextInput,
TopToolbar,
} from 'react-admin';
-
-function parseListFilterFromSearch(search: string): Record | undefined {
- const params = new URLSearchParams(search);
- const raw = params.get('filter');
- if (!raw) {
- return undefined;
- }
- try {
- const parsed = JSON.parse(raw) as Record;
- return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;
- } catch {
- return undefined;
- }
-}
+import { EquipmentAttachmentLink } from './EquipmentAttachmentLink';
+import {
+ equipmentLabels,
+ getEquipmentCreatePath,
+ getEquipmentPageContextFromFilter,
+ parseEquipmentFilterFromSearch,
+ type EquipmentPageContext,
+} from './shared';
const equipmentFilters = [
,
];
-const ListActions = () => (
+type ListActionsProps = {
+ pageContext: EquipmentPageContext;
+};
+
+type EquipmentAttachmentListItem = {
+ id: string;
+ originalFileName?: string | null;
+};
+
+type EquipmentWithAttachments = {
+ id: string;
+ attachments?: EquipmentAttachmentListItem[] | null;
+};
+
+type EquipmentFilesFieldProps = {
+ source: string;
+ label: string;
+ sortable?: boolean;
+};
+
+const EquipmentFilesField = (props: EquipmentFilesFieldProps) => (
+ {
+ const attachments = Array.isArray(record.attachments) ? record.attachments : [];
+ if (!attachments.length) {
+ return '-';
+ }
+
+ const [firstAttachment, ...restAttachments] = attachments;
+
+ return (
+
+
+ {restAttachments.length ? ` +${restAttachments.length}` : null}
+
+ );
+ }}
+ />
+);
+
+const ListActions = ({ pageContext }: ListActionsProps) => (
-
+
);
-export function EquipmentList() {
- const location = useLocation();
- const filterDefaultValues = useMemo(() => parseListFilterFromSearch(location.search), [location.search]);
- const listKey = `${location.pathname}${location.search}`;
+type EquipmentListLayoutProps = {
+ children: ReactNode;
+ filterDefaultValues?: Record;
+ listKey: string;
+ pageContext: EquipmentPageContext;
+};
+function EquipmentListLayout({
+ children,
+ filterDefaultValues,
+ listKey,
+ pageContext,
+}: EquipmentListLayoutProps) {
return (
}
+ actions={}
sort={{ field: 'name', order: 'ASC' }}
filterDefaultValues={filterDefaultValues}
>
-
-
-
-
-
-
+ {children}
);
}
+
+type EquipmentStatusListProps = {
+ filterDefaultValues?: Record;
+ listKey: string;
+};
+
+export function EquipmentActiveList({ filterDefaultValues, listKey }: EquipmentStatusListProps) {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export function EquipmentArchiveList({ filterDefaultValues, listKey }: EquipmentStatusListProps) {
+ return (
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export function EquipmentDefaultList({ filterDefaultValues, listKey }: EquipmentStatusListProps) {
+ return (
+
+
+
+
+
+
+
+
+
+
+ );
+}
+
+export function EquipmentList() {
+ const location = useLocation();
+ const filterDefaultValues = useMemo(() => parseEquipmentFilterFromSearch(location.search), [location.search]);
+ const pageContext = getEquipmentPageContextFromFilter(filterDefaultValues);
+ const listKey = `${location.pathname}${location.search}`;
+
+ if (pageContext === 'archive') {
+ return ;
+ }
+
+ if (pageContext === 'active') {
+ return ;
+ }
+
+ return ;
+}
diff --git a/client/src/resources/equipment/EquipmentShow.tsx b/client/src/resources/equipment/EquipmentShow.tsx
index 4bb5348..70eb032 100644
--- a/client/src/resources/equipment/EquipmentShow.tsx
+++ b/client/src/resources/equipment/EquipmentShow.tsx
@@ -1,16 +1,44 @@
-import { DateField, SelectField, Show, SimpleShowLayout, TextField } from 'react-admin';
-import { equipmentStatusChoices } from './shared';
+import { DateField, FunctionField, SelectField, Show, SimpleShowLayout, TextField } from 'react-admin';
+import { EquipmentAttachmentLink } from './EquipmentAttachmentLink';
+import { equipmentLabels, equipmentStatusChoices } from './shared';
export function EquipmentShow() {
return (
-
-
-
-
-
+
+
+
+
+
+
+
+ {
+ const items = Array.isArray(record.attachments) ? record.attachments : [];
+ if (!items.length) {
+ return '-';
+ }
+ return (
+
+ {items.map((att) => (
+
+
+
+ ))}
+
+ );
+ }}
+ />
);
diff --git a/client/src/resources/equipment/attachmentDownload.ts b/client/src/resources/equipment/attachmentDownload.ts
new file mode 100644
index 0000000..70d311b
--- /dev/null
+++ b/client/src/resources/equipment/attachmentDownload.ts
@@ -0,0 +1,29 @@
+import { ensureFreshToken, getAccessToken } from '../../auth/keycloak';
+import { resolveApiBaseUrl } from '../../lib/apiBase';
+
+export async function downloadEquipmentAttachmentFile(
+ equipmentId: string,
+ attachmentId: string,
+ suggestedFileName: string,
+): Promise {
+ await ensureFreshToken();
+ const token = getAccessToken();
+ const url = `${resolveApiBaseUrl()}/equipment/${equipmentId}/attachments/${attachmentId}/download`;
+ const response = await fetch(url, {
+ method: 'GET',
+ headers: token ? { Authorization: `Bearer ${token}`, Accept: '*/*' } : { Accept: '*/*' },
+ });
+ if (!response.ok) {
+ throw new Error(`Download failed: ${response.status}`);
+ }
+ const blob = await response.blob();
+ const objectUrl = URL.createObjectURL(blob);
+ const a = document.createElement('a');
+ a.href = objectUrl;
+ a.download = suggestedFileName || 'download';
+ a.rel = 'noopener';
+ document.body.appendChild(a);
+ a.click();
+ a.remove();
+ URL.revokeObjectURL(objectUrl);
+}
diff --git a/client/src/resources/equipment/shared.ts b/client/src/resources/equipment/shared.ts
index f0303dc..a5f16b3 100644
--- a/client/src/resources/equipment/shared.ts
+++ b/client/src/resources/equipment/shared.ts
@@ -5,6 +5,20 @@ export const equipmentStatusChoices = [
{ id: 'WriteOff', name: 'Списано' },
];
+export type EquipmentPageContext = 'active' | 'archive' | 'default';
+
+export const EQUIPMENT_PAGE_CONTEXT_PARAM = 'equipmentPageContext';
+
+export const equipmentLabels = {
+ dateOfInspection: 'Дата поверки',
+ commissionedAt: 'Дата изготовления',
+ installationDate: 'Дата установки',
+ name: 'Название',
+ serialNumber: 'Серийный номер',
+ status: 'Статус',
+ writeOffDate: 'Дата списания',
+};
+
export const equipmentOptionText = (record?: {
name?: string;
serialNumber?: string;
@@ -16,3 +30,70 @@ export const equipmentOptionText = (record?: {
return record.name ?? record.serialNumber ?? record.id ?? '';
};
+
+export function parseEquipmentFilterFromSearch(search: string): Record | undefined {
+ const params = new URLSearchParams(search);
+ const raw = params.get('filter');
+ if (!raw) {
+ return undefined;
+ }
+
+ try {
+ const parsed = JSON.parse(raw) as Record;
+ return parsed && typeof parsed === 'object' && !Array.isArray(parsed) ? parsed : undefined;
+ } catch {
+ return undefined;
+ }
+}
+
+export function equipmentFilterHasStatus(filter: Record | undefined, status: string) {
+ const value = filter?.status;
+ return Array.isArray(value) ? value.includes(status) : value === status;
+}
+
+export function getEquipmentPageContextFromFilter(
+ filter: Record | undefined,
+): EquipmentPageContext {
+ if (equipmentFilterHasStatus(filter, 'WriteOff')) {
+ return 'archive';
+ }
+
+ if (equipmentFilterHasStatus(filter, 'Active')) {
+ return 'active';
+ }
+
+ return 'default';
+}
+
+export function getEquipmentPageContextFromSearch(search: string): EquipmentPageContext {
+ const params = new URLSearchParams(search);
+ const context = params.get(EQUIPMENT_PAGE_CONTEXT_PARAM);
+
+ if (context === 'active' || context === 'archive') {
+ return context;
+ }
+
+ return getEquipmentPageContextFromFilter(parseEquipmentFilterFromSearch(search));
+}
+
+export function getEquipmentCreatePath(context: EquipmentPageContext): string {
+ if (context === 'default') {
+ return '/equipment/create';
+ }
+
+ const params = new URLSearchParams();
+ params.set(EQUIPMENT_PAGE_CONTEXT_PARAM, context);
+ return `/equipment/create?${params.toString()}`;
+}
+
+export function getEquipmentCreateDefaultValues(context: EquipmentPageContext) {
+ if (context === 'active') {
+ return { status: 'Active' };
+ }
+
+ if (context === 'archive') {
+ return { status: 'WriteOff' };
+ }
+
+ return undefined;
+}
diff --git a/client/src/theme/toirMuiTheme.ts b/client/src/theme/toirMuiTheme.ts
index e66c89b..7db666f 100644
--- a/client/src/theme/toirMuiTheme.ts
+++ b/client/src/theme/toirMuiTheme.ts
@@ -16,6 +16,13 @@ function buildTokens(mode: Mode) {
accent: '#bd8d64',
accentSoft: 'rgba(182, 130, 81, 0.22)',
shadow: '0 20px 48px rgba(42, 29, 20, 0.10)',
+ menuText: '#342820',
+ menuTextMuted: 'rgba(52, 40, 32, 0.72)',
+ menuHover: 'rgba(189, 141, 100, 0.10)',
+ menuActive: 'rgba(189, 141, 100, 0.16)',
+ menuGuide: 'rgba(52, 40, 32, 0.24)',
+ menuGuideStrong: 'rgba(52, 40, 32, 0.40)',
+ menuMarkerBg: '#fffaf4',
};
}
@@ -30,6 +37,13 @@ function buildTokens(mode: Mode) {
accent: '#d4a574',
accentSoft: 'rgba(201, 122, 61, 0.24)',
shadow: '0 34px 86px rgba(0, 0, 0, 0.56)',
+ menuText: '#f8fafc',
+ menuTextMuted: 'rgba(248, 250, 252, 0.72)',
+ menuHover: 'rgba(212, 165, 116, 0.12)',
+ menuActive: 'rgba(212, 165, 116, 0.18)',
+ menuGuide: 'rgba(248, 250, 252, 0.22)',
+ menuGuideStrong: 'rgba(248, 250, 252, 0.38)',
+ menuMarkerBg: '#18120d',
};
}
@@ -37,6 +51,10 @@ export function buildToirMuiTheme(mode: Mode): Theme {
const t = buildTokens(mode);
return createTheme({
+ sidebar: {
+ width: 268,
+ closedWidth: 55,
+ },
palette: {
mode,
primary: { main: t.accent },
@@ -63,6 +81,30 @@ export function buildToirMuiTheme(mode: Mode): Theme {
styleOverrides: {
body: {
background: t.bgDefault,
+ '--toir-menu-text': t.menuText,
+ '--toir-menu-text-muted': t.menuTextMuted,
+ '--toir-menu-hover-bg': t.menuHover,
+ '--toir-menu-active-bg': t.menuActive,
+ '--toir-menu-guide': t.menuGuide,
+ '--toir-menu-guide-strong': t.menuGuideStrong,
+ '--toir-menu-marker-bg': t.menuMarkerBg,
+ '--toir-menu-radius': '24px',
+ '--toir-menu-item-height': '56px',
+ '--toir-menu-subitem-height': '52px',
+ '--toir-menu-item-padding-y': '10px',
+ '--toir-menu-item-padding-x': '24px',
+ '--toir-menu-item-gap': '12px',
+ '--toir-menu-icon-slot': '36px',
+ '--toir-menu-chevron-size': '24px',
+ '--toir-menu-chevron-stroke-size': '11px',
+ '--toir-menu-font-size': '1.12rem',
+ '--toir-menu-subitem-font-size': '0.98rem',
+ '--toir-menu-subtree-offset': '30px',
+ '--toir-menu-subitem-padding-x': '14px',
+ '--toir-menu-subitem-label-offset': '24px',
+ '--toir-menu-marker-size': '10px',
+ '--toir-menu-guide-width': '2px',
+ '--toir-menu-transition': '160ms ease',
'& .RaList-content > .MuiCardContent-root:only-child:has(button[aria-label="Очистить фильтры"])': {
display: 'none',
},
diff --git a/client/vite.config.ts b/client/vite.config.ts
index 8b0f57b..ab8ee06 100644
--- a/client/vite.config.ts
+++ b/client/vite.config.ts
@@ -4,4 +4,12 @@ import react from '@vitejs/plugin-react'
// https://vite.dev/config/
export default defineConfig({
plugins: [react()],
+ server: {
+ proxy: {
+ '/api': {
+ target: 'http://localhost:3001',
+ changeOrigin: true,
+ },
+ },
+ },
})
diff --git a/domain/toir.api.dsl b/domain/toir.api.dsl
index 2867e05..da45f56 100644
--- a/domain/toir.api.dsl
+++ b/domain/toir.api.dsl
@@ -59,11 +59,11 @@ dto DTO.Equipment {
description "Текущий статус";
map Equipment.status;
}
- attribute attachment {
- type DTO.FileAttachment;
+ attribute attachments {
+ type DTO.FileAttachment[];
is nullable;
description "Вложение (файл в MinIO/S3)";
- map Equipment.attachment;
+ map Equipment.attachments;
}
}
@@ -347,7 +347,7 @@ api API.Equipment {
}
endpoint uploadEquipmentAttachment {
- label "POST /equipment/{id}/attachment";
+ label "POST /equipment/{id}/attachments";
description "Загрузить файл-вложение (multipart/form-data, поле file)";
attribute id {
type uuid;
@@ -355,19 +355,25 @@ api API.Equipment {
}
endpoint deleteEquipmentAttachment {
- label "DELETE /equipment/{id}/attachment";
+ label "DELETE /equipment/{id}/attachments/{attachmentId}";
description "Удалить файл-вложение из хранилища и из записи";
attribute id {
type uuid;
}
+ attribute attachmentId {
+ type uuid;
+ }
}
endpoint downloadEquipmentAttachment {
- label "GET /equipment/{id}/attachment/download";
+ label "GET /equipment/{id}/attachments/{attachmentId}/download";
description "Скачать файл-вложение (Content-Disposition: attachment, поток из MinIO)";
attribute id {
type uuid;
}
+ attribute attachmentId {
+ type uuid;
+ }
}
}
@@ -422,4 +428,4 @@ api API.EquipmentStatusChange {
type uuid;
}
}
-}
\ No newline at end of file
+}
diff --git a/openapi.json b/openapi.json
index e731f10..8f4378f 100644
--- a/openapi.json
+++ b/openapi.json
@@ -20,86 +20,58 @@
}
},
"schemas": {
- "Equipment": {
+ "FileAttachment": {
"type": "object",
"properties": {
- "id": {
+ "objectKey": {
"type": "string",
- "format": "uuid"
+ "description": "Ключ объекта в бакете"
},
- "inventoryNumber": {
+ "originalFileName": {
"type": "string",
- "description": "Инвентарный номер"
+ "description": "Исходное имя файла"
},
- "serialNumber": {
+ "contentType": {
"type": "string",
- "description": "Заводской (серийный) номер"
+ "description": "MIME-тип"
},
- "name": {
+ "sizeBytes": {
+ "type": "integer",
+ "format": "int32",
+ "description": "Размер в байтах"
+ },
+ "downloadUrl": {
"type": "string",
- "description": "Наименование единицы оборудования"
- },
- "equipmentTypeCode": {
- "type": "string",
- "description": "Код вида оборудования"
- },
- "status": {
- "allOf": [
- {
- "$ref": "#/components/schemas/EquipmentStatus"
- }
- ],
- "description": "Текущий статус"
- },
- "location": {
- "type": "string",
- "description": "Место эксплуатации / скважина / куст"
- },
- "commissionedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Дата ввода в эксплуатацию"
- },
- "totalEngineHours": {
- "type": "string",
- "format": "decimal",
- "description": "Общая наработка, моточасов"
- },
- "engineHoursSinceLastRepair": {
- "type": "string",
- "format": "decimal",
- "description": "Наработка с последнего ремонта, моточасов"
- },
- "lastRepairAt": {
- "type": "string",
- "format": "date-time",
- "description": "Дата последнего ремонта"
- },
- "notes": {
- "type": "string",
- "description": "Примечания"
+ "description": "Ссылка на скачивание (публичная или presigned)"
}
},
- "description": "Оборудование — полный объект ответа"
+ "description": "Метаданные файла в объектном хранилище (MinIO/S3); бинарные данные в БД не хранятся"
+ },
+ "Equipment": {
+ "type": "string",
+ "x-dsl-enum": "Equipment",
+ "description": "Enum: Equipment (values defined in domain/*.api.dsl)"
},
"EquipmentCreate": {
"type": "object",
"properties": {
- "inventoryNumber": {
+ "name": {
"type": "string",
- "description": "Инвентарный номер"
+ "description": "Название оборудования"
},
"serialNumber": {
"type": "string",
"description": "Заводской (серийный) номер"
},
- "name": {
+ "dateOfInspection": {
"type": "string",
- "description": "Наименование единицы оборудования"
+ "format": "date-time",
+ "description": "Дата поверки"
},
- "equipmentTypeCode": {
+ "commissionedAt": {
"type": "string",
- "description": "Код вида оборудования"
+ "format": "date-time",
+ "description": "Дата изготовления"
},
"status": {
"allOf": [
@@ -108,61 +80,35 @@
}
],
"description": "Текущий статус"
- },
- "location": {
- "type": "string",
- "description": "Место эксплуатации / скважина / куст"
- },
- "commissionedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Дата ввода в эксплуатацию"
- },
- "totalEngineHours": {
- "type": "string",
- "format": "decimal",
- "description": "Общая наработка, моточасов"
- },
- "engineHoursSinceLastRepair": {
- "type": "string",
- "format": "decimal",
- "description": "Наработка с последнего ремонта, моточасов"
- },
- "lastRepairAt": {
- "type": "string",
- "format": "date-time",
- "description": "Дата последнего ремонта"
- },
- "notes": {
- "type": "string",
- "description": "Примечания"
}
},
- "description": "Оборудование — тело запроса на создание",
+ "description": "Тело запроса на создание единицы оборудования",
"required": [
- "inventoryNumber",
"name",
- "equipmentTypeCode"
+ "serialNumber",
+ "status"
]
},
"EquipmentUpdate": {
"type": "object",
"properties": {
- "inventoryNumber": {
+ "name": {
"type": "string",
- "description": "Инвентарный номер"
+ "description": "Название оборудования"
},
"serialNumber": {
"type": "string",
"description": "Заводской (серийный) номер"
},
- "name": {
+ "dateOfInspection": {
"type": "string",
- "description": "Наименование единицы оборудования"
+ "format": "date-time",
+ "description": "Дата поверки"
},
- "equipmentTypeCode": {
+ "commissionedAt": {
"type": "string",
- "description": "Код вида оборудования"
+ "format": "date-time",
+ "description": "Дата изготовления"
},
"status": {
"allOf": [
@@ -171,52 +117,27 @@
}
],
"description": "Текущий статус"
- },
- "location": {
- "type": "string",
- "description": "Место эксплуатации / скважина / куст"
- },
- "commissionedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Дата ввода в эксплуатацию"
- },
- "totalEngineHours": {
- "type": "string",
- "format": "decimal",
- "description": "Общая наработка, моточасов"
- },
- "engineHoursSinceLastRepair": {
- "type": "string",
- "format": "decimal",
- "description": "Наработка с последнего ремонта, моточасов"
- },
- "lastRepairAt": {
- "type": "string",
- "format": "date-time",
- "description": "Дата последнего ремонта"
- },
- "notes": {
- "type": "string",
- "description": "Примечания"
}
},
- "description": "Оборудование — тело запроса на обновление (частичное)"
+ "description": "Тело запроса на обновление единицы оборудования"
},
"EquipmentListRequest": {
"type": "object",
"properties": {
- "filters": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DTO.Filter"
- }
- },
"page": {
"$ref": "#/components/schemas/DTO.PageRequest"
+ },
+ "filterName": {
+ "type": "string"
+ },
+ "filterSerialNumber": {
+ "type": "string"
+ },
+ "filterStatus": {
+ "$ref": "#/components/schemas/EquipmentStatus"
}
},
- "description": "Оборудование — запрос постраничного списка с фильтрацией"
+ "description": "Запрос для постраничного получения списка оборудования с фильтрацией"
},
"EquipmentListResponse": {
"type": "object",
@@ -227,263 +148,149 @@
"$ref": "#/components/schemas/Equipment"
}
},
- "page": {
+ "pageInfo": {
"$ref": "#/components/schemas/DTO.PageInfo"
}
},
- "description": "Оборудование — постраничный результат"
+ "description": "Ответ с постраничным списком оборудования и метаданными"
},
- "RepairOrder": {
+ "ChangeEquipmentStatus": {
"type": "object",
"properties": {
- "id": {
+ "equipmentId": {
+ "$ref": "#/components/schemas/Equipment"
+ },
+ "newStatus": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/EquipmentStatus"
+ }
+ ],
+ "description": "Новый статус"
+ },
+ "number": {
+ "type": "string",
+ "description": "Номер"
+ },
+ "date": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Дата изменения статуса"
+ },
+ "responsible": {
+ "type": "string",
+ "description": "Ответственный"
+ }
+ },
+ "description": "Полный response-объект для документа изменения статуса"
+ },
+ "ChangeEquipmentStatusCreate": {
+ "type": "object",
+ "properties": {
+ "equipmentId": {
+ "$ref": "#/components/schemas/Equipment"
+ },
+ "newStatus": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/EquipmentStatus"
+ }
+ ],
+ "description": "Новый статус"
+ },
+ "number": {
+ "type": "string",
+ "description": "Номер"
+ },
+ "date": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Дата изменения статуса"
+ },
+ "responsible": {
+ "type": "string",
+ "description": "Ответственный"
+ }
+ },
+ "description": "Тело запроса на создание документа изменения статуса",
+ "required": [
+ "newStatus",
+ "date"
+ ]
+ },
+ "ChangeEquipmentStatusUpdate": {
+ "type": "object",
+ "properties": {
+ "equipmentId": {
+ "$ref": "#/components/schemas/Equipment"
+ },
+ "newStatus": {
+ "allOf": [
+ {
+ "$ref": "#/components/schemas/EquipmentStatus"
+ }
+ ],
+ "description": "Новый статус"
+ },
+ "number": {
+ "type": "string",
+ "description": "Номер"
+ },
+ "date": {
+ "type": "string",
+ "format": "date-time",
+ "description": "Дата изменения статуса"
+ },
+ "responsible": {
+ "type": "string",
+ "description": "Ответственный"
+ }
+ },
+ "description": "Тело запроса на обновление документа изменения статуса"
+ },
+ "ChangeEquipmentStatusListRequest": {
+ "type": "object",
+ "properties": {
+ "page": {
+ "$ref": "#/components/schemas/DTO.PageRequest"
+ },
+ "filterEquipmentId": {
"type": "string",
"format": "uuid"
},
- "number": {
+ "filterNumber": {
+ "type": "string"
+ },
+ "filterDate": {
"type": "string",
- "description": "Номер заявки"
+ "format": "date-time"
},
- "equipmentId": {
- "type": "string",
- "format": "uuid",
- "description": "Идентификатор оборудования"
- },
- "repairKind": {
- "allOf": [
- {
- "$ref": "#/components/schemas/RepairKind"
- }
- ],
- "description": "Вид ремонта"
- },
- "status": {
- "allOf": [
- {
- "$ref": "#/components/schemas/RepairOrderStatus"
- }
- ],
- "description": "Статус заявки"
- },
- "plannedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Плановая дата начала"
- },
- "startedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Фактическая дата начала"
- },
- "completedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Фактическая дата завершения"
- },
- "contractor": {
- "type": "string",
- "description": "Подрядная организация (если внешний ремонт)"
- },
- "engineHoursAtRepair": {
- "type": "string",
- "format": "decimal",
- "description": "Наработка на момент ремонта, моточасов"
- },
- "description": {
- "type": "string",
- "description": "Описание работ / дефекта"
- },
- "notes": {
- "type": "string",
- "description": "Примечания"
- },
- "confirmed": {
- "type": "boolean",
- "description": "Согласовано/Не согласовано"
+ "filterResponsible": {
+ "type": "string"
}
},
- "description": "Заявка на ремонт — полный объект ответа"
+ "description": "Запрос для постраничного получения списка документов изменения статуса с фильтрацией"
},
- "RepairOrderCreate": {
- "type": "object",
- "properties": {
- "number": {
- "type": "string",
- "description": "Номер заявки"
- },
- "equipmentId": {
- "type": "string",
- "format": "uuid",
- "description": "Идентификатор оборудования"
- },
- "repairKind": {
- "allOf": [
- {
- "$ref": "#/components/schemas/RepairKind"
- }
- ],
- "description": "Вид ремонта"
- },
- "status": {
- "allOf": [
- {
- "$ref": "#/components/schemas/RepairOrderStatus"
- }
- ],
- "description": "Статус заявки"
- },
- "plannedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Плановая дата начала"
- },
- "startedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Фактическая дата начала"
- },
- "completedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Фактическая дата завершения"
- },
- "contractor": {
- "type": "string",
- "description": "Подрядная организация (если внешний ремонт)"
- },
- "engineHoursAtRepair": {
- "type": "string",
- "format": "decimal",
- "description": "Наработка на момент ремонта, моточасов"
- },
- "description": {
- "type": "string",
- "description": "Описание работ / дефекта"
- },
- "notes": {
- "type": "string",
- "description": "Примечания"
- },
- "confirmed": {
- "type": "boolean",
- "description": "Согласовано/Не согласовано"
- }
- },
- "description": "Заявка на ремонт — тело запроса на создание",
- "required": [
- "number",
- "equipmentId",
- "repairKind",
- "plannedAt"
- ]
- },
- "RepairOrderUpdate": {
- "type": "object",
- "properties": {
- "number": {
- "type": "string",
- "description": "Номер заявки"
- },
- "equipmentId": {
- "type": "string",
- "format": "uuid",
- "description": "Идентификатор оборудования"
- },
- "repairKind": {
- "allOf": [
- {
- "$ref": "#/components/schemas/RepairKind"
- }
- ],
- "description": "Вид ремонта"
- },
- "status": {
- "allOf": [
- {
- "$ref": "#/components/schemas/RepairOrderStatus"
- }
- ],
- "description": "Статус заявки"
- },
- "plannedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Плановая дата начала"
- },
- "startedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Фактическая дата начала"
- },
- "completedAt": {
- "type": "string",
- "format": "date-time",
- "description": "Фактическая дата завершения"
- },
- "contractor": {
- "type": "string",
- "description": "Подрядная организация (если внешний ремонт)"
- },
- "engineHoursAtRepair": {
- "type": "string",
- "format": "decimal",
- "description": "Наработка на момент ремонта, моточасов"
- },
- "description": {
- "type": "string",
- "description": "Описание работ / дефекта"
- },
- "notes": {
- "type": "string",
- "description": "Примечания"
- },
- "confirmed": {
- "type": "boolean",
- "description": "Согласовано/Не согласовано"
- }
- },
- "description": "Заявка на ремонт — тело запроса на обновление (частичное)"
- },
- "RepairOrderListRequest": {
- "type": "object",
- "properties": {
- "filters": {
- "type": "array",
- "items": {
- "$ref": "#/components/schemas/DTO.Filter"
- }
- },
- "page": {
- "$ref": "#/components/schemas/DTO.PageRequest"
- }
- },
- "description": "Заявка на ремонт — запрос постраничного списка с фильтрацией"
- },
- "RepairOrderListResponse": {
+ "ChangeEquipmentStatusListResponse": {
"type": "object",
"properties": {
"content": {
"type": "array",
"items": {
- "$ref": "#/components/schemas/RepairOrder"
+ "$ref": "#/components/schemas/ChangeEquipmentStatus"
}
},
- "page": {
+ "pageInfo": {
"$ref": "#/components/schemas/DTO.PageInfo"
}
},
- "description": "Заявка на ремонт — постраничный результат"
+ "description": "Ответ с постраничным списком документов изменения статуса и метаданными"
},
"EquipmentStatus": {
"type": "string",
"x-dsl-enum": "EquipmentStatus",
"description": "Enum: EquipmentStatus (values defined in domain/*.api.dsl)"
},
- "DTO.Filter": {
- "type": "string",
- "x-dsl-enum": "DTO.Filter",
- "description": "Enum: DTO.Filter (values defined in domain/*.api.dsl)"
- },
"DTO.PageRequest": {
"type": "string",
"x-dsl-enum": "DTO.PageRequest",
@@ -493,16 +300,6 @@
"type": "string",
"x-dsl-enum": "DTO.PageInfo",
"description": "Enum: DTO.PageInfo (values defined in domain/*.api.dsl)"
- },
- "RepairKind": {
- "type": "string",
- "x-dsl-enum": "RepairKind",
- "description": "Enum: RepairKind (values defined in domain/*.api.dsl)"
- },
- "RepairOrderStatus": {
- "type": "string",
- "x-dsl-enum": "RepairOrderStatus",
- "description": "Enum: RepairOrderStatus (values defined in domain/*.api.dsl)"
}
}
},
@@ -516,7 +313,7 @@
}
],
"tags": [
- "оборудованием"
+ "справочником оборудования"
],
"requestBody": {
"required": true,
@@ -550,14 +347,14 @@
},
"/equipment/{id}": {
"get": {
- "summary": "Получить оборудование по идентификатору",
+ "summary": "Получить единицу оборудования по идентификатору",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "оборудованием"
+ "справочником оборудования"
],
"parameters": [
{
@@ -590,14 +387,14 @@
}
},
"put": {
- "summary": "Обновить единицу оборудования",
+ "summary": "Обновить данные единицы оборудования",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "оборудованием"
+ "справочником оборудования"
],
"parameters": [
{
@@ -647,7 +444,7 @@
}
],
"tags": [
- "оборудованием"
+ "справочником оборудования"
],
"parameters": [
{
@@ -678,14 +475,14 @@
},
"/equipment": {
"post": {
- "summary": "Создать единицу оборудования",
+ "summary": "Создать новую единицу оборудования",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "оборудованием"
+ "справочником оборудования"
],
"requestBody": {
"required": true,
@@ -717,34 +514,35 @@
}
}
},
- "/repair-orders/page": {
+ "/equipment/{id}/attachments": {
"post": {
- "summary": "Постраничный список заявок на ремонт с фильтрацией",
+ "summary": "Загрузить файл-вложение (multipart/form-data, поле file)",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "заявками на ремонт"
+ "справочником оборудования"
],
- "requestBody": {
- "required": true,
- "content": {
- "application/json": {
- "schema": {
- "$ref": "#/components/schemas/RepairOrderListRequest"
- }
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
}
}
- },
+ ],
"responses": {
- "200": {
+ "201": {
"description": "Success",
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/RepairOrderListResponse"
+ "type": "object"
}
}
}
@@ -758,16 +556,155 @@
}
}
},
- "/repair-orders/{id}": {
- "get": {
- "summary": "Получить заявку на ремонт по идентификатору",
+ "/equipment/{id}/attachments/{attachmentId}": {
+ "delete": {
+ "summary": "Удалить файл-вложение из хранилища и из записи",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "заявками на ремонт"
+ "справочником оборудования"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "attachmentId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "204": {
+ "description": "No content"
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ },
+ "404": {
+ "description": "Not found"
+ }
+ }
+ }
+ },
+ "/equipment/{id}/attachments/{attachmentId}/download": {
+ "get": {
+ "summary": "Скачать файл-вложение (Content-Disposition: attachment, поток из MinIO)",
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "tags": [
+ "справочником оборудования"
+ ],
+ "parameters": [
+ {
+ "name": "id",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ },
+ {
+ "name": "attachmentId",
+ "in": "path",
+ "required": true,
+ "schema": {
+ "type": "string",
+ "format": "uuid"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ }
+ }
+ },
+ "/status-changes/page": {
+ "post": {
+ "summary": "Постраничный список документов изменения статуса с фильтрацией",
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "tags": [
+ "документами изменения статуса оборудования"
+ ],
+ "requestBody": {
+ "required": true,
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ChangeEquipmentStatusListRequest"
+ }
+ }
+ }
+ },
+ "responses": {
+ "200": {
+ "description": "Success",
+ "content": {
+ "application/json": {
+ "schema": {
+ "$ref": "#/components/schemas/ChangeEquipmentStatusListResponse"
+ }
+ }
+ }
+ },
+ "401": {
+ "description": "Unauthorized"
+ },
+ "403": {
+ "description": "Forbidden"
+ }
+ }
+ }
+ },
+ "/status-changes/{id}": {
+ "get": {
+ "summary": "Получить документ изменения статуса по идентификатору",
+ "security": [
+ {
+ "bearerAuth": []
+ }
+ ],
+ "tags": [
+ "документами изменения статуса оборудования"
],
"parameters": [
{
@@ -786,7 +723,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/RepairOrder"
+ "$ref": "#/components/schemas/ChangeEquipmentStatus"
}
}
}
@@ -800,14 +737,14 @@
}
},
"put": {
- "summary": "Обновить заявку на ремонт",
+ "summary": "Обновить документ изменения статуса",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "заявками на ремонт"
+ "документами изменения статуса оборудования"
],
"parameters": [
{
@@ -825,7 +762,7 @@
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/RepairOrderUpdate"
+ "$ref": "#/components/schemas/ChangeEquipmentStatusUpdate"
}
}
}
@@ -850,14 +787,14 @@
}
},
"delete": {
- "summary": "Удалить заявку на ремонт",
+ "summary": "Удалить документ изменения статуса",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "заявками на ремонт"
+ "документами изменения статуса оборудования"
],
"parameters": [
{
@@ -886,23 +823,23 @@
}
}
},
- "/repair-orders": {
+ "/status-changes": {
"post": {
- "summary": "Создать заявку на ремонт",
+ "summary": "Создать документ изменения статуса оборудования",
"security": [
{
"bearerAuth": []
}
],
"tags": [
- "заявками на ремонт"
+ "документами изменения статуса оборудования"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
- "$ref": "#/components/schemas/RepairOrderCreate"
+ "$ref": "#/components/schemas/ChangeEquipmentStatusCreate"
}
}
}
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..f90aa88
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,10 @@
+{
+ "name": "toir-generation-context",
+ "lockfileVersion": 3,
+ "requires": true,
+ "packages": {
+ "": {
+ "name": "toir-generation-context"
+ }
+ }
+}
diff --git a/server/docker-entrypoint.sh b/server/docker-entrypoint.sh
index f373c40..e59496c 100644
--- a/server/docker-entrypoint.sh
+++ b/server/docker-entrypoint.sh
@@ -20,13 +20,20 @@ else
if [ "$MIGRATE_EXIT" -eq 0 ]; then
cat "$MIGRATE_LOG"
rm -f "$MIGRATE_LOG"
- elif grep -q P3005 "$MIGRATE_LOG"; then
+ elif grep -q "P3005" "$MIGRATE_LOG"; then
cat "$MIGRATE_LOG" >&2
echo "" >&2
echo "prisma migrate deploy failed with P3005: database already has schema but no migration history (typical after prisma db push)." >&2
echo "Falling back to prisma db push so the schema stays in sync." >&2
rm -f "$MIGRATE_LOG"
run_db_push
+ elif grep -q "P3009" "$MIGRATE_LOG" || grep -q "P3018" "$MIGRATE_LOG" || grep -q "42P01" "$MIGRATE_LOG"; then
+ cat "$MIGRATE_LOG" >&2
+ echo "" >&2
+ echo "prisma migrate deploy failed due to an unrecoverable migration state for this environment (failed migration / missing relation)." >&2
+ echo "Falling back to prisma db push to ensure the schema exists and matches schema.prisma." >&2
+ rm -f "$MIGRATE_LOG"
+ run_db_push
else
cat "$MIGRATE_LOG" >&2
rm -f "$MIGRATE_LOG"
diff --git a/server/package-lock.json b/server/package-lock.json
index c8c839b..b1f184d 100644
--- a/server/package-lock.json
+++ b/server/package-lock.json
@@ -55,17 +55,59 @@
"typescript-eslint": "^8.20.0"
}
},
- "node_modules/@angular-devkit/core": {
- "version": "19.2.22",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.22.tgz",
- "integrity": "sha512-OqN/Ded+ZKypPZN5+qUFwtnKGl7FKpxJXYO2Vts5vLBojY5goCZd9SGW1CyXeuPnisRUW+vjqBQbWYuEUh36Tw==",
+ "node_modules/@angular-devkit/schematics": {
+ "version": "19.2.24",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.24.tgz",
+ "integrity": "sha512-lnw+ZM1Io+cJAkReC0NPDjqObL8NtKzKIkdgEEKC8CUmkhurYhedbicN8Y8NYHgG1uLd2GozW3+/QqPRZaN+Lw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "19.2.24",
+ "jsonc-parser": "3.3.1",
+ "magic-string": "0.30.17",
+ "ora": "5.4.1",
+ "rxjs": "7.8.1"
+ },
+ "engines": {
+ "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@angular-devkit/schematics-cli": {
+ "version": "19.2.24",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.24.tgz",
+ "integrity": "sha512-bsStZQG67J1HBqTmWxtIcobvgrn32L4UOdL7hGyOru5VxDWPNA8pRnDYavT3hnJeBkJYPoQIw8u7Dm0ecoQprw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@angular-devkit/core": "19.2.24",
+ "@angular-devkit/schematics": "19.2.24",
+ "@inquirer/prompts": "7.3.2",
+ "ansi-colors": "4.1.3",
+ "symbol-observable": "4.0.0",
+ "yargs-parser": "21.1.1"
+ },
+ "bin": {
+ "schematics": "bin/schematics.js"
+ },
+ "engines": {
+ "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ }
+ },
+ "node_modules/@angular-devkit/schematics-cli/node_modules/@angular-devkit/core": {
+ "version": "19.2.24",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.24.tgz",
+ "integrity": "sha512-Kd49warf6U/EyWe5BszF/eebN3zQ3bk7tgfEljAw8q/rX95UUtriJubWvp6pgzHfzBA4jwq8f+QiNZB8eBEXPA==",
"dev": true,
"license": "MIT",
"dependencies": {
"ajv": "8.18.0",
"ajv-formats": "3.0.1",
"jsonc-parser": "3.3.1",
- "picomatch": "4.0.2",
+ "picomatch": "4.0.4",
"rxjs": "7.8.1",
"source-map": "0.7.4"
},
@@ -83,82 +125,6 @@
}
}
},
- "node_modules/@angular-devkit/core/node_modules/ajv": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
- "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.3",
- "fast-uri": "^3.0.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/@angular-devkit/core/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@angular-devkit/core/node_modules/rxjs": {
- "version": "7.8.1",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
- "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.1.0"
- }
- },
- "node_modules/@angular-devkit/schematics": {
- "version": "19.2.22",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.22.tgz",
- "integrity": "sha512-tvfu5jhem1o8qidVxvXe5KfCij65ioMLCOFA947DD+zb3yTl5pJyDm2dqzbOehuQw0fmH4XPQukRJsCUy+UwaA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@angular-devkit/core": "19.2.22",
- "jsonc-parser": "3.3.1",
- "magic-string": "0.30.17",
- "ora": "5.4.1",
- "rxjs": "7.8.1"
- },
- "engines": {
- "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
- }
- },
- "node_modules/@angular-devkit/schematics-cli": {
- "version": "19.2.22",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-19.2.22.tgz",
- "integrity": "sha512-6BvkxDz4nV8B6Ha4n/pYZ503vXgLxMaEpcKsFDao1sl0iSwrIOphlIS1yWprlGdCThIM3aJref1JU13ZvEcBCA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@angular-devkit/core": "19.2.22",
- "@angular-devkit/schematics": "19.2.22",
- "@inquirer/prompts": "7.3.2",
- "ansi-colors": "4.1.3",
- "symbol-observable": "4.0.0",
- "yargs-parser": "21.1.1"
- },
- "bin": {
- "schematics": "bin/schematics.js"
- },
- "engines": {
- "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
- }
- },
"node_modules/@angular-devkit/schematics-cli/node_modules/@inquirer/prompts": {
"version": "7.3.2",
"resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.3.2.tgz",
@@ -189,6 +155,102 @@
}
}
},
+ "node_modules/@angular-devkit/schematics-cli/node_modules/ajv": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@angular-devkit/schematics-cli/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@angular-devkit/schematics-cli/node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@angular-devkit/schematics-cli/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": {
+ "version": "19.2.24",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.24.tgz",
+ "integrity": "sha512-Kd49warf6U/EyWe5BszF/eebN3zQ3bk7tgfEljAw8q/rX95UUtriJubWvp6pgzHfzBA4jwq8f+QiNZB8eBEXPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "8.18.0",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.4",
+ "rxjs": "7.8.1",
+ "source-map": "0.7.4"
+ },
+ "engines": {
+ "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@angular-devkit/schematics/node_modules/ajv": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@angular-devkit/schematics/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/@angular-devkit/schematics/node_modules/rxjs": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
@@ -199,6 +261,16 @@
"tslib": "^2.1.0"
}
},
+ "node_modules/@angular-devkit/schematics/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/@aws-crypto/crc32": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz",
@@ -402,34 +474,34 @@
}
},
"node_modules/@aws-sdk/client-s3": {
- "version": "3.1033.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1033.0.tgz",
- "integrity": "sha512-c8iDFppzyhQUTTPsUWDy43mSKzQsTIi+RkY9u9fHPDiu1bUJWO/2xhuFx9j6l0+29HKqlQx8yJGe8lRF3xSw3w==",
+ "version": "3.1043.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1043.0.tgz",
+ "integrity": "sha512-QrDh9PACpmijOgbVnvQIvoWFZcMEBoGw0qiQRfGvsUEcB1JPCS2U5R0irB4XQSmsBlQUNlNeXVfpx3JI++NqrA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha1-browser": "5.2.0",
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "^3.974.2",
- "@aws-sdk/credential-provider-node": "^3.972.33",
+ "@aws-sdk/core": "^3.974.8",
+ "@aws-sdk/credential-provider-node": "^3.972.39",
"@aws-sdk/middleware-bucket-endpoint": "^3.972.10",
"@aws-sdk/middleware-expect-continue": "^3.972.10",
- "@aws-sdk/middleware-flexible-checksums": "^3.974.10",
+ "@aws-sdk/middleware-flexible-checksums": "^3.974.16",
"@aws-sdk/middleware-host-header": "^3.972.10",
"@aws-sdk/middleware-location-constraint": "^3.972.10",
"@aws-sdk/middleware-logger": "^3.972.10",
"@aws-sdk/middleware-recursion-detection": "^3.972.11",
- "@aws-sdk/middleware-sdk-s3": "^3.972.31",
+ "@aws-sdk/middleware-sdk-s3": "^3.972.37",
"@aws-sdk/middleware-ssec": "^3.972.10",
- "@aws-sdk/middleware-user-agent": "^3.972.32",
- "@aws-sdk/region-config-resolver": "^3.972.12",
- "@aws-sdk/signature-v4-multi-region": "^3.996.19",
+ "@aws-sdk/middleware-user-agent": "^3.972.38",
+ "@aws-sdk/region-config-resolver": "^3.972.13",
+ "@aws-sdk/signature-v4-multi-region": "^3.996.25",
"@aws-sdk/types": "^3.973.8",
- "@aws-sdk/util-endpoints": "^3.996.7",
+ "@aws-sdk/util-endpoints": "^3.996.8",
"@aws-sdk/util-user-agent-browser": "^3.972.10",
- "@aws-sdk/util-user-agent-node": "^3.973.18",
- "@smithy/config-resolver": "^4.4.16",
- "@smithy/core": "^3.23.15",
+ "@aws-sdk/util-user-agent-node": "^3.973.24",
+ "@smithy/config-resolver": "^4.4.17",
+ "@smithy/core": "^3.23.17",
"@smithy/eventstream-serde-browser": "^4.2.14",
"@smithy/eventstream-serde-config-resolver": "^4.3.14",
"@smithy/eventstream-serde-node": "^4.2.14",
@@ -440,27 +512,27 @@
"@smithy/invalid-dependency": "^4.2.14",
"@smithy/md5-js": "^4.2.14",
"@smithy/middleware-content-length": "^4.2.14",
- "@smithy/middleware-endpoint": "^4.4.30",
- "@smithy/middleware-retry": "^4.5.3",
- "@smithy/middleware-serde": "^4.2.18",
+ "@smithy/middleware-endpoint": "^4.4.32",
+ "@smithy/middleware-retry": "^4.5.7",
+ "@smithy/middleware-serde": "^4.2.20",
"@smithy/middleware-stack": "^4.2.14",
"@smithy/node-config-provider": "^4.3.14",
- "@smithy/node-http-handler": "^4.5.3",
+ "@smithy/node-http-handler": "^4.6.1",
"@smithy/protocol-http": "^5.3.14",
- "@smithy/smithy-client": "^4.12.11",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"@smithy/url-parser": "^4.2.14",
"@smithy/util-base64": "^4.3.2",
"@smithy/util-body-length-browser": "^4.2.2",
"@smithy/util-body-length-node": "^4.2.3",
- "@smithy/util-defaults-mode-browser": "^4.3.47",
- "@smithy/util-defaults-mode-node": "^4.2.52",
- "@smithy/util-endpoints": "^3.4.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.49",
+ "@smithy/util-defaults-mode-node": "^4.2.54",
+ "@smithy/util-endpoints": "^3.4.2",
"@smithy/util-middleware": "^4.2.14",
- "@smithy/util-retry": "^4.3.2",
- "@smithy/util-stream": "^4.5.23",
+ "@smithy/util-retry": "^4.3.6",
+ "@smithy/util-stream": "^4.5.25",
"@smithy/util-utf8": "^4.2.2",
- "@smithy/util-waiter": "^4.2.16",
+ "@smithy/util-waiter": "^4.3.0",
"tslib": "^2.6.2"
},
"engines": {
@@ -468,22 +540,23 @@
}
},
"node_modules/@aws-sdk/core": {
- "version": "3.974.2",
- "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.2.tgz",
- "integrity": "sha512-oav5AOAz+1XkwUfp6SrEm42UPDpUP5D4jNYXkDwFR1VfWqYX62+jpytdfzURmJ9McSoJIQwi0OJlC4oCi6t0VQ==",
+ "version": "3.974.8",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz",
+ "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==",
"license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "^3.973.8",
- "@aws-sdk/xml-builder": "^3.972.18",
- "@smithy/core": "^3.23.15",
+ "@aws-sdk/xml-builder": "^3.972.22",
+ "@smithy/core": "^3.23.17",
"@smithy/node-config-provider": "^4.3.14",
"@smithy/property-provider": "^4.2.14",
"@smithy/protocol-http": "^5.3.14",
"@smithy/signature-v4": "^5.3.14",
- "@smithy/smithy-client": "^4.12.11",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"@smithy/util-base64": "^4.3.2",
"@smithy/util-middleware": "^4.2.14",
+ "@smithy/util-retry": "^4.3.6",
"@smithy/util-utf8": "^4.2.2",
"tslib": "^2.6.2"
},
@@ -505,12 +578,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-env": {
- "version": "3.972.28",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.28.tgz",
- "integrity": "sha512-87GdRJ2OR0qR4VkMjXN/SZi66DZsunW2qQCbtw9rKw3Y7JurFi6tQWYKOSLY/gOADrU6OxGqFmdw3hKzZqDZOQ==",
+ "version": "3.972.34",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz",
+ "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
+ "@aws-sdk/core": "^3.974.8",
"@aws-sdk/types": "^3.973.8",
"@smithy/property-provider": "^4.2.14",
"@smithy/types": "^4.14.1",
@@ -521,20 +594,20 @@
}
},
"node_modules/@aws-sdk/credential-provider-http": {
- "version": "3.972.30",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.30.tgz",
- "integrity": "sha512-6quozmW2PKwBJTUQLb+lk1q8w5Pm45qaqhx4Tld9EIqYYQOVGj+MT0a8NRVS7QgWJj7rzGlB7rQu3KYBFHemJw==",
+ "version": "3.972.36",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz",
+ "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
+ "@aws-sdk/core": "^3.974.8",
"@aws-sdk/types": "^3.973.8",
"@smithy/fetch-http-handler": "^5.3.17",
- "@smithy/node-http-handler": "^4.5.3",
+ "@smithy/node-http-handler": "^4.6.1",
"@smithy/property-provider": "^4.2.14",
"@smithy/protocol-http": "^5.3.14",
- "@smithy/smithy-client": "^4.12.11",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
- "@smithy/util-stream": "^4.5.23",
+ "@smithy/util-stream": "^4.5.25",
"tslib": "^2.6.2"
},
"engines": {
@@ -542,19 +615,19 @@
}
},
"node_modules/@aws-sdk/credential-provider-ini": {
- "version": "3.972.32",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.32.tgz",
- "integrity": "sha512-Nkr+UKtczZlocUjc6g96WzQadZSIZO/HVXPki4qbfaVOZYSbfLQKWKfADtJ0kGYsCvSYOZrO66tSc9dkboUt/w==",
+ "version": "3.972.38",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz",
+ "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
- "@aws-sdk/credential-provider-env": "^3.972.28",
- "@aws-sdk/credential-provider-http": "^3.972.30",
- "@aws-sdk/credential-provider-login": "^3.972.32",
- "@aws-sdk/credential-provider-process": "^3.972.28",
- "@aws-sdk/credential-provider-sso": "^3.972.32",
- "@aws-sdk/credential-provider-web-identity": "^3.972.32",
- "@aws-sdk/nested-clients": "^3.997.0",
+ "@aws-sdk/core": "^3.974.8",
+ "@aws-sdk/credential-provider-env": "^3.972.34",
+ "@aws-sdk/credential-provider-http": "^3.972.36",
+ "@aws-sdk/credential-provider-login": "^3.972.38",
+ "@aws-sdk/credential-provider-process": "^3.972.34",
+ "@aws-sdk/credential-provider-sso": "^3.972.38",
+ "@aws-sdk/credential-provider-web-identity": "^3.972.38",
+ "@aws-sdk/nested-clients": "^3.997.6",
"@aws-sdk/types": "^3.973.8",
"@smithy/credential-provider-imds": "^4.2.14",
"@smithy/property-provider": "^4.2.14",
@@ -567,13 +640,13 @@
}
},
"node_modules/@aws-sdk/credential-provider-login": {
- "version": "3.972.32",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.32.tgz",
- "integrity": "sha512-UxgwT1HmZz1QPXuBy5ZUPJNFXOSlhwdQL61eGhWRthF0xRrT02BCOVJ1p5Ejg5AXfnESTWoKPJ7v/sCkNUtB9g==",
+ "version": "3.972.38",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz",
+ "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
- "@aws-sdk/nested-clients": "^3.997.0",
+ "@aws-sdk/core": "^3.974.8",
+ "@aws-sdk/nested-clients": "^3.997.6",
"@aws-sdk/types": "^3.973.8",
"@smithy/property-provider": "^4.2.14",
"@smithy/protocol-http": "^5.3.14",
@@ -586,17 +659,17 @@
}
},
"node_modules/@aws-sdk/credential-provider-node": {
- "version": "3.972.33",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.33.tgz",
- "integrity": "sha512-6pGQnEdSeRvBViTQh/FwaRKB38a3Th+W2mVxuvqAd2Z1Ayo3e6eJ5QqJoZwEMwR6xoxkl3wz3qAfiB1xRhMC+w==",
+ "version": "3.972.39",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz",
+ "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/credential-provider-env": "^3.972.28",
- "@aws-sdk/credential-provider-http": "^3.972.30",
- "@aws-sdk/credential-provider-ini": "^3.972.32",
- "@aws-sdk/credential-provider-process": "^3.972.28",
- "@aws-sdk/credential-provider-sso": "^3.972.32",
- "@aws-sdk/credential-provider-web-identity": "^3.972.32",
+ "@aws-sdk/credential-provider-env": "^3.972.34",
+ "@aws-sdk/credential-provider-http": "^3.972.36",
+ "@aws-sdk/credential-provider-ini": "^3.972.38",
+ "@aws-sdk/credential-provider-process": "^3.972.34",
+ "@aws-sdk/credential-provider-sso": "^3.972.38",
+ "@aws-sdk/credential-provider-web-identity": "^3.972.38",
"@aws-sdk/types": "^3.973.8",
"@smithy/credential-provider-imds": "^4.2.14",
"@smithy/property-provider": "^4.2.14",
@@ -609,12 +682,12 @@
}
},
"node_modules/@aws-sdk/credential-provider-process": {
- "version": "3.972.28",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.28.tgz",
- "integrity": "sha512-CRAlD8u6oNBhjnX/3ekVGocarD+lFmEn/qeDzytgIdmwrmwMJGFPqS9lGwEfhOTihZKrQ0xSp3z6paX+iXJJhA==",
+ "version": "3.972.34",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz",
+ "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
+ "@aws-sdk/core": "^3.974.8",
"@aws-sdk/types": "^3.973.8",
"@smithy/property-provider": "^4.2.14",
"@smithy/shared-ini-file-loader": "^4.4.9",
@@ -626,14 +699,14 @@
}
},
"node_modules/@aws-sdk/credential-provider-sso": {
- "version": "3.972.32",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.32.tgz",
- "integrity": "sha512-whhmQghRYOt9mJxFyVMhX7eB8n0oA25OCvqoR7dzFAZjmioCkf7WVB22Bc6llM5cFpBXFX7s4Jv+xVq32VPGWg==",
+ "version": "3.972.38",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz",
+ "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
- "@aws-sdk/nested-clients": "^3.997.0",
- "@aws-sdk/token-providers": "3.1033.0",
+ "@aws-sdk/core": "^3.974.8",
+ "@aws-sdk/nested-clients": "^3.997.6",
+ "@aws-sdk/token-providers": "3.1041.0",
"@aws-sdk/types": "^3.973.8",
"@smithy/property-provider": "^4.2.14",
"@smithy/shared-ini-file-loader": "^4.4.9",
@@ -645,13 +718,13 @@
}
},
"node_modules/@aws-sdk/credential-provider-web-identity": {
- "version": "3.972.32",
- "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.32.tgz",
- "integrity": "sha512-Z0Y0LDaqyQDznlmr9gv6n4+eWKKWNgmi9j5L6RENr6wyOCguhO8FRPmqDbVLSw0DPdMqICKnA3PurJiS8bD6Cw==",
+ "version": "3.972.38",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz",
+ "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
- "@aws-sdk/nested-clients": "^3.997.0",
+ "@aws-sdk/core": "^3.974.8",
+ "@aws-sdk/nested-clients": "^3.997.6",
"@aws-sdk/types": "^3.973.8",
"@smithy/property-provider": "^4.2.14",
"@smithy/shared-ini-file-loader": "^4.4.9",
@@ -696,15 +769,15 @@
}
},
"node_modules/@aws-sdk/middleware-flexible-checksums": {
- "version": "3.974.10",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.10.tgz",
- "integrity": "sha512-R9oqyD1hR7aF2UQaYBo90/ILNn8Sq7gl/2Y4WkDDvsaqklqPomso++sFbgYgNmN/Kfx6gqvJwcjSkxJHEBK1tQ==",
+ "version": "3.974.16",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.16.tgz",
+ "integrity": "sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/crc32": "5.2.0",
"@aws-crypto/crc32c": "5.2.0",
"@aws-crypto/util": "5.2.0",
- "@aws-sdk/core": "^3.974.2",
+ "@aws-sdk/core": "^3.974.8",
"@aws-sdk/crc64-nvme": "^3.972.7",
"@aws-sdk/types": "^3.973.8",
"@smithy/is-array-buffer": "^4.2.2",
@@ -712,7 +785,7 @@
"@smithy/protocol-http": "^5.3.14",
"@smithy/types": "^4.14.1",
"@smithy/util-middleware": "^4.2.14",
- "@smithy/util-stream": "^4.5.23",
+ "@smithy/util-stream": "^4.5.25",
"@smithy/util-utf8": "^4.2.2",
"tslib": "^2.6.2"
},
@@ -780,23 +853,23 @@
}
},
"node_modules/@aws-sdk/middleware-sdk-s3": {
- "version": "3.972.31",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.31.tgz",
- "integrity": "sha512-5hS08Fp0Rm+59uGCmkWhZmveXiA7OUV7Wa+IARejdzf9JTZ1qAVeIOE9JoBpsLPvUgEjmsGNHBuFbtGmYyqiqQ==",
+ "version": "3.972.37",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz",
+ "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
+ "@aws-sdk/core": "^3.974.8",
"@aws-sdk/types": "^3.973.8",
"@aws-sdk/util-arn-parser": "^3.972.3",
- "@smithy/core": "^3.23.15",
+ "@smithy/core": "^3.23.17",
"@smithy/node-config-provider": "^4.3.14",
"@smithy/protocol-http": "^5.3.14",
"@smithy/signature-v4": "^5.3.14",
- "@smithy/smithy-client": "^4.12.11",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"@smithy/util-config-provider": "^4.2.2",
"@smithy/util-middleware": "^4.2.14",
- "@smithy/util-stream": "^4.5.23",
+ "@smithy/util-stream": "^4.5.25",
"@smithy/util-utf8": "^4.2.2",
"tslib": "^2.6.2"
},
@@ -819,18 +892,18 @@
}
},
"node_modules/@aws-sdk/middleware-user-agent": {
- "version": "3.972.32",
- "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.32.tgz",
- "integrity": "sha512-HQ0x9DDKqLZOGhDiL2eicYXXkYT5dogE4mw0lAfHCpJ6t7MM0PNIsJl2TZzWKU9SpBzOMXHRa7K6ZLKUJu1y0w==",
+ "version": "3.972.38",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz",
+ "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
+ "@aws-sdk/core": "^3.974.8",
"@aws-sdk/types": "^3.973.8",
- "@aws-sdk/util-endpoints": "^3.996.7",
- "@smithy/core": "^3.23.15",
+ "@aws-sdk/util-endpoints": "^3.996.8",
+ "@smithy/core": "^3.23.17",
"@smithy/protocol-http": "^5.3.14",
"@smithy/types": "^4.14.1",
- "@smithy/util-retry": "^4.3.2",
+ "@smithy/util-retry": "^4.3.6",
"tslib": "^2.6.2"
},
"engines": {
@@ -838,48 +911,48 @@
}
},
"node_modules/@aws-sdk/nested-clients": {
- "version": "3.997.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.0.tgz",
- "integrity": "sha512-4bI5GHjUiY5R8N6PtchpG6tW2Dl8I2IcZNg3JwqwxHRXjfvQlPoo4VMknG4qkd5W0t3Y20rQ6C7pSR561YG5JQ==",
+ "version": "3.997.6",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz",
+ "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==",
"license": "Apache-2.0",
"dependencies": {
"@aws-crypto/sha256-browser": "5.2.0",
"@aws-crypto/sha256-js": "5.2.0",
- "@aws-sdk/core": "^3.974.2",
+ "@aws-sdk/core": "^3.974.8",
"@aws-sdk/middleware-host-header": "^3.972.10",
"@aws-sdk/middleware-logger": "^3.972.10",
"@aws-sdk/middleware-recursion-detection": "^3.972.11",
- "@aws-sdk/middleware-user-agent": "^3.972.32",
- "@aws-sdk/region-config-resolver": "^3.972.12",
- "@aws-sdk/signature-v4-multi-region": "^3.996.19",
+ "@aws-sdk/middleware-user-agent": "^3.972.38",
+ "@aws-sdk/region-config-resolver": "^3.972.13",
+ "@aws-sdk/signature-v4-multi-region": "^3.996.25",
"@aws-sdk/types": "^3.973.8",
- "@aws-sdk/util-endpoints": "^3.996.7",
+ "@aws-sdk/util-endpoints": "^3.996.8",
"@aws-sdk/util-user-agent-browser": "^3.972.10",
- "@aws-sdk/util-user-agent-node": "^3.973.18",
- "@smithy/config-resolver": "^4.4.16",
- "@smithy/core": "^3.23.15",
+ "@aws-sdk/util-user-agent-node": "^3.973.24",
+ "@smithy/config-resolver": "^4.4.17",
+ "@smithy/core": "^3.23.17",
"@smithy/fetch-http-handler": "^5.3.17",
"@smithy/hash-node": "^4.2.14",
"@smithy/invalid-dependency": "^4.2.14",
"@smithy/middleware-content-length": "^4.2.14",
- "@smithy/middleware-endpoint": "^4.4.30",
- "@smithy/middleware-retry": "^4.5.3",
- "@smithy/middleware-serde": "^4.2.18",
+ "@smithy/middleware-endpoint": "^4.4.32",
+ "@smithy/middleware-retry": "^4.5.7",
+ "@smithy/middleware-serde": "^4.2.20",
"@smithy/middleware-stack": "^4.2.14",
"@smithy/node-config-provider": "^4.3.14",
- "@smithy/node-http-handler": "^4.5.3",
+ "@smithy/node-http-handler": "^4.6.1",
"@smithy/protocol-http": "^5.3.14",
- "@smithy/smithy-client": "^4.12.11",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"@smithy/url-parser": "^4.2.14",
"@smithy/util-base64": "^4.3.2",
"@smithy/util-body-length-browser": "^4.2.2",
"@smithy/util-body-length-node": "^4.2.3",
- "@smithy/util-defaults-mode-browser": "^4.3.47",
- "@smithy/util-defaults-mode-node": "^4.2.52",
- "@smithy/util-endpoints": "^3.4.1",
+ "@smithy/util-defaults-mode-browser": "^4.3.49",
+ "@smithy/util-defaults-mode-node": "^4.2.54",
+ "@smithy/util-endpoints": "^3.4.2",
"@smithy/util-middleware": "^4.2.14",
- "@smithy/util-retry": "^4.3.2",
+ "@smithy/util-retry": "^4.3.6",
"@smithy/util-utf8": "^4.2.2",
"tslib": "^2.6.2"
},
@@ -888,13 +961,13 @@
}
},
"node_modules/@aws-sdk/region-config-resolver": {
- "version": "3.972.12",
- "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.12.tgz",
- "integrity": "sha512-QQI43Mxd53nBij0pm8HXC+t4IOC6gnhhZfzxE0OATQyO6QfPV4e+aTIRRuAJKA6Nig/cR8eLwPryqYTX9ZrjAQ==",
+ "version": "3.972.13",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz",
+ "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==",
"license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "^3.973.8",
- "@smithy/config-resolver": "^4.4.16",
+ "@smithy/config-resolver": "^4.4.17",
"@smithy/node-config-provider": "^4.3.14",
"@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
@@ -904,17 +977,17 @@
}
},
"node_modules/@aws-sdk/s3-request-presigner": {
- "version": "3.1033.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.1033.0.tgz",
- "integrity": "sha512-8PVtuRzL9k59TgceC2KXA4SbG5V+nKzwO0YVtpp3ylf3Ios1DB7+psoMFS/P6zmsCHMT+S3ChrIUDXv4QmRawQ==",
+ "version": "3.1043.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.1043.0.tgz",
+ "integrity": "sha512-IgHbDo7c2crU4aGa7FjlMAUUAPgiN4koR060ImbzcFRd2G0v0PXio599O+VDjdmIbOqZwGRQHTbfBKhnDbQZ7g==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/signature-v4-multi-region": "^3.996.19",
+ "@aws-sdk/signature-v4-multi-region": "^3.996.25",
"@aws-sdk/types": "^3.973.8",
"@aws-sdk/util-format-url": "^3.972.10",
- "@smithy/middleware-endpoint": "^4.4.30",
+ "@smithy/middleware-endpoint": "^4.4.32",
"@smithy/protocol-http": "^5.3.14",
- "@smithy/smithy-client": "^4.12.11",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
@@ -923,12 +996,12 @@
}
},
"node_modules/@aws-sdk/signature-v4-multi-region": {
- "version": "3.996.19",
- "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.19.tgz",
- "integrity": "sha512-7Sy8+GhfwUi06NQNLplxuJuXMKJURDsNQfK8yTW6E9wN2J1B+8S5dWZG7vg3InvPPhaXqkcYTr8pzeE+dLjMbQ==",
+ "version": "3.996.25",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz",
+ "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-sdk-s3": "^3.972.31",
+ "@aws-sdk/middleware-sdk-s3": "^3.972.37",
"@aws-sdk/types": "^3.973.8",
"@smithy/protocol-http": "^5.3.14",
"@smithy/signature-v4": "^5.3.14",
@@ -940,13 +1013,13 @@
}
},
"node_modules/@aws-sdk/token-providers": {
- "version": "3.1033.0",
- "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1033.0.tgz",
- "integrity": "sha512-/TsXhqjyRAFb0xVgmbFAha3cJfZdWjnyn6ohJ3AB4E3peLgxNcmKfYr45hruHymyJAydiHoXC3N1a8qgl41cog==",
+ "version": "3.1041.0",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz",
+ "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/core": "^3.974.2",
- "@aws-sdk/nested-clients": "^3.997.0",
+ "@aws-sdk/core": "^3.974.8",
+ "@aws-sdk/nested-clients": "^3.997.6",
"@aws-sdk/types": "^3.973.8",
"@smithy/property-provider": "^4.2.14",
"@smithy/shared-ini-file-loader": "^4.4.9",
@@ -983,15 +1056,15 @@
}
},
"node_modules/@aws-sdk/util-endpoints": {
- "version": "3.996.7",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.7.tgz",
- "integrity": "sha512-ty4LQxN1QC+YhUP28NfEgZDEGXkyqOQy+BDriBozqHsrYO4JMgiPhfizqOGF7P+euBTZ5Ez6SKlLAMCLo8tzmw==",
+ "version": "3.996.8",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz",
+ "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==",
"license": "Apache-2.0",
"dependencies": {
"@aws-sdk/types": "^3.973.8",
"@smithy/types": "^4.14.1",
"@smithy/url-parser": "^4.2.14",
- "@smithy/util-endpoints": "^3.4.1",
+ "@smithy/util-endpoints": "^3.4.2",
"tslib": "^2.6.2"
},
"engines": {
@@ -1038,12 +1111,12 @@
}
},
"node_modules/@aws-sdk/util-user-agent-node": {
- "version": "3.973.18",
- "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.18.tgz",
- "integrity": "sha512-Nh4YvAL0Mzv5jBvzXLFL0tLf7WPrRMnYZQ5jlFuyS0xiVJQsObMUKAkbYjmt/e04wpQqUaa+Is7k+mBr89A9yA==",
+ "version": "3.973.24",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz",
+ "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==",
"license": "Apache-2.0",
"dependencies": {
- "@aws-sdk/middleware-user-agent": "^3.972.32",
+ "@aws-sdk/middleware-user-agent": "^3.972.38",
"@aws-sdk/types": "^3.973.8",
"@smithy/node-config-provider": "^4.3.14",
"@smithy/types": "^4.14.1",
@@ -1063,13 +1136,14 @@
}
},
"node_modules/@aws-sdk/xml-builder": {
- "version": "3.972.18",
- "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.18.tgz",
- "integrity": "sha512-BMDNVG1ETXRhl1tnisQiYBef3RShJ1kfZA7x7afivTFMLirfHNTb6U71K569HNXhSXbQZsweHvSDZ6euBw8hPA==",
+ "version": "3.972.22",
+ "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz",
+ "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==",
"license": "Apache-2.0",
"dependencies": {
+ "@nodable/entities": "2.1.0",
"@smithy/types": "^4.14.1",
- "fast-xml-parser": "5.5.8",
+ "fast-xml-parser": "5.7.2",
"tslib": "^2.6.2"
},
"engines": {
@@ -1101,9 +1175,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.29.0",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
- "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+ "version": "7.29.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz",
+ "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -1292,9 +1366,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.29.2",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
- "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
+ "version": "7.29.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz",
+ "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1611,29 +1685,6 @@
"url": "https://github.com/sponsors/Borewit"
}
},
- "node_modules/@clack/core": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@clack/core/-/core-0.5.0.tgz",
- "integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "picocolors": "^1.0.0",
- "sisteransi": "^1.0.5"
- }
- },
- "node_modules/@clack/prompts": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-0.11.0.tgz",
- "integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "@clack/core": "0.5.0",
- "picocolors": "^1.0.0",
- "sisteransi": "^1.0.5"
- }
- },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -1700,9 +1751,9 @@
}
},
"node_modules/@emnapi/core": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz",
- "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz",
+ "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1712,9 +1763,9 @@
}
},
"node_modules/@emnapi/runtime": {
- "version": "1.9.2",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz",
- "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz",
+ "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -1904,29 +1955,43 @@
}
},
"node_modules/@humanfs/core": {
- "version": "0.19.1",
- "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
- "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
+ "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
"dev": true,
"license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/types": "^0.15.0"
+ },
"engines": {
"node": ">=18.18.0"
}
},
"node_modules/@humanfs/node": {
- "version": "0.16.7",
- "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
- "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
+ "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "@humanfs/core": "^0.19.1",
+ "@humanfs/core": "^0.19.2",
+ "@humanfs/types": "^0.15.0",
"@humanwhocodes/retry": "^0.4.0"
},
"engines": {
"node": ">=18.18.0"
}
},
+ "node_modules/@humanfs/types": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
+ "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
+ },
"node_modules/@humanwhocodes/module-importer": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
@@ -2516,9 +2581,9 @@
}
},
"node_modules/@istanbuljs/schema": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
- "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "version": "0.1.6",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz",
+ "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -2745,9 +2810,9 @@
}
},
"node_modules/@jest/reporters/node_modules/brace-expansion": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
- "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3028,15 +3093,15 @@
}
},
"node_modules/@nestjs/cli": {
- "version": "11.0.17",
- "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.17.tgz",
- "integrity": "sha512-tOMgoB9k+Zb2WdKYPhbhceROLcDR1BFQZWfkBOGMRgBTo8rnC125E65UvThEA77vp4w+zKjqiSIv0leT+wdpHg==",
+ "version": "11.0.21",
+ "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-11.0.21.tgz",
+ "integrity": "sha512-F8mV0Sj/zVEouzR3NxBuJy08YHTUOmC5Xdcx3qIIaJWzrm8Vw86CHkhkaPBJ5ewRMHPDCShPmhsfwhpCcjts3A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "19.2.22",
- "@angular-devkit/schematics": "19.2.22",
- "@angular-devkit/schematics-cli": "19.2.22",
+ "@angular-devkit/core": "19.2.24",
+ "@angular-devkit/schematics": "19.2.24",
+ "@angular-devkit/schematics-cli": "19.2.24",
"@inquirer/prompts": "7.10.1",
"@nestjs/schematics": "^11.0.1",
"ansis": "4.2.0",
@@ -3050,7 +3115,7 @@
"tsconfig-paths": "4.2.0",
"tsconfig-paths-webpack-plugin": "4.2.0",
"typescript": "5.9.3",
- "webpack": "5.105.4",
+ "webpack": "5.106.0",
"webpack-node-externals": "3.0.0"
},
"bin": {
@@ -3060,7 +3125,7 @@
"node": ">= 20.11"
},
"peerDependencies": {
- "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0",
+ "@swc/cli": "^0.1.62 || ^0.3.0 || ^0.4.0 || ^0.5.0 || ^0.6.0 || ^0.7.0 || ^0.8.0",
"@swc/core": "^1.3.62"
},
"peerDependenciesMeta": {
@@ -3072,10 +3137,229 @@
}
}
},
+ "node_modules/@nestjs/cli/node_modules/@angular-devkit/core": {
+ "version": "19.2.24",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.24.tgz",
+ "integrity": "sha512-Kd49warf6U/EyWe5BszF/eebN3zQ3bk7tgfEljAw8q/rX95UUtriJubWvp6pgzHfzBA4jwq8f+QiNZB8eBEXPA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "8.18.0",
+ "ajv-formats": "3.0.1",
+ "jsonc-parser": "3.3.1",
+ "picomatch": "4.0.4",
+ "rxjs": "7.8.1",
+ "source-map": "0.7.4"
+ },
+ "engines": {
+ "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
+ "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
+ "yarn": ">= 1.13.0"
+ },
+ "peerDependencies": {
+ "chokidar": "^4.0.0"
+ },
+ "peerDependenciesMeta": {
+ "chokidar": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/ajv": {
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
+ "json-schema-traverse": "^1.0.0",
+ "require-from-string": "^2.0.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/ajv-keywords": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz",
+ "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.3"
+ },
+ "peerDependencies": {
+ "ajv": "^8.8.2"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/eslint-scope": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
+ "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "esrecurse": "^4.3.0",
+ "estraverse": "^4.1.1"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/json-schema-traverse": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@nestjs/cli/node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/rxjs": {
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslib": "^2.1.0"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/schema-utils": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz",
+ "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/json-schema": "^7.0.9",
+ "ajv": "^8.9.0",
+ "ajv-formats": "^2.1.1",
+ "ajv-keywords": "^5.1.0"
+ },
+ "engines": {
+ "node": ">= 10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/schema-utils/node_modules/ajv-formats": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz",
+ "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependencies": {
+ "ajv": "^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "ajv": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/@nestjs/cli/node_modules/webpack": {
+ "version": "5.106.0",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.0.tgz",
+ "integrity": "sha512-Pkx5joZ9RrdgO5LBkyX1L2ZAJeK/Taz3vqZ9CbcP0wS5LEMx5QkKsEwLl29QJfihZ+DKRBFldzy1O30pJ1MDpA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/eslint-scope": "^3.7.7",
+ "@types/estree": "^1.0.8",
+ "@types/json-schema": "^7.0.15",
+ "@webassemblyjs/ast": "^1.14.1",
+ "@webassemblyjs/wasm-edit": "^1.14.1",
+ "@webassemblyjs/wasm-parser": "^1.14.1",
+ "acorn": "^8.16.0",
+ "acorn-import-phases": "^1.0.3",
+ "browserslist": "^4.28.1",
+ "chrome-trace-event": "^1.0.2",
+ "enhanced-resolve": "^5.20.0",
+ "es-module-lexer": "^2.0.0",
+ "eslint-scope": "5.1.1",
+ "events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
+ "graceful-fs": "^4.2.11",
+ "json-parse-even-better-errors": "^2.3.1",
+ "loader-runner": "^4.3.1",
+ "mime-types": "^2.1.27",
+ "neo-async": "^2.6.2",
+ "schema-utils": "^4.3.3",
+ "tapable": "^2.3.0",
+ "terser-webpack-plugin": "^5.3.17",
+ "watchpack": "^2.5.1",
+ "webpack-sources": "^3.3.4"
+ },
+ "bin": {
+ "webpack": "bin/webpack.js"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ },
+ "peerDependenciesMeta": {
+ "webpack-cli": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@nestjs/common": {
- "version": "11.1.18",
- "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.18.tgz",
- "integrity": "sha512-0sLq8Z+TIjLnz1Tqp0C/x9BpLbqpt1qEu0VcH4/fkE0y3F5JxhfK1AdKQ/SPbKhKgwqVDoY4gS8GQr2G6ujaWg==",
+ "version": "11.1.19",
+ "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.19.tgz",
+ "integrity": "sha512-qeiTt2tv+e5QyDKqG8HlVZb2wx64FEaSGFJouqTSRs+kG44iTfl3xlz1XqVped+rihx4hmjWgL5gkhtdK3E6+Q==",
"license": "MIT",
"dependencies": {
"file-type": "21.3.4",
@@ -3104,14 +3388,14 @@
}
},
"node_modules/@nestjs/config": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.3.tgz",
- "integrity": "sha512-FQ3M3Ohqfl+nHAn5tp7++wUQw0f2nAk+SFKe8EpNRnIifPqvfJP6JQxPKtFLMOHbyer4X646prFG4zSRYEssQQ==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-4.0.4.tgz",
+ "integrity": "sha512-CJPjNitr0bAufSEnRe2N+JbnVmMmDoo6hvKCPzXgZoGwJSmp/dZPk9f/RMbuD/+Q1ZJPjwsRpq0vxna++Knwow==",
"license": "MIT",
"dependencies": {
- "dotenv": "17.2.3",
+ "dotenv": "17.4.1",
"dotenv-expand": "12.0.3",
- "lodash": "4.17.23"
+ "lodash": "4.18.1"
},
"peerDependencies": {
"@nestjs/common": "^10.0.0 || ^11.0.0",
@@ -3119,9 +3403,9 @@
}
},
"node_modules/@nestjs/config/node_modules/dotenv": {
- "version": "17.2.3",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz",
- "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==",
+ "version": "17.4.1",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.1.tgz",
+ "integrity": "sha512-k8DaKGP6r1G30Lx8V4+pCsLzKr8vLmV2paqEj1Y55GdAgJuIqpRp5FfajGF8KtwMxCz9qJc6wUIJnm053d/WCw==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
@@ -3130,16 +3414,10 @@
"url": "https://dotenvx.com"
}
},
- "node_modules/@nestjs/config/node_modules/lodash": {
- "version": "4.17.23",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
- "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
- "license": "MIT"
- },
"node_modules/@nestjs/core": {
- "version": "11.1.18",
- "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.18.tgz",
- "integrity": "sha512-wR3DtGyk/LUAiPtbXDuWJJwVkWElKBY0sqnTzf9d4uM3+X18FRZhK7WFc47czsIGOdWuRsMeLYV+1Z9dO4zDEQ==",
+ "version": "11.1.19",
+ "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.1.19.tgz",
+ "integrity": "sha512-6nJkWa2efrYi+XlU686J9y5L7OvxpLVjT0T/sxRKE7Jvpffiihelup4WSvLvRhdHDjj/5SuoWEwqReXAaaeHmw==",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {
@@ -3178,9 +3456,9 @@
}
},
"node_modules/@nestjs/platform-express": {
- "version": "11.1.18",
- "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.18.tgz",
- "integrity": "sha512-s6GdHMTa3qx0fJewR74Xa30ysPHfBEqxIwZ7BGSTLoAEQ1vTP24urNl+b6+s49NFLEIOyeNho5fN/9/I17QlOw==",
+ "version": "11.1.19",
+ "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.1.19.tgz",
+ "integrity": "sha512-Vpdv8jyCQdThfoTx+UTn+DRYr6H6X02YUqcpZ3qP6G3ZUwtVp7eS+hoQPGd4UuCnlnFG8Wqr2J9bGEzQdi1rIg==",
"license": "MIT",
"dependencies": {
"cors": "2.8.6",
@@ -3199,26 +3477,32 @@
}
},
"node_modules/@nestjs/schematics": {
- "version": "11.0.10",
- "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.0.10.tgz",
- "integrity": "sha512-q9lr0wGwgBHLarD4uno3XiW4JX60WPlg2VTgbqPHl/6bT4u1IEEzj+q9Tad3bVnqL5mlDF3vrZ2tj+x13CJpmw==",
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-11.1.0.tgz",
+ "integrity": "sha512-lVxGZ46tcdItFMoXr6vyKWlnOsm1SZm/GUqAEDvy2RL4Q4O+3bkziAhrO7Y8JLssFUUvNFEGqAizI52WAxhjDw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@angular-devkit/core": "19.2.23",
- "@angular-devkit/schematics": "19.2.23",
- "comment-json": "4.6.2",
+ "@angular-devkit/core": "19.2.24",
+ "@angular-devkit/schematics": "19.2.24",
+ "comment-json": "5.0.0",
"jsonc-parser": "3.3.1",
"pluralize": "8.0.0"
},
"peerDependencies": {
+ "prettier": "^3.0.0",
"typescript": ">=4.8.2"
+ },
+ "peerDependenciesMeta": {
+ "prettier": {
+ "optional": true
+ }
}
},
"node_modules/@nestjs/schematics/node_modules/@angular-devkit/core": {
- "version": "19.2.23",
- "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.23.tgz",
- "integrity": "sha512-RazHPQkUEsNU/OZ75w9UeHxGFMthRiuAW2B/uA7eXExBj/1meHrrBfoCA56ujW2GUxVjRtSrMjylKh4R4meiYA==",
+ "version": "19.2.24",
+ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.24.tgz",
+ "integrity": "sha512-Kd49warf6U/EyWe5BszF/eebN3zQ3bk7tgfEljAw8q/rX95UUtriJubWvp6pgzHfzBA4jwq8f+QiNZB8eBEXPA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3243,25 +3527,6 @@
}
}
},
- "node_modules/@nestjs/schematics/node_modules/@angular-devkit/schematics": {
- "version": "19.2.23",
- "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.23.tgz",
- "integrity": "sha512-Jzs7YM4X6azmHU7Mw5tQSPMuvaqYS8SLnZOJbtiXCy1JyuW9bm/WBBecNHMiuZ8LHXKhvQ6AVX1tKrzF6uiDmw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@angular-devkit/core": "19.2.23",
- "jsonc-parser": "3.3.1",
- "magic-string": "0.30.17",
- "ora": "5.4.1",
- "rxjs": "7.8.1"
- },
- "engines": {
- "node": "^18.19.1 || ^20.11.1 || >=22.0.0",
- "npm": "^6.11.0 || ^7.5.6 || >=8.0.0",
- "yarn": ">= 1.13.0"
- }
- },
"node_modules/@nestjs/schematics/node_modules/ajv": {
"version": "8.18.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
@@ -3286,19 +3551,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/@nestjs/schematics/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/@nestjs/schematics/node_modules/rxjs": {
"version": "7.8.1",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
@@ -3309,10 +3561,20 @@
"tslib": "^2.1.0"
}
},
+ "node_modules/@nestjs/schematics/node_modules/source-map": {
+ "version": "0.7.4",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
+ "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 8"
+ }
+ },
"node_modules/@nestjs/testing": {
- "version": "11.1.18",
- "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.18.tgz",
- "integrity": "sha512-frzwNlpBgtAzI3hp/qo57DZoRO4RMTH1wST3QUYEhRTHyfPkLpzkWz3jV/mhApXjD0yT56Ptlzn6zuYPLh87Lw==",
+ "version": "11.1.19",
+ "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-11.1.19.tgz",
+ "integrity": "sha512-/UFNWXvPEdu4v4DlC5oWLbGKmD27LehLK06b8oLzs6D6lf4vAQTdST8LRAXBadyMUQnVEQWMuBo3CtAVtlfXtQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3350,6 +3612,18 @@
"url": "https://paulmillr.com/funding/"
}
},
+ "node_modules/@nodable/entities": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz",
+ "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodable"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/@nuxt/opencollective": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.4.1.tgz",
@@ -3401,24 +3675,24 @@
}
},
"node_modules/@prisma/adapter-pg": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.6.0.tgz",
- "integrity": "sha512-BjHNmJqqa42NqJSDPnXUfwUofWo8LJY7Ui2gqxN4DmAOb+H/gGKv+hln2Xq/1kSJXPW5AXMXuNiPDMpywvyIOw==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.8.0.tgz",
+ "integrity": "sha512-ygb3UkerK3v8MDpXVgCISdRNDozpxh6+JVJgiIGbSr5KBgz10LLf5ejUskPGoXlsIjxsOu6nuy1JVQr2EKGSlg==",
"license": "Apache-2.0",
"dependencies": {
- "@prisma/driver-adapter-utils": "7.6.0",
+ "@prisma/driver-adapter-utils": "7.8.0",
"@types/pg": "^8.16.0",
"pg": "^8.16.3",
"postgres-array": "3.0.4"
}
},
"node_modules/@prisma/client": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.6.0.tgz",
- "integrity": "sha512-7Pe/1ayh3GgWPEg4mmT4ax77LJ1wC+XlnIFvQ94bLP2DsUnOpnruQQR3Jw7r+Frthk94QqDNxo3FjSg8h9PXeQ==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.8.0.tgz",
+ "integrity": "sha512-HFp3Dawv/3sU3JtlPha90IB+48lS7zHiH4LKZPjmcE8YH5P9DOXGPvo8dqOtO7MqLDd1p2hOWMcFlRT1DMblHw==",
"license": "Apache-2.0",
"dependencies": {
- "@prisma/client-runtime-utils": "7.6.0"
+ "@prisma/client-runtime-utils": "7.8.0"
},
"engines": {
"node": "^20.19 || ^22.12 || >=24.0"
@@ -3437,28 +3711,28 @@
}
},
"node_modules/@prisma/client-runtime-utils": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.6.0.tgz",
- "integrity": "sha512-fD7jlqubsZvVODKvsp9lOpXVecx2aWGxC2l35Ioz2t+teUJ5CfR0SAMsi7UkU1VvaZmmm+DS6BdujF622nY7tQ==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.8.0.tgz",
+ "integrity": "sha512-5NQZztQ0oY/ADFkmd9gPuweH5A1/CCY8YQPorLLO0Mu6a87mY5gsnDkzmFmIHs9NFaLnZojzgddFVN4RpKYrdw==",
"license": "Apache-2.0"
},
"node_modules/@prisma/config": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.6.0.tgz",
- "integrity": "sha512-MuAz1MK4PeG5/03YzfzX3CnFVHQ6qePGwUpQRzPzX5tT0ffJ3Tzi9zJZbBc+VzEGFCM8ghW/gTVDR85Syjt+Yw==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.8.0.tgz",
+ "integrity": "sha512-HFESzd9rx2ZQxlK+TL7tu1HPvCqrHiL6LCxYykI2c34mvaUuIVVl3lYuicJD/MNnzgPnyeBEMlK4WTomJCV5jw==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
- "c12": "3.1.0",
+ "c12": "3.3.4",
"deepmerge-ts": "7.1.5",
"effect": "3.20.0",
"empathic": "2.0.0"
}
},
"node_modules/@prisma/debug": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.6.0.tgz",
- "integrity": "sha512-LpHr3qos4lQZ6sxwjStf59YBht7m9/QF7NSQsMH6qGENWZu2w3UkQUGn1h5iRkDjnWRj3VHykOu9qFhps4ADvA==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.8.0.tgz",
+ "integrity": "sha512-p+QZReysDUqXC+mk17q9a+Y/qzh4c2KYliDK30buYUyfrGeTGSyfmc0AIrJRhZJrLHhRiJa9Au/J72h3C+szvA==",
"license": "Apache-2.0"
},
"node_modules/@prisma/dev": {
@@ -3488,65 +3762,65 @@
}
},
"node_modules/@prisma/driver-adapter-utils": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.6.0.tgz",
- "integrity": "sha512-D8j3p0RnhLuufMaRLX6QqtGgPC5Ao3l5oFP6Q5AL0rTHi4vna+NzGEipwCsfvcSvaGFCbsH3lsTMbb4WvY+ovA==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.8.0.tgz",
+ "integrity": "sha512-/Q13o0ZT0rjc1Xk0Q9KhZYwuq2EW/vSbWUBKfgEKkaCuB/Sg6bqnjmTZqC5cD4d6y1vfFAEwBRzfzoSMIVJ55A==",
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "7.6.0"
+ "@prisma/debug": "7.8.0"
}
},
"node_modules/@prisma/engines": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.6.0.tgz",
- "integrity": "sha512-Sn5edRzhHqgRV2M+A0eIbY442B4mReWWf3pKs/LKreYgW7oa/up8JtK/s4iv/EQA097cyboZ08mmkpbLp+tZ3w==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.8.0.tgz",
+ "integrity": "sha512-jx3rCnNNrt5uzbkKlegtQ2GZHxSlihMCzutgT/BP6UIDF1r9tDI39hV/0T/cHZgzJ3ELbuQPXlVZy+Y1n0pcgw==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "7.6.0",
- "@prisma/engines-version": "7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711",
- "@prisma/fetch-engine": "7.6.0",
- "@prisma/get-platform": "7.6.0"
+ "@prisma/debug": "7.8.0",
+ "@prisma/engines-version": "7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a",
+ "@prisma/fetch-engine": "7.8.0",
+ "@prisma/get-platform": "7.8.0"
}
},
"node_modules/@prisma/engines-version": {
- "version": "7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711",
- "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711.tgz",
- "integrity": "sha512-r51DLcJ8bDRSrBEJF3J4cinoWyGA7rfP2mG6lD90VqIbGNOkbfcLcXalSVjq5Y6brQS3vcjrq4GbyUb1Cb7vkw==",
+ "version": "7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a",
+ "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a.tgz",
+ "integrity": "sha512-fJPQxCkLgA5EayWaW8eArgCvjJ+N+Kz3VyeNKMEeYiQC4alNkxRKFVAGxv/ZUzuJISKqdw+zGeDbS6mn6RCPOA==",
"devOptional": true,
"license": "Apache-2.0"
},
"node_modules/@prisma/engines/node_modules/@prisma/get-platform": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.6.0.tgz",
- "integrity": "sha512-ohZDwXvtmnbzOcutR2D13lDWpZP1wQjmPyztmt0AwXLzQI7q95EE7NYCvS+M6N6SivT+BM0NOqLmTH3wms4L3A==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.8.0.tgz",
+ "integrity": "sha512-WlxgRGnolL8VH2EmkH1R/DkKNr/mVdS3G2h42IZFFZ3eUrH9OT6t73kIOSlkkrv50wG123Iq8d96ufv5LlZktw==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "7.6.0"
+ "@prisma/debug": "7.8.0"
}
},
"node_modules/@prisma/fetch-engine": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.6.0.tgz",
- "integrity": "sha512-N575Ni95c3FkduWY/eKTHqNYgNbceZ1tQaSknVtJjpKmiiBXmniESn/GTxsDvICC4ZeiNrXxioGInzQrCdx16w==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.8.0.tgz",
+ "integrity": "sha512-gwB0Euiz/DDRyxFRpLXYlK3RfaZUj1c5dAYMuhZYfApg7arknJlcb9bIsOHDppJmbqYaVA+yBIiFMDBfprsNPQ==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "7.6.0",
- "@prisma/engines-version": "7.6.0-1.75cbdc1eb7150937890ad5465d861175c6624711",
- "@prisma/get-platform": "7.6.0"
+ "@prisma/debug": "7.8.0",
+ "@prisma/engines-version": "7.8.0-6.3c6e192761c0362d496ed980de936e2f3cebcd3a",
+ "@prisma/get-platform": "7.8.0"
}
},
"node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.6.0.tgz",
- "integrity": "sha512-ohZDwXvtmnbzOcutR2D13lDWpZP1wQjmPyztmt0AwXLzQI7q95EE7NYCvS+M6N6SivT+BM0NOqLmTH3wms4L3A==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.8.0.tgz",
+ "integrity": "sha512-WlxgRGnolL8VH2EmkH1R/DkKNr/mVdS3G2h42IZFFZ3eUrH9OT6t73kIOSlkkrv50wG123Iq8d96ufv5LlZktw==",
"devOptional": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/debug": "7.6.0"
+ "@prisma/debug": "7.8.0"
}
},
"node_modules/@prisma/get-platform": {
@@ -3591,9 +3865,9 @@
}
},
"node_modules/@prisma/streams-local/node_modules/ajv": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
- "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
@@ -3799,9 +4073,9 @@
}
},
"node_modules/@sinonjs/fake-timers": {
- "version": "15.3.0",
- "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.3.0.tgz",
- "integrity": "sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==",
+ "version": "15.4.0",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz",
+ "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -3851,9 +4125,9 @@
}
},
"node_modules/@smithy/core": {
- "version": "3.23.16",
- "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.16.tgz",
- "integrity": "sha512-JStomOrINQA1VqNEopLsgcdgwd42au7mykKqVr30XFw89wLt9sDxJDi4djVPRwQmmzyTGy/uOvTc2ultMpFi1w==",
+ "version": "3.23.17",
+ "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.17.tgz",
+ "integrity": "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/protocol-http": "^5.3.14",
@@ -3862,7 +4136,7 @@
"@smithy/util-base64": "^4.3.2",
"@smithy/util-body-length-browser": "^4.2.2",
"@smithy/util-middleware": "^4.2.14",
- "@smithy/util-stream": "^4.5.24",
+ "@smithy/util-stream": "^4.5.25",
"@smithy/util-utf8": "^4.2.2",
"@smithy/uuid": "^1.1.2",
"tslib": "^2.6.2"
@@ -4071,13 +4345,13 @@
}
},
"node_modules/@smithy/middleware-endpoint": {
- "version": "4.4.31",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.31.tgz",
- "integrity": "sha512-KJPdCIN2kOE2aGmqZd7eUTr4WQwOGgtLWgUkswGJggs7rBcQYQjcZMEDa3C0DwbOiXS9L8/wDoQHkfxBYLfiLw==",
+ "version": "4.4.32",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.32.tgz",
+ "integrity": "sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.23.16",
- "@smithy/middleware-serde": "^4.2.19",
+ "@smithy/core": "^3.23.17",
+ "@smithy/middleware-serde": "^4.2.20",
"@smithy/node-config-provider": "^4.3.14",
"@smithy/shared-ini-file-loader": "^4.4.9",
"@smithy/types": "^4.14.1",
@@ -4090,19 +4364,19 @@
}
},
"node_modules/@smithy/middleware-retry": {
- "version": "4.5.4",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.4.tgz",
- "integrity": "sha512-/z7nIFK+ZRW3Ie/l3NEVGdy34LvmEOzBrtBAvgWZ/4PrKX0xP3kWm8pkfcwUk523SqxZhdbQP9JSXgjF77Uhpw==",
+ "version": "4.5.7",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.7.tgz",
+ "integrity": "sha512-bRt6ZImqVSeTk39Nm81K20ObIiAZ3WefY7G6+iz/0tZjs4dgRRjvRX2sgsH+zi6iDCRR/aQvQofLKxxz4rPBZg==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.23.16",
+ "@smithy/core": "^3.23.17",
"@smithy/node-config-provider": "^4.3.14",
"@smithy/protocol-http": "^5.3.14",
- "@smithy/service-error-classification": "^4.3.0",
- "@smithy/smithy-client": "^4.12.12",
+ "@smithy/service-error-classification": "^4.3.1",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"@smithy/util-middleware": "^4.2.14",
- "@smithy/util-retry": "^4.3.3",
+ "@smithy/util-retry": "^4.3.6",
"@smithy/uuid": "^1.1.2",
"tslib": "^2.6.2"
},
@@ -4111,12 +4385,12 @@
}
},
"node_modules/@smithy/middleware-serde": {
- "version": "4.2.19",
- "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.19.tgz",
- "integrity": "sha512-Q6y+W9h3iYVMCKWDoVge+OC1LKFqbEKaq8SIWG2X2bWJRpd/6dDLyICcNLT6PbjH3Rr6bmg/SeDB25XFOFfeEw==",
+ "version": "4.2.20",
+ "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.20.tgz",
+ "integrity": "sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.23.16",
+ "@smithy/core": "^3.23.17",
"@smithy/protocol-http": "^5.3.14",
"@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
@@ -4154,9 +4428,9 @@
}
},
"node_modules/@smithy/node-http-handler": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.6.0.tgz",
- "integrity": "sha512-P734cAoTFtuGfWa/R3jgBnGlURt2w9bYEBwQNMKf58sRM9RShirB2mKwLsVP+jlG/wxpCu8abv8NxdUts8tdLA==",
+ "version": "4.6.1",
+ "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.6.1.tgz",
+ "integrity": "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/protocol-http": "^5.3.14",
@@ -4222,9 +4496,9 @@
}
},
"node_modules/@smithy/service-error-classification": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.3.0.tgz",
- "integrity": "sha512-9jKsBYQRPR0xBLgc2415RsA5PIcP2sis4oBdN9s0D13cg1B1284mNTjx9Yc+BEERXzuPm5ObktI96OxsKh8E9A==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.3.1.tgz",
+ "integrity": "sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.14.1"
@@ -4266,17 +4540,17 @@
}
},
"node_modules/@smithy/smithy-client": {
- "version": "4.12.12",
- "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.12.tgz",
- "integrity": "sha512-daO7SJn4eM6ArbmrEs+/BTbH7af8AEbSL3OMQdcRvvn8tuUcR5rU2n6DgxIV53aXMS42uwK8NgKKCh5XgqYOPQ==",
+ "version": "4.12.13",
+ "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.13.tgz",
+ "integrity": "sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/core": "^3.23.16",
- "@smithy/middleware-endpoint": "^4.4.31",
+ "@smithy/core": "^3.23.17",
+ "@smithy/middleware-endpoint": "^4.4.32",
"@smithy/middleware-stack": "^4.2.14",
"@smithy/protocol-http": "^5.3.14",
"@smithy/types": "^4.14.1",
- "@smithy/util-stream": "^4.5.24",
+ "@smithy/util-stream": "^4.5.25",
"tslib": "^2.6.2"
},
"engines": {
@@ -4373,13 +4647,13 @@
}
},
"node_modules/@smithy/util-defaults-mode-browser": {
- "version": "4.3.48",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.48.tgz",
- "integrity": "sha512-hxVRVPYaRDWa6YQdse1aWX1qrksmLsvNyGBKdc32q4jFzSjxYVNWfstknAfR228TnzS4tzgswXRuYIbhXBuXFQ==",
+ "version": "4.3.49",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.49.tgz",
+ "integrity": "sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/property-provider": "^4.2.14",
- "@smithy/smithy-client": "^4.12.12",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
@@ -4388,16 +4662,16 @@
}
},
"node_modules/@smithy/util-defaults-mode-node": {
- "version": "4.2.53",
- "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.53.tgz",
- "integrity": "sha512-ybgCk+9JdBq8pYC8Y6U5fjyS8e4sboyAShetxPNL0rRBtaVl56GSFAxsolVBIea1tXR4LPIzL8i6xqmcf0+DCQ==",
+ "version": "4.2.54",
+ "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.54.tgz",
+ "integrity": "sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/config-resolver": "^4.4.17",
"@smithy/credential-provider-imds": "^4.2.14",
"@smithy/node-config-provider": "^4.3.14",
"@smithy/property-provider": "^4.2.14",
- "@smithy/smithy-client": "^4.12.12",
+ "@smithy/smithy-client": "^4.12.13",
"@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
@@ -4445,12 +4719,12 @@
}
},
"node_modules/@smithy/util-retry": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.3.tgz",
- "integrity": "sha512-idjUvd4M9Jj6rXkhqw4H4reHoweuK4ZxYWyOrEp4N2rOF5VtaOlQGLDQJva/8WanNXk9ScQtsAb7o5UHGvFm4A==",
+ "version": "4.3.8",
+ "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.8.tgz",
+ "integrity": "sha512-LUIxbTBi+OpvXpg91poGA6BdyoleMDLnfXjVDqyi2RvZmTveY5loE/FgYUBCR5LU2BThW2SoZRh8dTIIy38IPw==",
"license": "Apache-2.0",
"dependencies": {
- "@smithy/service-error-classification": "^4.3.0",
+ "@smithy/service-error-classification": "^4.3.1",
"@smithy/types": "^4.14.1",
"tslib": "^2.6.2"
},
@@ -4459,13 +4733,13 @@
}
},
"node_modules/@smithy/util-stream": {
- "version": "4.5.24",
- "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.24.tgz",
- "integrity": "sha512-na5vv2mBSDzXewLEEoWGI7LQQkfpmFEomBsmOpzLFjqGctm0iMwXY5lAwesY9pIaErkccW0qzEOUcYP+WKneXg==",
+ "version": "4.5.25",
+ "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.25.tgz",
+ "integrity": "sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/fetch-http-handler": "^5.3.17",
- "@smithy/node-http-handler": "^4.6.0",
+ "@smithy/node-http-handler": "^4.6.1",
"@smithy/types": "^4.14.1",
"@smithy/util-base64": "^4.3.2",
"@smithy/util-buffer-from": "^4.2.2",
@@ -4503,9 +4777,9 @@
}
},
"node_modules/@smithy/util-waiter": {
- "version": "4.2.16",
- "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.16.tgz",
- "integrity": "sha512-GtclrKoZ3Lt7jPQ7aTIYKfjY92OgceScftVnkTsG8e1KV8rkvZgN+ny6YSRhd9hxB8rZtwVbmln7NTvE5O3GmQ==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.3.0.tgz",
+ "integrity": "sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA==",
"license": "Apache-2.0",
"dependencies": {
"@smithy/types": "^4.14.1",
@@ -4586,9 +4860,9 @@
"license": "MIT"
},
"node_modules/@tybys/wasm-util": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
- "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
+ "version": "0.10.2",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz",
+ "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==",
"dev": true,
"license": "MIT",
"optional": true,
@@ -4913,17 +5187,17 @@
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.58.0.tgz",
- "integrity": "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.2.tgz",
+ "integrity": "sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/regexpp": "^4.12.2",
- "@typescript-eslint/scope-manager": "8.58.0",
- "@typescript-eslint/type-utils": "8.58.0",
- "@typescript-eslint/utils": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0",
+ "@typescript-eslint/scope-manager": "8.59.2",
+ "@typescript-eslint/type-utils": "8.59.2",
+ "@typescript-eslint/utils": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2",
"ignore": "^7.0.5",
"natural-compare": "^1.4.0",
"ts-api-utils": "^2.5.0"
@@ -4936,7 +5210,7 @@
"url": "https://opencollective.com/typescript-eslint"
},
"peerDependencies": {
- "@typescript-eslint/parser": "^8.58.0",
+ "@typescript-eslint/parser": "^8.59.2",
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
"typescript": ">=4.8.4 <6.1.0"
}
@@ -4952,16 +5226,16 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.58.0.tgz",
- "integrity": "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.2.tgz",
+ "integrity": "sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/scope-manager": "8.58.0",
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0",
+ "@typescript-eslint/scope-manager": "8.59.2",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2",
"debug": "^4.4.3"
},
"engines": {
@@ -4977,14 +5251,14 @@
}
},
"node_modules/@typescript-eslint/project-service": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz",
- "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.2.tgz",
+ "integrity": "sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/tsconfig-utils": "^8.58.0",
- "@typescript-eslint/types": "^8.58.0",
+ "@typescript-eslint/tsconfig-utils": "^8.59.2",
+ "@typescript-eslint/types": "^8.59.2",
"debug": "^4.4.3"
},
"engines": {
@@ -4999,14 +5273,14 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz",
- "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz",
+ "integrity": "sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0"
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -5017,9 +5291,9 @@
}
},
"node_modules/@typescript-eslint/tsconfig-utils": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz",
- "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz",
+ "integrity": "sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5034,15 +5308,15 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz",
- "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.2.tgz",
+ "integrity": "sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0",
- "@typescript-eslint/utils": "8.58.0",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2",
+ "@typescript-eslint/utils": "8.59.2",
"debug": "^4.4.3",
"ts-api-utils": "^2.5.0"
},
@@ -5059,9 +5333,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz",
- "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz",
+ "integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -5073,16 +5347,16 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz",
- "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz",
+ "integrity": "sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/project-service": "8.58.0",
- "@typescript-eslint/tsconfig-utils": "8.58.0",
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/visitor-keys": "8.58.0",
+ "@typescript-eslint/project-service": "8.59.2",
+ "@typescript-eslint/tsconfig-utils": "8.59.2",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/visitor-keys": "8.59.2",
"debug": "^4.4.3",
"minimatch": "^10.2.2",
"semver": "^7.7.3",
@@ -5140,16 +5414,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz",
- "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.2.tgz",
+ "integrity": "sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@eslint-community/eslint-utils": "^4.9.1",
- "@typescript-eslint/scope-manager": "8.58.0",
- "@typescript-eslint/types": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0"
+ "@typescript-eslint/scope-manager": "8.59.2",
+ "@typescript-eslint/types": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -5164,13 +5438,13 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz",
- "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz",
+ "integrity": "sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/types": "8.58.0",
+ "@typescript-eslint/types": "8.59.2",
"eslint-visitor-keys": "^5.0.0"
},
"engines": {
@@ -5195,9 +5469,9 @@
}
},
"node_modules/@ungap/structured-clone": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
- "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz",
+ "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==",
"dev": true,
"license": "ISC"
},
@@ -5708,9 +5982,9 @@
}
},
"node_modules/ajv": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
- "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5743,9 +6017,9 @@
}
},
"node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
- "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6044,9 +6318,9 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.10.14",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.14.tgz",
- "integrity": "sha512-fOVLPAsFTsQfuCkvahZkzq6nf8KvGWanlYoTh0SVA0A/PIUxQGU2AOZAoD95n2gFLVDW/jP6sbGLny95nmEuHA==",
+ "version": "2.10.27",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.27.tgz",
+ "integrity": "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
@@ -6057,17 +6331,11 @@
}
},
"node_modules/better-result": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/better-result/-/better-result-2.7.0.tgz",
- "integrity": "sha512-7zrmXjAK8u8Z6SOe4R65XObOR5X+Y2I/VVku3t5cPOGQ8/WsBcfFmfnIPiEl5EBMDOzPHRwbiPbMtQBKYdw7RA==",
+ "version": "2.9.2",
+ "resolved": "https://registry.npmjs.org/better-result/-/better-result-2.9.2.tgz",
+ "integrity": "sha512-WIFoBPCdnTOdk9inkE1ZRvCZ4P0CpSkAiLlchC65N7n9DcjZ3NhqkBOlafzpOVnO8ixyi37kicmSJ3ENhPZl7Q==",
"devOptional": true,
- "license": "MIT",
- "dependencies": {
- "@clack/prompts": "^0.11.0"
- },
- "bin": {
- "better-result": "bin/cli.mjs"
- }
+ "license": "MIT"
},
"node_modules/bl": {
"version": "4.1.0",
@@ -6112,9 +6380,9 @@
"license": "MIT"
},
"node_modules/brace-expansion": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz",
- "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==",
+ "version": "1.1.14",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
+ "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6244,27 +6512,27 @@
}
},
"node_modules/c12": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/c12/-/c12-3.1.0.tgz",
- "integrity": "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/c12/-/c12-3.3.4.tgz",
+ "integrity": "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "chokidar": "^4.0.3",
- "confbox": "^0.2.2",
- "defu": "^6.1.4",
- "dotenv": "^16.6.1",
- "exsolve": "^1.0.7",
- "giget": "^2.0.0",
- "jiti": "^2.4.2",
+ "chokidar": "^5.0.0",
+ "confbox": "^0.2.4",
+ "defu": "^6.1.6",
+ "dotenv": "^17.3.1",
+ "exsolve": "^1.0.8",
+ "giget": "^3.2.0",
+ "jiti": "^2.6.1",
"ohash": "^2.0.11",
"pathe": "^2.0.3",
- "perfect-debounce": "^1.0.0",
- "pkg-types": "^2.2.0",
- "rc9": "^2.1.2"
+ "perfect-debounce": "^2.1.0",
+ "pkg-types": "^2.3.0",
+ "rc9": "^3.0.1"
},
"peerDependencies": {
- "magicast": "^0.3.5"
+ "magicast": "*"
},
"peerDependenciesMeta": {
"magicast": {
@@ -6272,17 +6540,34 @@
}
}
},
- "node_modules/c12/node_modules/dotenv": {
- "version": "16.6.1",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz",
- "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==",
+ "node_modules/c12/node_modules/chokidar": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
"devOptional": true,
- "license": "BSD-2-Clause",
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^5.0.0"
+ },
"engines": {
- "node": ">=12"
+ "node": ">= 20.19.0"
},
"funding": {
- "url": "https://dotenvx.com"
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/c12/node_modules/readdirp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
+ "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==",
+ "devOptional": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 20.19.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
}
},
"node_modules/call-bind-apply-helpers": {
@@ -6335,9 +6620,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001784",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz",
- "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==",
+ "version": "1.0.30001792",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz",
+ "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==",
"dev": true,
"funding": [
{
@@ -6406,7 +6691,7 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"dependencies": {
"readdirp": "^4.0.1"
@@ -6444,16 +6729,6 @@
"node": ">=8"
}
},
- "node_modules/citty": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz",
- "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "consola": "^3.2.3"
- }
- },
"node_modules/cjs-module-lexer": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz",
@@ -6635,9 +6910,9 @@
}
},
"node_modules/comment-json": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.6.2.tgz",
- "integrity": "sha512-R2rze/hDX30uul4NZoIZ76ImSJLFxn/1/ZxtKC1L77y2X1k+yYu1joKbAtMA2Fg3hZrTOiw0I5mwVMo0cf250w==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-5.0.0.tgz",
+ "integrity": "sha512-uiqLcOiVDJtBP8WGkZHEP+FZIhTzP1dxvn59EfoYUi9gqupjrBWVQkO2atDrbnKPwLeotFYDsuNb26uBMqB+hw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6697,9 +6972,9 @@
}
},
"node_modules/content-disposition": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz",
- "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz",
+ "integrity": "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -6897,9 +7172,9 @@
}
},
"node_modules/defu": {
- "version": "6.1.6",
- "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.6.tgz",
- "integrity": "sha512-f8mefEW4WIVg4LckePx3mALjQSPQgFlg9U8yaPdlsbdYcHQyj9n2zL2LJEA52smeYxOvmd/nB7TpMtHGMTHcug==",
+ "version": "6.1.7",
+ "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.7.tgz",
+ "integrity": "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==",
"devOptional": true,
"license": "MIT"
},
@@ -6971,9 +7246,9 @@
}
},
"node_modules/dotenv": {
- "version": "17.4.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.0.tgz",
- "integrity": "sha512-kCKF62fwtzwYm0IGBNjRUjtJgMfGapII+FslMHIjMR5KTnwEmBmWLDRSnc3XSNP8bNy34tekgQyDT0hr7pERRQ==",
+ "version": "17.4.2",
+ "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz",
+ "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=12"
@@ -7048,9 +7323,9 @@
}
},
"node_modules/electron-to-chromium": {
- "version": "1.5.331",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz",
- "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==",
+ "version": "1.5.351",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.351.tgz",
+ "integrity": "sha512-9D7Iqx8RImSvCnOsj86rCH6eQjZFQoM04Jn6HnZVM0Nu/G58/gmKYQ1d12MZTbjQbQSTGI8nwEy07ErsA2slLA==",
"dev": true,
"license": "ISC"
},
@@ -7094,14 +7369,14 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.20.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz",
- "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==",
+ "version": "5.21.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.21.0.tgz",
+ "integrity": "sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==",
"dev": true,
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
- "tapable": "^2.3.0"
+ "tapable": "^2.3.3"
},
"engines": {
"node": ">=10.13.0"
@@ -7149,9 +7424,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz",
- "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz",
+ "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==",
"dev": true,
"license": "MIT"
},
@@ -7630,9 +7905,9 @@
"license": "MIT"
},
"node_modules/fast-uri": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz",
- "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
+ "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
"devOptional": true,
"funding": [
{
@@ -7647,9 +7922,9 @@
"license": "BSD-3-Clause"
},
"node_modules/fast-xml-builder": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.5.tgz",
- "integrity": "sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==",
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.9.tgz",
+ "integrity": "sha512-jcyKVSEX13iseJqg7n/KWw+xnu/7fdrZ333Fac54KjHDIELVCfDDJXYIm6DTJ0Su4gSzrhqiK0DzY/wZbF40mw==",
"funding": [
{
"type": "github",
@@ -7662,9 +7937,9 @@
}
},
"node_modules/fast-xml-parser": {
- "version": "5.5.8",
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.8.tgz",
- "integrity": "sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==",
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz",
+ "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==",
"funding": [
{
"type": "github",
@@ -7673,9 +7948,10 @@
],
"license": "MIT",
"dependencies": {
- "fast-xml-builder": "^1.1.4",
- "path-expression-matcher": "^1.2.0",
- "strnum": "^2.2.0"
+ "@nodable/entities": "^2.1.0",
+ "fast-xml-builder": "^1.1.5",
+ "path-expression-matcher": "^1.5.0",
+ "strnum": "^2.2.3"
},
"bin": {
"fxparser": "src/cli/cli.js"
@@ -8084,19 +8360,11 @@
}
},
"node_modules/giget": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz",
- "integrity": "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/giget/-/giget-3.2.0.tgz",
+ "integrity": "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==",
"devOptional": true,
"license": "MIT",
- "dependencies": {
- "citty": "^0.1.6",
- "consola": "^3.4.0",
- "defu": "^6.1.4",
- "node-fetch-native": "^1.6.6",
- "nypm": "^0.6.0",
- "pathe": "^2.0.3"
- },
"bin": {
"giget": "dist/cli.mjs"
}
@@ -8179,9 +8447,9 @@
}
},
"node_modules/globals": {
- "version": "17.4.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz",
- "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==",
+ "version": "17.6.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz",
+ "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -8246,16 +8514,6 @@
"uglify-js": "^3.1.4"
}
},
- "node_modules/handlebars/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -8295,9 +8553,9 @@
}
},
"node_modules/hasown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
- "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz",
+ "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -8307,9 +8565,9 @@
}
},
"node_modules/hono": {
- "version": "4.12.10",
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.10.tgz",
- "integrity": "sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==",
+ "version": "4.12.17",
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.17.tgz",
+ "integrity": "sha512-FbJJNb/XgX7YW0hX/V8w5oYLztKEsRLykCMZWt1WdLtsfjzMvmoqWBA4H4t5norinq8/rh20oiZYr+WSl4UzAQ==",
"devOptional": true,
"license": "MIT",
"engines": {
@@ -8851,9 +9109,9 @@
}
},
"node_modules/jest-config/node_modules/brace-expansion": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
- "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9012,19 +9270,6 @@
"fsevents": "^2.3.3"
}
},
- "node_modules/jest-haste-map/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/jest-leak-detector": {
"version": "30.3.0",
"resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.3.0.tgz",
@@ -9076,19 +9321,6 @@
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/jest-message-util/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/jest-mock": {
"version": "30.3.0",
"resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz",
@@ -9200,16 +9432,6 @@
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/jest-runner/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/jest-runner/node_modules/source-map-support": {
"version": "0.5.13",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
@@ -9256,9 +9478,9 @@
}
},
"node_modules/jest-runtime/node_modules/brace-expansion": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz",
- "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
+ "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9378,19 +9600,6 @@
"node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/jest-util/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/jest-validate": {
"version": "30.3.0",
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.3.0.tgz",
@@ -9476,9 +9685,9 @@
}
},
"node_modules/jiti": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz",
- "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz",
+ "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==",
"devOptional": true,
"license": "MIT",
"bin": {
@@ -9486,9 +9695,9 @@
}
},
"node_modules/jose": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz",
- "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==",
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.3.tgz",
+ "integrity": "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/panva"
@@ -9576,9 +9785,9 @@
"license": "MIT"
},
"node_modules/jsonfile": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz",
- "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz",
+ "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9623,9 +9832,9 @@
}
},
"node_modules/libphonenumber-js": {
- "version": "1.12.41",
- "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.41.tgz",
- "integrity": "sha512-lsmMmGXBxXIK/VMLEj0kL6MtUs1kBGj1nTCzi6zgQoG1DEwqwt2DQyHxcLykceIxAnfE3hya7NuIh6PpC6S3fA==",
+ "version": "1.12.42",
+ "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.42.tgz",
+ "integrity": "sha512-oKQFPTibqQwZZkChCDVMFVJXMZdyJNqDWZWYNn8BgyAaK/6yFJEowxCY0RVFirRyWP63hMRuKlkSEd9qlvbWXg==",
"license": "MIT"
},
"node_modules/lines-and-columns": {
@@ -9655,9 +9864,9 @@
}
},
"node_modules/loader-runner": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz",
- "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz",
+ "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9688,7 +9897,6 @@
"version": "4.18.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz",
"integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==",
- "dev": true,
"license": "MIT"
},
"node_modules/lodash.memoize": {
@@ -10134,13 +10342,6 @@
"lodash": "^4.17.21"
}
},
- "node_modules/node-fetch-native": {
- "version": "1.6.7",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
- "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
- "devOptional": true,
- "license": "MIT"
- },
"node_modules/node-int64": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
@@ -10149,9 +10350,9 @@
"license": "MIT"
},
"node_modules/node-releases": {
- "version": "2.0.37",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz",
- "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==",
+ "version": "2.0.38",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz",
+ "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==",
"dev": true,
"license": "MIT"
},
@@ -10178,31 +10379,6 @@
"node": ">=8"
}
},
- "node_modules/nypm": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz",
- "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==",
- "devOptional": true,
- "license": "MIT",
- "dependencies": {
- "citty": "^0.2.0",
- "pathe": "^2.0.3",
- "tinyexec": "^1.0.2"
- },
- "bin": {
- "nypm": "dist/cli.mjs"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/nypm/node_modules/citty": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.2.tgz",
- "integrity": "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w==",
- "devOptional": true,
- "license": "MIT"
- },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -10463,9 +10639,9 @@
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "11.2.7",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz",
- "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==",
+ "version": "11.3.6",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz",
+ "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==",
"dev": true,
"license": "BlueOak-1.0.0",
"engines": {
@@ -10500,9 +10676,9 @@
"license": "MIT"
},
"node_modules/perfect-debounce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz",
- "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-2.1.0.tgz",
+ "integrity": "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==",
"devOptional": true,
"license": "MIT"
},
@@ -10608,13 +10784,13 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
- "devOptional": true,
+ "dev": true,
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -10704,14 +10880,14 @@
}
},
"node_modules/pkg-types": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz",
- "integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.1.tgz",
+ "integrity": "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "confbox": "^0.2.2",
- "exsolve": "^1.0.7",
+ "confbox": "^0.2.4",
+ "exsolve": "^1.0.8",
"pathe": "^2.0.3"
}
},
@@ -10789,9 +10965,9 @@
}
},
"node_modules/prettier": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz",
- "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==",
+ "version": "3.8.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz",
+ "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -10846,16 +11022,16 @@
}
},
"node_modules/prisma": {
- "version": "7.6.0",
- "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.6.0.tgz",
- "integrity": "sha512-OKJIPT81K3+F+AayIkY/Y3mkF2NWoFh7lZApaaqPYy7EHILKdO0VsmGkP+hDKYTySHsFSyLWXm/JgcR1B8fY1Q==",
+ "version": "7.8.0",
+ "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.8.0.tgz",
+ "integrity": "sha512-yfN4yrw7HV9kEJhoy1+jgah0jafEIQsf7uWouSsM8MvJtlubsk+kM7AIBWZ8+GJl74Yj3c+nbYqBkMOxtsZ3Lw==",
"devOptional": true,
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "@prisma/config": "7.6.0",
+ "@prisma/config": "7.8.0",
"@prisma/dev": "0.24.3",
- "@prisma/engines": "7.6.0",
+ "@prisma/engines": "7.8.0",
"@prisma/studio-core": "0.27.3",
"mysql2": "3.15.3",
"postgres": "3.4.7"
@@ -10939,9 +11115,9 @@
"license": "MIT"
},
"node_modules/qs": {
- "version": "6.15.0",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz",
- "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==",
+ "version": "6.15.1",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz",
+ "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==",
"license": "BSD-3-Clause",
"dependencies": {
"side-channel": "^1.1.0"
@@ -10978,20 +11154,20 @@
}
},
"node_modules/rc9": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz",
- "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/rc9/-/rc9-3.0.1.tgz",
+ "integrity": "sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==",
"devOptional": true,
"license": "MIT",
"dependencies": {
- "defu": "^6.1.4",
- "destr": "^2.0.3"
+ "defu": "^6.1.6",
+ "destr": "^2.0.5"
}
},
"node_modules/react": {
- "version": "19.2.4",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
- "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
+ "version": "19.2.5",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.5.tgz",
+ "integrity": "sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==",
"devOptional": true,
"license": "MIT",
"peer": true,
@@ -11000,9 +11176,9 @@
}
},
"node_modules/react-dom": {
- "version": "19.2.4",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
- "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
+ "version": "19.2.5",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.5.tgz",
+ "integrity": "sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==",
"devOptional": true,
"license": "MIT",
"peer": true,
@@ -11010,7 +11186,7 @@
"scheduler": "^0.27.0"
},
"peerDependencies": {
- "react": "^19.2.4"
+ "react": "^19.2.5"
}
},
"node_modules/react-is": {
@@ -11038,7 +11214,7 @@
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
- "devOptional": true,
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 14.18.0"
@@ -11339,13 +11515,13 @@
}
},
"node_modules/side-channel-list": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
- "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz",
+ "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
- "object-inspect": "^1.13.3"
+ "object-inspect": "^1.13.4"
},
"engines": {
"node": ">= 0.4"
@@ -11404,13 +11580,6 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/sisteransi": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz",
- "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==",
- "devOptional": true,
- "license": "MIT"
- },
"node_modules/slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@@ -11422,13 +11591,13 @@
}
},
"node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
- "node": ">= 8"
+ "node": ">=0.10.0"
}
},
"node_modules/source-map-support": {
@@ -11442,16 +11611,6 @@
"source-map": "^0.6.0"
}
},
- "node_modules/source-map-support/node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
@@ -11743,9 +11902,9 @@
}
},
"node_modules/tapable": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz",
- "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz",
+ "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -11757,9 +11916,9 @@
}
},
"node_modules/terser": {
- "version": "5.46.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz",
- "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==",
+ "version": "5.46.2",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.2.tgz",
+ "integrity": "sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -11776,9 +11935,9 @@
}
},
"node_modules/terser-webpack-plugin": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.4.0.tgz",
- "integrity": "sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==",
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.5.0.tgz",
+ "integrity": "sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11810,9 +11969,9 @@
}
},
"node_modules/terser-webpack-plugin/node_modules/ajv": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
- "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -11959,25 +12118,15 @@
"url": "https://github.com/sponsors/isaacs"
}
},
- "node_modules/tinyexec": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz",
- "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==",
- "devOptional": true,
- "license": "MIT",
- "engines": {
- "node": ">=18"
- }
- },
"node_modules/tinyglobby": {
- "version": "0.2.15",
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
- "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
+ "version": "0.2.16",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz",
+ "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.5.0",
- "picomatch": "^4.0.3"
+ "picomatch": "^4.0.4"
},
"engines": {
"node": ">=12.0.0"
@@ -11986,19 +12135,6 @@
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/tinyglobby/node_modules/picomatch": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
- "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
"node_modules/tmpl": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
@@ -12146,6 +12282,16 @@
"webpack": "^5.0.0"
}
},
+ "node_modules/ts-loader/node_modules/source-map": {
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">= 12"
+ }
+ },
"node_modules/ts-node": {
"version": "10.9.2",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
@@ -12308,16 +12454,16 @@
}
},
"node_modules/typescript-eslint": {
- "version": "8.58.0",
- "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.58.0.tgz",
- "integrity": "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==",
+ "version": "8.59.2",
+ "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.2.tgz",
+ "integrity": "sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@typescript-eslint/eslint-plugin": "8.58.0",
- "@typescript-eslint/parser": "8.58.0",
- "@typescript-eslint/typescript-estree": "8.58.0",
- "@typescript-eslint/utils": "8.58.0"
+ "@typescript-eslint/eslint-plugin": "8.59.2",
+ "@typescript-eslint/parser": "8.59.2",
+ "@typescript-eslint/typescript-estree": "8.59.2",
+ "@typescript-eslint/utils": "8.59.2"
},
"engines": {
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -12566,11 +12712,12 @@
}
},
"node_modules/webpack": {
- "version": "5.105.4",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz",
- "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==",
+ "version": "5.106.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.106.2.tgz",
+ "integrity": "sha512-wGN3qcrBQIFmQ/c0AiOAQBvrZ5lmY8vbbMv4Mxfgzqd/B6+9pXtLo73WuS1dSGXM5QYY3hZnIbvx+K1xxe6FyA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
@@ -12588,9 +12735,8 @@
"events": "^3.2.0",
"glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
- "json-parse-even-better-errors": "^2.3.1",
"loader-runner": "^4.3.1",
- "mime-types": "^2.1.27",
+ "mime-db": "^1.54.0",
"neo-async": "^2.6.2",
"schema-utils": "^4.3.3",
"tapable": "^2.3.0",
@@ -12625,9 +12771,9 @@
}
},
"node_modules/webpack-sources": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz",
- "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==",
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.4.1.tgz",
+ "integrity": "sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12635,11 +12781,12 @@
}
},
"node_modules/webpack/node_modules/ajv": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
- "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
+ "version": "8.20.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz",
+ "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -12657,6 +12804,7 @@
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"ajv": "^8.0.0"
},
@@ -12675,6 +12823,7 @@
"integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3"
},
@@ -12688,6 +12837,7 @@
"integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"dependencies": {
"esrecurse": "^4.3.0",
"estraverse": "^4.1.1"
@@ -12702,6 +12852,7 @@
"integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
"dev": true,
"license": "BSD-2-Clause",
+ "peer": true,
"engines": {
"node": ">=4.0"
}
@@ -12711,30 +12862,8 @@
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
- "license": "MIT"
- },
- "node_modules/webpack/node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
"license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/webpack/node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
+ "peer": true
},
"node_modules/webpack/node_modules/schema-utils": {
"version": "4.3.3",
@@ -12742,6 +12871,7 @@
"integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==",
"dev": true,
"license": "MIT",
+ "peer": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"ajv": "^8.9.0",
diff --git a/server/prisma/migrations/20260506143000_add_equipment_lifecycle_dates/migration.sql b/server/prisma/migrations/20260506143000_add_equipment_lifecycle_dates/migration.sql
new file mode 100644
index 0000000..1b4f218
--- /dev/null
+++ b/server/prisma/migrations/20260506143000_add_equipment_lifecycle_dates/migration.sql
@@ -0,0 +1,3 @@
+-- Add user-managed lifecycle dates for equipment list and cards.
+ALTER TABLE "Equipment" ADD COLUMN IF NOT EXISTS "installationDate" TIMESTAMP(3);
+ALTER TABLE "Equipment" ADD COLUMN IF NOT EXISTS "writeOffDate" TIMESTAMP(3);
diff --git a/server/prisma/migrations/20260509120000_add_equipment_attachments/migration.sql b/server/prisma/migrations/20260509120000_add_equipment_attachments/migration.sql
new file mode 100644
index 0000000..48dde7d
--- /dev/null
+++ b/server/prisma/migrations/20260509120000_add_equipment_attachments/migration.sql
@@ -0,0 +1,2 @@
+-- Allow equipment cards to store multiple file attachments, same format as status changes.
+ALTER TABLE "Equipment" ADD COLUMN IF NOT EXISTS "attachments" JSONB;
diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma
index b373683..548830f 100644
--- a/server/prisma/schema.prisma
+++ b/server/prisma/schema.prisma
@@ -19,7 +19,11 @@ model Equipment {
serialNumber String
dateOfInspection DateTime?
commissionedAt DateTime?
+ installationDate DateTime?
+ writeOffDate DateTime?
status EquipmentStatus @default(Active)
+ /// JSON: [{ id, objectKey, originalFileName, contentType, sizeBytes }] — файлы в MinIO/S3
+ attachments Json?
changeEquipmentStatuses ChangeEquipmentStatus[]
}
diff --git a/server/src/modules/equipment/dto/create-equipment.dto.ts b/server/src/modules/equipment/dto/create-equipment.dto.ts
index f98b11b..b5f4ce0 100644
--- a/server/src/modules/equipment/dto/create-equipment.dto.ts
+++ b/server/src/modules/equipment/dto/create-equipment.dto.ts
@@ -16,6 +16,14 @@ export class CreateEquipmentDto {
@IsString()
commissionedAt?: string;
+ @IsOptional()
+ @IsString()
+ installationDate?: string;
+
+ @IsOptional()
+ @IsString()
+ writeOffDate?: string;
+
@IsEnum(EquipmentStatus)
status!: EquipmentStatus;
}
diff --git a/server/src/modules/equipment/dto/update-equipment.dto.ts b/server/src/modules/equipment/dto/update-equipment.dto.ts
index 30e5c6e..dc6328c 100644
--- a/server/src/modules/equipment/dto/update-equipment.dto.ts
+++ b/server/src/modules/equipment/dto/update-equipment.dto.ts
@@ -18,6 +18,14 @@ export class UpdateEquipmentDto {
@IsString()
commissionedAt?: string;
+ @IsOptional()
+ @IsString()
+ installationDate?: string;
+
+ @IsOptional()
+ @IsString()
+ writeOffDate?: string;
+
@IsOptional()
@IsEnum(EquipmentStatus)
status?: EquipmentStatus;
diff --git a/server/src/modules/equipment/equipment.controller.ts b/server/src/modules/equipment/equipment.controller.ts
index 7667b80..94e6a02 100644
--- a/server/src/modules/equipment/equipment.controller.ts
+++ b/server/src/modules/equipment/equipment.controller.ts
@@ -8,9 +8,14 @@ import {
Post,
Query,
Res,
+ StreamableFile,
+ UploadedFile,
UseGuards,
+ UseInterceptors,
} from '@nestjs/common';
+import { FileInterceptor } from '@nestjs/platform-express';
import type { Response } from 'express';
+import { memoryStorage } from 'multer';
import { Roles } from '../../auth/decorators/roles.decorator';
import { JwtAuthGuard } from '../../auth/guards/jwt-auth.guard';
import { RolesGuard } from '../../auth/guards/roles.guard';
@@ -47,6 +52,40 @@ export class EquipmentController {
return this.equipmentService.update(id, dto);
}
+ @Roles('editor', 'admin')
+ @Post(':id/attachments')
+ @UseInterceptors(
+ FileInterceptor('file', {
+ storage: memoryStorage(),
+ limits: { fileSize: 50 * 1024 * 1024 },
+ }),
+ )
+ uploadAttachment(@Param('id') id: string, @UploadedFile() file: Express.Multer.File) {
+ return this.equipmentService.uploadAttachment(id, file);
+ }
+
+ @Roles('editor', 'admin')
+ @Delete(':id/attachments/:attachmentId')
+ removeAttachment(@Param('id') id: string, @Param('attachmentId') attachmentId: string) {
+ return this.equipmentService.removeAttachment(id, attachmentId);
+ }
+
+ @Roles('viewer', 'editor', 'admin')
+ @Get(':id/attachments/:attachmentId/download')
+ async downloadAttachment(
+ @Param('id') id: string,
+ @Param('attachmentId') attachmentId: string,
+ ): Promise {
+ const { stream, contentType, fileName, contentLength } =
+ await this.equipmentService.getAttachmentDownloadStream(id, attachmentId);
+ const encoded = encodeURIComponent(fileName);
+ return new StreamableFile(stream, {
+ type: contentType,
+ disposition: `attachment; filename*=UTF-8''${encoded}`,
+ length: contentLength,
+ });
+ }
+
@Roles('admin')
@Delete(':id')
remove(@Param('id') id: string) {
diff --git a/server/src/modules/equipment/equipment.service.ts b/server/src/modules/equipment/equipment.service.ts
index 80472bb..96d7c6a 100644
--- a/server/src/modules/equipment/equipment.service.ts
+++ b/server/src/modules/equipment/equipment.service.ts
@@ -8,10 +8,14 @@ import { EquipmentStatus, Prisma } from '@prisma/client';
import type { Equipment } from '@prisma/client';
import { Response } from 'express';
import type { Express } from 'express';
+import { randomUUID } from 'node:crypto';
+import type { Readable } from 'node:stream';
import { decodeUtf8FilenameFromMultipart } from '../../common/multipart-filename';
import { setListHeaders } from '../../common/http';
import { PrismaService } from '../../prisma/prisma.service';
import { StorageService } from '../../storage/storage.service';
+import type { StoredAttachmentMeta } from './attachment.types';
+import { isStoredAttachmentMeta } from './attachment.types';
import { CreateEquipmentDto } from './dto/create-equipment.dto';
import { UpdateEquipmentDto } from './dto/update-equipment.dto';
@@ -82,6 +86,8 @@ export class EquipmentService {
serialNumber: dto.serialNumber,
dateOfInspection: dto.dateOfInspection ? new Date(dto.dateOfInspection) : undefined,
commissionedAt: dto.commissionedAt ? new Date(dto.commissionedAt) : undefined,
+ installationDate: dto.installationDate ? new Date(dto.installationDate) : undefined,
+ writeOffDate: dto.writeOffDate ? new Date(dto.writeOffDate) : undefined,
status: dto.status,
},
});
@@ -99,6 +105,8 @@ export class EquipmentService {
...payload,
dateOfInspection: dto.dateOfInspection ? new Date(dto.dateOfInspection) : undefined,
commissionedAt: dto.commissionedAt ? new Date(dto.commissionedAt) : undefined,
+ installationDate: dto.installationDate ? new Date(dto.installationDate) : undefined,
+ writeOffDate: dto.writeOffDate ? new Date(dto.writeOffDate) : undefined,
},
});
@@ -114,6 +122,113 @@ export class EquipmentService {
return this.toRecord(deleted);
}
+ async uploadAttachment(id: string, file: Express.Multer.File | undefined) {
+ if (!file?.buffer?.length) {
+ throw new BadRequestException('File is required (multipart field "file").');
+ }
+ if (!this.storage.isConfigured()) {
+ throw new ServiceUnavailableException(
+ 'Object storage is not configured (set S3_* environment variables).',
+ );
+ }
+
+ const item = await this.prisma.equipment.findUnique({ where: { id } });
+ if (!item) {
+ throw new NotFoundException(`Equipment ${id} not found`);
+ }
+
+ const decodedOriginalName = decodeUtf8FilenameFromMultipart(file.originalname);
+ const objectKey = this.storage.buildEquipmentObjectKey(id, decodedOriginalName);
+ const meta: StoredAttachmentMeta = {
+ id: randomUUID(),
+ objectKey,
+ originalFileName: decodedOriginalName,
+ contentType: file.mimetype || 'application/octet-stream',
+ sizeBytes: file.size,
+ };
+
+ await this.storage.putObject(objectKey, file.buffer, meta.contentType);
+
+ const current = this.parseAttachments(item.attachments);
+ const next = [...current, meta];
+ const updated = await this.prisma.equipment.update({
+ where: { id },
+ data: { attachments: next as unknown as Prisma.InputJsonValue },
+ });
+
+ return this.toRecord(updated);
+ }
+
+ async removeAttachment(id: string, attachmentId: string) {
+ if (!this.storage.isConfigured()) {
+ throw new ServiceUnavailableException(
+ 'Object storage is not configured (set S3_* environment variables).',
+ );
+ }
+
+ const item = await this.prisma.equipment.findUnique({ where: { id } });
+ if (!item) {
+ throw new NotFoundException(`Equipment ${id} not found`);
+ }
+
+ const current = this.parseAttachments(item.attachments);
+ const found = current.find((a) => a.id === attachmentId);
+ if (!found) {
+ throw new NotFoundException(`Attachment ${attachmentId} not found`);
+ }
+
+ try {
+ await this.storage.deleteObject(found.objectKey);
+ } catch {
+ }
+
+ const next = current.filter((a) => a.id !== attachmentId);
+ const updated = await this.prisma.equipment.update({
+ where: { id },
+ data: { attachments: next.length ? (next as unknown as Prisma.InputJsonValue) : Prisma.JsonNull },
+ });
+
+ return this.toRecord(updated);
+ }
+
+ async getAttachmentDownloadStream(
+ id: string,
+ attachmentId: string,
+ ): Promise<{
+ stream: Readable;
+ contentType: string;
+ fileName: string;
+ contentLength?: number;
+ }> {
+ if (!this.storage.isConfigured()) {
+ throw new ServiceUnavailableException(
+ 'Object storage is not configured (set S3_* environment variables).',
+ );
+ }
+
+ const item = await this.prisma.equipment.findUnique({ where: { id } });
+ if (!item) {
+ throw new NotFoundException(`Equipment ${id} not found`);
+ }
+
+ const current = this.parseAttachments(item.attachments);
+ const found = current.find((a) => a.id === attachmentId);
+ if (!found) {
+ throw new NotFoundException(`Attachment ${attachmentId} not found`);
+ }
+
+ const fileName = decodeUtf8FilenameFromMultipart(found.originalFileName) || 'file';
+ const { stream, contentType, contentLength } = await this.storage.getObjectStream(found.objectKey);
+ const len = typeof contentLength === 'bigint' ? Number(contentLength) : contentLength;
+
+ return {
+ stream,
+ contentType: found.contentType || contentType,
+ fileName,
+ contentLength: len,
+ };
+ }
+
private async toRecord(item: Equipment) {
return {
id: item.id,
@@ -121,7 +236,31 @@ export class EquipmentService {
serialNumber: item.serialNumber,
dateOfInspection: item.dateOfInspection?.toISOString() ?? null,
commissionedAt: item.commissionedAt?.toISOString() ?? null,
+ installationDate: item.installationDate?.toISOString() ?? null,
+ writeOffDate: item.writeOffDate?.toISOString() ?? null,
status: item.status,
+ attachments: this.serializeAttachments(item.attachments),
};
}
+
+ private parseAttachments(raw: Prisma.JsonValue | null | undefined): StoredAttachmentMeta[] {
+ if (!raw) {
+ return [];
+ }
+ if (!Array.isArray(raw)) {
+ return [];
+ }
+ return raw.filter(isStoredAttachmentMeta);
+ }
+
+ private serializeAttachments(raw: Prisma.JsonValue | null | undefined) {
+ const items = this.parseAttachments(raw);
+ return items.map((a) => ({
+ id: a.id,
+ originalFileName: decodeUtf8FilenameFromMultipart(a.originalFileName),
+ contentType: a.contentType,
+ sizeBytes: a.sizeBytes,
+ downloadUrl: null as string | null,
+ }));
+ }
}
diff --git a/server/src/storage/storage.service.ts b/server/src/storage/storage.service.ts
index 9307d4d..ba71655 100644
--- a/server/src/storage/storage.service.ts
+++ b/server/src/storage/storage.service.ts
@@ -150,7 +150,7 @@ function interpretS3Failure(operation: string, err: unknown): never {
throw err;
}
- const message = err instanceof Error ? err.message : String(err);
+ const message = formatS3ErrorMessage(err);
const status = (err as { $metadata?: { httpStatusCode?: number } }).$metadata?.httpStatusCode;
const code = (err as { Code?: string; name?: string }).Code ?? (err as { name?: string }).name;
@@ -176,3 +176,28 @@ function interpretS3Failure(operation: string, err: unknown): never {
throw new ServiceUnavailableException(`S3 ${operation}: ${message}`);
}
+
+function formatS3ErrorMessage(err: unknown): string {
+ const error = err as {
+ Code?: string;
+ code?: string;
+ name?: string;
+ message?: string;
+ cause?: unknown;
+ $metadata?: { httpStatusCode?: number; requestId?: string };
+ };
+ const parts = [
+ error.name,
+ error.Code ?? error.code,
+ error.message,
+ error.$metadata?.httpStatusCode ? `HTTP ${error.$metadata.httpStatusCode}` : undefined,
+ error.$metadata?.requestId ? `requestId ${error.$metadata.requestId}` : undefined,
+ error.cause instanceof Error
+ ? `${error.cause.name}: ${error.cause.message}`
+ : error.cause
+ ? String(error.cause)
+ : undefined,
+ ].filter((part): part is string => Boolean(part));
+
+ return parts.length ? parts.join(' | ') : String(err);
+}