From cc15296cc70c29510dd5181778ee23dd78afedfc Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 7 Feb 2026 23:33:02 +0100 Subject: [PATCH 01/31] chore: Deps --- Meyton Message Protocol.md | 12 ++ build.sh | 29 +++ database/local/package-lock.json | 45 ++--- database/local/package.json | 6 +- database/smdb/package-lock.json | 34 ++-- database/smdb/package.json | 4 +- database/ssmdb2/package-lock.json | 34 ++-- database/ssmdb2/package.json | 4 +- database/tableWatcher/package-lock.json | 25 +-- database/tableWatcher/package.json | 2 +- frontend/package-lock.json | 227 +++++++++-------------- frontend/package.json | 10 +- logger/package-lock.json | 24 +-- logger/package.json | 6 +- package-lock.json | 22 +++ package.json | 5 + ranges/cache/package-lock.json | 36 ++-- ranges/cache/package.json | 4 +- ranges/log/package-lock.json | 32 ++-- ranges/log/package.json | 4 +- ranges/merge/package-lock.json | 32 ++-- ranges/merge/package.json | 4 +- ranges/multicast/package-lock.json | 30 +-- ranges/multicast/package.json | 4 +- ranges/multicast/proxy/package-lock.json | 22 +-- ranges/multicast/proxy/package.json | 4 +- ranges/ssmdb2/package-lock.json | 36 ++-- ranges/ssmdb2/package.json | 4 +- ranges/ttl/package-lock.json | 8 +- ranges/ttl/package.json | 2 +- ranges/types/package-lock.json | 9 +- ranges/types/package.json | 2 +- screens/evaluations/package-lock.json | 158 ++++++++-------- screens/evaluations/package.json | 6 +- screens/images/package-lock.json | 23 +-- screens/images/package.json | 4 +- screens/screenCast/package-lock.json | 16 +- screens/screenCast/package.json | 2 +- screens/screenManager/package-lock.json | 32 ++-- screens/screenManager/package.json | 4 +- screens/types/package-lock.json | 9 +- screens/types/package.json | 2 +- serverState/package-lock.json | 42 ++--- serverState/package.json | 6 +- syncTime/package-lock.json | 32 ++-- syncTime/package.json | 4 +- utils/recorder/package-lock.json | 10 +- utils/recorder/package.json | 2 +- 48 files changed, 548 insertions(+), 526 deletions(-) create mode 100644 Meyton Message Protocol.md create mode 100644 build.sh create mode 100644 package-lock.json create mode 100644 package.json diff --git a/Meyton Message Protocol.md b/Meyton Message Protocol.md new file mode 100644 index 00000000..161509da --- /dev/null +++ b/Meyton Message Protocol.md @@ -0,0 +1,12 @@ +# Meyton Message Protocol + +Target IP: 224.0.0.3 UDP, Port:49497 + +| Start Address | Type | Size (Bytes) | Description | +| ------------- | -------- | -------------- | ----------------------------------------------------------------------------------------------------------- | +| 0x00 | bytes | 36 | 00 00 03 01 06 08 53 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51 00 00 00 00 00 00 00 01 00 00 00 | +| 0x24 | uint32 | 4 | Message ID, 0x35 for Message, 0xFB is for a simulated button press | +| 0x28 | Bitfield | 52 / 53 | Target RangeNo (1-416), lsb of 0x28 gets ignored | +| 0x5D | Unknown | 79 | Padding? Always 0x00 | +| 0xAC | uint32 | 4 | Message Length | +| 0xB0 | char[] | Message Length | ASCII (HTML) Message Content | diff --git a/build.sh b/build.sh new file mode 100644 index 00000000..6be75f14 --- /dev/null +++ b/build.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -euo pipefail + +COMPOSE_FILE="docker-compose.yml" + +echo "🔍 Resolving services from Docker Compose config..." +SERVICES=$(docker compose -f "$COMPOSE_FILE" config --services) + +if [[ -z "$SERVICES" ]]; then + echo "❌ No services found in $COMPOSE_FILE" + exit 1 +fi + +echo "📦 Services to build:" +echo "$SERVICES" +echo + +for service in $SERVICES; do + echo "==============================================" + echo "🚧 Building service: $service" + echo "==============================================" + + docker compose -f "$COMPOSE_FILE" build "$service" + + echo "✅ Finished building: $service" + echo +done + +echo "🎉 All services built successfully (sequentially)." diff --git a/database/local/package-lock.json b/database/local/package-lock.json index d734a56d..5a640a85 100644 --- a/database/local/package-lock.json +++ b/database/local/package-lock.json @@ -11,11 +11,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -63,7 +63,8 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "devOptional": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -307,9 +308,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -469,8 +470,7 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "devOptional": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/deepmerge-ts": { "version": "7.1.5", @@ -507,9 +507,9 @@ "license": "MIT" }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -647,6 +647,7 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "devOptional": true, "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -837,12 +838,13 @@ "license": "MIT" }, "node_modules/pg": { - "version": "8.17.2", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.17.2.tgz", - "integrity": "sha512-vjbKdiBJRqzcYw1fNU5KuHyYvdJ1qpcQg1CeBrHFqV1pWgHeVR6j/+kX0E1AAXfyuLUGY1ICrN2ELKA/z2HWzw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.18.0.tgz", + "integrity": "sha512-xqrUDL1b9MbkydY/s+VZ6v+xiMUmOUk7SS9d/1kpyQxoJ6U9AO1oIJyUWVZojbfe5Cc/oluutcgFG4L9RDP1iQ==", "license": "MIT", + "peer": true, "dependencies": { - "pg-connection-string": "^2.10.1", + "pg-connection-string": "^2.11.0", "pg-pool": "^3.11.0", "pg-protocol": "^1.11.0", "pg-types": "2.2.0", @@ -871,9 +873,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.10.1.tgz", - "integrity": "sha512-iNzslsoeSH2/gmDDKiyMqF64DATUCWj3YJ0wP14kqcsf2TUklwimd+66yYojKwZCA7h2yRNLGug71hCBA2a4sw==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.11.0.tgz", + "integrity": "sha512-kecgoJwhOpxYU21rZjULrmrBJ698U2RxXofKVzOn5UDj61BPj/qMb7diYUR1nLScCDbrztQFl1TaQZT0t1EtzQ==", "license": "MIT" }, "node_modules/pg-int8": { @@ -1006,6 +1008,7 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@prisma/config": "7.3.0", "@prisma/dev": "0.20.0", @@ -1158,8 +1161,7 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "devOptional": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1245,6 +1247,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/local/package.json b/database/local/package.json index df92436b..6372fe0c 100644 --- a/database/local/package.json +++ b/database/local/package.json @@ -15,11 +15,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" diff --git a/database/smdb/package-lock.json b/database/smdb/package-lock.json index 602db7d3..ab898576 100644 --- a/database/smdb/package-lock.json +++ b/database/smdb/package-lock.json @@ -11,10 +11,10 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -26,11 +26,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -78,7 +78,8 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "devOptional": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -327,9 +328,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -477,8 +478,7 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "devOptional": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/dc-db-local": { "resolved": "../local", @@ -518,9 +518,9 @@ "license": "MIT" }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -658,6 +658,7 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "devOptional": true, "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -923,6 +924,7 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@prisma/config": "7.3.0", "@prisma/dev": "0.20.0", @@ -1074,8 +1076,7 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "devOptional": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1152,6 +1153,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/smdb/package.json b/database/smdb/package.json index 89d68eee..48ced352 100644 --- a/database/smdb/package.json +++ b/database/smdb/package.json @@ -10,7 +10,7 @@ "generate": "npx prisma generate --no-hints" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" }, @@ -18,7 +18,7 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "files": [ "dist", diff --git a/database/ssmdb2/package-lock.json b/database/ssmdb2/package-lock.json index ff6e7004..9dfd010c 100644 --- a/database/ssmdb2/package-lock.json +++ b/database/ssmdb2/package-lock.json @@ -12,10 +12,10 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -27,11 +27,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -79,7 +79,8 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "devOptional": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -328,9 +329,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -478,8 +479,7 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "devOptional": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/dc-db-local": { "resolved": "../local", @@ -519,9 +519,9 @@ "license": "MIT" }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -659,6 +659,7 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "devOptional": true, "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -924,6 +925,7 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "@prisma/config": "7.3.0", "@prisma/dev": "0.20.0", @@ -1075,8 +1077,7 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "devOptional": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1153,6 +1154,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/ssmdb2/package.json b/database/ssmdb2/package.json index b07a92b5..15be06c9 100644 --- a/database/ssmdb2/package.json +++ b/database/ssmdb2/package.json @@ -16,10 +16,10 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" }, diff --git a/database/tableWatcher/package-lock.json b/database/tableWatcher/package-lock.json index ac039033..f18162d9 100644 --- a/database/tableWatcher/package-lock.json +++ b/database/tableWatcher/package-lock.json @@ -13,7 +13,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -23,12 +23,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -320,7 +320,8 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -519,9 +520,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -656,8 +657,7 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/dc-logger": { "resolved": "../../logger", @@ -872,6 +872,7 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=16.9.0" } @@ -1250,8 +1251,7 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1369,6 +1369,7 @@ "version": "5.9.3", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/tableWatcher/package.json b/database/tableWatcher/package.json index 0911294e..8591b8c9 100644 --- a/database/tableWatcher/package.json +++ b/database/tableWatcher/package.json @@ -12,7 +12,7 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" }, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index de8926f4..b174c2e8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -19,11 +19,11 @@ "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", "mime": "^4.1.0", - "next": "^16.1.4", + "next": "^16.1.6", "raw-loader": "^4.0.2", - "react": "^19.2.3", + "react": "^19.2.4", "react-bootstrap": "^2.10.10", - "react-dom": "^19.2.3", + "react-dom": "^19.2.4", "react-icons": "^5.5.0", "react-redux": "^9.2.0", "react-select": "^5.10.2", @@ -32,8 +32,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.0.9", - "@types/react": "^19.2.9", + "@types/node": "^25.2.1", + "@types/react": "^19.2.13", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", "typescript": "~5.9.3" @@ -44,7 +44,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -56,7 +56,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -841,7 +841,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -864,15 +863,15 @@ } }, "node_modules/@next/env": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.4.tgz", - "integrity": "sha512-gkrXnZyxPUy0Gg6SrPQPccbNVLSP3vmW8LU5dwEttEEC1RwDivk8w4O+sZIjFvPrSICXyhQDCG+y3VmjlJf+9A==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.6.tgz", + "integrity": "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==", "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.4.tgz", - "integrity": "sha512-T8atLKuvk13XQUdVLCv1ZzMPgLPW0+DWWbHSQXs0/3TjPrKNxTmUIhOEaoEyl3Z82k8h/gEtqyuoZGv6+Ugawg==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz", + "integrity": "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==", "cpu": [ "arm64" ], @@ -886,9 +885,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.4.tgz", - "integrity": "sha512-AKC/qVjUGUQDSPI6gESTx0xOnOPQ5gttogNS3o6bA83yiaSZJek0Am5yXy82F1KcZCx3DdOwdGPZpQCluonuxg==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.6.tgz", + "integrity": "sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==", "cpu": [ "x64" ], @@ -902,9 +901,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.4.tgz", - "integrity": "sha512-POQ65+pnYOkZNdngWfMEt7r53bzWiKkVNbjpmCt1Zb3V6lxJNXSsjwRuTQ8P/kguxDC8LRkqaL3vvsFrce4dMQ==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.6.tgz", + "integrity": "sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==", "cpu": [ "arm64" ], @@ -918,9 +917,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.4.tgz", - "integrity": "sha512-3Wm0zGYVCs6qDFAiSSDL+Z+r46EdtCv/2l+UlIdMbAq9hPJBvGu/rZOeuvCaIUjbArkmXac8HnTyQPJFzFWA0Q==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.6.tgz", + "integrity": "sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==", "cpu": [ "arm64" ], @@ -934,9 +933,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.4.tgz", - "integrity": "sha512-lWAYAezFinaJiD5Gv8HDidtsZdT3CDaCeqoPoJjeB57OqzvMajpIhlZFce5sCAH6VuX4mdkxCRqecCJFwfm2nQ==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.6.tgz", + "integrity": "sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==", "cpu": [ "x64" ], @@ -950,9 +949,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.4.tgz", - "integrity": "sha512-fHaIpT7x4gA6VQbdEpYUXRGyge/YbRrkG6DXM60XiBqDM2g2NcrsQaIuj375egnGFkJow4RHacgBOEsHfGbiUw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.6.tgz", + "integrity": "sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==", "cpu": [ "x64" ], @@ -966,9 +965,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.4.tgz", - "integrity": "sha512-MCrXxrTSE7jPN1NyXJr39E+aNFBrQZtO154LoCz7n99FuKqJDekgxipoodLNWdQP7/DZ5tKMc/efybx1l159hw==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.6.tgz", + "integrity": "sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==", "cpu": [ "arm64" ], @@ -982,9 +981,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.4.tgz", - "integrity": "sha512-JSVlm9MDhmTXw/sO2PE/MRj+G6XOSMZB+BcZ0a7d6KwVFZVpkHcb2okyoYFBaco6LeiL53BBklRlOrDDbOeE5w==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.6.tgz", + "integrity": "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==", "cpu": [ "x64" ], @@ -1002,6 +1001,7 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "license": "MIT", + "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -1116,6 +1116,7 @@ "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.2.5.tgz", "integrity": "sha512-k/2aAKj9IY7JBcnPrYv7frgHkfK0KsS7h8PgPW14GJREh+X5EX/icrypcQu5ge/Ggbwi+90plJll07YiRV/lFg==", "license": "Apache-2.0", + "peer": true, "dependencies": { "lodash": "^4.17.21", "lodash-es": "^4.17.21", @@ -1153,6 +1154,7 @@ "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.2.5.tgz", "integrity": "sha512-29SvRuY3gKyAHUUnIiJiAF/mTnokgrE7XqUXMj+CZK+sGcmAegwhlnQMJgLQciTodMwTwOaDyV1Fxc47VKTHFw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@x0k/json-schema-merge": "^1.0.2", "fast-uri": "^3.1.0", @@ -1218,7 +1220,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "license": "MIT", - "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -1229,7 +1230,6 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -1239,8 +1239,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -1249,9 +1248,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -1270,10 +1269,11 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.9", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", - "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", + "version": "19.2.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", + "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1321,7 +1321,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -1331,29 +1330,25 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -1364,15 +1359,13 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1385,7 +1378,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "license": "MIT", - "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -1395,7 +1387,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -1404,15 +1395,13 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1429,7 +1418,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -1443,7 +1431,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1456,7 +1443,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -1471,7 +1457,6 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "license": "MIT", - "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -1490,15 +1475,13 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause", - "peer": true + "license": "BSD-3-Clause" }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/acorn": { "version": "8.15.0", @@ -1518,7 +1501,6 @@ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.13.0" }, @@ -1531,6 +1513,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1564,7 +1547,6 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -1661,8 +1643,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/callsites": { "version": "3.1.0", @@ -1698,7 +1679,6 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.0" } @@ -1719,8 +1699,7 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/convert-source-map": { "version": "1.9.0", @@ -1808,8 +1787,7 @@ "version": "1.5.194", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz", "integrity": "sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==", - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -1864,7 +1842,6 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", "license": "MIT", - "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1886,15 +1863,13 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -1916,7 +1891,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1930,7 +1904,6 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -1943,7 +1916,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -1953,7 +1925,6 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "license": "BSD-2-Clause", - "peer": true, "engines": { "node": ">=4.0" } @@ -1963,7 +1934,6 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.8.x" } @@ -2015,22 +1985,19 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause", - "peer": true + "license": "BSD-2-Clause" }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=8" } @@ -2129,7 +2096,6 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2201,7 +2167,6 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.11.5" } @@ -2271,8 +2236,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/mime": { "version": "4.1.0", @@ -2294,7 +2258,6 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", - "peer": true, "engines": { "node": ">= 0.6" } @@ -2304,7 +2267,6 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -2322,16 +2284,15 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/next": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/next/-/next-16.1.4.tgz", - "integrity": "sha512-gKSecROqisnV7Buen5BfjmXAm7Xlpx9o2ueVQRo5DxQcjC8d330dOM1xiGWc2k3Dcnz0In3VybyRPOsudwgiqQ==", + "version": "16.1.6", + "resolved": "https://registry.npmjs.org/next/-/next-16.1.6.tgz", + "integrity": "sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==", "license": "MIT", "dependencies": { - "@next/env": "16.1.4", + "@next/env": "16.1.6", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", @@ -2345,14 +2306,14 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.1.4", - "@next/swc-darwin-x64": "16.1.4", - "@next/swc-linux-arm64-gnu": "16.1.4", - "@next/swc-linux-arm64-musl": "16.1.4", - "@next/swc-linux-x64-gnu": "16.1.4", - "@next/swc-linux-x64-musl": "16.1.4", - "@next/swc-win32-arm64-msvc": "16.1.4", - "@next/swc-win32-x64-msvc": "16.1.4", + "@next/swc-darwin-arm64": "16.1.6", + "@next/swc-darwin-x64": "16.1.6", + "@next/swc-linux-arm64-gnu": "16.1.6", + "@next/swc-linux-arm64-musl": "16.1.6", + "@next/swc-linux-x64-gnu": "16.1.6", + "@next/swc-linux-x64-musl": "16.1.6", + "@next/swc-win32-arm64-msvc": "16.1.6", + "@next/swc-win32-x64-msvc": "16.1.6", "sharp": "^0.34.4" }, "peerDependencies": { @@ -2382,8 +2343,7 @@ "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", @@ -2541,7 +2501,6 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", - "peer": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -2567,10 +2526,11 @@ } }, "node_modules/react": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", - "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -2580,6 +2540,7 @@ "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.10.tgz", "integrity": "sha512-gMckKUqn8aK/vCnfwoBpBVFUGT9SVQxwsYrp9yDHt0arXMamxALerliKBxr1TPbntirK/HGrUAHYbAeQTa9GHQ==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.24.7", "@restart/hooks": "^0.4.9", @@ -2607,15 +2568,16 @@ } }, "node_modules/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.3" + "react": "^19.2.4" } }, "node_modules/react-icons": { @@ -2644,6 +2606,7 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", + "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -2717,7 +2680,8 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -2790,8 +2754,7 @@ "url": "https://feross.org/support" } ], - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/scheduler": { "version": "0.27.0", @@ -2822,6 +2785,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2866,7 +2830,6 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "license": "BSD-3-Clause", - "peer": true, "dependencies": { "randombytes": "^2.1.0" } @@ -2990,7 +2953,6 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", - "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -3001,7 +2963,6 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "license": "BSD-3-Clause", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -3040,7 +3001,6 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "license": "MIT", - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3068,7 +3028,6 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -3078,7 +3037,6 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.14.0", @@ -3097,7 +3055,6 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "license": "MIT", - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -3132,7 +3089,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -3207,7 +3163,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -3265,7 +3220,6 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "license": "MIT", - "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -3279,7 +3233,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.0.tgz", "integrity": "sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -3328,7 +3281,6 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.13.0" } @@ -3338,7 +3290,6 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "license": "MIT", - "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", diff --git a/frontend/package.json b/frontend/package.json index 2896afa6..4d79f0f9 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -20,11 +20,11 @@ "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", "mime": "^4.1.0", - "next": "^16.1.4", + "next": "^16.1.6", "raw-loader": "^4.0.2", - "react": "^19.2.3", + "react": "^19.2.4", "react-bootstrap": "^2.10.10", - "react-dom": "^19.2.3", + "react-dom": "^19.2.4", "react-icons": "^5.5.0", "react-redux": "^9.2.0", "react-select": "^5.10.2", @@ -33,8 +33,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.0.9", - "@types/react": "^19.2.9", + "@types/node": "^25.2.1", + "@types/react": "^19.2.13", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", "typescript": "~5.9.3" diff --git a/logger/package-lock.json b/logger/package-lock.json index db8aeb44..255fa062 100644 --- a/logger/package-lock.json +++ b/logger/package-lock.json @@ -9,12 +9,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -25,9 +25,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -59,9 +59,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -134,9 +134,9 @@ } }, "node_modules/pino": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.2.1.tgz", - "integrity": "sha512-Tjyv76gdUe2460dEhtcnA4fU/+HhGq2Kr7OWlo2R/Xxbmn/ZNKWavNWTD2k97IE+s755iVU7WcaOEIl+H3cq8w==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.0.tgz", + "integrity": "sha512-0GNPNzHXBKw6U/InGe79A3Crzyk9bcSyObF9/Gfo9DLEf5qj5RF50RSjsu0W1rZ6ZqRGdzDFCRBQvi9/rSGPtA==", "license": "MIT", "dependencies": { "@pinojs/redact": "^0.4.0", diff --git a/logger/package.json b/logger/package.json index 9be599fc..9a1d0d57 100644 --- a/logger/package.json +++ b/logger/package.json @@ -12,12 +12,12 @@ "license": "ISC", "description": "", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..52f7b818 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,22 @@ +{ + "name": "displaycontroller", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "date-fns": "^4.1.0" + } + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..c4a64748 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "date-fns": "^4.1.0" + } +} diff --git a/ranges/cache/package-lock.json b/ranges/cache/package-lock.json index 58345c99..045b1f23 100644 --- a/ranges/cache/package-lock.json +++ b/ranges/cache/package-lock.json @@ -14,10 +14,10 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -29,11 +29,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -46,10 +46,10 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -63,7 +63,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -73,12 +73,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -87,7 +87,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -133,9 +133,9 @@ } }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -261,9 +261,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/cache/package.json b/ranges/cache/package.json index 8b2c6bc9..fdd43523 100644 --- a/ranges/cache/package.json +++ b/ranges/cache/package.json @@ -15,10 +15,10 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index 26591baf..c9bf59d1 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -14,12 +14,12 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -31,11 +31,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -46,12 +46,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -59,7 +59,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -68,7 +68,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -130,9 +130,9 @@ } }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -290,9 +290,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/log/package.json b/ranges/log/package.json index 626d51b1..4cdb06aa 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -15,12 +15,12 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/ranges/merge/package-lock.json b/ranges/merge/package-lock.json index 0c86108c..ae3d6566 100644 --- a/ranges/merge/package-lock.json +++ b/ranges/merge/package-lock.json @@ -14,14 +14,14 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -33,11 +33,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -48,12 +48,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -61,7 +61,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -70,7 +70,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -201,9 +201,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -541,9 +541,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/merge/package.json b/ranges/merge/package.json index dcbcaf55..1af066ce 100644 --- a/ranges/merge/package.json +++ b/ranges/merge/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, @@ -22,7 +22,7 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "socket.io": "^4.8.3" } diff --git a/ranges/multicast/package-lock.json b/ranges/multicast/package-lock.json index 522c411d..345ffd58 100644 --- a/ranges/multicast/package-lock.json +++ b/ranges/multicast/package-lock.json @@ -13,11 +13,11 @@ "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -29,11 +29,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -44,12 +44,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -58,7 +58,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -114,9 +114,9 @@ } }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -253,9 +253,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index abf1f786..06e972d9 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, @@ -20,6 +20,6 @@ "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" } } diff --git a/ranges/multicast/proxy/package-lock.json b/ranges/multicast/proxy/package-lock.json index d8934c71..2ef60c6d 100644 --- a/ranges/multicast/proxy/package-lock.json +++ b/ranges/multicast/proxy/package-lock.json @@ -12,12 +12,12 @@ "@network-utils/arp-lookup": "^2.1.0", "amqplib": "^0.10.9", "dc-logger": "file:../../../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "iconv-lite": "^0.7.2" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -26,12 +26,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -55,9 +55,9 @@ } }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -88,9 +88,9 @@ "link": true }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/multicast/proxy/package.json b/ranges/multicast/proxy/package.json index 78a50a98..59f368c5 100644 --- a/ranges/multicast/proxy/package.json +++ b/ranges/multicast/proxy/package.json @@ -13,12 +13,12 @@ "@network-utils/arp-lookup": "^2.1.0", "amqplib": "^0.10.9", "dc-logger": "file:../../../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "iconv-lite": "^0.7.2" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } } diff --git a/ranges/ssmdb2/package-lock.json b/ranges/ssmdb2/package-lock.json index b747c539..0c5099e0 100644 --- a/ranges/ssmdb2/package-lock.json +++ b/ranges/ssmdb2/package-lock.json @@ -15,11 +15,11 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -31,11 +31,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -49,10 +49,10 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -66,7 +66,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -76,12 +76,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -90,7 +90,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -146,9 +146,9 @@ } }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -293,9 +293,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index 1913f9db..d1da87e1 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, @@ -22,6 +22,6 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" } } diff --git a/ranges/ttl/package-lock.json b/ranges/ttl/package-lock.json index c01fcf38..d85495ab 100644 --- a/ranges/ttl/package-lock.json +++ b/ranges/ttl/package-lock.json @@ -8,14 +8,14 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ranges/ttl/package.json b/ranges/ttl/package.json index 67b25359..6fc56485 100644 --- a/ranges/ttl/package.json +++ b/ranges/ttl/package.json @@ -9,7 +9,7 @@ "build": "tsc" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" }, "files": [ diff --git a/ranges/types/package-lock.json b/ranges/types/package-lock.json index 0cfbf3f1..aa606c34 100644 --- a/ranges/types/package-lock.json +++ b/ranges/types/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -903,6 +903,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -912,9 +913,9 @@ } }, "node_modules/typia": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.0.tgz", - "integrity": "sha512-h1dQFo7m8XOzYkJ+YsxfAeWZeqroV81d+gXS168J4jFWjGp+47k/NizSXr/G/CXBCLlWSK86qfzoWTCPJeonIg==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.3.tgz", + "integrity": "sha512-L7x7WzOCpFyNCauWl6VYJVEG9EHZi5EPNBRzxTO1luaLCd6WEDf+xrJNT+hMZ8U+0X7hCsR1EUpi29LdHhvCvA==", "license": "MIT", "dependencies": { "@samchon/openapi": "^6.0.0", diff --git a/ranges/types/package.json b/ranges/types/package.json index 79699248..54aedb3c 100644 --- a/ranges/types/package.json +++ b/ranges/types/package.json @@ -13,7 +13,7 @@ "license": "ISC", "description": "", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", diff --git a/screens/evaluations/package-lock.json b/screens/evaluations/package-lock.json index 5483079e..c54a16c0 100644 --- a/screens/evaluations/package-lock.json +++ b/screens/evaluations/package-lock.json @@ -11,16 +11,16 @@ "dependencies": { "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "express-rate-limit": "^8.2.1", - "jsdom": "^27.4.0", + "jsdom": "^28.0.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", "@types/jsdom": "^27.0.0", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -32,11 +32,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -47,19 +47,19 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, "node_modules/@acemir/cssom": { - "version": "0.9.29", - "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.29.tgz", - "integrity": "sha512-G90x0VW+9nW4dFajtjCoT+NM0scAfH9Mb08IcjgFHYbfiL/lU04dTF9JuVOi3/OH+DJCQdcIseSXkdCB9Ky6JA==", + "version": "0.9.31", + "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz", + "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==", "license": "MIT" }, "node_modules/@asamuzakjp/css-color": { @@ -178,6 +178,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -186,9 +187,9 @@ } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.21", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.21.tgz", - "integrity": "sha512-plP8N8zKfEZ26figX4Nvajx8DuzfuRpLTqglQ5d0chfnt35Qt3X+m6ASZ+rG0D0kxe/upDVNwSIVJP5n4FuNfw==", + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz", + "integrity": "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==", "funding": [ { "type": "github", @@ -199,10 +200,7 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0", - "engines": { - "node": ">=18" - } + "license": "MIT-0" }, "node_modules/@csstools/css-tokenizer": { "version": "3.0.4", @@ -219,23 +217,24 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } }, "node_modules/@exodus/bytes": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.8.0.tgz", - "integrity": "sha512-8JPn18Bcp8Uo1T82gR8lh2guEOa5KKU/IEKvvdp0sgmi7coPBWf1Doi1EXsGZb2ehc8ym/StJCjffYV+ne7sXQ==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.11.0.tgz", + "integrity": "sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA==", "license": "MIT", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@exodus/crypto": "^1.0.0-rc.4" + "@noble/hashes": "^1.8.0 || ^2.0.0" }, "peerDependenciesMeta": { - "@exodus/crypto": { + "@noble/hashes": { "optional": true } } @@ -357,9 +356,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -656,30 +655,31 @@ } }, "node_modules/cssstyle": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.5.tgz", - "integrity": "sha512-GlsEptulso7Jg0VaOZ8BXQi3AkYM5BOJKEO/rjMidSCq70FkIC5y0eawrCXeYzxgt3OCf4Ls+eoxN+/05vN0Ag==", + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.7.tgz", + "integrity": "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==", "license": "MIT", "dependencies": { "@asamuzakjp/css-color": "^4.1.1", "@csstools/css-syntax-patches-for-csstree": "^1.0.21", - "css-tree": "^3.1.0" + "css-tree": "^3.1.0", + "lru-cache": "^11.2.4" }, "engines": { "node": ">=20" } }, "node_modules/data-urls": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-6.0.0.tgz", - "integrity": "sha512-BnBS08aLUM+DKamupXs3w2tJJoqU+AkaE/+6vQxi/G/DPmIZFJJp9Dkb1kM03AZx8ADehDUZgsNxju3mPXZYIA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", + "integrity": "sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==", "license": "MIT", "dependencies": { - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^15.0.0" + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0" }, "engines": { - "node": ">=20" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/dc-db-local": { @@ -736,9 +736,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -898,6 +898,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", @@ -1324,16 +1325,16 @@ "license": "MIT" }, "node_modules/jsdom": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-27.4.0.tgz", - "integrity": "sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==", + "version": "28.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.0.0.tgz", + "integrity": "sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA==", "license": "MIT", "dependencies": { - "@acemir/cssom": "^0.9.28", + "@acemir/cssom": "^0.9.31", "@asamuzakjp/dom-selector": "^6.7.6", - "@exodus/bytes": "^1.6.0", - "cssstyle": "^5.3.4", - "data-urls": "^6.0.0", + "@exodus/bytes": "^1.11.0", + "cssstyle": "^5.3.7", + "data-urls": "^7.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^6.0.0", "http-proxy-agent": "^7.0.2", @@ -1343,11 +1344,11 @@ "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^6.0.0", + "undici": "^7.20.0", "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^8.0.0", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^15.1.0", - "ws": "^8.18.3", + "webidl-conversions": "^8.0.1", + "whatwg-mimetype": "^5.0.0", + "whatwg-url": "^16.0.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -2140,6 +2141,15 @@ "node": ">=14.17" } }, + "node_modules/undici": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", + "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -2178,34 +2188,35 @@ } }, "node_modules/webidl-conversions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.0.tgz", - "integrity": "sha512-n4W4YFyz5JzOfQeA8oN7dUYpR+MBP3PIUsn2jLjWXwK5ASUzt0Jc/A5sAUZoCYFJRGF0FBKJ+1JjN43rNdsQzA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-8.0.1.tgz", + "integrity": "sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==", "license": "BSD-2-Clause", "engines": { "node": ">=20" } }, "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-5.0.0.tgz", + "integrity": "sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/whatwg-url": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-15.1.0.tgz", - "integrity": "sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.0.tgz", + "integrity": "sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==", "license": "MIT", "dependencies": { + "@exodus/bytes": "^1.11.0", "tr46": "^6.0.0", - "webidl-conversions": "^8.0.0" + "webidl-conversions": "^8.0.1" }, "engines": { - "node": ">=20" + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/wrappy": { @@ -2214,27 +2225,6 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "license": "ISC" }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/xml-name-validator": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", diff --git a/screens/evaluations/package.json b/screens/evaluations/package.json index d9a0b1e4..32fbe838 100644 --- a/screens/evaluations/package.json +++ b/screens/evaluations/package.json @@ -12,16 +12,16 @@ "dependencies": { "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "express-rate-limit": "^8.2.1", - "jsdom": "^27.4.0", + "jsdom": "^28.0.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", "@types/jsdom": "^27.0.0", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/images/package-lock.json b/screens/images/package-lock.json index 8012cdd7..8c18d1f7 100644 --- a/screens/images/package-lock.json +++ b/screens/images/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "body-parser": "^2.2.2", "dc-logger": "file:../../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "express-fileupload": "^1.5.2", "express-rate-limit": "^8.2.1", @@ -20,7 +20,7 @@ "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,12 +30,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -159,9 +159,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -484,9 +484,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -574,6 +574,7 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", + "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", diff --git a/screens/images/package.json b/screens/images/package.json index 131a59f7..7121f84d 100644 --- a/screens/images/package.json +++ b/screens/images/package.json @@ -12,7 +12,7 @@ "dependencies": { "body-parser": "^2.2.2", "dc-logger": "file:../../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "express-fileupload": "^1.5.2", "express-rate-limit": "^8.2.1", @@ -21,7 +21,7 @@ "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/screenCast/package-lock.json b/screens/screenCast/package-lock.json index ce9c5023..c32b088b 100644 --- a/screens/screenCast/package-lock.json +++ b/screens/screenCast/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -25,12 +25,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -39,7 +39,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -72,9 +72,9 @@ } }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" diff --git a/screens/screenCast/package.json b/screens/screenCast/package.json index d4da9373..6b1fa8af 100644 --- a/screens/screenCast/package.json +++ b/screens/screenCast/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } } diff --git a/screens/screenManager/package-lock.json b/screens/screenManager/package-lock.json index 7d54af0b..2b7ed6b5 100644 --- a/screens/screenManager/package-lock.json +++ b/screens/screenManager/package-lock.json @@ -15,14 +15,14 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -34,11 +34,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -49,12 +49,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -63,7 +63,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -75,7 +75,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -206,9 +206,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -546,9 +546,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/screens/screenManager/package.json b/screens/screenManager/package.json index cd0fe538..1a8422e6 100644 --- a/screens/screenManager/package.json +++ b/screens/screenManager/package.json @@ -16,14 +16,14 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/types/package-lock.json b/screens/types/package-lock.json index 95127afb..74c1ed9b 100644 --- a/screens/types/package-lock.json +++ b/screens/types/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -889,6 +889,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -898,9 +899,9 @@ } }, "node_modules/typia": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.0.tgz", - "integrity": "sha512-h1dQFo7m8XOzYkJ+YsxfAeWZeqroV81d+gXS168J4jFWjGp+47k/NizSXr/G/CXBCLlWSK86qfzoWTCPJeonIg==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.3.tgz", + "integrity": "sha512-L7x7WzOCpFyNCauWl6VYJVEG9EHZi5EPNBRzxTO1luaLCd6WEDf+xrJNT+hMZ8U+0X7hCsR1EUpi29LdHhvCvA==", "license": "MIT", "dependencies": { "@samchon/openapi": "^6.0.0", diff --git a/screens/types/package.json b/screens/types/package.json index b3a2f114..ba76705e 100644 --- a/screens/types/package.json +++ b/screens/types/package.json @@ -20,6 +20,6 @@ "typescript": "~5.9.3" }, "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" } } \ No newline at end of file diff --git a/serverState/package-lock.json b/serverState/package-lock.json index 1bfb8763..47eeac65 100644 --- a/serverState/package-lock.json +++ b/serverState/package-lock.json @@ -14,15 +14,15 @@ "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", "dc-screens-types": "file:../screens/types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", - "semver": "^7.7.3", + "semver": "^7.7.4", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } @@ -34,11 +34,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -51,10 +51,10 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -64,12 +64,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -78,7 +78,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -171,9 +171,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -420,9 +420,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -1044,9 +1044,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "license": "ISC", "bin": { "semver": "bin/semver.js" diff --git a/serverState/package.json b/serverState/package.json index 09ccccde..79c519bf 100644 --- a/serverState/package.json +++ b/serverState/package.json @@ -15,15 +15,15 @@ "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", "dc-screens-types": "file:../screens/types", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "express": "^5.2.1", - "semver": "^7.7.3", + "semver": "^7.7.4", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } diff --git a/syncTime/package-lock.json b/syncTime/package-lock.json index fab83eb1..5d118390 100644 --- a/syncTime/package-lock.json +++ b/syncTime/package-lock.json @@ -12,11 +12,11 @@ "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -27,11 +27,11 @@ "dependencies": { "@prisma/adapter-pg": "^7.3.0", "@prisma/client": "^7.3.0", - "dotenv": "^17.2.3", - "pg": "^8.17.2" + "dotenv": "^17.2.4", + "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "@types/pg": "^8.16.0", "prisma": "^7.3.0", "typescript": "^5.9.3" @@ -44,10 +44,10 @@ "@prisma/adapter-mariadb": "^7.3.0", "@prisma/client": "^7.3.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.3" + "dotenv": "^17.2.4" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "prisma": "^7.3.0", "typescript": "^5.9.3" } @@ -57,12 +57,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.3", - "pino": "^10.2.1", + "dotenv": "^17.2.4", + "pino": "^10.3.0", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" } }, @@ -73,9 +73,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", "dependencies": { @@ -112,9 +112,9 @@ } }, "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.2.4", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", + "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/syncTime/package.json b/syncTime/package.json index 831f5ed5..e2bc103e 100644 --- a/syncTime/package.json +++ b/syncTime/package.json @@ -11,14 +11,14 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "typescript": "^5.9.3" }, "dependencies": { "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", - "dotenv": "^17.2.3", + "dotenv": "^17.2.4", "socket.io-client": "^4.8.3" } } diff --git a/utils/recorder/package-lock.json b/utils/recorder/package-lock.json index 85e6dcbd..376440f2 100644 --- a/utils/recorder/package-lock.json +++ b/utils/recorder/package-lock.json @@ -12,7 +12,7 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "nodemon": "^3.1.11", "ts-node": "^10.9.2", "typescript": "^5.9.3" @@ -88,11 +88,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.0.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.9.tgz", - "integrity": "sha512-/rpCXHlCWeqClNBwUhDcusJxXYDjZTyE8v5oTO7WbL8eij2nKhUeU89/6xgjU7N4/Vh3He0BtyhJdQbDyhiXAw==", + "version": "25.2.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", + "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -591,6 +592,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/utils/recorder/package.json b/utils/recorder/package.json index 5145d802..d4225231 100644 --- a/utils/recorder/package.json +++ b/utils/recorder/package.json @@ -15,7 +15,7 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.0.9", + "@types/node": "^25.2.1", "nodemon": "^3.1.11", "ts-node": "^10.9.2", "typescript": "^5.9.3" From 2a124cc2ff30b46fa4b58535dd18ebb0ae24c1ce Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 7 Feb 2026 23:38:52 +0100 Subject: [PATCH 02/31] feat: Rework log parsing --- ranges/log/package-lock.json | 949 +++++++++++++++++- ranges/log/package.json | 12 +- ranges/log/src/index.ts | 33 +- ranges/log/src/streams/accumulateRanges.ts | 89 -- ranges/log/src/streams/csvLines.ts | 37 + ranges/log/src/streams/logLine.ts | 126 +++ ranges/log/src/streams/logParser.ts | 100 -- .../src/streams/{logReader.ts => logTail.ts} | 2 +- ranges/log/src/streams/mergeRange.ts | 1 - ranges/log/src/streams/rangeState.ts | 101 ++ ranges/log/src/types.ts | 54 +- ranges/log/tsconfig.json | 25 +- 12 files changed, 1275 insertions(+), 254 deletions(-) delete mode 100644 ranges/log/src/streams/accumulateRanges.ts create mode 100644 ranges/log/src/streams/csvLines.ts create mode 100644 ranges/log/src/streams/logLine.ts delete mode 100644 ranges/log/src/streams/logParser.ts rename ranges/log/src/streams/{logReader.ts => logTail.ts} (98%) create mode 100644 ranges/log/src/streams/rangeState.ts diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index c9bf59d1..728430a5 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -10,18 +10,22 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", + "csv-parse": "^6.1.0", + "date-fns": "^4.1.0", "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dotenv": "^17.2.4", - "socket.io-client": "^4.8.3" + "socket.io-client": "^4.8.3", + "typia": "^11.0.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/node": "^25.2.1", + "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", - "typescript": "^5.9.3" + "typescript": "~5.9.3" } }, "../../database/local": { @@ -75,6 +79,27 @@ "typescript": "~5.9.3" } }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -113,12 +138,24 @@ "node": ">= 8" } }, + "node_modules/@samchon/openapi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-6.0.1.tgz", + "integrity": "sha512-+nkznmCf/6YavoVkvWg60YoC0UbXY/oK9uMZReyrFcIcXecf+YoWmOLUg+TlgHi+h+6DPgRy6zRkZfiRd3uRnA==", + "license": "MIT" + }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", + "license": "MIT" + }, "node_modules/@types/amqplib": { "version": "0.10.8", "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.10.8.tgz", @@ -133,8 +170,9 @@ "version": "25.2.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", - "dev": true, + "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "undici-types": "~7.16.0" } @@ -152,6 +190,45 @@ "node": ">=10" } }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -166,6 +243,12 @@ "node": ">= 8" } }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", + "license": "MIT" + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -176,6 +259,26 @@ "node": ">=8" } }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -189,6 +292,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -202,12 +316,58 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-more-ints": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", "license": "MIT" }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "license": "MIT" + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -233,6 +393,66 @@ "fsevents": "~2.3.2" } }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "license": "ISC", + "engines": { + "node": ">= 10" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, "node_modules/commander": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", @@ -243,6 +463,42 @@ "node": "^12.20.0 || >=14" } }, + "node_modules/comment-json": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.1.tgz", + "integrity": "sha512-taEtr3ozUmOB7it68Jll7s0Pwm+aoiHyXKrEC8SEodL4rNpdfDLqa7PfBlrgFoCNNdR8ImL+muti5IGvktJAAg==", + "license": "MIT", + "dependencies": { + "array-timsort": "^1.0.3", + "core-util-is": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/csv-parse": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz", + "integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==", + "license": "MIT" + }, + "node_modules/date-fns": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", + "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/dc-db-local": { "resolved": "../../database/local", "link": true @@ -276,6 +532,18 @@ } } }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -301,6 +569,21 @@ "url": "https://dotenvx.com" } }, + "node_modules/drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/engine.io-client": { "version": "6.6.3", "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.3.tgz", @@ -323,6 +606,28 @@ "node": ">=10.0.0" } }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -350,6 +655,21 @@ "reusify": "^1.0.4" } }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -378,6 +698,16 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-tsconfig": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", @@ -404,6 +734,21 @@ "node": ">= 6" } }, + "node_modules/global-prefix": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ini": "^4.1.3", + "kind-of": "^6.0.3", + "which": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/globby": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", @@ -425,6 +770,64 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -435,6 +838,48 @@ "node": ">= 4" } }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.7.tgz", + "integrity": "sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==", + "license": "MIT", + "dependencies": { + "@inquirer/external-editor": "^1.0.0", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -448,6 +893,22 @@ "node": ">=8" } }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -458,6 +919,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -471,6 +941,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -481,6 +960,60 @@ "node": ">=0.12.0" } }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.2.tgz", + "integrity": "sha512-mIcis6w+JiQf3P7t7mg/35GKB4T1FQsBOtMIvuKw4YErj5RjtbhcTd5/I30fmkmGMwvI0WlzSNN+27K0QCMkAw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -505,12 +1038,37 @@ "node": ">=8.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "license": "ISC" + }, "node_modules/mylas": { "version": "2.1.13", "resolved": "https://registry.npmjs.org/mylas/-/mylas-2.1.13.tgz", @@ -535,6 +1093,60 @@ "node": ">=0.10.0" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", + "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", + "license": "MIT", + "dependencies": { + "quansync": "^0.2.7" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -571,6 +1183,22 @@ "node": ">=12" } }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -608,6 +1236,33 @@ ], "license": "MIT" }, + "node_modules/randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "license": "MIT", + "dependencies": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -627,6 +1282,27 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -637,6 +1313,28 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -648,6 +1346,15 @@ "node": ">=0.10.0" } }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -672,6 +1379,60 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -727,6 +1488,72 @@ "node": ">=10.0.0" } }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -740,6 +1567,25 @@ "node": ">=8.0" } }, + "node_modules/ts-patch": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ts-patch/-/ts-patch-3.3.0.tgz", + "integrity": "sha512-zAOzDnd5qsfEnjd9IGy1IRuvA7ygyyxxdxesbhMdutt8AHFjD8Vw8hU2rMF89HX1BKRWFYqKHrO8Q6lw0NeUZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "global-prefix": "^4.0.0", + "minimist": "^1.2.8", + "resolve": "^1.22.2", + "semver": "^7.6.3", + "strip-ansi": "^6.0.1" + }, + "bin": { + "ts-patch": "bin/ts-patch.js", + "tspc": "bin/tspc.js" + } + }, "node_modules/tsc-alias": { "version": "1.8.16", "resolved": "https://registry.npmjs.org/tsc-alias/-/tsc-alias-1.8.16.tgz", @@ -762,12 +1608,30 @@ "node": ">=16.20.2" } }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -776,11 +1640,41 @@ "node": ">=14.17" } }, + "node_modules/typia": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.3.tgz", + "integrity": "sha512-L7x7WzOCpFyNCauWl6VYJVEG9EHZi5EPNBRzxTO1luaLCd6WEDf+xrJNT+hMZ8U+0X7hCsR1EUpi29LdHhvCvA==", + "license": "MIT", + "dependencies": { + "@samchon/openapi": "^6.0.0", + "@standard-schema/spec": "^1.0.0", + "commander": "^10.0.0", + "comment-json": "^4.2.3", + "inquirer": "^8.2.5", + "package-manager-detector": "^0.2.0", + "randexp": "^0.5.3" + }, + "bin": { + "typia": "lib/executable/typia.js" + }, + "peerDependencies": { + "typescript": ">=4.8.0 <5.10.0" + } + }, + "node_modules/typia/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/url-parse": { @@ -793,6 +1687,51 @@ "requires-port": "^1.0.0" } }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", diff --git a/ranges/log/package.json b/ranges/log/package.json index 4cdb06aa..09b7af6f 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -4,24 +4,28 @@ "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "build": "tsc && tsc-alias" + "build": "ts-patch install && tsc && tsc-alias" }, "author": "Sven Finn", "license": "ISC", "description": "", "dependencies": { "amqplib": "^0.10.9", + "csv-parse": "^6.1.0", + "date-fns": "^4.1.0", "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dotenv": "^17.2.4", - "socket.io-client": "^4.8.3" + "socket.io-client": "^4.8.3", + "typia": "^11.0.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/node": "^25.2.1", + "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", - "typescript": "^5.9.3" + "typescript": "~5.9.3" } -} +} \ No newline at end of file diff --git a/ranges/log/src/index.ts b/ranges/log/src/index.ts index 71c71e84..5db9e687 100644 --- a/ranges/log/src/index.ts +++ b/ranges/log/src/index.ts @@ -1,17 +1,17 @@ -import { logReaderStream } from "./streams/logReader"; import amqp from "amqplib"; import { logger } from "dc-logger"; - import "./cache/updater"; // Import the updater to start the caching import { ServerStateStream } from "./streams/serverState"; import { createLocalClient } from "dc-db-local"; -import { LogParserStream } from "./streams/logParser"; import { MulticastStream } from "./streams/multicastRecv"; import { RangeMerger } from "./streams/mergeRange"; -import { AccumulateRanges } from "./streams/accumulateRanges"; import { DebounceStream } from "./streams/debounce"; import { RabbitSenderStream } from "./streams/rabbitSender"; import { MulticastAccumulate } from "./streams/multicastAcc"; +import { LogTailStream } from "./streams/logTail"; +import { CsvLineStream } from "./streams/csvLines"; +import { LogLineStream } from "./streams/logLine"; +import { RangeStateStream } from "./streams/rangeState"; async function main() { @@ -19,21 +19,28 @@ async function main() { const connection = await amqp.connect("amqp://rabbitmq"); const localClient = createLocalClient(); - const merger = new RangeMerger(localClient); + const rangeMerger = new RangeMerger(localClient); const serverState = new ServerStateStream(); - const logReader = new logReaderStream(localClient); - const logParser = new LogParserStream(); - const accumulateRanges = new AccumulateRanges(); - const debounceRanges = new DebounceStream(300); - serverState.pipe(logReader).pipe(logParser).pipe(accumulateRanges).pipe(debounceRanges).pipe(merger); + const logTail = new LogTailStream(localClient); + const csvLines = new CsvLineStream(); + const logLines = new LogLineStream(); + const rangeState = new RangeStateStream(); + const rangeDebounce = new DebounceStream(300); + serverState + .pipe(logTail) + .pipe(csvLines) + .pipe(logLines) + .pipe(rangeState) + .pipe(rangeDebounce) + .pipe(rangeMerger); const multicastRecv = new MulticastStream(connection); const multicastAccumulate = new MulticastAccumulate(); - multicastRecv.pipe(multicastAccumulate).pipe(merger); + multicastRecv.pipe(multicastAccumulate).pipe(rangeMerger); - const sender = new RabbitSenderStream(connection); - merger.pipe(sender); + const rangePublisher = new RabbitSenderStream(connection); + rangeMerger.pipe(rangePublisher); logger.info("Connected to rabbitmq"); } diff --git a/ranges/log/src/streams/accumulateRanges.ts b/ranges/log/src/streams/accumulateRanges.ts deleted file mode 100644 index 4eac3fb5..00000000 --- a/ranges/log/src/streams/accumulateRanges.ts +++ /dev/null @@ -1,89 +0,0 @@ -import { Transform } from "stream"; -import { LogInternalRange, LogMessage } from "../types"; -import { logger } from "dc-logger"; -import { INVALID_HIT_POS } from "dc-ranges-types"; - -export class AccumulateRanges extends Transform { - private ranges: Map = new Map(); - - constructor() { - super({ objectMode: true }); - } - - _transform(chunk: LogMessage, encoding: BufferEncoding, callback: () => void): void { - if (chunk.action === "reset") { - this.ranges.clear(); - callback(); - return; - } - if (chunk.timestamp < (new Date(Date.now() - 24 * 60 * 60 * 1000))) { - callback(); - return; - } - if (chunk.targetId !== this.ranges.get(chunk.rangeId)?.targetId) { - this.ranges.delete(chunk.rangeId); - } - const rangeData: LogInternalRange = this.ranges.get(chunk.rangeId) || { - rangeId: chunk.rangeId, - targetId: chunk.targetId, - discipline: null, - shooter: null, - hits: [], - startListId: null, - source: "log", - ttl: 15000, - last_update: chunk.timestamp, - } - rangeData.shooter = chunk.shooter.id || null; // Id is 0 if free - rangeData.discipline = { disciplineId: chunk.discipline.id, roundId: chunk.round.id }; - while (rangeData.hits.length - 1 < chunk.round.id) { - rangeData.hits.push([]); - } - if (chunk.action === "insert") { - logger.info(`Adding hit ${chunk.hit.id} to range ${chunk.rangeId}`); - if (rangeData.hits[chunk.round.id] === null) { - rangeData.hits[chunk.round.id] = []; - } - if (chunk.hit.x >= INVALID_HIT_POS[0] && chunk.hit.y >= INVALID_HIT_POS[1]) { - - rangeData.hits[chunk.round.id]?.push({ - id: chunk.hit.id, - valid: false, - }); - } else { - rangeData.hits[chunk.round.id]?.push({ - id: chunk.hit.id, - x: chunk.hit.x, - y: chunk.hit.y, - divisor: chunk.hit.divisor, - rings: chunk.hit.rings, - innerTen: chunk.hit.innerRing, - valid: true - }); - } - rangeData.hits[chunk.round.id]?.forEach((hit, index) => { - hit.id = index + 1; - return hit; - }) - - } else { - logger.info(`Removing hit ${chunk.hit.id} from range ${chunk.rangeId}`); - if (rangeData.hits[chunk.round.id] === null) { - callback(); - return; - } - rangeData.hits[chunk.round.id] = rangeData.hits[chunk.round.id]?.filter(hit => hit.id !== chunk.hit.id) || null; - rangeData.hits[chunk.round.id]?.forEach(hit => { - if (hit.id > chunk.hit.id) { - hit.id--; - } - return hit; - }); - } - rangeData.hits[chunk.round.id]?.sort((a, b) => a.id - b.id); - rangeData.last_update = chunk.timestamp; - this.ranges.set(chunk.rangeId, rangeData); - this.push(rangeData); - callback(); - } -} \ No newline at end of file diff --git a/ranges/log/src/streams/csvLines.ts b/ranges/log/src/streams/csvLines.ts new file mode 100644 index 00000000..1890214f --- /dev/null +++ b/ranges/log/src/streams/csvLines.ts @@ -0,0 +1,37 @@ +import { Transform } from "stream"; +import { logger } from "dc-logger"; +import { RawLogMessage } from "../types"; +import { parse } from "csv-parse/sync"; + + +export class CsvLineStream extends Transform { + constructor() { + super({ objectMode: true }); + } + + _transform(line: string, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void): void { + if (line === "LOG_RESET") { + const message: RawLogMessage = { action: "reset" }; + this.push(message); + return callback(); + + } + try { + const records = parse(line, { + delimiter: ";", + relax_column_count: true, + trim: true, + }); + + if (records.length > 0) { + this.push({ + action: "line", + parts: records[0], + } as RawLogMessage); + } + } catch (err) { + logger.error(`Error parsing CSV: ${err}`); + } + callback(); + } +} \ No newline at end of file diff --git a/ranges/log/src/streams/logLine.ts b/ranges/log/src/streams/logLine.ts new file mode 100644 index 00000000..160c4365 --- /dev/null +++ b/ranges/log/src/streams/logLine.ts @@ -0,0 +1,126 @@ +import { isValid, parse } from "date-fns"; +import { Transform } from "node:stream"; +import { isLogLine, LogLine, RawLogMessage } from "../types"; +import { logger } from "dc-logger"; +import { Index, INVALID_HIT_POS, RangeId, ShooterId, UnsignedInteger } from "dc-ranges-types"; + +const LOG_LINE_PARTS = { + RANGE_ID: 0, + DISCIPLINE_ID: 3, + ROUND_ID: 5, + SHOOTER_ID: 7, + HIT_ID: 13, + TIME: 14, + DATE: 15, + RINGS: 16, + HIT_X: 17, + HIT_Y: 18, + DIVISOR: 19, + TARGET_ID: 26, + ACTION: 27, + innerTen: 28, +} +const EXPECTED_COLUMN_COUNT = 30; + +export class LogLineStream extends Transform { + constructor() { + super({ objectMode: true }); + } + + private transformAction(action: string): "insert" | "delete" { + if (action === "i") return "insert"; + if (action === "d") return "delete"; + throw new Error(`Unknown action "${action}" in log line.`); + } + + private intOrThrow(value: string): number { + const parsed = parseInt(value, 10); + if (isNaN(parsed)) { + throw new Error(`Value "${value}" is not a valid integer.`); + } + return parsed; + } + + private parseDeFloat(value: string): number { + const normalized = value.replace(/,/g, "."); + const parsed = parseFloat(normalized); + if (isNaN(parsed)) { + throw new Error(`Value "${value}" is not a valid float.`); + } + return parsed; + } + + private parseTimestamp(dateStr: string, timeStr: string): Date { + const combined = `${dateStr.trim()} ${timeStr.trim()}`; + const dt = parse( + combined, + "d.M.yyyy H:m:s.SSS", + new Date() + ); + + if (!isValid(dt)) { + throw new Error(`Invalid timestamp: ${combined}`); + } + + return dt; + } + + private createLogLine(parts: string[]): LogLine | null { + if (parts.length != EXPECTED_COLUMN_COUNT) { + logger.warn(`Unexpected number of columns in log line. Expected ${EXPECTED_COLUMN_COUNT}, got ${parts.length}. Line: ${parts.join(",")}`); + return null; + } + + try { + const timestamp = this.parseTimestamp(parts[LOG_LINE_PARTS.DATE], parts[LOG_LINE_PARTS.TIME]); + if (timestamp < (new Date(Date.now() - 24 * 60 * 60 * 1000))) { + logger.debug(`Skipping log line with old timestamp: ${timestamp.toISOString()}`); + return null; + } + + const hitX = this.parseDeFloat(parts[LOG_LINE_PARTS.HIT_X]); + const hitY = this.parseDeFloat(parts[LOG_LINE_PARTS.HIT_Y]); + + const line: LogLine = { + action: this.transformAction(parts[LOG_LINE_PARTS.ACTION]), + rangeId: this.intOrThrow(parts[LOG_LINE_PARTS.RANGE_ID]) as RangeId, + targetId: parts[LOG_LINE_PARTS.TARGET_ID], + shooterId: this.intOrThrow(parts[LOG_LINE_PARTS.SHOOTER_ID]) as ShooterId, + discipline: { + disciplineId: this.intOrThrow(parts[LOG_LINE_PARTS.DISCIPLINE_ID]) as Index, + roundId: this.intOrThrow(parts[LOG_LINE_PARTS.ROUND_ID]) as Index, + }, + hit: { + id: this.intOrThrow(parts[LOG_LINE_PARTS.HIT_ID]) as UnsignedInteger, + x: hitX / 100, + y: hitY / 100, + divisor: this.intOrThrow(parts[LOG_LINE_PARTS.DIVISOR]) as UnsignedInteger, + rings: this.parseDeFloat(parts[LOG_LINE_PARTS.RINGS]), + innerTen: parts[LOG_LINE_PARTS.innerTen] === "IZ", + valid: hitX < INVALID_HIT_POS[0] && hitY < INVALID_HIT_POS[1], + }, + timestamp, + } + if (!isLogLine(line)) { + logger.warn(`Parsed log line does not conform to LogLine type. Line: ${JSON.stringify(line)}`); + return null; + } + return line; + } catch (error) { + logger.warn(`Failed to parse log line: ${error instanceof Error ? error.message : String(error)}`); + return null; + } + } + _transform(msg: RawLogMessage, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void): void { + if (msg.action === "reset") { + this.push({ action: "reset" }); + return callback(); + } + + const logLine = this.createLogLine(msg.parts); + if (logLine) { + this.push(logLine); + } + callback(); + } +} \ No newline at end of file diff --git a/ranges/log/src/streams/logParser.ts b/ranges/log/src/streams/logParser.ts deleted file mode 100644 index 1db42f93..00000000 --- a/ranges/log/src/streams/logParser.ts +++ /dev/null @@ -1,100 +0,0 @@ -import { Transform } from "stream"; -import { logger } from "dc-logger"; -import { LogMessage, LogLine } from "../types"; - - -export class LogParserStream extends Transform { - constructor() { - super({ objectMode: true }); - } - - _transform(line: string, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void): void { - if (line === "LOG_RESET") { - const message: LogMessage = { action: "reset" }; - this.push(message); - callback(); - return - } - logger.debug(`Parsing line: ${line}`); - const values = line.split(";"); - for (let i = 0; i < values.length; i++) { - values[i] = values[i].replace(/^"|"$/g, ""); - values[i] = values[i].trim(); - } - if (values.length != 30) { - logger.warn(`log line does not have correct length: ${values.length} != 30`); - callback(); - return; - } - try { - const logInformation: LogLine = { - rangeId: parseInt(values[0]), - targetId: this.parseTargetId(values[26]) || -1, - action: values[27] == "i" ? "insert" : "delete", - shooter: { - name: values[6], - id: Number(values[7]), - team: values[8], - club: values[9], - class: { - name: values[10], - id: parseInt(values[11]), - }, - }, - discipline: { - name: values[2], - id: parseInt(values[3]), - }, - round: { - name: values[4], - id: parseInt(values[5]), - }, - hit: { - id: parseInt(values[13]), - x: parseFloat(values[17]) / 100, - y: parseFloat(values[18]) / 100, - divisor: parseFloat(values[19]), - innerRing: values[28] === "IZ", - rings: parseFloat(values[16].replace(/,/gi, ".")), - }, - timestamp: this.parseTimeStamp(values[15], values[14]) || new Date(), - - } - this.push(logInformation); - } catch (error) { - logger.warn(`Error occurred whilst trying to parse line: ${error}`); - } - callback(); - } - - private parseTargetId(targetId: string): undefined | number { - if (targetId.match("0x") != null) { - const intTargetId = parseInt(targetId, 16); - if (intTargetId > 2147483647) { - return intTargetId - 4294967296; - } - return intTargetId; - } - logger.warn("Failed to parse targetId"); - return undefined; - } - - private parseTimeStamp(dateStr: string, timeStr: string): undefined | Date { - if (dateStr.length == 0 || timeStr.length == 0) { - logger.warn("Failed to parse timestamp, len=0"); - return undefined; - } - const date = dateStr.split(".").map((value) => parseInt(value)); - const tempTime = timeStr.split(":"); - if (date.length != 3 || tempTime.length != 3) { - logger.warn(`Failed to parse timestamp ${date} ${tempTime}`); - return undefined; - } - const time = [tempTime[0], tempTime[1], ...tempTime[2].split(".")].map((value) => parseInt(value)); - if (date.includes(NaN) || time.includes(NaN)) { - logger.warn("Failed to parse timestamp, NAN"); - return undefined; - } - return new Date(date[2], date[1] - 1, date[0], time[0], time[1], time[2], time[3]); - } -} \ No newline at end of file diff --git a/ranges/log/src/streams/logReader.ts b/ranges/log/src/streams/logTail.ts similarity index 98% rename from ranges/log/src/streams/logReader.ts rename to ranges/log/src/streams/logTail.ts index 3fb3c07b..f514f4e9 100644 --- a/ranges/log/src/streams/logReader.ts +++ b/ranges/log/src/streams/logTail.ts @@ -4,7 +4,7 @@ import { logger } from "dc-logger"; import * as fs from "fs"; import { Duplex } from "stream"; -export class logReaderStream extends Duplex { +export class LogTailStream extends Duplex { private sshThread: ChildProcess | null = null; private localClient: LocalClient; private serverState: boolean = false; diff --git a/ranges/log/src/streams/mergeRange.ts b/ranges/log/src/streams/mergeRange.ts index 3dd87eb5..f305cfac 100644 --- a/ranges/log/src/streams/mergeRange.ts +++ b/ranges/log/src/streams/mergeRange.ts @@ -10,7 +10,6 @@ import { logger } from "dc-logger"; export class RangeMerger extends Transform { private multicastStates: Map> = new Map(); private logStates: Map = new Map(); - private targetIdBlacklist: Set = new Set(); private freeTimeout: number = 30 * 60 * 1000; constructor(localClient: LocalClient) { diff --git a/ranges/log/src/streams/rangeState.ts b/ranges/log/src/streams/rangeState.ts new file mode 100644 index 00000000..38df3396 --- /dev/null +++ b/ranges/log/src/streams/rangeState.ts @@ -0,0 +1,101 @@ +import { Transform } from "stream"; +import { LogInternalRange, LogLine, LogMessage } from "../types"; +import { logger } from "dc-logger"; +import { Hits, RangeId } from "dc-ranges-types"; + +export class RangeStateStream extends Transform { + private ranges: Map = new Map(); + + constructor() { + super({ objectMode: true }); + } + + private createEmptyRange(chunk: LogLine): LogInternalRange { + return { + rangeId: chunk.rangeId, + targetId: chunk.targetId, + discipline: chunk.discipline, + shooter: chunk.shooterId || null, // Id is 0 if free + hits: [], + startListId: null, + source: "log", + ttl: 15000, + last_update: chunk.timestamp, + } + } + + private normalizeHitIds(hits: Hits): void { + for (let i = 0; i < hits.length; i++) { + hits[i].id = i + 1; + } + } + + private addHitToRange(rangeData: LogInternalRange, chunk: LogLine): void { + if (chunk.action !== "insert") return; + + const roundId = chunk.discipline.roundId; + while (rangeData.hits.length <= roundId) { + rangeData.hits.push([]); + } + + const hits = rangeData.hits[roundId]; + + const insertIndex = Math.max(0, Math.min(chunk.hit.id - 1, hits.length)); + hits.splice(insertIndex, 0, chunk.hit); + + this.normalizeHitIds(hits); + } + + private removeHitFromRange(rangeData: LogInternalRange, chunk: LogLine): void { + if (chunk.action !== "delete") return; + + const roundId = chunk.discipline.roundId; + const hits = rangeData.hits[roundId]; + if (!hits) { + logger.warn(`Trying to remove hit from non-existing round ${roundId} in range ${chunk.rangeId}`); + return; + } + + const hitIndex = hits.findIndex(hit => hit.id === chunk.hit.id); + if (hitIndex === -1) { + logger.warn(`Trying to remove non-existing hit ${chunk.hit.id} from range ${chunk.rangeId}, round ${roundId}`); + return; + } + + hits.splice(hitIndex, 1); + this.normalizeHitIds(hits); + } + + _transform(chunk: LogMessage, encoding: BufferEncoding, callback: () => void): void { + if (chunk.action === "reset") { + logger.info("Received reset action, clearing all ranges"); + this.ranges.clear(); + return callback(); + } + let rangeData = this.ranges.get(chunk.rangeId); + + if (rangeData && rangeData.targetId !== chunk.targetId) { + this.ranges.delete(chunk.rangeId); + rangeData = undefined; + } + + if (!rangeData) { + logger.info(`Creating new range with id ${chunk.rangeId} for target ${chunk.targetId}`); + rangeData = this.createEmptyRange(chunk); + this.ranges.set(chunk.rangeId, rangeData); + } + + rangeData.shooter = chunk.shooterId || null; + rangeData.discipline = chunk.discipline; + rangeData.last_update = chunk.timestamp; + if (chunk.action === "insert") { + logger.info(`Adding hit ${chunk.hit.id} to range ${chunk.rangeId}`); + this.addHitToRange(rangeData, chunk); + } else { + logger.info(`Removing hit ${chunk.hit.id} from range ${chunk.rangeId}`); + this.removeHitFromRange(rangeData, chunk); + } + this.push(structuredClone(rangeData)); + callback(); + } +} \ No newline at end of file diff --git a/ranges/log/src/types.ts b/ranges/log/src/types.ts index 2d87a932..746eb8aa 100644 --- a/ranges/log/src/types.ts +++ b/ranges/log/src/types.ts @@ -1,45 +1,35 @@ -import { InternalRange } from "dc-ranges-types" +import { isValid, parse } from "date-fns" +import { logger } from "dc-logger" +import { Hit, Index, Integer, InternalDiscipline, InternalRange, InternalShooter, INVALID_HIT_POS, RangeId, ShooterId, UnsignedInteger } from "dc-ranges-types" +import { createIs } from "typia" -export type LogMessage = LogLine | { +export type ResetAction = { action: "reset", } +export type RawLogLine = { + action: "line", + parts: string[], +} + +export type RawLogMessage = ResetAction | RawLogLine + +export type LogMessage = LogLine | ResetAction + export type LogLine = { action: "insert" | "delete", - rangeId: number, - targetId: number, - shooter: { - name: string, - id: number, - team: string, - club: string, - class: { - name: string, - id: number, - }, - }, - discipline: { - name: string, - id: number, - }, - round: { - name: string, - id: number, - }, - hit: { - id: number, - x: number, - y: number, - divisor: number, - innerRing: boolean, - rings: number, - }, + rangeId: RangeId, + targetId: string, + shooterId: ShooterId + discipline: InternalDiscipline + hit: Hit, timestamp: Date, - } +export const isLogLine = createIs() + export type LogInternalRange = InternalRange & { - targetId: number + targetId: string last_update: Date } diff --git a/ranges/log/tsconfig.json b/ranges/log/tsconfig.json index a1f0fc6d..100b77ea 100644 --- a/ranges/log/tsconfig.json +++ b/ranges/log/tsconfig.json @@ -1,12 +1,19 @@ { - "compilerOptions": { - "target": "ES2023", - "module": "NodeNext", - "moduleResolution": "NodeNext", - "strict": true, - "outDir": "./dist" - }, - "include": [ - "src/**/*.ts" + "compilerOptions": { + "target": "ES2023", + "module": "NodeNext", + "moduleResolution": "NodeNext", + "strict": true, + "outDir": "./dist", + "plugins": [ + { + "transform": "typia/lib/transform" + } ], + "skipLibCheck": true, + "strictNullChecks": true + }, + "include": [ + "src/**/*.ts" + ] } \ No newline at end of file From ad333a3daf0ddb6334756bb890685e12f46099c4 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 8 Feb 2026 20:15:06 +0100 Subject: [PATCH 03/31] feat: Switch to typed streams --- build.sh | 29 ----- ranges/log/Dockerfile | 7 ++ ranges/log/docker-compose.yaml | 1 + ranges/log/package-lock.json | 19 +++ ranges/log/package.json | 3 +- ranges/log/src/index.ts | 11 +- ranges/log/src/streams/csvLines.ts | 6 +- ranges/log/src/streams/debounce.ts | 38 ------ ranges/log/src/streams/logLine.ts | 8 +- ranges/log/src/streams/logTail.ts | 6 +- ranges/log/src/streams/mergeRange.ts | 6 +- ranges/log/src/streams/multicastAcc.ts | 6 +- ranges/log/src/streams/multicastRecv.ts | 39 ------ ranges/log/src/streams/rabbitSender.ts | 45 ------- ranges/log/src/streams/rangeState.ts | 8 +- ranges/log/src/streams/serverState.ts | 6 +- ranges/ssmdb2/Dockerfile | 7 ++ ranges/ssmdb2/docker-compose.yaml | 1 + ranges/ssmdb2/package-lock.json | 19 +++ ranges/ssmdb2/package.json | 1 + ranges/ssmdb2/src/index.ts | 10 +- ranges/ssmdb2/src/streams/debounce.ts | 40 ------ ranges/ssmdb2/src/streams/rabbitSender.ts | 59 --------- ranges/ssmdb2/src/streams/rangeData.ts | 9 +- ranges/ssmdb2/src/streams/rangeStabilizer.ts | 7 +- ranges/ssmdb2/src/streams/tableWatcher.ts | 6 +- streams/package-lock.json | 123 +++++++++++++++++++ streams/package.json | 25 ++++ streams/src/core/duplex.ts | 29 +++++ streams/src/core/readable.ts | 22 ++++ streams/src/core/transform.ts | 28 +++++ streams/src/core/writable.ts | 13 ++ streams/src/index.ts | 10 ++ streams/src/rabbitMq/receiver.ts | 71 +++++++++++ streams/src/rabbitMq/writer.ts | 92 ++++++++++++++ streams/src/transforms/debounce.ts | 72 +++++++++++ streams/tsconfig.json | 15 +++ 37 files changed, 601 insertions(+), 296 deletions(-) delete mode 100644 build.sh delete mode 100644 ranges/log/src/streams/debounce.ts delete mode 100644 ranges/log/src/streams/multicastRecv.ts delete mode 100644 ranges/log/src/streams/rabbitSender.ts delete mode 100644 ranges/ssmdb2/src/streams/debounce.ts delete mode 100644 ranges/ssmdb2/src/streams/rabbitSender.ts create mode 100644 streams/package-lock.json create mode 100644 streams/package.json create mode 100644 streams/src/core/duplex.ts create mode 100644 streams/src/core/readable.ts create mode 100644 streams/src/core/transform.ts create mode 100644 streams/src/core/writable.ts create mode 100644 streams/src/index.ts create mode 100644 streams/src/rabbitMq/receiver.ts create mode 100644 streams/src/rabbitMq/writer.ts create mode 100644 streams/src/transforms/debounce.ts create mode 100644 streams/tsconfig.json diff --git a/build.sh b/build.sh deleted file mode 100644 index 6be75f14..00000000 --- a/build.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -COMPOSE_FILE="docker-compose.yml" - -echo "🔍 Resolving services from Docker Compose config..." -SERVICES=$(docker compose -f "$COMPOSE_FILE" config --services) - -if [[ -z "$SERVICES" ]]; then - echo "❌ No services found in $COMPOSE_FILE" - exit 1 -fi - -echo "📦 Services to build:" -echo "$SERVICES" -echo - -for service in $SERVICES; do - echo "==============================================" - echo "🚧 Building service: $service" - echo "==============================================" - - docker compose -f "$COMPOSE_FILE" build "$service" - - echo "✅ Finished building: $service" - echo -done - -echo "🎉 All services built successfully (sequentially)." diff --git a/ranges/log/Dockerfile b/ranges/log/Dockerfile index e3d9a194..44f54cdd 100644 --- a/ranges/log/Dockerfile +++ b/ranges/log/Dockerfile @@ -35,10 +35,17 @@ COPY --from=range-types . . RUN npm ci --loglevel=info && \ npm run build; +FROM deps-logger AS deps-streams +WORKDIR /app/streams +COPY --from=streams . . +RUN npm ci --loglevel=info && \ + npm run build; + FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-streams /app/streams /app/streams COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-ranges-ttl /app/ranges/ttl /app/ranges/ttl COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/ranges/log/docker-compose.yaml b/ranges/log/docker-compose.yaml index 93d1d856..7fd20251 100644 --- a/ranges/log/docker-compose.yaml +++ b/ranges/log/docker-compose.yaml @@ -20,6 +20,7 @@ services: - range-types=../types - range-ttl=../ttl - logger=../../logger + - streams=../../streams networks: - displaycontroller depends_on: diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index 728430a5..006083ac 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -16,6 +16,7 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", + "dc-streams": "file:../../streams", "dotenv": "^17.2.4", "socket.io-client": "^4.8.3", "typia": "^11.0.3" @@ -59,6 +60,20 @@ "typescript": "^5.9.3" } }, + "../../streams": { + "name": "dc-streams", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + }, + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.2.2", + "typescript": "~5.9.3" + } + }, "../ttl": { "name": "dc-ranges-ttl", "version": "1.0.0", @@ -515,6 +530,10 @@ "resolved": "../types", "link": true }, + "node_modules/dc-streams": { + "resolved": "../../streams", + "link": true + }, "node_modules/debug": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", diff --git a/ranges/log/package.json b/ranges/log/package.json index 09b7af6f..5a7baf47 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -17,6 +17,7 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", + "dc-streams": "file:../../streams", "dotenv": "^17.2.4", "socket.io-client": "^4.8.3", "typia": "^11.0.3" @@ -28,4 +29,4 @@ "tsc-alias": "^1.8.16", "typescript": "~5.9.3" } -} \ No newline at end of file +} diff --git a/ranges/log/src/index.ts b/ranges/log/src/index.ts index 5db9e687..5fadf4cd 100644 --- a/ranges/log/src/index.ts +++ b/ranges/log/src/index.ts @@ -3,15 +3,14 @@ import { logger } from "dc-logger"; import "./cache/updater"; // Import the updater to start the caching import { ServerStateStream } from "./streams/serverState"; import { createLocalClient } from "dc-db-local"; -import { MulticastStream } from "./streams/multicastRecv"; import { RangeMerger } from "./streams/mergeRange"; -import { DebounceStream } from "./streams/debounce"; -import { RabbitSenderStream } from "./streams/rabbitSender"; import { MulticastAccumulate } from "./streams/multicastAcc"; import { LogTailStream } from "./streams/logTail"; import { CsvLineStream } from "./streams/csvLines"; import { LogLineStream } from "./streams/logLine"; import { RangeStateStream } from "./streams/rangeState"; +import { DebounceTransform, RabbitMqReceiver, RabbitMqWriter } from "dc-streams"; +import { InternalRange, isInternalRange } from "dc-ranges-types"; async function main() { @@ -26,7 +25,7 @@ async function main() { const csvLines = new CsvLineStream(); const logLines = new LogLineStream(); const rangeState = new RangeStateStream(); - const rangeDebounce = new DebounceStream(300); + const rangeDebounce = new DebounceTransform((value: InternalRange) => value.rangeId.toString(), 300); serverState .pipe(logTail) .pipe(csvLines) @@ -35,11 +34,11 @@ async function main() { .pipe(rangeDebounce) .pipe(rangeMerger); - const multicastRecv = new MulticastStream(connection); + const multicastRecv = new RabbitMqReceiver(connection, ["ranges.multicast"], isInternalRange); const multicastAccumulate = new MulticastAccumulate(); multicastRecv.pipe(multicastAccumulate).pipe(rangeMerger); - const rangePublisher = new RabbitSenderStream(connection); + const rangePublisher = new RabbitMqWriter(connection, ["ranges.log"], (value: InternalRange) => value.rangeId.toString()); rangeMerger.pipe(rangePublisher); logger.info("Connected to rabbitmq"); } diff --git a/ranges/log/src/streams/csvLines.ts b/ranges/log/src/streams/csvLines.ts index 1890214f..e3d2eb68 100644 --- a/ranges/log/src/streams/csvLines.ts +++ b/ranges/log/src/streams/csvLines.ts @@ -1,12 +1,12 @@ -import { Transform } from "stream"; import { logger } from "dc-logger"; import { RawLogMessage } from "../types"; import { parse } from "csv-parse/sync"; +import { TypedTransform } from "dc-streams"; -export class CsvLineStream extends Transform { +export class CsvLineStream extends TypedTransform { constructor() { - super({ objectMode: true }); + super(); } _transform(line: string, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void): void { diff --git a/ranges/log/src/streams/debounce.ts b/ranges/log/src/streams/debounce.ts deleted file mode 100644 index d0d5f232..00000000 --- a/ranges/log/src/streams/debounce.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { InternalRange } from "dc-ranges-types"; -import { Transform, TransformCallback } from "stream"; -import { logger } from "dc-logger"; - -type RangeDebounce = { - data: InternalRange; - debounce: NodeJS.Timeout; -} - -export class DebounceStream extends Transform { - private ranges: Map = new Map(); - private debounceTime: number; - - constructor(debounceTime: number) { - super({ objectMode: true }); - this.debounceTime = debounceTime; - } - - _transform(chunk: InternalRange, encoding: BufferEncoding, callback: TransformCallback): void { - logger.debug(`Received range ${chunk.rangeId} from RangeDataStream`); - if (this.ranges.has(chunk.rangeId)) { - if (JSON.stringify(this.ranges.get(chunk.rangeId)!.data) === JSON.stringify(chunk)) { - logger.debug(`Skipping range ${chunk.rangeId} due to no changes`); - callback(); - return; - } - clearTimeout(this.ranges.get(chunk.rangeId)!.debounce); - } - this.ranges.set(chunk.rangeId, { - data: chunk, - debounce: setTimeout(() => { - this.push(chunk); - this.ranges.delete(chunk.rangeId); - }, this.debounceTime) - }); - callback(); - } -} \ No newline at end of file diff --git a/ranges/log/src/streams/logLine.ts b/ranges/log/src/streams/logLine.ts index 160c4365..32b149ba 100644 --- a/ranges/log/src/streams/logLine.ts +++ b/ranges/log/src/streams/logLine.ts @@ -1,8 +1,8 @@ import { isValid, parse } from "date-fns"; -import { Transform } from "node:stream"; -import { isLogLine, LogLine, RawLogMessage } from "../types"; +import { isLogLine, LogLine, LogMessage, RawLogMessage } from "../types"; import { logger } from "dc-logger"; import { Index, INVALID_HIT_POS, RangeId, ShooterId, UnsignedInteger } from "dc-ranges-types"; +import { TypedTransform } from "dc-streams"; const LOG_LINE_PARTS = { RANGE_ID: 0, @@ -22,9 +22,9 @@ const LOG_LINE_PARTS = { } const EXPECTED_COLUMN_COUNT = 30; -export class LogLineStream extends Transform { +export class LogLineStream extends TypedTransform { constructor() { - super({ objectMode: true }); + super(); } private transformAction(action: string): "insert" | "delete" { diff --git a/ranges/log/src/streams/logTail.ts b/ranges/log/src/streams/logTail.ts index f514f4e9..5851abb9 100644 --- a/ranges/log/src/streams/logTail.ts +++ b/ranges/log/src/streams/logTail.ts @@ -1,16 +1,16 @@ import { ChildProcess, spawn } from "child_process"; import { LocalClient } from "dc-db-local"; import { logger } from "dc-logger"; +import { TypedDuplex } from "dc-streams"; import * as fs from "fs"; -import { Duplex } from "stream"; -export class LogTailStream extends Duplex { +export class LogTailStream extends TypedDuplex { private sshThread: ChildProcess | null = null; private localClient: LocalClient; private serverState: boolean = false; constructor(prisma: LocalClient) { - super({ objectMode: true }); + super(); this.localClient = prisma; } diff --git a/ranges/log/src/streams/mergeRange.ts b/ranges/log/src/streams/mergeRange.ts index f305cfac..5e3d86e1 100644 --- a/ranges/log/src/streams/mergeRange.ts +++ b/ranges/log/src/streams/mergeRange.ts @@ -1,4 +1,3 @@ -import { Transform } from "stream"; import { TTLHandler } from "dc-ranges-ttl"; import { InternalDiscipline, InternalRange, isInternalOverrideDiscipline, isNormInternalDiscipline } from "dc-ranges-types"; import { LogInternalRange, MulticastInternalRange } from "../types"; @@ -6,14 +5,15 @@ import { LocalClient } from "dc-db-local"; import { isSameShooter } from "../cache/shooter"; import { getDisciplineId } from "../cache/overrides"; import { logger } from "dc-logger"; +import { TypedTransform } from "dc-streams"; -export class RangeMerger extends Transform { +export class RangeMerger extends TypedTransform { private multicastStates: Map> = new Map(); private logStates: Map = new Map(); private freeTimeout: number = 30 * 60 * 1000; constructor(localClient: LocalClient) { - super({ objectMode: true }); + super(); this._getFreeTimeout(localClient); } diff --git a/ranges/log/src/streams/multicastAcc.ts b/ranges/log/src/streams/multicastAcc.ts index 0da2d301..783b4593 100644 --- a/ranges/log/src/streams/multicastAcc.ts +++ b/ranges/log/src/streams/multicastAcc.ts @@ -1,18 +1,18 @@ import { InternalRange, InternalShooter } from "dc-ranges-types"; -import { Transform } from "stream"; import { isSameShooter } from "../cache/shooter"; import { MulticastInternalRange } from "../types"; +import { TypedTransform } from "dc-streams"; type ShooterSince = { shooter: InternalShooter | null, since: Date, } -export class MulticastAccumulate extends Transform { +export class MulticastAccumulate extends TypedTransform { private shooters: Map = new Map(); constructor() { - super({ objectMode: true }); + super(); } _transform(chunk: InternalRange, encoding: BufferEncoding, callback: (error?: Error | null, data?: any) => void): void { diff --git a/ranges/log/src/streams/multicastRecv.ts b/ranges/log/src/streams/multicastRecv.ts deleted file mode 100644 index 83e2444d..00000000 --- a/ranges/log/src/streams/multicastRecv.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { isInternalRange } from "dc-ranges-types"; -import { ChannelModel } from "amqplib"; -import { logger } from "dc-logger"; -import { Readable } from "stream"; - -export class MulticastStream extends Readable { - - constructor(connection: ChannelModel) { - super({ objectMode: true }); - this.connect(connection); - } - - private async connect(connection: ChannelModel) { - const channel = await connection.createChannel(); - await channel.assertExchange("ranges.multicast", "fanout", { - durable: false, - }); - const queue = await channel.assertQueue("", { - exclusive: true, - }); - channel.bindQueue(queue.queue, "ranges.multicast", ""); - channel.consume(queue.queue, async (msg) => { - if (msg === null) { - return; - } - const message = JSON.parse(msg.content.toString()); - if (isInternalRange(message)) { - this.push(message); - } else { - logger.error("Received invalid multicast message"); - } - channel.ack(msg); - }); - } - - _read() { - // Do nothing - } -} \ No newline at end of file diff --git a/ranges/log/src/streams/rabbitSender.ts b/ranges/log/src/streams/rabbitSender.ts deleted file mode 100644 index b2e58d3e..00000000 --- a/ranges/log/src/streams/rabbitSender.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { Writable } from "stream"; -import amqp, { ChannelModel } from "amqplib"; -import { InternalRange } from "dc-ranges-types"; -import { logger } from "dc-logger"; - -export class RabbitSenderStream extends Writable { - private channel: amqp.Channel | null = null; - private currentState: Map = new Map(); - private resendTimeout: Map = new Map(); - - constructor(connection: ChannelModel) { - super({ objectMode: true }); - this.connect(connection); - } - - private async connect(connection: ChannelModel) { - this.channel = await connection.createChannel(); - await this.channel.assertExchange("ranges.log", "fanout", { - durable: false, - }); - } - - _write(chunk: InternalRange, encoding: BufferEncoding, callback: (error?: Error | null) => void): void { - if (this.channel === null) { - logger.error("Channel not connected"); - callback(); - return; - } - if (this.currentState.has(chunk.rangeId) && this.currentState.get(chunk.rangeId) === JSON.stringify(chunk)) { - logger.debug(`Range ${chunk.rangeId} already sent`); - callback(); - return; - } - this.currentState.set(chunk.rangeId, JSON.stringify(chunk)); - if (this.resendTimeout.has(chunk.rangeId)) { - clearTimeout(this.resendTimeout.get(chunk.rangeId)!); - } - logger.info(`Sending range ${chunk.rangeId}`); - this.channel.publish("ranges.log", "", Buffer.from(JSON.stringify(chunk))); - this.resendTimeout.set(chunk.rangeId, setTimeout(() => { - this.currentState.delete(chunk.rangeId); - }, 5000)); - callback(); - } -} \ No newline at end of file diff --git a/ranges/log/src/streams/rangeState.ts b/ranges/log/src/streams/rangeState.ts index 38df3396..c8e67276 100644 --- a/ranges/log/src/streams/rangeState.ts +++ b/ranges/log/src/streams/rangeState.ts @@ -1,15 +1,11 @@ -import { Transform } from "stream"; import { LogInternalRange, LogLine, LogMessage } from "../types"; import { logger } from "dc-logger"; import { Hits, RangeId } from "dc-ranges-types"; +import { TypedTransform } from "dc-streams"; -export class RangeStateStream extends Transform { +export class RangeStateStream extends TypedTransform { private ranges: Map = new Map(); - constructor() { - super({ objectMode: true }); - } - private createEmptyRange(chunk: LogLine): LogInternalRange { return { rangeId: chunk.rangeId, diff --git a/ranges/log/src/streams/serverState.ts b/ranges/log/src/streams/serverState.ts index a431eab5..fd5ae25a 100644 --- a/ranges/log/src/streams/serverState.ts +++ b/ranges/log/src/streams/serverState.ts @@ -1,12 +1,12 @@ import { logger } from "dc-logger"; +import { TypedReadable } from "dc-streams"; import { io, Socket } from "socket.io-client"; -import { Readable } from "stream"; -export class ServerStateStream extends Readable { +export class ServerStateStream extends TypedReadable { private socket: Socket; constructor() { - super({ objectMode: true }); + super(); this.socket = io("http://server-state/api/serverState", { path: "/api/serverState/ws" }); this.socket.on("connect", () => { logger.info("Connected to server state via socket.io"); diff --git a/ranges/ssmdb2/Dockerfile b/ranges/ssmdb2/Dockerfile index 04d18a4b..bcd45aaa 100644 --- a/ranges/ssmdb2/Dockerfile +++ b/ranges/ssmdb2/Dockerfile @@ -42,10 +42,17 @@ COPY --from=range-types . . RUN npm ci --loglevel=info && \ npm run build; +FROM deps-logger AS deps-streams +WORKDIR /app/streams +COPY --from=streams . . +RUN npm ci --loglevel=info && \ + npm run build; + FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-streams /app/streams /app/streams COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-ssmdb2 /app/database/ssmdb2 /app/database/ssmdb2 COPY --from=deps-table-watcher /app/database/tableWatcher /app/database/tableWatcher diff --git a/ranges/ssmdb2/docker-compose.yaml b/ranges/ssmdb2/docker-compose.yaml index 5f964289..c6bc71df 100644 --- a/ranges/ssmdb2/docker-compose.yaml +++ b/ranges/ssmdb2/docker-compose.yaml @@ -21,6 +21,7 @@ services: - range-types=../types - table-watcher=../../database/tableWatcher - logger=../../logger + - streams=../../streams networks: - displaycontroller depends_on: diff --git a/ranges/ssmdb2/package-lock.json b/ranges/ssmdb2/package-lock.json index 0c5099e0..ebdef3d3 100644 --- a/ranges/ssmdb2/package-lock.json +++ b/ranges/ssmdb2/package-lock.json @@ -14,6 +14,7 @@ "dc-db-ssmdb2": "file:../../database/ssmdb2", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", + "dc-streams": "file:../../streams", "dc-table-watcher": "file:../../database/tableWatcher", "dotenv": "^17.2.4" }, @@ -85,6 +86,20 @@ "typescript": "^5.9.3" } }, + "../../streams": { + "name": "dc-streams", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + }, + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.2.2", + "typescript": "~5.9.3" + } + }, "../types": { "name": "dc-ranges-types", "version": "1.0.0", @@ -275,6 +290,10 @@ "resolved": "../types", "link": true }, + "node_modules/dc-streams": { + "resolved": "../../streams", + "link": true + }, "node_modules/dc-table-watcher": { "resolved": "../../database/tableWatcher", "link": true diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index d1da87e1..c17c11f3 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -21,6 +21,7 @@ "dc-db-ssmdb2": "file:../../database/ssmdb2", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", + "dc-streams": "file:../../streams", "dc-table-watcher": "file:../../database/tableWatcher", "dotenv": "^17.2.4" } diff --git a/ranges/ssmdb2/src/index.ts b/ranges/ssmdb2/src/index.ts index ea1dae62..99d8f7ca 100644 --- a/ranges/ssmdb2/src/index.ts +++ b/ranges/ssmdb2/src/index.ts @@ -2,11 +2,13 @@ import { createSSMDB2Client } from "dc-db-ssmdb2"; import "./cache/updater"; // Import the cache updater import { TableWatcherStream } from "./streams/tableWatcher"; import { RangeDataStream } from "./streams/rangeData"; -import { DebounceStream } from "./streams/debounce"; -import { RabbitSenderStream } from "./streams/rabbitSender"; import { StabilizerStream } from "./streams/rangeStabilizer"; +import { DebounceTransform, RabbitMqWriter } from "dc-streams"; +import { SSMDB2InternalRange } from "./types"; +import amqp from "amqplib"; async function main() { + const connection = await amqp.connect("amqp://rabbitmq"); const ssmdb2Client = await createSSMDB2Client(); new TableWatcherStream( ssmdb2Client, @@ -17,8 +19,8 @@ async function main() { ) .pipe(new RangeDataStream(ssmdb2Client)) .pipe(new StabilizerStream(20000)) - .pipe(new DebounceStream(500)) - .pipe(new RabbitSenderStream()); + .pipe(new DebounceTransform((value: SSMDB2InternalRange) => value.rangeId.toString(), 500)) + .pipe(new RabbitMqWriter(connection, ["ranges.ssmdb2"], (value: SSMDB2InternalRange) => value.rangeId.toString())); } main(); diff --git a/ranges/ssmdb2/src/streams/debounce.ts b/ranges/ssmdb2/src/streams/debounce.ts deleted file mode 100644 index 822c70fa..00000000 --- a/ranges/ssmdb2/src/streams/debounce.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { InternalRange } from "dc-ranges-types"; -import { Transform, TransformCallback } from "stream"; -import { logger } from "dc-logger"; - -type RangeDebounce = { - data: InternalRange; - debounce: NodeJS.Timeout; -} - -export class DebounceStream extends Transform { - private ranges: Map = new Map(); - private debounceTime: number; - - constructor(debounceTime: number) { - super({ objectMode: true }); - this.debounceTime = debounceTime; - } - - _transform(chunk: InternalRange, encoding: BufferEncoding, callback: TransformCallback): void { - logger.debug(`Received range ${chunk.rangeId} from RangeDataStream`); - if (this.ranges.has(chunk.rangeId)) { - const existingData = structuredClone(this.ranges.get(chunk.rangeId)!.data); - existingData.ttl = chunk.ttl; // Ignore TTL changes for debounce comparison - if (JSON.stringify(existingData) === JSON.stringify(chunk)) { - logger.debug(`Skipping range ${chunk.rangeId} due to no changes`); - callback(); - return; - } - clearTimeout(this.ranges.get(chunk.rangeId)!.debounce); - } - this.ranges.set(chunk.rangeId, { - data: chunk, - debounce: setTimeout(() => { - this.push(chunk); - this.ranges.delete(chunk.rangeId); - }, this.debounceTime) - }); - callback(); - } -} \ No newline at end of file diff --git a/ranges/ssmdb2/src/streams/rabbitSender.ts b/ranges/ssmdb2/src/streams/rabbitSender.ts deleted file mode 100644 index 57beb2af..00000000 --- a/ranges/ssmdb2/src/streams/rabbitSender.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Writable } from "stream"; -import amqp from "amqplib"; -import { InternalRange } from "dc-ranges-types"; -import { logger } from "dc-logger"; - -export class RabbitSenderStream extends Writable { - private channel: amqp.Channel | null = null; - private currentState: Map = new Map(); - - constructor() { - super({ objectMode: true }); - this.connect(); - } - - private async connect() { - const connection = await amqp.connect("amqp://rabbitmq"); - this.channel = await connection.createChannel(); - await this.channel.assertExchange("ranges.ssmdb2", "fanout", { - durable: false, - }); - } - - statesEqual(newState: InternalRange): boolean { - const oldState = this.currentState.get(newState.rangeId); - if (!oldState) { - return false; - } - const oldClone = structuredClone(oldState); - oldClone.ttl = newState.ttl; - return JSON.stringify(oldClone) == JSON.stringify(newState); - } - - _write( - chunk: InternalRange, - encoding: BufferEncoding, - callback: (error?: Error | null) => void, - ): void { - if (this.channel === null) { - logger.error("Channel not connected"); - callback(); - return; - } - if (this.statesEqual(chunk)) { - callback(); - return; - } - this.currentState.set(chunk.rangeId, chunk); - logger.info(`Sending range ${chunk.rangeId}`); - this.channel.publish( - "ranges.ssmdb2", - "", - Buffer.from(JSON.stringify(chunk)), - ); - setTimeout(() => { - this.currentState.delete(chunk.rangeId); - }, 5000); - callback(); - } -} diff --git a/ranges/ssmdb2/src/streams/rangeData.ts b/ranges/ssmdb2/src/streams/rangeData.ts index eddf682f..190d4217 100644 --- a/ranges/ssmdb2/src/streams/rangeData.ts +++ b/ranges/ssmdb2/src/streams/rangeData.ts @@ -1,23 +1,24 @@ -import { Transform, TransformCallback } from "stream"; +import { TransformCallback } from "stream"; import { Ssmdb2Client } from "dc-db-ssmdb2"; import { Hits, INVALID_HIT_POS, UnsignedInteger } from "dc-ranges-types"; import { getDisciplineId } from "../cache/disciplines"; import { logger } from "dc-logger"; import { getLocalMs } from "../utils"; import { SSMDB2InternalRange } from "../types"; +import { TypedTransform } from "dc-streams"; -export class RangeDataStream extends Transform { +export class RangeDataStream extends TypedTransform { private readonly prisma: Ssmdb2Client; private readonly timeoutMs: number; constructor(prisma: Ssmdb2Client, timeoutMs: number = 20000) { - super({ objectMode: true }); + super(); this.prisma = prisma; this.timeoutMs = timeoutMs; } async _transform( - chunk: any, + chunk: string[], encoding: BufferEncoding, callback: TransformCallback, ): Promise { diff --git a/ranges/ssmdb2/src/streams/rangeStabilizer.ts b/ranges/ssmdb2/src/streams/rangeStabilizer.ts index cc6334d1..1192cbb7 100644 --- a/ranges/ssmdb2/src/streams/rangeStabilizer.ts +++ b/ranges/ssmdb2/src/streams/rangeStabilizer.ts @@ -1,19 +1,20 @@ import { UnsignedInteger } from "dc-ranges-types"; -import { Transform, TransformCallback } from "stream"; +import { TransformCallback } from "stream"; import { logger } from "dc-logger"; import { SSMDB2InternalRange } from "../types"; +import { TypedTransform } from "dc-streams"; type RangeStabilize = { data: SSMDB2InternalRange; timeout: NodeJS.Timeout; }; -export class StabilizerStream extends Transform { +export class StabilizerStream extends TypedTransform { private readonly ranges: Map = new Map(); private readonly resetTime: number; constructor(resetTime: number) { - super({ objectMode: true }); + super(); this.resetTime = resetTime; } diff --git a/ranges/ssmdb2/src/streams/tableWatcher.ts b/ranges/ssmdb2/src/streams/tableWatcher.ts index 4b4fd682..41d49771 100644 --- a/ranges/ssmdb2/src/streams/tableWatcher.ts +++ b/ranges/ssmdb2/src/streams/tableWatcher.ts @@ -1,12 +1,12 @@ import { Ssmdb2Client } from "dc-db-ssmdb2"; +import { TypedReadable } from "dc-streams"; import { TableWatcherFast } from "dc-table-watcher"; -import { Readable } from "stream"; -export class TableWatcherStream extends Readable { +export class TableWatcherStream extends TypedReadable { private tableWatcher: TableWatcherFast; constructor(prisma: Ssmdb2Client, tables: string[], interval?: number, fastInterval?: number, fastTimeout?: number) { - super({ objectMode: true }); + super(); this.tableWatcher = new TableWatcherFast(prisma, tables, interval, fastInterval, fastTimeout); this.tableWatcher.on('change', (tables: string[]) => { this.push(tables); diff --git a/streams/package-lock.json b/streams/package-lock.json new file mode 100644 index 00000000..9628c067 --- /dev/null +++ b/streams/package-lock.json @@ -0,0 +1,123 @@ +{ + "name": "dc-streams", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dc-streams", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + }, + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.2.2", + "typescript": "~5.9.3" + } + }, + "../logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.2.4", + "pino": "^10.3.0", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.2.1", + "typescript": "^5.9.3" + } + }, + "node_modules/@types/amqplib": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.10.8.tgz", + "integrity": "sha512-vtDp8Pk1wsE/AuQ8/Rgtm6KUZYqcnTgNvEHwzCkX8rL7AGsC6zqAfKAAJhUZXFhM/Pp++tbnUHiam/8vVpPztA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "25.2.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.2.tgz", + "integrity": "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/amqplib": { + "version": "0.10.9", + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.9.tgz", + "integrity": "sha512-jwSftI4QjS3mizvnSnOrPGYiUnm1vI2OP1iXeOUz5pb74Ua0nbf6nPyyTzuiCLEE3fMpaJORXh2K/TQ08H5xGA==", + "license": "MIT", + "dependencies": { + "buffer-more-ints": "~1.0.0", + "url-parse": "~1.5.10" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/buffer-more-ints": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", + "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==", + "license": "MIT" + }, + "node_modules/dc-logger": { + "resolved": "../logger", + "link": true + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "license": "MIT" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "license": "MIT" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "dev": true, + "license": "MIT" + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + } + } +} diff --git a/streams/package.json b/streams/package.json new file mode 100644 index 00000000..203c3cfb --- /dev/null +++ b/streams/package.json @@ -0,0 +1,25 @@ +{ + "name": "dc-streams", + "version": "1.0.0", + "description": "Streams helpers for displaycontroller", + "license": "ISC", + "author": "Sven Finn", + "type": "module", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "build": "tsc" + }, + "files": [ + "dist" + ], + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.2.2", + "typescript": "~5.9.3" + }, + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + } +} \ No newline at end of file diff --git a/streams/src/core/duplex.ts b/streams/src/core/duplex.ts new file mode 100644 index 00000000..127e0e6b --- /dev/null +++ b/streams/src/core/duplex.ts @@ -0,0 +1,29 @@ +import { Duplex } from "node:stream"; + +export class TypedDuplex extends Duplex { + declare _inputType: I; + declare _outputType: O; + + constructor() { + super({ + readableObjectMode: true, + writableObjectMode: true + }); + } + + // Typed writable side + write(chunk: I): boolean { + return super.write(chunk); + } + + // Typed readable side + push(chunk: O | null): boolean { + return super.push(chunk); + } + + // Typed data listener + override on(event: "data", listener: (chunk: O) => void): this; + override on(event: string, listener: (...args: any[]) => void): this { + return super.on(event, listener); + } +} diff --git a/streams/src/core/readable.ts b/streams/src/core/readable.ts new file mode 100644 index 00000000..9745245b --- /dev/null +++ b/streams/src/core/readable.ts @@ -0,0 +1,22 @@ +import { Readable, Writable } from "stream"; +import { TypedWritable } from "./writable.js"; +import { TypedTransform } from "./transform.js"; + +export class TypedReadable extends Readable { + declare _outputType: O; + + constructor() { + super({ objectMode: true }) + } + + push(chunk: O | null): boolean { + return super.push(chunk); + } + + pipe(dest: TypedTransform): TypedTransform; + pipe(dest: TypedWritable): TypedWritable; + pipe(dest: Writable): Writable; + pipe(dest: Writable): Writable { + return super.pipe(dest); + } +} \ No newline at end of file diff --git a/streams/src/core/transform.ts b/streams/src/core/transform.ts new file mode 100644 index 00000000..ff56b60c --- /dev/null +++ b/streams/src/core/transform.ts @@ -0,0 +1,28 @@ +import { Transform, TransformCallback, Writable } from "stream"; +import { TypedWritable } from "./writable.js"; + +export abstract class TypedTransform extends Transform { + declare _inputType: I; + declare _outputType: O; + + constructor() { + super({ objectMode: true }) + } + + abstract _transform( + chunk: I, + encoding: BufferEncoding, + callback: TransformCallback + ): void; + + push(chunk: O | null): boolean { + return super.push(chunk); + } + + pipe(dest: TypedTransform): TypedTransform; + pipe(dest: TypedWritable): TypedWritable; + pipe(dest: Writable): Writable; + pipe(dest: Writable): Writable { + return super.pipe(dest); + } +} \ No newline at end of file diff --git a/streams/src/core/writable.ts b/streams/src/core/writable.ts new file mode 100644 index 00000000..d5c7aa79 --- /dev/null +++ b/streams/src/core/writable.ts @@ -0,0 +1,13 @@ +import { Writable } from "stream"; + +export class TypedWritable extends Writable { + declare _inputType: I; + + constructor() { + super({ objectMode: true }) + } + + write(chunk: I): boolean { + return super.write(chunk) + } +} \ No newline at end of file diff --git a/streams/src/index.ts b/streams/src/index.ts new file mode 100644 index 00000000..85832c2d --- /dev/null +++ b/streams/src/index.ts @@ -0,0 +1,10 @@ + +export type IdFn = (value: T) => string; + +export { TypedReadable } from "./core/readable.js"; +export { TypedTransform } from "./core/transform.js"; +export { TypedWritable } from "./core/writable.js"; +export { TypedDuplex } from "./core/duplex.js"; +export { RabbitMqWriter } from "./rabbitMq/writer.js"; +export { RabbitMqReceiver } from "./rabbitMq/receiver.js"; +export { DebounceTransform } from "./transforms/debounce.js"; \ No newline at end of file diff --git a/streams/src/rabbitMq/receiver.ts b/streams/src/rabbitMq/receiver.ts new file mode 100644 index 00000000..50c6e29d --- /dev/null +++ b/streams/src/rabbitMq/receiver.ts @@ -0,0 +1,71 @@ +import { ChannelModel, Channel, Message } from "amqplib"; +import { logger } from "dc-logger"; +import { TypedReadable } from "../core/readable.js"; + +type IsFn = (input: unknown) => input is T; + +export class RabbitMqReceiver extends TypedReadable { + private paused = false; + private pendingMsg: Message | null = null; + private channel: Channel | null = null; + private readonly isFn: IsFn; + + constructor(connection: ChannelModel, exchanges: Array, isFn: IsFn) { + super(); + this.isFn = isFn; + this.connect(connection, exchanges); + } + + private async connect(connection: ChannelModel, exchanges: Array) { + const channel = await connection.createChannel(); + this.channel = channel; + + await channel.prefetch(1); + await Promise.all(exchanges.map(async (exchange) => { + await channel.assertExchange(exchange, "fanout", { durable: false }); + })); + + const queue = await channel.assertQueue("", { exclusive: true }); + await Promise.all(exchanges.map(async (exchange) => { + await channel.bindQueue(queue.queue, exchange, ""); + })); + + channel.consume(queue.queue, (msg) => { + if (!msg || this.paused) return; + + const message = JSON.parse(msg.content.toString()); + if (!this.isFn(message)) { + logger.error("Received invalid message"); + channel.ack(msg); + return; + } + + const ok = this.push(message); + if (ok) { + channel.ack(msg); + } else { + this.paused = true; + this.pendingMsg = msg; + } + }); + } + + _read() { + if (!this.paused || !this.pendingMsg || !this.channel) { + return; + } + + const msg = this.pendingMsg; + this.pendingMsg = null; + + const message = JSON.parse(msg.content.toString()); + + const ok = this.push(message); + if (ok) { + this.channel.ack(msg); + this.paused = false; + } else { + this.pendingMsg = msg; + } + } +} diff --git a/streams/src/rabbitMq/writer.ts b/streams/src/rabbitMq/writer.ts new file mode 100644 index 00000000..55fdacda --- /dev/null +++ b/streams/src/rabbitMq/writer.ts @@ -0,0 +1,92 @@ +import { Channel, ChannelModel } from "amqplib"; +import { logger } from "dc-logger"; +import { TypedWritable } from "../core/writable.js"; +import { IdFn } from "../index.js"; + +type State = { + state: string, + timeout: NodeJS.Timeout +}; + +export class RabbitMqWriter extends TypedWritable { + private channel: Channel | null = null; + private readonly exchanges: readonly string[]; + private readonly currentState: Map = new Map(); + private readonly idFn: IdFn; + private readonly resendTimeout: number; + private readonly ready: Promise; + + constructor(connection: ChannelModel, exchanges: string[], idFn: IdFn, resendTimeout: number = 5000) { + super(); + this.idFn = idFn; + this.resendTimeout = resendTimeout; + this.exchanges = exchanges; + + this.ready = this.connect(connection, exchanges); + } + + private async connect(connection: ChannelModel, exchanges: string[]) { + const channel = await connection.createChannel(); + this.channel = channel; + + await Promise.all( + exchanges.map(exchange => + channel.assertExchange(exchange, "fanout", { durable: false }) + ) + ); + } + + _write(chunk: T, encoding: BufferEncoding, callback: (error?: Error | null) => void): void { + this.ready + .then(() => this._writeInternal(chunk, callback)) + .catch(err => callback(err)); + } + + private _writeInternal(chunk: T, callback: (error?: Error | null) => void) { + try { + if (this.channel === null) { + return callback(new Error("RabbitMq channel not connected")); + } + + const id = this.idFn(chunk); + const json = JSON.stringify(chunk); + + const lastState = this.currentState.get(id); + + if (lastState && lastState.state === json) { + logger.debug(`${id} already sent`); + return callback(); + } + + if (lastState) { + clearTimeout(lastState.timeout); + } + + logger.debug(`Sending ${id}`); + for (const exchange of this.exchanges) { + this.channel.publish(exchange, "", Buffer.from(json)); + } + + const state: State = { + state: json, + timeout: setTimeout(() => { + this.currentState.delete(id); + }, this.resendTimeout) + }; + + this.currentState.set(id, state); + + callback(); + } catch (err) { + callback(err as Error); + } + } + + _destroy(error: Error | null, callback: (error?: Error | null) => void): void { + for (const state of this.currentState.values()) { + clearTimeout(state.timeout); + } + this.currentState.clear(); + callback(error); + } +} diff --git a/streams/src/transforms/debounce.ts b/streams/src/transforms/debounce.ts new file mode 100644 index 00000000..306431a5 --- /dev/null +++ b/streams/src/transforms/debounce.ts @@ -0,0 +1,72 @@ +import { TransformCallback } from "node:stream"; +import { logger } from "dc-logger"; +import { TypedTransform } from "../core/transform.js"; +import { IdFn } from "../index.js"; + +type DebounceData = { + data: T + json: string, + timeout: NodeJS.Timeout +} + +export class DebounceTransform extends TypedTransform { + private readonly data: Map> = new Map(); + private readonly debounceTime: number; + private readonly idFn: IdFn; + + constructor(idFn: IdFn, debounceTime: number = 300) { + super(); + this.idFn = idFn; + this.debounceTime = debounceTime; + } + + _transform(chunk: T, encoding: BufferEncoding, callback: TransformCallback): void { + const id = this.idFn(chunk); + const json = JSON.stringify(chunk); + + const entry = this.data.get(id); + if (entry && entry.json === json) { + logger.debug(`Skipping chunk ${id} due to no changes`); + return callback(); + } + if (entry) { + clearTimeout(entry.timeout); + } + const newEntry = { + data: chunk, + json: json, + timeout: setTimeout(() => { + const current = this.data.get(id); + if (current === newEntry) { + this.data.delete(id); + if (!this.destroyed) { + this.push(newEntry.data); + } + } + }, this.debounceTime) + }; + this.data.set(id, newEntry); + callback(); + } + + _flush(callback: TransformCallback): void { + for (const state of this.data.values()) { + clearTimeout(state.timeout); + + if (!this.destroyed) { + this.push(state.data); + } + } + this.data.clear(); + callback(); + } + + _destroy(error: Error | null, callback: (error?: Error | null) => void): void { + for (const state of this.data.values()) { + clearTimeout(state.timeout); + // We do not push the data here, as the stream is already dead when this is called + } + this.data.clear(); + callback(error); + } +} \ No newline at end of file diff --git a/streams/tsconfig.json b/streams/tsconfig.json new file mode 100644 index 00000000..a4b5b5a1 --- /dev/null +++ b/streams/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "ES2023", + "module": "nodenext", + "moduleResolution": "nodenext", + "declaration": true, + "strict": true, + "outDir": "./dist", + "skipLibCheck": true, + "strictNullChecks": true + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file From c244d2372d134664310530dd690d6ae4976893f4 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Tue, 10 Feb 2026 23:12:56 +0100 Subject: [PATCH 04/31] fix: Correct hit id magic in log --- ranges/log/src/streams/rangeState.ts | 48 +++++++++++++++++++--------- ranges/types/src/hits/index.ts | 7 ++-- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/ranges/log/src/streams/rangeState.ts b/ranges/log/src/streams/rangeState.ts index c8e67276..d409e4a3 100644 --- a/ranges/log/src/streams/rangeState.ts +++ b/ranges/log/src/streams/rangeState.ts @@ -20,12 +20,6 @@ export class RangeStateStream extends TypedTransform hit.id >= insertId); + if (insertIndex < 0) { + insertIndex = hits.length; + } + + for (const hit of hits) { + if (hit.id >= insertId) { + hit.id += 1; + } + } - this.normalizeHitIds(hits); + hits.splice(insertIndex, 0, { ...chunk.hit }); + hits.sort((a, b) => a.id - b.id); } private removeHitFromRange(rangeData: LogInternalRange, chunk: LogLine): void { @@ -52,16 +57,29 @@ export class RangeStateStream extends TypedTransform hit.id === chunk.hit.id); - if (hitIndex === -1) { - logger.warn(`Trying to remove non-existing hit ${chunk.hit.id} from range ${chunk.rangeId}, round ${roundId}`); - return; + const deleteId = chunk.hit.id; + + // 1. Try to remove hit with id = deleteId + const hitIndex = hits.findIndex(hit => hit.id === deleteId); + if (hitIndex !== -1) { + hits.splice(hitIndex, 1); + } else { + logger.warn( + `Deleting hole at id ${deleteId} in range ${chunk.rangeId}, round ${roundId}` + ); } - hits.splice(hitIndex, 1); - this.normalizeHitIds(hits); + // 2. Always shift hits with id > deleteId + for (const hit of hits) { + if (hit.id > deleteId) { + hit.id -= 1; + } + } + hits.sort((a, b) => a.id - b.id); + } + _transform(chunk: LogMessage, encoding: BufferEncoding, callback: () => void): void { if (chunk.action === "reset") { logger.info("Received reset action, clearing all ranges"); diff --git a/ranges/types/src/hits/index.ts b/ranges/types/src/hits/index.ts index 83d659cc..fab716b3 100644 --- a/ranges/types/src/hits/index.ts +++ b/ranges/types/src/hits/index.ts @@ -1,11 +1,14 @@ -import { Index, UnsignedInteger, UnsignedNumber } from "../common/index.js"; +import { Maximum } from "typia/lib/tags/Maximum.js"; +import { Index, UnsignedNumber } from "../common/index.js"; + +export type HitIndex = Index & Maximum<1000>; export type Hits = Array; export type Hit = InvalidHit | ValidHit; export type BaseHit = { - id: Index; + id: HitIndex; valid: boolean; } From 3b516f316f2d7f3cb5b23097d6ecb12e0a405af8 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Mon, 16 Feb 2026 21:28:40 +0100 Subject: [PATCH 05/31] fix: Frontend now correctly handles holes in hit data --- .../components/Ranges/Draw/hits/index.tsx | 28 ++- .../components/Ranges/Draw/layout/index.tsx | 24 +- .../CpcView/range/infoPanel/hitTotal.tsx | 4 +- .../CpcView/range/infoPanel/seriesTable.tsx | 2 +- .../CpcView/range/infoPanel/shotTable.tsx | 21 +- .../DrawTarget/ranges/range/currentHit.tsx | 4 +- .../DrawTarget/ranges/range/seriesList.tsx | 3 +- .../DrawTarget/ranges/range/total.tsx | 3 +- frontend/src/app/show/lib/ranges.ts | 226 ------------------ .../src/app/show/lib/ranges/accumulate.ts | 85 +++++++ frontend/src/app/show/lib/ranges/eval.ts | 87 +++++++ frontend/src/app/show/lib/ranges/index.ts | 27 +++ frontend/src/app/show/lib/ranges/types.ts | 51 ++++ 13 files changed, 304 insertions(+), 261 deletions(-) delete mode 100644 frontend/src/app/show/lib/ranges.ts create mode 100644 frontend/src/app/show/lib/ranges/accumulate.ts create mode 100644 frontend/src/app/show/lib/ranges/eval.ts create mode 100644 frontend/src/app/show/lib/ranges/index.ts create mode 100644 frontend/src/app/show/lib/ranges/types.ts diff --git a/frontend/src/app/show/components/Ranges/Draw/hits/index.tsx b/frontend/src/app/show/components/Ranges/Draw/hits/index.tsx index 303478e1..4b7f7412 100644 --- a/frontend/src/app/show/components/Ranges/Draw/hits/index.tsx +++ b/frontend/src/app/show/components/Ranges/Draw/hits/index.tsx @@ -6,19 +6,29 @@ import { compareJSON } from ".."; export const DrawHits = memo( ({ round, hits, gauge, strokeWidth }: { round: Round | null, hits: Hits, gauge: UnsignedNumber, strokeWidth: number }): React.JSX.Element => { - if (round?.mode.mode == "fullHidden") return <>; - let startingIndex = 0; - if (round && hits.length < round.maxHits) { - const hitsPerView = round?.hitsPerView - startingIndex = Math.floor((hits.length - 1) / hitsPerView) * hitsPerView; + if (!round) return <> + if (round.mode.mode == "fullHidden") return <>; + + let selectedHits = hits; + const maxHitId = Math.max(...hits.map(h => h.id)); + + if (maxHitId < round.maxHits) { + const latestSeriesId = + Math.floor((maxHitId - 1) / round.hitsPerView); + + selectedHits = hits.filter( + hit => + Math.floor((hit.id - 1) / round.hitsPerView) === + latestSeriesId + ); } - const hitsCopy = hits.slice(startingIndex) + return ( - {hitsCopy.map((hit, index) => ( - + {selectedHits.map((hit, index) => ( + ))} - {round?.mode.mode == "circle" ? : <>} + {round.mode.mode == "circle" ? : <>} ) }, compareJSON); \ No newline at end of file diff --git a/frontend/src/app/show/components/Ranges/Draw/layout/index.tsx b/frontend/src/app/show/components/Ranges/Draw/layout/index.tsx index 7090912b..fda25f83 100644 --- a/frontend/src/app/show/components/Ranges/Draw/layout/index.tsx +++ b/frontend/src/app/show/components/Ranges/Draw/layout/index.tsx @@ -67,18 +67,26 @@ function getSizeInternal(round: Round, gauge: UnsignedNumber, hits: Hits): [numb export function getSizeAuto(gauge: UnsignedNumber, round: Round | null, hits: Hits): [number, number] | null { - let startingIndex = 0; - if (round && hits.length < round.maxHits) { - const hitsPerView = round.hitsPerView; - startingIndex = Math.floor((hits.length - 1) / hitsPerView) * hitsPerView; + let selectedHits = hits; + const maxHitId = Math.max(...hits.map(h => h.id)); + if (round && maxHitId < round.maxHits) { + const latestSeriesId = + Math.floor((maxHitId - 1) / round.hitsPerView); + + selectedHits = hits.filter( + hit => + Math.floor((hit.id - 1) / round.hitsPerView) === + latestSeriesId + ); } - const hitsCopy = hits.slice(startingIndex).filter(hit => hit.valid); - if (hitsCopy.length === 0 || round?.mode.mode == "fullHidden") { + const validHits = selectedHits.filter((hit) => hit.valid) as Array; + if (validHits.length === 0 || round?.mode.mode == "fullHidden") { return null; } - const sizes = [Math.max(...hitsCopy.map(hit => Math.abs(hit.x))), - Math.max(...hitsCopy.map(hit => Math.abs(hit.y)))]; + + const sizes = [Math.max(...validHits.map(hit => Math.abs(hit.x))), + Math.max(...validHits.map(hit => Math.abs(hit.y)))]; return sizes.map((s) => s * 2 + gauge) as [number, number]; } diff --git a/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/hitTotal.tsx b/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/hitTotal.tsx index 78a78d3d..476b8ecf 100644 --- a/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/hitTotal.tsx +++ b/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/hitTotal.tsx @@ -1,9 +1,7 @@ -import { getTotal } from "@frontend/app/show/lib/ranges"; +import { getTotal } from "@frontend/app/show/lib/ranges/accumulate"; import { useAppSelector } from "../../ranges-store/store"; import styles from "./infoPanel.module.css"; - - export function HitTotal({ id }: { id: number }): React.JSX.Element { const total = useAppSelector((state) => { const range = state.ranges[id]; diff --git a/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/seriesTable.tsx b/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/seriesTable.tsx index 47e70e1d..23311558 100644 --- a/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/seriesTable.tsx +++ b/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/seriesTable.tsx @@ -1,4 +1,4 @@ -import { getSeries } from "@frontend/app/show/lib/ranges"; +import { getSeries } from "@frontend/app/show/lib/ranges/accumulate"; import { useAppSelector } from "../../ranges-store/store"; import styles from "./infoPanel.module.css"; diff --git a/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/shotTable.tsx b/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/shotTable.tsx index 4094503b..a39beb09 100644 --- a/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/shotTable.tsx +++ b/frontend/src/app/show/cpcView/components/CpcView/range/infoPanel/shotTable.tsx @@ -1,16 +1,24 @@ -import { Mode, Range } from "dc-ranges-types"; +import { Mode } from "dc-ranges-types"; import { useAppSelector } from "../../ranges-store/store"; import styles from "./infoPanel.module.css"; -import { getHitEval, HitEval } from "@frontend/app/show/lib/ranges"; import ShotArrow from "@frontend/app/show/components/Ranges/Arrow"; import React from "react"; +import { getHitsOfSeries, getLatestSeriesId } from "@frontend/app/show/lib/ranges"; +import { getHitEval } from "@frontend/app/show/lib/ranges/eval"; +import { HitEval } from "@frontend/app/show/lib/ranges/types"; export default function ShotTable({ id }: { id: number }): React.JSX.Element { const hits = useAppSelector(state => { const range = state.ranges[id]; - if (!range || !range.active) return []; - return range.hits[range.round] || []; + if (!range || !range.active || !range.discipline) return []; + const round = range.discipline.rounds[range.round]; + if (!round) return []; + const hits = range.hits[range.round] || []; + + const selectedHits = getHitsOfSeries(round, hits, getLatestSeriesId(round, hits)); + + return selectedHits.reverse(); }) const round = useAppSelector(state => { @@ -21,9 +29,6 @@ export default function ShotTable({ id }: { id: number }): React.JSX.Element { if (!round) return <>; - const currentSumCount = hits.length % round.hitsPerSum || round.hitsPerSum; - const selectedHits = currentSumCount > 10 ? hits.slice(-10) : hits.slice(-currentSumCount); - return (
@@ -36,7 +41,7 @@ export default function ShotTable({ id }: { id: number }): React.JSX.Element { }
- {selectedHits.reverse().map((hit, index) => { + {hits.map((hit, index) => { if (!hit.valid) { return (
diff --git a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/currentHit.tsx b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/currentHit.tsx index 74518d9f..7906cb99 100644 --- a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/currentHit.tsx +++ b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/currentHit.tsx @@ -1,9 +1,9 @@ -import { getHitEval, getRoundName } from "../../../../../lib/ranges"; import styles from "./range.module.css" import ShotArrowW from "./ShotArrow"; -import { Hit, Range, Round } from "dc-ranges-types"; +import { Hit, Round } from "dc-ranges-types"; import { useAppSelector } from "../../ranges-store/store"; import { ScaleText } from "@frontend/app/components/base/ScaleText"; +import { getHitEval } from "@frontend/app/show/lib/ranges/eval"; interface CurrentHitProps { id: number diff --git a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/seriesList.tsx b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/seriesList.tsx index 0fccbfec..07006c01 100644 --- a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/seriesList.tsx +++ b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/seriesList.tsx @@ -1,8 +1,7 @@ -import { getSeries } from "../../../../../lib/ranges"; import styles from "./range.module.css" import { useAppSelector } from "../../ranges-store/store"; import { ScaleText } from "@frontend/app/components/base/ScaleText"; -import { current } from "@reduxjs/toolkit"; +import { getSeries } from "@frontend/app/show/lib/ranges/accumulate"; export default function SeriesList({ id }: { id: number }): React.JSX.Element { // This only needs to rerender if the hits change, so we can use a simple selector diff --git a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx index 8c02c2b7..04273911 100644 --- a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx +++ b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx @@ -1,7 +1,6 @@ -import { Range } from "dc-ranges-types"; -import { getTotal } from "../../../../../lib/ranges"; import styles from "./range.module.css" import { useAppSelector } from "../../ranges-store/store"; +import { getTotal } from "@frontend/app/show/lib/ranges/accumulate"; export default function Total({ id }: { id: number }): React.JSX.Element { const total = useAppSelector((state => { diff --git a/frontend/src/app/show/lib/ranges.ts b/frontend/src/app/show/lib/ranges.ts deleted file mode 100644 index 9726e765..00000000 --- a/frontend/src/app/show/lib/ranges.ts +++ /dev/null @@ -1,226 +0,0 @@ -import { Range, Round, Hit, UnsignedNumber, Hits, ActiveRange, UnsignedInteger, ValidHit } from "dc-ranges-types"; -import { floor, round as mRound } from "./math"; -import smallestEnclosingCircle from "smallest-enclosing-circle"; - -export function getRoundName(data: Range, roundId?: number): string | null { - if (!data.active) return null; - if (!data.discipline) return "Unbekannt"; - if (!roundId) roundId = data.round; - const round = data.discipline.rounds[roundId]; - if (!round) return "Unbekannt"; - return round.name; -} - -type BaseHitEval = { - id: UnsignedInteger - kind: string -} - -type RingsTargetHiddenHitEval = BaseHitEval & { - kind: "rings" - rings: string -} - -type DividerHitEval = BaseHitEval & { - divider: UnsignedNumber - kind: "divider" -} - -type HundredHitEval = BaseHitEval & { - hundred: UnsignedInteger - kind: "hundred" -} - -type CircleHitEval = BaseHitEval & { - x: number, - y: number - kind: "circle" -} - -type HiddenHitEval = BaseHitEval & { - kind: "hidden" -} - -type DecimalHitEval = BaseHitEval & { - decimal: UnsignedInteger - rings: string, - kind: "decimal" -} - -type IntegerTimesDecimalHitEval = BaseHitEval & { - integerTimesDecimal: UnsignedInteger - rings: string, - kind: "integerDecimal" -} - -type RingsDivHitEval = BaseHitEval & { - kind: "ringsDiv", - rings: string, - divider: UnsignedNumber, -}; - -export type HitEval = RingsTargetHiddenHitEval | DividerHitEval | HundredHitEval | CircleHitEval | DecimalHitEval | IntegerTimesDecimalHitEval | RingsDivHitEval | HiddenHitEval; - -function getRingsEval(hit: ValidHit): RingsTargetHiddenHitEval { - return { - kind: "rings", - id: hit.id, - rings: `${floor(hit.rings, 1).toFixed(1)}${hit.innerTen ? '*' : ''}` - }; -} - -function getDividerEval(decimals: UnsignedInteger, hit: ValidHit): DividerHitEval { - return { - kind: "divider", - id: hit.id, - divider: floor(hit.divisor, decimals) - }; -} - - -export function getHitEval(round: Round, hit?: ValidHit): HitEval | null { - if (!hit) return null; - - switch (round.mode.mode) { - case "rings": - case "target": - return getRingsEval(hit); - - case "ringsDiv": - return { - ...getRingsEval(hit), - ...getDividerEval(0, hit), - kind: "ringsDiv", - - }; - - case "divider": - return getDividerEval(round.mode.decimals, hit); - - case "fullHidden": - case "hidden": - if (round.counts == false) { - return getRingsEval(hit); - } else { - return { - kind: "hidden", - id: hit.id, - } - } - - case "hundred": - return { - kind: "hundred", - id: hit.id, - hundred: Math.floor((floor(hit.rings, 1) - 1) * 10 + 1) - } - - case "decimal": - return { - ...getRingsEval(hit), - kind: "decimal", - decimal: Math.floor(hit.rings * 10) % 10 - } - - case "integerDecimal": - const integer = Math.floor(hit.rings); - const decimal = Math.round((hit.rings - integer) * 10); - return { - ...getRingsEval(hit), - kind: "integerDecimal", - integerTimesDecimal: integer * decimal - } - - case "circle": - const precision = 2; - return { - kind: "circle", - id: hit.id, - x: mRound(hit.x, precision), - y: mRound(hit.y, precision) - } - - default: - return null; - } -} - -export function getSeries(round: Round | null, gauge: UnsignedNumber, hits: Hits): Array { - if (!round) return []; - - const series = []; - for (let i = 0; i < hits.length; i += round.hitsPerSum) { - const seriesHits = hits.slice(i, i + round.hitsPerSum); - series.push(accumulateHits(seriesHits, round, gauge, false)); - } - return series; -} - -export function getTotal(round: Round | null, gauge: UnsignedNumber, hits: Hits): string { - if (!round) return "0"; - return accumulateHits(hits, round, gauge, true); -} - -function accumulateHits(hits: Hits, round: Round, gauge: UnsignedNumber, isTotal: boolean): string { - const validHits = hits.filter((hit) => hit.valid); - if (!validHits.length) { - return "0"; - } - switch (round.mode.mode) { - case "circle": - const radius = smallestEnclosingCircle(validHits).r; - return mRound((isNaN(radius) ? 0 : radius * 2) + gauge, 1).toFixed(1); - - case "divider": - const divider = Math.min(...validHits.map((hit) => hit.divisor)); - return `${floor(divider, round.mode.decimals).toFixed(round.mode.decimals)} (${validHits.find((hit) => hit.divisor == divider)?.id})`; - - case "fullHidden": - case "hidden": - if (round.counts) return "***"; - return validHits.reduce((sum, hit) => sum + floor(hit.rings, 0), 0).toFixed(0); - - case "rings": - case "ringsDiv": - const decimals = round.mode.decimals; - return validHits.reduce((sum, hit) => sum + floor(hit.rings, decimals), 0).toFixed(decimals); - - case "hundred": - return validHits.reduce((sum, hit) => sum + (Math.floor(hit.rings) - 1) * 10 + 1, 0).toFixed(0); - - case "decimal": - return validHits.reduce((sum, hit) => sum + Math.floor(hit.rings * 10) % 10, 0).toFixed(0); - - case "integerDecimal": - return validHits.reduce((sum, hit) => { - const integer = Math.floor(hit.rings); - const decimal = Math.floor((hit.rings - integer) * 10); - return sum + integer * decimal; - }, 0).toFixed(0); - - case "target": - const tDecimals = round.mode.decimals; - const exact = round.mode.exact; - const targetValue = round.mode.value; - const sum = validHits.reduce((sum, hit) => { - const value = floor(hit.rings, tDecimals); - if (!exact || sum + value <= targetValue) { - return sum + value; - } else { - return sum; - } - }, 0); - if (isTotal) { - const result = round.mode.value - sum; - if (result < 0) return "0"; - return result.toFixed(round.mode.decimals); - } else { - return sum.toFixed(round.mode.decimals); - } - - default: - return "???"; - } - -} - diff --git a/frontend/src/app/show/lib/ranges/accumulate.ts b/frontend/src/app/show/lib/ranges/accumulate.ts new file mode 100644 index 00000000..9400822d --- /dev/null +++ b/frontend/src/app/show/lib/ranges/accumulate.ts @@ -0,0 +1,85 @@ +import { Hits, Round, UnsignedNumber } from "dc-ranges-types"; +import smallestEnclosingCircle from "smallest-enclosing-circle"; +import { floor, round as mRound } from "../math"; +import { getHitsOfSeries, getLatestSeriesId } from "."; + +export function getSeries(round: Round | null, gauge: UnsignedNumber, hits: Hits): Array { + if (!round) return []; + if (hits.length == 0) return []; + + const series = []; + const maxSeriesId = getLatestSeriesId(round, hits); + for (let i = 0; i <= maxSeriesId; i++) { + const seriesHits = getHitsOfSeries(round, hits, i); + series.push(accumulateHits(seriesHits, round, gauge, false)); + } + return series; +} + +export function getTotal(round: Round | null, gauge: UnsignedNumber, hits: Hits): string { + if (!round) return "0"; + return accumulateHits(hits, round, gauge, true); +} + +function accumulateHits(hits: Hits, round: Round, gauge: UnsignedNumber, isTotal: boolean): string { + const validHits = hits.filter((hit) => hit.valid); + if (!validHits.length) { + return "0"; + } + switch (round.mode.mode) { + case "circle": + const radius = smallestEnclosingCircle(validHits).r; + return mRound((isNaN(radius) ? 0 : radius * 2) + gauge, 1).toFixed(1); + + case "divider": + const divider = Math.min(...validHits.map((hit) => hit.divisor)); + return `${floor(divider, round.mode.decimals).toFixed(round.mode.decimals)} (${validHits.find((hit) => hit.divisor == divider)?.id})`; + + case "fullHidden": + case "hidden": + if (round.counts) return "***"; + return validHits.reduce((sum, hit) => sum + floor(hit.rings, 0), 0).toFixed(0); + + case "rings": + case "ringsDiv": + const decimals = round.mode.decimals; + return validHits.reduce((sum, hit) => sum + floor(hit.rings, decimals), 0).toFixed(decimals); + + case "hundred": + return validHits.reduce((sum, hit) => sum + (Math.floor(hit.rings) - 1) * 10 + 1, 0).toFixed(0); + + case "decimal": + return validHits.reduce((sum, hit) => sum + Math.floor(hit.rings * 10) % 10, 0).toFixed(0); + + case "integerDecimal": + return validHits.reduce((sum, hit) => { + const integer = Math.floor(hit.rings); + const decimal = Math.floor((hit.rings - integer) * 10); + return sum + integer * decimal; + }, 0).toFixed(0); + + case "target": + const tDecimals = round.mode.decimals; + const exact = round.mode.exact; + const targetValue = round.mode.value; + const sum = validHits.reduce((sum, hit) => { + const value = floor(hit.rings, tDecimals); + if (!exact || sum + value <= targetValue) { + return sum + value; + } else { + return sum; + } + }, 0); + if (isTotal) { + const result = round.mode.value - sum; + if (result < 0) return "0"; + return result.toFixed(round.mode.decimals); + } else { + return sum.toFixed(round.mode.decimals); + } + + default: + return "???"; + } + +} \ No newline at end of file diff --git a/frontend/src/app/show/lib/ranges/eval.ts b/frontend/src/app/show/lib/ranges/eval.ts new file mode 100644 index 00000000..02b5864a --- /dev/null +++ b/frontend/src/app/show/lib/ranges/eval.ts @@ -0,0 +1,87 @@ +import { Round, UnsignedInteger, ValidHit } from "dc-ranges-types"; +import { DividerHitEval, HitEval, RingsTargetHiddenHitEval } from "./types"; +import { floor, round as mRound } from "../math"; + +function getRingsEval(hit: ValidHit): RingsTargetHiddenHitEval { + return { + kind: "rings", + id: hit.id, + rings: `${floor(hit.rings, 1).toFixed(1)}${hit.innerTen ? '*' : ''}` + }; +} + +function getDividerEval(decimals: UnsignedInteger, hit: ValidHit): DividerHitEval { + return { + kind: "divider", + id: hit.id, + divider: floor(hit.divisor, decimals) + }; +} + + +export function getHitEval(round: Round, hit?: ValidHit): HitEval | null { + if (!hit) return null; + + switch (round.mode.mode) { + case "rings": + case "target": + return getRingsEval(hit); + + case "ringsDiv": + return { + ...getRingsEval(hit), + ...getDividerEval(0, hit), + kind: "ringsDiv", + + }; + + case "divider": + return getDividerEval(round.mode.decimals, hit); + + case "fullHidden": + case "hidden": + if (round.counts == false) { + return getRingsEval(hit); + } else { + return { + kind: "hidden", + id: hit.id, + } + } + + case "hundred": + return { + kind: "hundred", + id: hit.id, + hundred: Math.floor((floor(hit.rings, 1) - 1) * 10 + 1) + } + + case "decimal": + return { + ...getRingsEval(hit), + kind: "decimal", + decimal: Math.floor(hit.rings * 10) % 10 + } + + case "integerDecimal": + const integer = Math.floor(hit.rings); + const decimal = Math.round((hit.rings - integer) * 10); + return { + ...getRingsEval(hit), + kind: "integerDecimal", + integerTimesDecimal: integer * decimal + } + + case "circle": + const precision = 2; + return { + kind: "circle", + id: hit.id, + x: mRound(hit.x, precision), + y: mRound(hit.y, precision) + } + + default: + return null; + } +} \ No newline at end of file diff --git a/frontend/src/app/show/lib/ranges/index.ts b/frontend/src/app/show/lib/ranges/index.ts new file mode 100644 index 00000000..710fdd60 --- /dev/null +++ b/frontend/src/app/show/lib/ranges/index.ts @@ -0,0 +1,27 @@ +import { Hits, Index, Integer, Range, Round } from "dc-ranges-types"; + +export function getRoundName(data: Range, roundId?: Index): string | null { + if (!data.active) return null; + if (!data.discipline) return "Unbekannt"; + if (!roundId) roundId = data.round; + const round = data.discipline.rounds[roundId]; + if (!round) return "Unbekannt"; + return round.name; +} + +export function getSeriesId(hitId: Index, hitCount: Integer): Index { + return Math.floor((hitId - 1) / hitCount); +} + +export function getHitsOfSeries(round: Round, hits: Hits, seriesId: Integer): Hits { + const hitCount = round.hitsPerSum; + return hits.filter( + (hit) => getSeriesId(hit.id, hitCount) === seriesId + ); +} + +export function getLatestSeriesId(round: Round, hits: Hits): Index { + if (hits.length === 0) return 0; + const maxId = Math.max(...hits.map(h => h.id)); + return getSeriesId(maxId, round.hitsPerSum); +} diff --git a/frontend/src/app/show/lib/ranges/types.ts b/frontend/src/app/show/lib/ranges/types.ts new file mode 100644 index 00000000..f9c43c91 --- /dev/null +++ b/frontend/src/app/show/lib/ranges/types.ts @@ -0,0 +1,51 @@ +import { Index, UnsignedInteger, UnsignedNumber } from "dc-ranges-types" + +export type BaseHitEval = { + id: Index + kind: string +} + +export type RingsTargetHiddenHitEval = BaseHitEval & { + kind: "rings" + rings: string +} + +export type DividerHitEval = BaseHitEval & { + divider: UnsignedNumber + kind: "divider" +} + +export type HundredHitEval = BaseHitEval & { + hundred: UnsignedInteger + kind: "hundred" +} + +export type CircleHitEval = BaseHitEval & { + x: number, + y: number + kind: "circle" +} + +export type HiddenHitEval = BaseHitEval & { + kind: "hidden" +} + +export type DecimalHitEval = BaseHitEval & { + decimal: UnsignedInteger + rings: string, + kind: "decimal" +} + +export type IntegerTimesDecimalHitEval = BaseHitEval & { + integerTimesDecimal: UnsignedInteger + rings: string, + kind: "integerDecimal" +} + +export type RingsDivHitEval = BaseHitEval & { + kind: "ringsDiv", + rings: string, + divider: UnsignedNumber, +}; + +export type HitEval = RingsTargetHiddenHitEval | DividerHitEval | HundredHitEval | CircleHitEval | DecimalHitEval | IntegerTimesDecimalHitEval | RingsDivHitEval | HiddenHitEval; From 61c6c3ab71664d0aa6f99c8e3e44dc96b84d9ec9 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Mon, 16 Feb 2026 21:29:39 +0100 Subject: [PATCH 06/31] chore: Dependencies Prisma bricked itself (again) --- database/local/package-lock.json | 140 +++++++++---------- database/local/package.json | 10 +- database/smdb/package-lock.json | 150 ++++++++++---------- database/smdb/package.json | 10 +- database/ssmdb2/package-lock.json | 150 ++++++++++---------- database/ssmdb2/package.json | 10 +- database/tableWatcher/package-lock.json | 104 +++++++------- database/tableWatcher/package.json | 4 +- frontend/package-lock.json | 80 +++++------ frontend/package.json | 12 +- logger/package-lock.json | 24 ++-- logger/package.json | 6 +- ranges/cache/package-lock.json | 46 +++---- ranges/cache/package.json | 4 +- ranges/log/package-lock.json | 36 ++--- ranges/log/package.json | 4 +- ranges/merge/package-lock.json | 34 ++--- ranges/merge/package.json | 4 +- ranges/multicast/package-lock.json | 32 ++--- ranges/multicast/package.json | 4 +- ranges/multicast/proxy/package-lock.json | 22 +-- ranges/multicast/proxy/package.json | 4 +- ranges/ssmdb2/package-lock.json | 48 +++---- ranges/ssmdb2/package.json | 4 +- ranges/ttl/package-lock.json | 8 +- ranges/ttl/package.json | 2 +- screens/evaluations/package-lock.json | 167 ++++++++++++----------- screens/evaluations/package.json | 6 +- screens/images/package-lock.json | 22 +-- screens/images/package.json | 4 +- screens/screenCast/package-lock.json | 14 +- screens/screenCast/package.json | 2 +- screens/screenManager/package-lock.json | 32 ++--- screens/screenManager/package.json | 4 +- serverState/package-lock.json | 48 +++---- serverState/package.json | 4 +- streams/package-lock.json | 15 +- streams/package.json | 2 +- syncTime/package-lock.json | 42 +++--- syncTime/package.json | 4 +- utils/recorder/package-lock.json | 8 +- utils/recorder/package.json | 2 +- 42 files changed, 670 insertions(+), 658 deletions(-) diff --git a/database/local/package-lock.json b/database/local/package-lock.json index 5a640a85..1ac5c6c7 100644 --- a/database/local/package-lock.json +++ b/database/local/package-lock.json @@ -9,15 +9,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -117,23 +117,23 @@ } }, "node_modules/@prisma/adapter-pg": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.3.0.tgz", - "integrity": "sha512-iuYQMbIPO6i9O45Fv8TB7vWu00BXhCaNAShenqF7gLExGDbnGp5BfFB4yz1K59zQ59jF6tQ9YHrg0P6/J3OoLg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.4.0.tgz", + "integrity": "sha512-LWwTHaio0bMxvzahmpwpWqsZM0vTfMqwF8zo06YvILL/o47voaSfKzCVxZw/o9awf4fRgS5Vgthobikj9Dusaw==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.3.0", + "@prisma/driver-adapter-utils": "7.4.0", "pg": "^8.16.3", "postgres-array": "3.0.4" } }, "node_modules/@prisma/client": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.3.0.tgz", - "integrity": "sha512-FXBIxirqQfdC6b6HnNgxGmU7ydCPEPk7maHMOduJJfnTP+MuOGa15X4omjR/zpPUUpm8ef/mEFQjJudOGkXFcQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.0.tgz", + "integrity": "sha512-Sc+ncr7+ph1hMf1LQfn6UyEXDEamCd5pXMsx8Q3SBH0NGX+zjqs3eaABt9hXwbcK9l7f8UyK8ldxOWA2LyPynQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.3.0" + "@prisma/client-runtime-utils": "7.4.0" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -152,15 +152,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.3.0.tgz", - "integrity": "sha512-dG/ceD9c+tnXATPk8G+USxxYM9E6UdMTnQeQ+1SZUDxTz7SgQcfxEqafqIQHcjdlcNK/pvmmLfSwAs3s2gYwUw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.0.tgz", + "integrity": "sha512-jTmWAOBGBSCT8n7SMbpjCpHjELgcDW9GNP/CeK6CeqjUFlEL6dn8Cl81t/NBDjJdXDm85XDJmc+PEQqqQee3xw==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.3.0.tgz", - "integrity": "sha512-QyMV67+eXF7uMtKxTEeQqNu/Be7iH+3iDZOQZW5ttfbSwBamCSdwPszA0dum+Wx27I7anYTPLmRmMORKViSW1A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", + "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -171,9 +171,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.3.0.tgz", - "integrity": "sha512-yh/tHhraCzYkffsI1/3a7SHX8tpgbJu1NPnuxS4rEpJdWAUDHUH25F1EDo6PPzirpyLNkgPPZdhojQK804BGtg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", + "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -203,65 +203,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.3.0.tgz", - "integrity": "sha512-Wdlezh1ck0Rq2dDINkfSkwbR53q53//Eo1vVqVLwtiZ0I6fuWDGNPxwq+SNAIHnsU+FD/m3aIJKevH3vF13U3w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.0.tgz", + "integrity": "sha512-jEyE5LkqZ27Ba/DIOfCGOQl6nKMLxuwJNRceCfh7/LRs46UkIKn3bmkI97MEH2t7zkYV3PGBrUr+6sMJaHvc0A==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/engines": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.3.0.tgz", - "integrity": "sha512-cWRQoPDXPtR6stOWuWFZf9pHdQ/o8/QNWn0m0zByxf5Kd946Q875XdEJ52pEsX88vOiXUmjuPG3euw82mwQNMg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", + "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/fetch-engine": "7.3.0", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/fetch-engine": "7.4.0", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735.tgz", - "integrity": "sha512-IH2va2ouUHihyiTTRW889LjKAl1CusZOvFfZxCDNpjSENt7g2ndFsK0vdIw/72v7+jCN6YgkHmdAP/BI7SDgyg==", + "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", + "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.3.0.tgz", - "integrity": "sha512-Mm0F84JMqM9Vxk70pzfNpGJ1lE4hYjOeLMu7nOOD1i83nvp8MSAcFYBnHqLvEZiA6onUR+m8iYogtOY4oPO5lQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", + "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/get-platform": { @@ -308,9 +308,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -434,9 +434,9 @@ } }, "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "devOptional": true, "license": "MIT" }, @@ -507,9 +507,9 @@ "license": "MIT" }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -782,9 +782,9 @@ "license": "MIT" }, "node_modules/nypm": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.4.tgz", - "integrity": "sha512-1TvCKjZyyklN+JJj2TS3P4uSQEInrM/HkkuSXsEzm1ApPgBffOn8gFguNnZf07r/1X6vlryfIqMUkJKQMzlZiw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz", + "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -800,9 +800,9 @@ } }, "node_modules/nypm/node_modules/citty": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.0.tgz", - "integrity": "sha512-8csy5IBFI2ex2hTVpaHN2j+LNE199AgiI7y4dMintrr8i0lQiFn+0AWMZrWdHKIgMOer65f8IThysYhoReqjWA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.1.tgz", + "integrity": "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==", "devOptional": true, "license": "MIT" }, @@ -1002,17 +1002,17 @@ } }, "node_modules/prisma": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.3.0.tgz", - "integrity": "sha512-ApYSOLHfMN8WftJA+vL6XwAPOh/aZ0BgUyyKPwUFgjARmG6EBI9LzDPf6SWULQMSAxydV9qn5gLj037nPNlg2w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", + "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.3.0", + "@prisma/config": "7.4.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.3.0", + "@prisma/engines": "7.4.0", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" diff --git a/database/local/package.json b/database/local/package.json index 6372fe0c..ce82d072 100644 --- a/database/local/package.json +++ b/database/local/package.json @@ -13,15 +13,15 @@ "license": "ISC", "description": "", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" }, "files": [ diff --git a/database/smdb/package-lock.json b/database/smdb/package-lock.json index ab898576..2e78cde4 100644 --- a/database/smdb/package-lock.json +++ b/database/smdb/package-lock.json @@ -8,14 +8,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -24,15 +24,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -132,22 +132,22 @@ } }, "node_modules/@prisma/adapter-mariadb": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.3.0.tgz", - "integrity": "sha512-cZaNZqdnm255Di8+0ztWDVdg40zRburNEMqHN2AIP98SO0Xbo9UDqHKC7sYkmm5Rqy9fNVxMjBJnoiZJ4Ae+tw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.0.tgz", + "integrity": "sha512-iGld7w4Oqm0Fux/6nzkVBkK0Wtv2Rdjy0QDPcs8dcfdZ4DolHWD585f8K5RMZ5riJ8IdIAqOxLKowlNloQYPuQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.3.0", + "@prisma/driver-adapter-utils": "7.4.0", "mariadb": "3.4.5" } }, "node_modules/@prisma/client": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.3.0.tgz", - "integrity": "sha512-FXBIxirqQfdC6b6HnNgxGmU7ydCPEPk7maHMOduJJfnTP+MuOGa15X4omjR/zpPUUpm8ef/mEFQjJudOGkXFcQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.0.tgz", + "integrity": "sha512-Sc+ncr7+ph1hMf1LQfn6UyEXDEamCd5pXMsx8Q3SBH0NGX+zjqs3eaABt9hXwbcK9l7f8UyK8ldxOWA2LyPynQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.3.0" + "@prisma/client-runtime-utils": "7.4.0" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -166,15 +166,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.3.0.tgz", - "integrity": "sha512-dG/ceD9c+tnXATPk8G+USxxYM9E6UdMTnQeQ+1SZUDxTz7SgQcfxEqafqIQHcjdlcNK/pvmmLfSwAs3s2gYwUw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.0.tgz", + "integrity": "sha512-jTmWAOBGBSCT8n7SMbpjCpHjELgcDW9GNP/CeK6CeqjUFlEL6dn8Cl81t/NBDjJdXDm85XDJmc+PEQqqQee3xw==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.3.0.tgz", - "integrity": "sha512-QyMV67+eXF7uMtKxTEeQqNu/Be7iH+3iDZOQZW5ttfbSwBamCSdwPszA0dum+Wx27I7anYTPLmRmMORKViSW1A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", + "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -185,9 +185,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.3.0.tgz", - "integrity": "sha512-yh/tHhraCzYkffsI1/3a7SHX8tpgbJu1NPnuxS4rEpJdWAUDHUH25F1EDo6PPzirpyLNkgPPZdhojQK804BGtg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", + "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -217,65 +217,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.3.0.tgz", - "integrity": "sha512-Wdlezh1ck0Rq2dDINkfSkwbR53q53//Eo1vVqVLwtiZ0I6fuWDGNPxwq+SNAIHnsU+FD/m3aIJKevH3vF13U3w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.0.tgz", + "integrity": "sha512-jEyE5LkqZ27Ba/DIOfCGOQl6nKMLxuwJNRceCfh7/LRs46UkIKn3bmkI97MEH2t7zkYV3PGBrUr+6sMJaHvc0A==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/engines": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.3.0.tgz", - "integrity": "sha512-cWRQoPDXPtR6stOWuWFZf9pHdQ/o8/QNWn0m0zByxf5Kd946Q875XdEJ52pEsX88vOiXUmjuPG3euw82mwQNMg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", + "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/fetch-engine": "7.3.0", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/fetch-engine": "7.4.0", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735.tgz", - "integrity": "sha512-IH2va2ouUHihyiTTRW889LjKAl1CusZOvFfZxCDNpjSENt7g2ndFsK0vdIw/72v7+jCN6YgkHmdAP/BI7SDgyg==", + "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", + "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.3.0.tgz", - "integrity": "sha512-Mm0F84JMqM9Vxk70pzfNpGJ1lE4hYjOeLMu7nOOD1i83nvp8MSAcFYBnHqLvEZiA6onUR+m8iYogtOY4oPO5lQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", + "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/get-platform": { @@ -328,9 +328,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -442,9 +442,9 @@ } }, "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "devOptional": true, "license": "MIT" }, @@ -518,9 +518,9 @@ "license": "MIT" }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -836,9 +836,9 @@ "license": "MIT" }, "node_modules/nypm": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.4.tgz", - "integrity": "sha512-1TvCKjZyyklN+JJj2TS3P4uSQEInrM/HkkuSXsEzm1ApPgBffOn8gFguNnZf07r/1X6vlryfIqMUkJKQMzlZiw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz", + "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -854,9 +854,9 @@ } }, "node_modules/nypm/node_modules/citty": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.0.tgz", - "integrity": "sha512-8csy5IBFI2ex2hTVpaHN2j+LNE199AgiI7y4dMintrr8i0lQiFn+0AWMZrWdHKIgMOer65f8IThysYhoReqjWA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.1.tgz", + "integrity": "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==", "devOptional": true, "license": "MIT" }, @@ -918,17 +918,17 @@ } }, "node_modules/prisma": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.3.0.tgz", - "integrity": "sha512-ApYSOLHfMN8WftJA+vL6XwAPOh/aZ0BgUyyKPwUFgjARmG6EBI9LzDPf6SWULQMSAxydV9qn5gLj037nPNlg2w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", + "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.3.0", + "@prisma/config": "7.4.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.3.0", + "@prisma/engines": "7.4.0", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" diff --git a/database/smdb/package.json b/database/smdb/package.json index 48ced352..2457f59d 100644 --- a/database/smdb/package.json +++ b/database/smdb/package.json @@ -10,15 +10,15 @@ "generate": "npx prisma generate --no-hints" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" }, "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "files": [ "dist", diff --git a/database/ssmdb2/package-lock.json b/database/ssmdb2/package-lock.json index 9dfd010c..87b71ff1 100644 --- a/database/ssmdb2/package-lock.json +++ b/database/ssmdb2/package-lock.json @@ -9,14 +9,14 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -25,15 +25,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -133,22 +133,22 @@ } }, "node_modules/@prisma/adapter-mariadb": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.3.0.tgz", - "integrity": "sha512-cZaNZqdnm255Di8+0ztWDVdg40zRburNEMqHN2AIP98SO0Xbo9UDqHKC7sYkmm5Rqy9fNVxMjBJnoiZJ4Ae+tw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.0.tgz", + "integrity": "sha512-iGld7w4Oqm0Fux/6nzkVBkK0Wtv2Rdjy0QDPcs8dcfdZ4DolHWD585f8K5RMZ5riJ8IdIAqOxLKowlNloQYPuQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.3.0", + "@prisma/driver-adapter-utils": "7.4.0", "mariadb": "3.4.5" } }, "node_modules/@prisma/client": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.3.0.tgz", - "integrity": "sha512-FXBIxirqQfdC6b6HnNgxGmU7ydCPEPk7maHMOduJJfnTP+MuOGa15X4omjR/zpPUUpm8ef/mEFQjJudOGkXFcQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.0.tgz", + "integrity": "sha512-Sc+ncr7+ph1hMf1LQfn6UyEXDEamCd5pXMsx8Q3SBH0NGX+zjqs3eaABt9hXwbcK9l7f8UyK8ldxOWA2LyPynQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.3.0" + "@prisma/client-runtime-utils": "7.4.0" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -167,15 +167,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.3.0.tgz", - "integrity": "sha512-dG/ceD9c+tnXATPk8G+USxxYM9E6UdMTnQeQ+1SZUDxTz7SgQcfxEqafqIQHcjdlcNK/pvmmLfSwAs3s2gYwUw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.0.tgz", + "integrity": "sha512-jTmWAOBGBSCT8n7SMbpjCpHjELgcDW9GNP/CeK6CeqjUFlEL6dn8Cl81t/NBDjJdXDm85XDJmc+PEQqqQee3xw==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.3.0.tgz", - "integrity": "sha512-QyMV67+eXF7uMtKxTEeQqNu/Be7iH+3iDZOQZW5ttfbSwBamCSdwPszA0dum+Wx27I7anYTPLmRmMORKViSW1A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", + "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -186,9 +186,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.3.0.tgz", - "integrity": "sha512-yh/tHhraCzYkffsI1/3a7SHX8tpgbJu1NPnuxS4rEpJdWAUDHUH25F1EDo6PPzirpyLNkgPPZdhojQK804BGtg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", + "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -218,65 +218,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.3.0.tgz", - "integrity": "sha512-Wdlezh1ck0Rq2dDINkfSkwbR53q53//Eo1vVqVLwtiZ0I6fuWDGNPxwq+SNAIHnsU+FD/m3aIJKevH3vF13U3w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.0.tgz", + "integrity": "sha512-jEyE5LkqZ27Ba/DIOfCGOQl6nKMLxuwJNRceCfh7/LRs46UkIKn3bmkI97MEH2t7zkYV3PGBrUr+6sMJaHvc0A==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/engines": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.3.0.tgz", - "integrity": "sha512-cWRQoPDXPtR6stOWuWFZf9pHdQ/o8/QNWn0m0zByxf5Kd946Q875XdEJ52pEsX88vOiXUmjuPG3euw82mwQNMg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", + "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/fetch-engine": "7.3.0", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/fetch-engine": "7.4.0", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735.tgz", - "integrity": "sha512-IH2va2ouUHihyiTTRW889LjKAl1CusZOvFfZxCDNpjSENt7g2ndFsK0vdIw/72v7+jCN6YgkHmdAP/BI7SDgyg==", + "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", + "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.3.0.tgz", - "integrity": "sha512-Mm0F84JMqM9Vxk70pzfNpGJ1lE4hYjOeLMu7nOOD1i83nvp8MSAcFYBnHqLvEZiA6onUR+m8iYogtOY4oPO5lQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", + "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/get-platform": { @@ -329,9 +329,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -443,9 +443,9 @@ } }, "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "devOptional": true, "license": "MIT" }, @@ -519,9 +519,9 @@ "license": "MIT" }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -837,9 +837,9 @@ "license": "MIT" }, "node_modules/nypm": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.4.tgz", - "integrity": "sha512-1TvCKjZyyklN+JJj2TS3P4uSQEInrM/HkkuSXsEzm1ApPgBffOn8gFguNnZf07r/1X6vlryfIqMUkJKQMzlZiw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz", + "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -855,9 +855,9 @@ } }, "node_modules/nypm/node_modules/citty": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.0.tgz", - "integrity": "sha512-8csy5IBFI2ex2hTVpaHN2j+LNE199AgiI7y4dMintrr8i0lQiFn+0AWMZrWdHKIgMOer65f8IThysYhoReqjWA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.1.tgz", + "integrity": "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==", "devOptional": true, "license": "MIT" }, @@ -919,17 +919,17 @@ } }, "node_modules/prisma": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.3.0.tgz", - "integrity": "sha512-ApYSOLHfMN8WftJA+vL6XwAPOh/aZ0BgUyyKPwUFgjARmG6EBI9LzDPf6SWULQMSAxydV9qn5gLj037nPNlg2w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", + "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.3.0", + "@prisma/config": "7.4.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.3.0", + "@prisma/engines": "7.4.0", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" diff --git a/database/ssmdb2/package.json b/database/ssmdb2/package.json index 15be06c9..2667083d 100644 --- a/database/ssmdb2/package.json +++ b/database/ssmdb2/package.json @@ -13,14 +13,14 @@ "license": "ISC", "description": "", "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" }, "files": [ diff --git a/database/tableWatcher/package-lock.json b/database/tableWatcher/package-lock.json index f18162d9..3fa9fd9d 100644 --- a/database/tableWatcher/package-lock.json +++ b/database/tableWatcher/package-lock.json @@ -13,8 +13,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -23,12 +23,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -374,9 +374,9 @@ } }, "node_modules/@prisma/config": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.3.0.tgz", - "integrity": "sha512-QyMV67+eXF7uMtKxTEeQqNu/Be7iH+3iDZOQZW5ttfbSwBamCSdwPszA0dum+Wx27I7anYTPLmRmMORKViSW1A==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", + "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -387,9 +387,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.3.0.tgz", - "integrity": "sha512-yh/tHhraCzYkffsI1/3a7SHX8tpgbJu1NPnuxS4rEpJdWAUDHUH25F1EDo6PPzirpyLNkgPPZdhojQK804BGtg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", + "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", "dev": true, "license": "Apache-2.0" }, @@ -420,56 +420,56 @@ } }, "node_modules/@prisma/engines": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.3.0.tgz", - "integrity": "sha512-cWRQoPDXPtR6stOWuWFZf9pHdQ/o8/QNWn0m0zByxf5Kd946Q875XdEJ52pEsX88vOiXUmjuPG3euw82mwQNMg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", + "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/fetch-engine": "7.3.0", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/fetch-engine": "7.4.0", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735.tgz", - "integrity": "sha512-IH2va2ouUHihyiTTRW889LjKAl1CusZOvFfZxCDNpjSENt7g2ndFsK0vdIw/72v7+jCN6YgkHmdAP/BI7SDgyg==", + "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", + "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.3.0.tgz", - "integrity": "sha512-Mm0F84JMqM9Vxk70pzfNpGJ1lE4hYjOeLMu7nOOD1i83nvp8MSAcFYBnHqLvEZiA6onUR+m8iYogtOY4oPO5lQ==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", + "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0", - "@prisma/engines-version": "7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735", - "@prisma/get-platform": "7.3.0" + "@prisma/debug": "7.4.0", + "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", + "@prisma/get-platform": "7.4.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.3.0.tgz", - "integrity": "sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", + "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.3.0" + "@prisma/debug": "7.4.0" } }, "node_modules/@prisma/get-platform": { @@ -520,9 +520,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -621,9 +621,9 @@ } }, "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.4.tgz", + "integrity": "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==", "dev": true, "license": "MIT" }, @@ -1011,9 +1011,9 @@ "license": "MIT" }, "node_modules/nypm": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.4.tgz", - "integrity": "sha512-1TvCKjZyyklN+JJj2TS3P4uSQEInrM/HkkuSXsEzm1ApPgBffOn8gFguNnZf07r/1X6vlryfIqMUkJKQMzlZiw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.6.5.tgz", + "integrity": "sha512-K6AJy1GMVyfyMXRVB88700BJqNUkByijGJM8kEHpLdcAt+vSQAVfkWWHYzuRXHSY6xA2sNc5RjTj0p9rE2izVQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1029,9 +1029,9 @@ } }, "node_modules/nypm/node_modules/citty": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.0.tgz", - "integrity": "sha512-8csy5IBFI2ex2hTVpaHN2j+LNE199AgiI7y4dMintrr8i0lQiFn+0AWMZrWdHKIgMOer65f8IThysYhoReqjWA==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.2.1.tgz", + "integrity": "sha512-kEV95lFBhQgtogAPlQfJJ0WGVSokvLr/UEoFPiKKOXF7pl98HfUVUD0ejsuTCld/9xH9vogSywZ5KqHzXrZpqg==", "dev": true, "license": "MIT" }, @@ -1093,16 +1093,16 @@ } }, "node_modules/prisma": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.3.0.tgz", - "integrity": "sha512-ApYSOLHfMN8WftJA+vL6XwAPOh/aZ0BgUyyKPwUFgjARmG6EBI9LzDPf6SWULQMSAxydV9qn5gLj037nPNlg2w==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", + "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/config": "7.3.0", + "@prisma/config": "7.4.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.3.0", + "@prisma/engines": "7.4.0", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" diff --git a/database/tableWatcher/package.json b/database/tableWatcher/package.json index 8591b8c9..8aaaa3e4 100644 --- a/database/tableWatcher/package.json +++ b/database/tableWatcher/package.json @@ -12,8 +12,8 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" }, "files": [ diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b174c2e8..91ec5071 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,10 +11,10 @@ "@emotion/cache": "^11.14.0", "@emotion/react": "^11.14.0", "@reduxjs/toolkit": "^2.11.2", - "@rjsf/core": "^6.2.5", - "@rjsf/react-bootstrap": "^6.2.5", - "@rjsf/utils": "^6.2.5", - "@rjsf/validator-ajv8": "^6.2.5", + "@rjsf/core": "^6.3.1", + "@rjsf/react-bootstrap": "^6.3.1", + "@rjsf/utils": "^6.3.1", + "@rjsf/validator-ajv8": "^6.3.1", "bootstrap": "^5.3.8", "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", @@ -32,8 +32,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.1", - "@types/react": "^19.2.13", + "@types/node": "^25.2.3", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", "typescript": "~5.9.3" @@ -1112,14 +1112,14 @@ } }, "node_modules/@rjsf/core": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.2.5.tgz", - "integrity": "sha512-k/2aAKj9IY7JBcnPrYv7frgHkfK0KsS7h8PgPW14GJREh+X5EX/icrypcQu5ge/Ggbwi+90plJll07YiRV/lFg==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.3.1.tgz", + "integrity": "sha512-LTjFz5Fk3FlbgFPJ+OJi1JdWJyiap9dSpx8W6u7JHNB7K5VbwzJe8gIU45XWLHzWFGDHKPm89VrUzjOs07TPtg==", "license": "Apache-2.0", "peer": true, "dependencies": { - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", + "lodash": "^4.17.23", + "lodash-es": "^4.17.23", "markdown-to-jsx": "^8.0.0", "prop-types": "^15.8.1" }, @@ -1127,14 +1127,14 @@ "node": ">=20" }, "peerDependencies": { - "@rjsf/utils": "^6.2.x", + "@rjsf/utils": "^6.3.x", "react": ">=18" } }, "node_modules/@rjsf/react-bootstrap": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@rjsf/react-bootstrap/-/react-bootstrap-6.2.5.tgz", - "integrity": "sha512-m+ZREcgqwIB5vUsqyay77u9nhMYY6+bYNcwQ9eT6rob4MTy/aGgl6ojK/C8r1DZk5mtmYNxuyvGFL9f56QtAVw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@rjsf/react-bootstrap/-/react-bootstrap-6.3.1.tgz", + "integrity": "sha512-4CzdIaVtIAZRxs936u+f7Mz6KA3itOhAFlOA0VNd8HeNXkjmIJF3ybs/7/AtMupcPGyYolHBF2sZdUMhcsWdwg==", "license": "MIT", "dependencies": { "@react-icons/all-files": "^4.1.0" @@ -1143,24 +1143,24 @@ "node": ">=20" }, "peerDependencies": { - "@rjsf/core": "^6.2.x", - "@rjsf/utils": "^6.2.x", + "@rjsf/core": "^6.3.x", + "@rjsf/utils": "^6.3.x", "react": ">=18", "react-bootstrap": "^2.x" } }, "node_modules/@rjsf/utils": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.2.5.tgz", - "integrity": "sha512-29SvRuY3gKyAHUUnIiJiAF/mTnokgrE7XqUXMj+CZK+sGcmAegwhlnQMJgLQciTodMwTwOaDyV1Fxc47VKTHFw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.3.1.tgz", + "integrity": "sha512-ve2KHl1ITYG8QIonnuK83/T1k/5NuxP4D1egVqP9Hz2ub28kgl0rNMwmRSxXs3WIbCcMW9g3ox+daVrbSNc4Mw==", "license": "Apache-2.0", "peer": true, "dependencies": { "@x0k/json-schema-merge": "^1.0.2", "fast-uri": "^3.1.0", "jsonpointer": "^5.0.1", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21", + "lodash": "^4.17.23", + "lodash-es": "^4.17.23", "react-is": "^18.3.1" }, "engines": { @@ -1171,21 +1171,21 @@ } }, "node_modules/@rjsf/validator-ajv8": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-6.2.5.tgz", - "integrity": "sha512-+yLhFRuT2aY91KiUujhUKg8SyTBrUuQP3QAFINeGi+RljA3S+NQN56oeCaNdz9X+35+Sdy6jqmxy/0Q2K+K9vQ==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-6.3.1.tgz", + "integrity": "sha512-2RHDxBc0gBplPniau5UZj7aznpTelSBm1b3DNybok8L0NuIfmndbp9kNXgFuRvlyfsQSyYmZSBjbzeYqr0Hpcw==", "license": "Apache-2.0", "dependencies": { "ajv": "^8.17.1", "ajv-formats": "^2.1.1", - "lodash": "^4.17.21", - "lodash-es": "^4.17.21" + "lodash": "^4.17.23", + "lodash-es": "^4.17.23" }, "engines": { "node": ">=20" }, "peerDependencies": { - "@rjsf/utils": "^6.2.x" + "@rjsf/utils": "^6.3.x" } }, "node_modules/@socket.io/component-emitter": { @@ -1248,9 +1248,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -1269,9 +1269,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.13", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.13.tgz", - "integrity": "sha512-KkiJeU6VbYbUOp5ITMIc7kBfqlYkKA5KhEHVrGMmUUMt7NeaZg65ojdPk+FtNrBAOXNVM5QM72jnADjM+XVRAQ==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", "peer": true, "dependencies": { @@ -2186,15 +2186,15 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "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/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", "license": "MIT" }, "node_modules/loose-envify": { diff --git a/frontend/package.json b/frontend/package.json index 4d79f0f9..89589ec4 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,10 +12,10 @@ "@emotion/cache": "^11.14.0", "@emotion/react": "^11.14.0", "@reduxjs/toolkit": "^2.11.2", - "@rjsf/core": "^6.2.5", - "@rjsf/react-bootstrap": "^6.2.5", - "@rjsf/utils": "^6.2.5", - "@rjsf/validator-ajv8": "^6.2.5", + "@rjsf/core": "^6.3.1", + "@rjsf/react-bootstrap": "^6.3.1", + "@rjsf/utils": "^6.3.1", + "@rjsf/validator-ajv8": "^6.3.1", "bootstrap": "^5.3.8", "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", @@ -33,8 +33,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.1", - "@types/react": "^19.2.13", + "@types/node": "^25.2.3", + "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", "typescript": "~5.9.3" diff --git a/logger/package-lock.json b/logger/package-lock.json index 255fa062..e07884e8 100644 --- a/logger/package-lock.json +++ b/logger/package-lock.json @@ -9,12 +9,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -25,9 +25,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -59,9 +59,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -134,9 +134,9 @@ } }, "node_modules/pino": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.0.tgz", - "integrity": "sha512-0GNPNzHXBKw6U/InGe79A3Crzyk9bcSyObF9/Gfo9DLEf5qj5RF50RSjsu0W1rZ6ZqRGdzDFCRBQvi9/rSGPtA==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", "license": "MIT", "dependencies": { "@pinojs/redact": "^0.4.0", diff --git a/logger/package.json b/logger/package.json index 9a1d0d57..db1ba7c6 100644 --- a/logger/package.json +++ b/logger/package.json @@ -12,12 +12,12 @@ "license": "ISC", "description": "", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } } \ No newline at end of file diff --git a/ranges/cache/package-lock.json b/ranges/cache/package-lock.json index 045b1f23..c53beff3 100644 --- a/ranges/cache/package-lock.json +++ b/ranges/cache/package-lock.json @@ -14,10 +14,10 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -27,15 +27,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -43,14 +43,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -63,8 +63,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -73,12 +73,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -133,9 +133,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -261,9 +261,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/cache/package.json b/ranges/cache/package.json index fdd43523..8d4dac73 100644 --- a/ranges/cache/package.json +++ b/ranges/cache/package.json @@ -15,10 +15,10 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index 006083ac..bc0bd9dd 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -17,13 +17,13 @@ "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "socket.io-client": "^4.8.3", "typia": "^11.0.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", "typescript": "~5.9.3" @@ -34,15 +34,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -51,12 +51,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -70,7 +70,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "typescript": "~5.9.3" } }, @@ -78,7 +78,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -182,9 +182,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "devOptional": true, "license": "MIT", "peer": true, @@ -577,9 +577,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/log/package.json b/ranges/log/package.json index 5a7baf47..a42a05c3 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -18,13 +18,13 @@ "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "socket.io-client": "^4.8.3", "typia": "^11.0.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", "typescript": "~5.9.3" diff --git a/ranges/merge/package-lock.json b/ranges/merge/package-lock.json index ae3d6566..75d92125 100644 --- a/ranges/merge/package-lock.json +++ b/ranges/merge/package-lock.json @@ -14,14 +14,14 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -31,15 +31,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -48,12 +48,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -61,7 +61,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -201,9 +201,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -541,9 +541,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/merge/package.json b/ranges/merge/package.json index 1af066ce..7a29ad97 100644 --- a/ranges/merge/package.json +++ b/ranges/merge/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, @@ -22,7 +22,7 @@ "dc-logger": "file:../../logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "socket.io": "^4.8.3" } diff --git a/ranges/multicast/package-lock.json b/ranges/multicast/package-lock.json index 345ffd58..21fb716b 100644 --- a/ranges/multicast/package-lock.json +++ b/ranges/multicast/package-lock.json @@ -13,11 +13,11 @@ "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -27,15 +27,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -44,12 +44,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -114,9 +114,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -253,9 +253,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index 06e972d9..4bc8c111 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, @@ -20,6 +20,6 @@ "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" } } diff --git a/ranges/multicast/proxy/package-lock.json b/ranges/multicast/proxy/package-lock.json index 2ef60c6d..d5be7645 100644 --- a/ranges/multicast/proxy/package-lock.json +++ b/ranges/multicast/proxy/package-lock.json @@ -12,12 +12,12 @@ "@network-utils/arp-lookup": "^2.1.0", "amqplib": "^0.10.9", "dc-logger": "file:../../../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "iconv-lite": "^0.7.2" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -26,12 +26,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -55,9 +55,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -88,9 +88,9 @@ "link": true }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/multicast/proxy/package.json b/ranges/multicast/proxy/package.json index 59f368c5..68bc5a88 100644 --- a/ranges/multicast/proxy/package.json +++ b/ranges/multicast/proxy/package.json @@ -13,12 +13,12 @@ "@network-utils/arp-lookup": "^2.1.0", "amqplib": "^0.10.9", "dc-logger": "file:../../../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "iconv-lite": "^0.7.2" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } } diff --git a/ranges/ssmdb2/package-lock.json b/ranges/ssmdb2/package-lock.json index ebdef3d3..cac8d042 100644 --- a/ranges/ssmdb2/package-lock.json +++ b/ranges/ssmdb2/package-lock.json @@ -16,11 +16,11 @@ "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -47,14 +47,14 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -67,8 +67,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -77,12 +77,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -96,7 +96,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "typescript": "~5.9.3" } }, @@ -161,9 +161,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -312,9 +312,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index c17c11f3..d9561ed0 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, @@ -23,6 +23,6 @@ "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", "dc-table-watcher": "file:../../database/tableWatcher", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" } } diff --git a/ranges/ttl/package-lock.json b/ranges/ttl/package-lock.json index d85495ab..3cb78dad 100644 --- a/ranges/ttl/package-lock.json +++ b/ranges/ttl/package-lock.json @@ -8,14 +8,14 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ranges/ttl/package.json b/ranges/ttl/package.json index 6fc56485..ad198bb0 100644 --- a/ranges/ttl/package.json +++ b/ranges/ttl/package.json @@ -9,7 +9,7 @@ "build": "tsc" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" }, "files": [ diff --git a/screens/evaluations/package-lock.json b/screens/evaluations/package-lock.json index c54a16c0..a1e44392 100644 --- a/screens/evaluations/package-lock.json +++ b/screens/evaluations/package-lock.json @@ -11,16 +11,16 @@ "dependencies": { "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "express-rate-limit": "^8.2.1", - "jsdom": "^28.0.0", + "jsdom": "^28.1.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", "@types/jsdom": "^27.0.0", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -47,12 +47,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -63,29 +63,29 @@ "license": "MIT" }, "node_modules/@asamuzakjp/css-color": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.1.tgz", - "integrity": "sha512-B0Hv6G3gWGMn0xKJ0txEi/jM5iFpT3MfDxmhZFb4W047GvytCf1DHQ1D69W3zHI4yWe2aTZAA0JnbMZ7Xc8DuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.2.tgz", + "integrity": "sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==", "license": "MIT", "dependencies": { - "@csstools/css-calc": "^2.1.4", - "@csstools/css-color-parser": "^3.1.0", - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4", - "lru-cache": "^11.2.4" + "@csstools/css-calc": "^3.0.0", + "@csstools/css-color-parser": "^4.0.1", + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0", + "lru-cache": "^11.2.5" } }, "node_modules/@asamuzakjp/dom-selector": { - "version": "6.7.6", - "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.7.6.tgz", - "integrity": "sha512-hBaJER6A9MpdG3WgdlOolHmbOYvSk46y7IQN/1+iqiCuUu6iWdQrs9DGKF8ocqsEqWujWf/V7b7vaDgiUmIvUg==", + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.8.1.tgz", + "integrity": "sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==", "license": "MIT", "dependencies": { "@asamuzakjp/nwsapi": "^2.3.9", "bidi-js": "^1.0.3", "css-tree": "^3.1.0", "is-potential-custom-element-name": "^1.0.1", - "lru-cache": "^11.2.4" + "lru-cache": "^11.2.6" } }, "node_modules/@asamuzakjp/nwsapi": { @@ -94,10 +94,22 @@ "integrity": "sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==", "license": "MIT" }, + "node_modules/@bramus/specificity": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@bramus/specificity/-/specificity-2.4.2.tgz", + "integrity": "sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0" + }, + "bin": { + "specificity": "bin/cli.js" + } + }, "node_modules/@csstools/color-helpers": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz", - "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.1.tgz", + "integrity": "sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==", "funding": [ { "type": "github", @@ -110,13 +122,13 @@ ], "license": "MIT-0", "engines": { - "node": ">=18" + "node": ">=20.19.0" } }, "node_modules/@csstools/css-calc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz", - "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-3.1.1.tgz", + "integrity": "sha512-HJ26Z/vmsZQqs/o3a6bgKslXGFAungXGbinULZO3eMsOyNJHeBBZfup5FiZInOghgoM4Hwnmw+OgbJCNg1wwUQ==", "funding": [ { "type": "github", @@ -129,17 +141,17 @@ ], "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" } }, "node_modules/@csstools/css-color-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz", - "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.1.tgz", + "integrity": "sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==", "funding": [ { "type": "github", @@ -152,21 +164,21 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^5.1.0", - "@csstools/css-calc": "^2.1.4" + "@csstools/color-helpers": "^6.0.1", + "@csstools/css-calc": "^3.0.0" }, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.5", - "@csstools/css-tokenizer": "^3.0.4" + "@csstools/css-parser-algorithms": "^4.0.0", + "@csstools/css-tokenizer": "^4.0.0" } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz", - "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz", + "integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==", "funding": [ { "type": "github", @@ -180,16 +192,16 @@ "license": "MIT", "peer": true, "engines": { - "node": ">=18" + "node": ">=20.19.0" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.4" + "@csstools/css-tokenizer": "^4.0.0" } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.26", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.26.tgz", - "integrity": "sha512-6boXK0KkzT5u5xOgF6TKB+CLq9SOpEGmkZw0g5n9/7yg85wab3UzSxB8TxhLJ31L4SGJ6BCFRw/iftTha1CJXA==", + "version": "1.0.27", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.27.tgz", + "integrity": "sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==", "funding": [ { "type": "github", @@ -203,9 +215,9 @@ "license": "MIT-0" }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz", - "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz", + "integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==", "funding": [ { "type": "github", @@ -219,7 +231,7 @@ "license": "MIT", "peer": true, "engines": { - "node": ">=18" + "node": ">=20.19.0" } }, "node_modules/@exodus/bytes": { @@ -356,9 +368,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -655,15 +667,15 @@ } }, "node_modules/cssstyle": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-5.3.7.tgz", - "integrity": "sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-6.0.1.tgz", + "integrity": "sha512-IoJs7La+oFp/AB033wBStxNOJt4+9hHMxsXUPANcoXL2b3W4DZKghlJ2cI/eyeRZIQ9ysvYEorVhjrcYctWbog==", "license": "MIT", "dependencies": { - "@asamuzakjp/css-color": "^4.1.1", - "@csstools/css-syntax-patches-for-csstree": "^1.0.21", + "@asamuzakjp/css-color": "^4.1.2", + "@csstools/css-syntax-patches-for-csstree": "^1.0.26", "css-tree": "^3.1.0", - "lru-cache": "^11.2.4" + "lru-cache": "^11.2.5" }, "engines": { "node": ">=20" @@ -736,9 +748,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -1325,15 +1337,16 @@ "license": "MIT" }, "node_modules/jsdom": { - "version": "28.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.0.0.tgz", - "integrity": "sha512-KDYJgZ6T2TKdU8yBfYueq5EPG/EylMsBvCaenWMJb2OXmjgczzwveRCoJ+Hgj1lXPDyasvrgneSn4GBuR1hYyA==", + "version": "28.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.1.0.tgz", + "integrity": "sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==", "license": "MIT", "dependencies": { "@acemir/cssom": "^0.9.31", - "@asamuzakjp/dom-selector": "^6.7.6", + "@asamuzakjp/dom-selector": "^6.8.1", + "@bramus/specificity": "^2.4.2", "@exodus/bytes": "^1.11.0", - "cssstyle": "^5.3.7", + "cssstyle": "^6.0.1", "data-urls": "^7.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^6.0.0", @@ -1344,7 +1357,7 @@ "saxes": "^6.0.0", "symbol-tree": "^3.2.4", "tough-cookie": "^6.0.0", - "undici": "^7.20.0", + "undici": "^7.21.0", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^8.0.1", "whatwg-mimetype": "^5.0.0", @@ -1376,9 +1389,9 @@ } }, "node_modules/lru-cache": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", - "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -2142,9 +2155,9 @@ } }, "node_modules/undici": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.20.0.tgz", - "integrity": "sha512-MJZrkjyd7DeC+uPZh+5/YaMDxFiiEEaDgbUSVMXayofAkDWF1088CDo+2RPg7B1BuS1qf1vgNE7xqwPxE0DuSQ==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", + "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", "license": "MIT", "engines": { "node": ">=20.18.1" diff --git a/screens/evaluations/package.json b/screens/evaluations/package.json index 32fbe838..688c7c0e 100644 --- a/screens/evaluations/package.json +++ b/screens/evaluations/package.json @@ -12,16 +12,16 @@ "dependencies": { "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "express-rate-limit": "^8.2.1", - "jsdom": "^28.0.0", + "jsdom": "^28.1.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", "@types/jsdom": "^27.0.0", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/images/package-lock.json b/screens/images/package-lock.json index 8c18d1f7..11b33437 100644 --- a/screens/images/package-lock.json +++ b/screens/images/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "body-parser": "^2.2.2", "dc-logger": "file:../../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", "express-rate-limit": "^8.2.1", @@ -20,7 +20,7 @@ "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,12 +30,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -159,9 +159,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -484,9 +484,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/screens/images/package.json b/screens/images/package.json index 7121f84d..36a9afdf 100644 --- a/screens/images/package.json +++ b/screens/images/package.json @@ -12,7 +12,7 @@ "dependencies": { "body-parser": "^2.2.2", "dc-logger": "file:../../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", "express-rate-limit": "^8.2.1", @@ -21,7 +21,7 @@ "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/screenCast/package-lock.json b/screens/screenCast/package-lock.json index c32b088b..7f3afb9d 100644 --- a/screens/screenCast/package-lock.json +++ b/screens/screenCast/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -25,12 +25,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -72,9 +72,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" diff --git a/screens/screenCast/package.json b/screens/screenCast/package.json index 6b1fa8af..1785dc2c 100644 --- a/screens/screenCast/package.json +++ b/screens/screenCast/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } } diff --git a/screens/screenManager/package-lock.json b/screens/screenManager/package-lock.json index 2b7ed6b5..ec57b85f 100644 --- a/screens/screenManager/package-lock.json +++ b/screens/screenManager/package-lock.json @@ -15,14 +15,14 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -32,15 +32,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -49,12 +49,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -206,9 +206,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -546,9 +546,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/screens/screenManager/package.json b/screens/screenManager/package.json index 1a8422e6..284537ee 100644 --- a/screens/screenManager/package.json +++ b/screens/screenManager/package.json @@ -16,14 +16,14 @@ "dc-logger": "file:../../logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "socket.io": "^4.8.3" }, "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/serverState/package-lock.json b/serverState/package-lock.json index 47eeac65..654fe9b7 100644 --- a/serverState/package-lock.json +++ b/serverState/package-lock.json @@ -14,7 +14,7 @@ "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", "dc-screens-types": "file:../screens/types", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "semver": "^7.7.4", "socket.io": "^4.8.3" @@ -22,7 +22,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } @@ -32,15 +32,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -48,14 +48,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -64,12 +64,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -171,9 +171,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "license": "MIT", "dependencies": { "undici-types": "~7.16.0" @@ -420,9 +420,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -951,9 +951,9 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" diff --git a/serverState/package.json b/serverState/package.json index 79c519bf..b3b38364 100644 --- a/serverState/package.json +++ b/serverState/package.json @@ -15,7 +15,7 @@ "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", "dc-screens-types": "file:../screens/types", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "express": "^5.2.1", "semver": "^7.7.4", "socket.io": "^4.8.3" @@ -23,7 +23,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } diff --git a/streams/package-lock.json b/streams/package-lock.json index 9628c067..d9069713 100644 --- a/streams/package-lock.json +++ b/streams/package-lock.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "typescript": "~5.9.3" } }, @@ -23,12 +23,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -43,9 +43,9 @@ } }, "node_modules/@types/node": { - "version": "25.2.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.2.tgz", - "integrity": "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -93,7 +93,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/streams/package.json b/streams/package.json index 203c3cfb..31093d51 100644 --- a/streams/package.json +++ b/streams/package.json @@ -15,7 +15,7 @@ ], "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.2", + "@types/node": "^25.2.3", "typescript": "~5.9.3" }, "dependencies": { diff --git a/syncTime/package-lock.json b/syncTime/package-lock.json index 5d118390..ee74f5a6 100644 --- a/syncTime/package-lock.json +++ b/syncTime/package-lock.json @@ -12,11 +12,11 @@ "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -25,15 +25,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.3.0", - "@prisma/client": "^7.3.0", - "dotenv": "^17.2.4", + "@prisma/adapter-pg": "^7.4.0", + "@prisma/client": "^7.4.0", + "dotenv": "^17.3.1", "pg": "^8.18.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "@types/pg": "^8.16.0", - "prisma": "^7.3.0", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -41,14 +41,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.3.0", - "@prisma/client": "^7.3.0", + "@prisma/adapter-mariadb": "^7.4.0", + "@prisma/client": "^7.4.0", "dc-db-local": "file:../local", - "dotenv": "^17.2.4" + "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.1", - "prisma": "^7.3.0", + "@types/node": "^25.2.3", + "prisma": "^7.4.0", "typescript": "^5.9.3" } }, @@ -57,12 +57,12 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dotenv": "^17.2.4", - "pino": "^10.3.0", + "dotenv": "^17.3.1", + "pino": "^10.3.1", "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" } }, @@ -73,9 +73,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "dependencies": { @@ -112,9 +112,9 @@ } }, "node_modules/dotenv": { - "version": "17.2.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.4.tgz", - "integrity": "sha512-mudtfb4zRB4bVvdj0xRo+e6duH1csJRM8IukBqfTRvHotn9+LBXB8ynAidP9zHqoRC/fsllXgk4kCKlR21fIhw==", + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", "license": "BSD-2-Clause", "engines": { "node": ">=12" diff --git a/syncTime/package.json b/syncTime/package.json index e2bc103e..6205e112 100644 --- a/syncTime/package.json +++ b/syncTime/package.json @@ -11,14 +11,14 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "typescript": "^5.9.3" }, "dependencies": { "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", "dc-logger": "file:../logger", - "dotenv": "^17.2.4", + "dotenv": "^17.3.1", "socket.io-client": "^4.8.3" } } diff --git a/utils/recorder/package-lock.json b/utils/recorder/package-lock.json index 376440f2..b5eee7c9 100644 --- a/utils/recorder/package-lock.json +++ b/utils/recorder/package-lock.json @@ -12,7 +12,7 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "nodemon": "^3.1.11", "ts-node": "^10.9.2", "typescript": "^5.9.3" @@ -88,9 +88,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.1.tgz", - "integrity": "sha512-CPrnr8voK8vC6eEtyRzvMpgp3VyVRhgclonE7qYi6P9sXwYb59ucfrnmFBTaP0yUi8Gk4yZg/LlTJULGxvTNsg==", + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", + "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", "dev": true, "license": "MIT", "peer": true, diff --git a/utils/recorder/package.json b/utils/recorder/package.json index d4225231..ddb03152 100644 --- a/utils/recorder/package.json +++ b/utils/recorder/package.json @@ -15,7 +15,7 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.2.1", + "@types/node": "^25.2.3", "nodemon": "^3.1.11", "ts-node": "^10.9.2", "typescript": "^5.9.3" From 7219f366f78a95ab6a21e6239e0cdaf277f389f0 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Mon, 16 Feb 2026 21:29:56 +0100 Subject: [PATCH 07/31] fix: Typo in multicast address --- ranges/multicast/proxy/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ranges/multicast/proxy/src/index.ts b/ranges/multicast/proxy/src/index.ts index 7ed5548e..d7ab3561 100644 --- a/ranges/multicast/proxy/src/index.ts +++ b/ranges/multicast/proxy/src/index.ts @@ -27,7 +27,7 @@ async function main() { client.on("listening", function () { client.setMulticastTTL(128); try { - client.addMembership("2224.0.0.1"); + client.addMembership("224.0.0.1"); } catch (e) { } const address = client.address(); From 6aaa7122f33996054a26a9056a7bc7766eb701c0 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Mon, 16 Feb 2026 22:29:08 +0100 Subject: [PATCH 08/31] fix: ranges-log ssh no longer crashing on file change --- ranges/log/src/streams/logTail.ts | 2 +- ranges/log/src/streams/range-logs.sh | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ranges/log/src/streams/logTail.ts b/ranges/log/src/streams/logTail.ts index 5851abb9..d2b8028a 100644 --- a/ranges/log/src/streams/logTail.ts +++ b/ranges/log/src/streams/logTail.ts @@ -41,7 +41,7 @@ export class LogTailStream extends TypedDuplex { } })).strValue; - this.sshThread = spawn("sshpass", ["-p", process.env.SM_SSH_PASS as string, "ssh", "-o", "StrictHostKeyChecking=no", `${process.env.SM_SSH_USER}@${serverIp}`, script]); + this.sshThread = spawn("sshpass", ["-p", process.env.SM_SSH_PASS as string, "ssh", "-T", "-o", "StrictHostKeyChecking=no", `${process.env.SM_SSH_USER}@${serverIp}`, script]); this.sshThread.on("exit", (code) => { if (this.serverState) { logger.warn(`SSH exit: ${code}`); diff --git a/ranges/log/src/streams/range-logs.sh b/ranges/log/src/streams/range-logs.sh index f0164e7b..81a01282 100644 --- a/ranges/log/src/streams/range-logs.sh +++ b/ranges/log/src/streams/range-logs.sh @@ -1,6 +1,7 @@ #!/bin/bash set -euo pipefail +set +m # This script is used to monitor the log files of the Meyton Shootmaster software. # It will print the new lines of the log files to the console. @@ -17,7 +18,8 @@ cleanup() { # If a tail process is running, kill it if [ -n "$tail_pid" ]; then kill "$tail_pid" 2>/dev/null - wait "$tail_pid" 2>/dev/null + wait "$tail_pid" 2>/dev/null || true + tail_pid= fi exit 0 } @@ -34,7 +36,8 @@ while true; do # If a tail process is running, kill it if [ -n "$tail_pid" ]; then kill "$tail_pid" 2>/dev/null - wait "$tail_pid" 2>/dev/null + wait "$tail_pid" 2>/dev/null || true + tail_pid= fi # Update the tail count and start a new tail process From 2696dd18be8da8c84915a5f8e26ff7cbc50a3ecd Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Wed, 4 Mar 2026 18:36:51 +0100 Subject: [PATCH 09/31] feat: Initial refactor of the multicast interface --- ranges/multicast/Dockerfile | 7 + ranges/multicast/README.md | 212 ++++++++++++++++++ ranges/multicast/docker-compose.yaml | 1 + ranges/multicast/package-lock.json | 33 +++ ranges/multicast/package.json | 3 + ranges/multicast/proxy/src/index.ts | 8 +- ranges/multicast/src/cache/disciplines.ts | 79 +++++++ .../src/{updater.ts => cache/index.ts} | 14 +- ranges/multicast/src/cache/matcher.ts | 11 + ranges/multicast/src/cache/shooters.ts | 44 ++++ ranges/multicast/src/cache/startlists.ts | 33 +++ ranges/multicast/src/discipline/index.ts | 41 ---- .../src/discipline/overrides/index.ts | 54 ----- ranges/multicast/src/index.ts | 79 ++----- ranges/multicast/src/rangeId/index.ts | 47 ---- ranges/multicast/src/shooter/index.ts | 41 ---- ranges/multicast/src/startList/index.ts | 36 --- ranges/multicast/src/streams/candidates.ts | 53 +++++ .../src/streams/longestMatchReducer.ts | 36 +++ ranges/multicast/src/streams/overlapFilter.ts | 39 ++++ .../src/streams/rangeDataConverter.ts | 44 ++++ ranges/multicast/src/streams/rangeId.ts | 90 ++++++++ ranges/multicast/src/types.ts | 39 ++++ 23 files changed, 755 insertions(+), 289 deletions(-) create mode 100644 ranges/multicast/README.md create mode 100644 ranges/multicast/src/cache/disciplines.ts rename ranges/multicast/src/{updater.ts => cache/index.ts} (61%) create mode 100644 ranges/multicast/src/cache/matcher.ts create mode 100644 ranges/multicast/src/cache/shooters.ts create mode 100644 ranges/multicast/src/cache/startlists.ts delete mode 100644 ranges/multicast/src/discipline/index.ts delete mode 100644 ranges/multicast/src/discipline/overrides/index.ts delete mode 100644 ranges/multicast/src/rangeId/index.ts delete mode 100644 ranges/multicast/src/shooter/index.ts delete mode 100644 ranges/multicast/src/startList/index.ts create mode 100644 ranges/multicast/src/streams/candidates.ts create mode 100644 ranges/multicast/src/streams/longestMatchReducer.ts create mode 100644 ranges/multicast/src/streams/overlapFilter.ts create mode 100644 ranges/multicast/src/streams/rangeDataConverter.ts create mode 100644 ranges/multicast/src/streams/rangeId.ts create mode 100644 ranges/multicast/src/types.ts diff --git a/ranges/multicast/Dockerfile b/ranges/multicast/Dockerfile index e1e7e0fe..a33cc49e 100644 --- a/ranges/multicast/Dockerfile +++ b/ranges/multicast/Dockerfile @@ -27,11 +27,18 @@ COPY --from=range-types . . RUN npm ci --loglevel=info && \ npm run build; +FROM deps-logger AS deps-streams +WORKDIR /app/streams +COPY --from=streams . . +RUN npm ci --loglevel=info && \ + npm run build; + FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/logger /app/logger COPY --from=deps-local-db /app/database/local /app/database/local +COPY --from=deps-streams /app/streams /app/streams COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types FROM local-deps AS deps diff --git a/ranges/multicast/README.md b/ranges/multicast/README.md new file mode 100644 index 00000000..de0b7e1a --- /dev/null +++ b/ranges/multicast/README.md @@ -0,0 +1,212 @@ +# dc-ranges-multicast: Multicast interface + +This interface is used by the display controller to read the ShootMaster systems’ multicast protocol and derive the current state of a shooting range from it. It provides structured information about disciplines, shooters, and start lists. + +The extraction of range state information is based on heuristic, text-based analysis of the multicast packet content rather than a structured protocol implementation. This approach prioritizes long-term compatibility and robustness across ShootMaster versions. + +This approach results in a number of limitations and edge cases, which are described in the [Known Limitations](#known-limitations) section below. In practice, these limitations do not affect typical real-world installations, but they should be considered when integrating or extending this interface. + +To support this, the **dc-ranges-multicast-proxy** is used. This component performs a basic pre-filtering of multicast packets and forwards the relevant traffic into the display controller’s internal network. + +--- + +## Design Goals and Rationale + +Since the multicast protocol used by the ShootMaster system is undocumented and may change between system versions, fully reverse engineering it would be complex, fragile, and difficult to maintain. +In addition, the display controller can obtain most additional information through other interfaces provided by the ShootMaster server. + +The multicast interface is designed to be lightweight and focused on extracting necessary information until the shooter takes the first shot and scoring data becomes available. After that point, the display controller can rely on more structured and authoritative interfaces to obtain detailed information about the range state. + +Therefore, the multicast interface is not intended to provide a complete or fully verified representation of the range state. Instead, it serves as an interface for detecting if a range is active, and if so, which discipline, start list, and shooter are currently present at the range. This information is sufficient for the display controller to display basic information about the range, which gets enriched with more detailed information from other interfaces once the shooter starts shooting. + +This allows for a more robust and maintainable implementation that is less likely to break due to protocol changes. +For this reason, the multicast interface is designed with the following goals: + +- Avoid full protocol reverse engineering. +- Extract only the required information. + Data that is available through other interfaces should not be processed here. +- Remain robust against protocol changes. + The interface should support a wide range of ShootMaster versions and tolerate partially corrupt or unexpected data. +- Avoid false positives. + The interface should not report incorrect information about the range state, even if this means that some information cannot be extracted in certain edge cases. + +## ShootMaster Multicast Protocol + +For its internal communication, the ShootMaster system uses a proprietary multicast protocol. The protocol appears to use a custom binary serialization format and is not human-readable. In addition, there is no official documentation available, which makes custom implementations complicated. + +The protocol is used, among other purposes, by the ShootMaster server to send control commands to each range. These commands include tasks such as assigning shooters, changing disciplines, etc. Most server-to-range communication is performed using this protocol. Multicast is used for broadcast messages affecting multiple ranges, while unicast is used when a command targets a specific range. + +As part of this protocol, each shooting range periodically broadcasts its current state via the multicast address **224.0.0.1** on port **49497**. This broadcast is used by other systems, such as the official ShootMaster display controller, to visualize the range state. Because the ranges broadcast their state independently, the visualization can operate without a central ShootMaster server, which may not be present in smaller installations. + +Within the ShootMaster ecosystem, a network can contain up to **416 ranges**. Each range is identified by a unique “range number” in the range from **1 to 416**. This identifier is used consistently across the entire ShootMaster system, including in the range broadcast. + +## Packet Processing + +### Message Model + +Without a formal protocol definition, the broadcast sent by each range can be treated as an opaque blob, which contains a mixture of binary data and human-readable strings. The exact structure of the packet is unknown and may vary between system versions. However, it is observed that the packet contains a number of textual fields encoded in Windows-1252. These fields include: + +- The discipline name +- Start list name +- Shooter names +- Additional, discipline-specific keywords such as *Vorbereitung/Probe* or *Wertung* +- Shooter-specific information such as club names + +The exact layout of these fields within the packet is not fixed and may change between system versions. Therefore, the interface should not rely on fixed offsets or a specific packet structure to extract this information. + +--- + +#### Observed naming properties + +Based on observations across supported ShootMaster versions and real-world installations, the following characteristics are typically true for textual values contained in multicast packets. These characteristics form the basis for some of the heuristics used during range state extraction. + +The following observations apply to discipline names, shooter names, and start list names: + +1. Discipline names are rather short ("LG 40", "KK 50m", etc.) +2. Start list names are often long. +3. Shooter names are stored in the packet as "Lastname, Firstname" +4. None of the values are guaranteed to be unique, as multiple disciplines, start lists, or shooters with the same name may exist. +5. The ShootMaster system does not enforce any specific formatting for these values, neither in terms of content nor in length. + +These characteristics are not formally guaranteed by the protocol but are consistently observed across supported ShootMaster versions. The heuristic extraction logic described below relies on these observations. + +Since the packet only contains textual values and does not include unique identifiers for these entities, it is not possible to reliably distinguish between entities that share the same name based on packet content alone. Therefore, special care has to be taken in the processing logic to handle such cases, as described in the range state extraction section below. + +### Processing Pipeline + +The **dc-ranges-multicast-proxy** receives the packets on the specified multicast address. It re-encodes the packet from Windows-1252 to a UTF-8 string and sends the following to the main interface container: + +- The packet content as a UTF-8 string representation +- The MAC address of the sender +- The current IP address of the range + +#### Range Identification + +The display controller maintains a mapping between a range’s MAC address and its range number. The range number is determined using this mapping as follows: + +1. The system queries the mapping for a range entry matching the sender’s MAC address. +2. If a matching entry is found, the associated RangeId is used. +3. If no entry exists for the MAC address, the system attempts a fallback strategy: + - The last octet of the sender’s IP address is extracted (for example, `20` from `192.168.10.20`). + - This value is interpreted as a candidate RangeId. + - If this RangeId is not already assigned in the database, it is accepted. +4. When a new RangeId is determined through the fallback strategy, a new mapping between the MAC address and the RangeId is created and stored in the database. + +This fallback strategy follows a ip address convention defined by the manufacturer of the system, where the last octet of the range’s IP address corresponds to its range number for ranges 1 - 159. (see [Standard IP-Adressen von Geräten in +einem Meyton Netzwerk](https://software.meyton.info/wp-content/uploads/Upload/Manuals/DE/Inbetriebnahme/Standard_IP-Adressen_von_Geraeten_in_einem_Meyton_Netzwerk.pdf)) As most installations are smaller than 160 ranges, this convention is widely used in practice. However, it is not guaranteed to be followed in all installations, and therefore the fallback strategy only accepts the candidate RangeId if it is not already assigned to another range. + +If the IP-based candidate does not reflect the actual RangeId, the mapping can be corrected manually. Once established, MAC-based identification remains authoritative and independent of subsequent IP address changes. + +--- + +#### Range State Extraction + +The interface maintains a local cache of all disciplines, shooters, and start lists known by the ShootMaster server. It is refreshed periodically to reflect changes in the underlying data. + +After receiving a packet and determining the corresponding RangeId, the interface attempts to extract the current state of the range from the packet content. This is done in the following steps: + +The packet content is scanned for occurrences of all known discipline names, shooter names, and start list names. Each occurrence is recorded as a candidate for the current range state, including the position of the match within the packet. This results in a set of candidates for each category (discipline, shooter, start list) that may be present in the packet. + +If multiple shooters share the same name, they are grouped together as a single candidate, no longer being identified by a unique id, but instead being identified by their shared name. This is because the packet does not contain any unique identifiers for these entities, and it cannot be determined which of the shooters with the same name is actually present in the range. + +A first filtering step is applied to the candidate set. It removes all candidates that are completely contained within another candidate of the same type. This is because the string values are surrounded by binary data that, in most cases, does not represent valid strings. Therefore, it can be assumed that the longest match is likely the correct one, as it matches the entire string value, while shorter matches may be partial matches of the same value. + +For example, if the packet contains the string "LG 40", it may match both the discipline "LG 40" and the discipline "LG". In this case, the candidate for "LG" would be removed, as it is fully contained within the longer match "LG 40". + +In the later extraction steps, further logical filtering is applied to the candidate set based on the identified entities. A candidate is only accepted as the identified entity if it is the only remaining candidate for that entity type after all filtering steps. This means that if multiple candidates remain for a category, no identification is made for that category, as it cannot be determined which candidate is correct. + +After each identification, all candidates that overlap with the identified candidate are removed, irrespective of their type. This is because the identified candidate is assumed to be correct, and any overlapping candidates are likely to be false positives. + +Based on empirical observation, each relevant textual value (such as a discipline name, start list name, or shooter name) appears only once within a packet. The value is surrounded by binary data that does not represent additional valid textual content. + +Based on this observation, overlapping candidates are considered mutually exclusive. If a candidate is accepted as correct, any other candidate whose match overlaps with the accepted candidate is assumed to be a false positive and is removed from further consideration. + +##### Start List extraction + +After extracting the candidates in the previous step, the system checks the number of remaining candidates for the start list. If there is more than one candidate, identification is skipped and will be attempted again after attempting to identify the discipline and shooter. + +If there is exactly one candidate, it is accepted as the identified start list. The identified candidate gets removed from the candidate set for the next steps, as well as any candidate that fully or partially overlaps with it. This is because if a start list is identified, its characters cannot be part of any other candidate. + +If there is no candidate, which is a valid state of the range, the start list is reported as empty. + +##### Discipline Extraction + +After the start list extraction, the system checks the number of remaining candidates for the discipline. + +###### Contextual Filtering + +First, discipline candidates that are unlikely to be correct are filtered based on the identified start list. + +This filtering only needs to be applied on price shooting start lists, as they are the only start lists to define their own, dedicated disciplines that are not used in other contexts. + +- If the identified startlist (or all remaining start list candidates) is of type price shooting: + - All discipline candidates belonging to specializations of other price shootings are removed + - Base disciplines are retained, as they may still be used in price shooting contexts. +- If the identified start list (or all remaining start list candidates) is not of type price shooting: + - All discipline candidates that belong to any price shooting specialization are removed + +If no start list could be identified, this filtering step is skipped, as no contextual information is available to determine which disciplines are unlikely. + +###### Unique Resolution + +If, after contextual filtering, exactly one discipline candidate remains, it is accepted as the identified discipline. + +###### Candidate Combination + +If multiple discipline candidates remain, the system evaluates wether they can be safely combined. + +This combination is only considered, if none of the remaining discipline candidates overlap with candidates of other entity types. If such overlaps exist, no combination logic is applied, as removing candidates could discard important contextual information. + +- If all specialization candidates point to the same specialization and this specialization belongs to the start list (or any of the start list candidates, as identified above), the specialization is selected as the final discipline. This reflects the domain observation, that, while technically possible, it is unlikely for a non-specialized discipline to be used in combination with a price shooting +- Otherwise, the base discipline is selected as the identified discipline. This fallback is considered safe, as specializations only affect presentation attributes such as name, identifier or color. Falling back to the base discipline therefore does not result in a loss of critical information + +###### Empty States + +If there is no discipline candidate, which is a possible - but invalid - state of the range, the discipline is reported as empty. This can happen, for example, if the range uses a discipline that is not known to the ShootMaster server, which is possible as the range maintains its own discipline list that can be different from the one on the server. + +##### Shooter Extraction + +After the discipline extraction, the system checks the number of remaining candidates for the shooter. For shooter candidates, no special conditions apply. + +If there is exactly one remaining candidate, it is accepted as the identified shooter. + +If there is no candidate, the range gets classified as empty, which is the normal state of a range after startup or when no shooter is assigned to the range. + +Because candidate elimination is applied after each identification, the extraction of one entity can lead to the successful identification of another entity that was previously ambiguous. Because of this, the extraction process is executed twice, allowing the system to retry extraction after further candidates have been removed in the previous iteration. During this retry, the system does not override any previous identifications. It does not need to be executed more than twice, as after two iterations, no further candidates can be removed based on the identified entities, and therefore no new identification can be made. + +## Known Limitations + +Due to the heuristic and text-based nature of the extraction algorithm, the interface has several inherent limitations. + +### Name Collisions + +The extraction process relies entirely on textual matching and does not use unique identifiers. As a result, name collisions cannot always be resolved reliably. + +- **Within the same entity type** + Multiple disciplines or start lists sharing the same name cannot be uniquely identified and are excluded from matching. + Multiple shooters sharing the same name are grouped and identified only by name. + +- **Across entity types** + If a discipline, start list, or shooter share the same name, the algorithm may not be able to determine the correct entity type. + +### Reserved or Common Keywords + +The packet contains fixed textual keywords (e.g., round names such as *Wertung* or *Probe*). If a discipline or start list uses such a keyword as its name, false positives may occur. + +### Out-of-Sync Discipline Lists + +The range maintains its own discipline list, which must be synchronized with the ShootMaster server. If the range uses a discipline that is not present in the server-side cache, it cannot be detected by this interface. + +### Assumption of Single Occurrence + +The algorithm assumes that each relevant textual value appears only once per packet. If future protocol versions introduce multiple occurrences of the same value, overlapping-candidate elimination may produce incorrect results. + +### Heuristic Matching + +Containment-based filtering and longest-match selection are heuristic strategies. In rare edge cases involving closely related names, this may result in incorrect identification. + +### Protocol and Encoding Changes + +The implementation assumes that relevant data is embedded as human-readable Windows-1252 encoded strings within the packet. Significant protocol or encoding changes may prevent extraction entirely. + +Despite these limitations, the approach has proven stable across multiple ShootMaster releases and real-world installations since 2022, supporting all ShootMaster releases after 4.9.7a. diff --git a/ranges/multicast/docker-compose.yaml b/ranges/multicast/docker-compose.yaml index ac2f5b12..d294c4a3 100644 --- a/ranges/multicast/docker-compose.yaml +++ b/ranges/multicast/docker-compose.yaml @@ -20,6 +20,7 @@ services: - local-db=../../database/local - range-types=../types - logger=../../logger + - streams=../../streams networks: - displaycontroller depends_on: diff --git a/ranges/multicast/package-lock.json b/ranges/multicast/package-lock.json index 21fb716b..5cdbc348 100644 --- a/ranges/multicast/package-lock.json +++ b/ranges/multicast/package-lock.json @@ -9,10 +9,13 @@ "version": "1.0.0", "license": "ISC", "dependencies": { + "@types/ahocorasick": "^1.0.0", + "ahocorasick": "^1.0.2", "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", + "dc-streams": "file:../../streams", "dotenv": "^17.3.1" }, "devDependencies": { @@ -53,6 +56,20 @@ "typescript": "^5.9.3" } }, + "../../streams": { + "name": "dc-streams", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + }, + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.2.3", + "typescript": "~5.9.3" + } + }, "../types": { "name": "dc-ranges-types", "version": "1.0.0", @@ -103,6 +120,12 @@ "node": ">= 8" } }, + "node_modules/@types/ahocorasick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/ahocorasick/-/ahocorasick-1.0.0.tgz", + "integrity": "sha512-FNLE6B+9Px4LfRX2bZHSSTFa8Du8RznF5fNX915Ovf+K+g0SljmcmO5u7SH+c3LmeCZwP03NgMb7p82c0+Vbrg==", + "license": "MIT" + }, "node_modules/@types/amqplib": { "version": "0.10.8", "resolved": "https://registry.npmjs.org/@types/amqplib/-/amqplib-0.10.8.tgz", @@ -123,6 +146,12 @@ "undici-types": "~7.16.0" } }, + "node_modules/ahocorasick": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ahocorasick/-/ahocorasick-1.0.2.tgz", + "integrity": "sha512-hCOfMzbFx5IDutmWLAt6MZwOUjIfSM9G9FyVxytmE4Rs/5YDPWQrD/+IR1w+FweD9H2oOZEnv36TmkjhNURBVA==", + "license": "MIT" + }, "node_modules/amqplib": { "version": "0.10.9", "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.9.tgz", @@ -239,6 +268,10 @@ "resolved": "../types", "link": true }, + "node_modules/dc-streams": { + "resolved": "../../streams", + "link": true + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index 4bc8c111..d3ed947f 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -16,10 +16,13 @@ "typescript": "^5.9.3" }, "dependencies": { + "@types/ahocorasick": "^1.0.0", + "ahocorasick": "^1.0.2", "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", "dc-logger": "file:../../logger", "dc-ranges-types": "file:../types", + "dc-streams": "file:../../streams", "dotenv": "^17.3.1" } } diff --git a/ranges/multicast/proxy/src/index.ts b/ranges/multicast/proxy/src/index.ts index d7ab3561..5fc3d5ad 100644 --- a/ranges/multicast/proxy/src/index.ts +++ b/ranges/multicast/proxy/src/index.ts @@ -17,10 +17,8 @@ const MESSAGE_MIN_LENGTH = parseInt(process.env.MULTICAST_MSG_MIN_LENGTH); async function main() { const connection = await amqp.connect("amqp://localhost"); const channel = await connection.createChannel(); - await channel.assertQueue("ranges.multicast.proxy", { + await channel.assertExchange("ranges.multicast.proxy", "fanout", { durable: false, - autoDelete: true, - messageTtl: 30000 }); const client = createSocket("udp4"); @@ -52,10 +50,10 @@ async function main() { const proxiedMessage: RangeProxyType = { ip: remote.address, mac: senderMac, - message: Buffer.from(messageStr).toString("base64") + message: messageStr, } logger.debug(`Received message from ${remote.address}`); - channel.sendToQueue("ranges.multicast.proxy", Buffer.from(JSON.stringify(proxiedMessage))); + channel.publish("ranges.multicast.proxy", "", Buffer.from(JSON.stringify(proxiedMessage))); }); client.on("error", function (error) { logger.error(error); diff --git a/ranges/multicast/src/cache/disciplines.ts b/ranges/multicast/src/cache/disciplines.ts new file mode 100644 index 00000000..f4b77e08 --- /dev/null +++ b/ranges/multicast/src/cache/disciplines.ts @@ -0,0 +1,79 @@ +import { isDiscipline, isOverrideDiscipline } from "dc-ranges-types"; +import { CandidateBaseDiscipline, CandidateDiscipline, CandidateOverrideDiscipline, Matcher } from "../types"; +import { LocalClient } from "dc-db-local"; +import { createMatcher } from "./matcher"; +import { logger } from "dc-logger"; + +export let potentialDisciplines: Matcher = createMatcher(new Map()); + +export async function updatePotentialDisciplines(localClient: LocalClient) { + const disciplines = new Map(); + + const disciplineRoundIdMap = new Map(); + const disciplineData = await localClient.cache.findMany({ + where: { + type: "discipline" + } + }); + for (const disciplineDb of disciplineData) { + if (!disciplineDb.value) { + continue; + } + const discipline = disciplineDb.value; + if (!isDiscipline(discipline)) { + continue; + } + const roundId = discipline.rounds.findIndex(round => round !== null); + if (roundId < 0) { + continue; + } + + disciplineRoundIdMap.set(discipline.id, roundId); + + let entry = disciplines.get(discipline.name); + if (!entry) { + entry = []; + disciplines.set(discipline.name, entry); + } + + const candidateDiscipline: CandidateBaseDiscipline = { + disciplineId: discipline.id, + roundId: roundId + } + entry.push(candidateDiscipline); + } + + const overrideDisciplineData = await localClient.cache.findMany({ + where: { + type: "overrideDiscipline" + } + }); + for (const overrideDisciplineDb of overrideDisciplineData) { + if (!overrideDisciplineDb.value) { + continue; + } + const overrideDiscipline = overrideDisciplineDb.value; + if (!isOverrideDiscipline(overrideDiscipline)) { + continue; + } + const roundId = disciplineRoundIdMap.get(overrideDiscipline.disciplineId); + if (roundId === undefined) { + continue; + } + + let entry = disciplines.get(overrideDiscipline.name); + if (!entry) { + entry = []; + disciplines.set(overrideDiscipline.name, entry); + } + + const candidateDiscipline: CandidateOverrideDiscipline = { + disciplineId: overrideDiscipline.disciplineId, + roundId: roundId, + overrideId: overrideDiscipline.id, + startListId: overrideDiscipline.startListId + } + entry.push(candidateDiscipline); + } + potentialDisciplines = createMatcher(disciplines); +} diff --git a/ranges/multicast/src/updater.ts b/ranges/multicast/src/cache/index.ts similarity index 61% rename from ranges/multicast/src/updater.ts rename to ranges/multicast/src/cache/index.ts index c97357da..924a2ec0 100644 --- a/ranges/multicast/src/updater.ts +++ b/ranges/multicast/src/cache/index.ts @@ -1,10 +1,9 @@ -import { updateDisciplines } from "./discipline"; -import { updateStartList } from "./startList"; -import { updateShooters } from "./shooter"; import { createLocalClient } from "dc-db-local"; import { logger } from "dc-logger"; -import { updateOverrides } from "./discipline/overrides"; import dotenv from "dotenv"; +import { updatePotentialDisciplines } from "./disciplines"; +import { updatePotentialShooters } from "./shooters"; +import { updatePotentialStartLists } from "./startlists"; dotenv.config({ quiet: true }); const client = createLocalClient(); @@ -18,10 +17,9 @@ const refreshInterval = parseInt(process.env.CACHE_REFRESH_INTERVAL); async function update() { logger.info("Updating caches"); await Promise.all([ - updateDisciplines(client), - updateOverrides(client), - updateStartList(client), - updateShooters(client) + updatePotentialDisciplines(client), + updatePotentialShooters(client), + updatePotentialStartLists(client), ]); setTimeout(update, refreshInterval); } diff --git a/ranges/multicast/src/cache/matcher.ts b/ranges/multicast/src/cache/matcher.ts new file mode 100644 index 00000000..ecfcd105 --- /dev/null +++ b/ranges/multicast/src/cache/matcher.ts @@ -0,0 +1,11 @@ +import AhoCorasick from "ahocorasick"; +import { Matcher } from "../types"; + +export function createMatcher(candidates: ReadonlyMap): Matcher { + const needles = Array.from(candidates.keys()); + const matcher = new AhoCorasick(needles); + return { + matcher, + candidates + }; +} \ No newline at end of file diff --git a/ranges/multicast/src/cache/shooters.ts b/ranges/multicast/src/cache/shooters.ts new file mode 100644 index 00000000..38bdcfc2 --- /dev/null +++ b/ranges/multicast/src/cache/shooters.ts @@ -0,0 +1,44 @@ +import { InternalShooter, isShooter } from "dc-ranges-types"; +import { Matcher } from "../types"; +import { LocalClient } from "dc-db-local"; +import { createMatcher } from "./matcher"; + +export let potentialShooters: Matcher = createMatcher(new Map()); + +export async function updatePotentialShooters(localClient: LocalClient) { + const shooters: Map = new Map(); + + const shooterData = await localClient.cache.findMany({ + where: { + type: "shooter" + } + }); + for (const shooterDb of shooterData) { + if (!shooterDb.value) { + continue; + } + const shooter = shooterDb.value; + if (!isShooter(shooter) || !shooter.id) { + continue; + } + const name = `${shooter.lastName}, ${shooter.firstName}`; + const existing = shooters.get(name); + if (!existing) { + shooters.set(name, shooter.id); + continue; + } + if (typeof existing === "number") { + shooters.set(name, { + firstName: shooter.firstName, + lastName: shooter.lastName + }); + } + } + + const normalizedShooters = new Map(); + for (const [name, shooter] of shooters.entries()) { + normalizedShooters.set(name, [shooter]); + } + + potentialShooters = createMatcher(normalizedShooters); +} \ No newline at end of file diff --git a/ranges/multicast/src/cache/startlists.ts b/ranges/multicast/src/cache/startlists.ts new file mode 100644 index 00000000..56ff987f --- /dev/null +++ b/ranges/multicast/src/cache/startlists.ts @@ -0,0 +1,33 @@ +import { isStartList } from "dc-ranges-types"; +import { CandidateStartList, Matcher } from "../types"; +import { LocalClient } from "dc-db-local"; +import { createMatcher } from "./matcher"; + +export let potentialStartLists: Matcher = createMatcher(new Map()); + +export async function updatePotentialStartLists(localClient: LocalClient) { + const startLists: Map = new Map(); + + const startListData = await localClient.cache.findMany({ + where: { + type: "startList" + } + }); + for (const startListDb of startListData) { + if (!startListDb.value) { + continue; + } + const startList = startListDb.value; + if (!isStartList(startList)) { + continue; + } + let entry = startLists.get(startList.name); + if (!entry) { + entry = []; + startLists.set(startList.name, entry); + } + entry.push(startList.id); + } + + potentialStartLists = createMatcher(startLists); +} \ No newline at end of file diff --git a/ranges/multicast/src/discipline/index.ts b/ranges/multicast/src/discipline/index.ts deleted file mode 100644 index f8019de0..00000000 --- a/ranges/multicast/src/discipline/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { LocalClient } from "dc-db-local"; -import { isDiscipline, InternalDiscipline } from "dc-ranges-types"; -import { getOverrideDiscipline } from "./overrides"; -import { mergeMaps } from "dc-ranges-types"; - -const matchDiscipline = new Map(); - -export async function updateDisciplines(client: LocalClient) { - const disciplines = await client.cache.findMany({ - where: { - type: "discipline" - } - }); - const disciplineTempMap = new Map(); - for (const discipline of disciplines) { - if (!isDiscipline(discipline.value)) { - continue; - } - disciplineTempMap.set(`${discipline.value.name}\0`, { - disciplineId: Number(discipline.key), - roundId: discipline.value.rounds.findIndex(round => round !== null) - }); - } - mergeMaps(matchDiscipline, disciplineTempMap); -} - -export function getDiscipline(startListId: number | null, message: string): InternalDiscipline | null { - if (startListId !== null) { - const overrideDiscipline = getOverrideDiscipline(startListId, message); - if (overrideDiscipline) { - return overrideDiscipline; - } - } - const keys = Array.from(matchDiscipline.keys()).sort((a, b) => b.length - a.length);// sort by length descending - for (const name of keys) { - if (message.includes(name)) { - return structuredClone(matchDiscipline.get(name) ?? null); - } - } - return null; -} \ No newline at end of file diff --git a/ranges/multicast/src/discipline/overrides/index.ts b/ranges/multicast/src/discipline/overrides/index.ts deleted file mode 100644 index 2bab0990..00000000 --- a/ranges/multicast/src/discipline/overrides/index.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { LocalClient } from "dc-db-local"; -import { isDiscipline, InternalDiscipline, isOverrideDiscipline, mergeMaps } from "dc-ranges-types"; - -const overrideDisciplines = new Map>(); - -export async function updateOverrides(client: LocalClient) { - const overrideDisciplinesData = await client.cache.findMany({ - where: { - type: "overrideDiscipline" - } - }); - const overrideDisciplinesTempMap = new Map>(); - for (const overrideDisciplineDb of overrideDisciplinesData) { - if (!isOverrideDiscipline(overrideDisciplineDb.value)) { - continue; - } - const overrideDiscipline = overrideDisciplineDb.value; - const originalDiscipline = await client.cache.findUnique({ - where: { - type_key: { - type: "discipline", - key: overrideDiscipline.disciplineId - } - } - }); - if (!originalDiscipline || !isDiscipline(originalDiscipline.value)) { - continue; - } - const minRoundId = originalDiscipline.value.rounds.findIndex(round => round !== null); - const startListId = Number(overrideDiscipline.startListId); - if (!overrideDisciplinesTempMap.has(startListId)) { - overrideDisciplinesTempMap.set(startListId, new Map()); - } - overrideDisciplinesTempMap.get(startListId)!.set(overrideDiscipline.name, { - overrideId: Number(overrideDiscipline.id), - roundId: minRoundId - }); - } - mergeMaps(overrideDisciplines, overrideDisciplinesTempMap); -} - -export function getOverrideDiscipline(startListId: number, message: string): InternalDiscipline | null { - const disciplines = overrideDisciplines.get(startListId); - if (!disciplines) { - return null; - } - const keys = Array.from(disciplines.keys()).sort((a, b) => b.length - a.length);// sort by length descending - for (const name of keys) { - if (message.includes(name)) { - return structuredClone(disciplines.get(name) ?? null); - } - } - return null; -} \ No newline at end of file diff --git a/ranges/multicast/src/index.ts b/ranges/multicast/src/index.ts index bf346c51..f235ef43 100644 --- a/ranges/multicast/src/index.ts +++ b/ranges/multicast/src/index.ts @@ -1,64 +1,29 @@ -import "./updater"; +import amqp from 'amqplib'; +import { RabbitMqReceiver, RabbitMqWriter } from 'dc-streams'; import { isRangeProxy } from "../proxy/src/types"; -import amqp from "amqplib"; -import { getStartList } from "./startList"; -import { getDiscipline } from "./discipline"; -import { getShooters } from "./shooter"; -import { getRangeId } from "./rangeId"; -import { createLocalClient } from "dc-db-local"; -import { InternalRange } from "dc-ranges-types"; -import { logger } from "dc-logger"; - -const prismaClient = createLocalClient(); +import { RangeIdentifier } from './streams/rangeId'; +import { createLocalClient } from 'dc-db-local'; +import { CandidateExtractor } from './streams/candidates'; +import { LongestMatchReducer } from './streams/longestMatchReducer'; +import { RangeDataConverter } from './streams/rangeDataConverter'; +import { InternalRange } from 'dc-ranges-types'; +import "./cache"; async function main() { + const localClient = await createLocalClient(); const connection = await amqp.connect("amqp://rabbitmq"); - const channel = await connection.createChannel(); - await channel.assertQueue("ranges.multicast.proxy", { - durable: false, - autoDelete: true, - messageTtl: 30000 - }); - await channel.assertExchange("ranges.multicast", "fanout", { - durable: false, - }); - channel.consume("ranges.multicast.proxy", async (msg) => { - if (msg === null) { - return; - } - const message = JSON.parse(msg.content.toString()); - if (!isRangeProxy(message)) { - return; - } - const multicastMessage = Buffer.from(message.message, "base64").toString(); - const rangeData = await getRangeData(multicastMessage, message.mac, message.ip); - if (rangeData === null) { - logger.error("Failed to parse range data for " + message.ip); - return; - } - logger.info(`Parsed data for range ${rangeData.rangeId} (${message.ip})`); - channel.publish("ranges.multicast", "", Buffer.from(JSON.stringify(rangeData))); - channel.ack(msg); - }); -} -async function getRangeData(message: string, rangeMac: string, rangeIp: string): Promise { - const rangeId = await getRangeId(prismaClient, rangeMac, rangeIp); - if (rangeId === null) { - return null; - } - const startList = getStartList(message); - const discipline = getDiscipline(startList, message); - const shooter = getShooters(message); - return { - rangeId: rangeId, - startListId: startList, - shooter: shooter, - discipline: discipline, - hits: [], - source: "multicast", - ttl: 20000 - } + const receiver = new RabbitMqReceiver(connection, ["ranges.multicast.proxy"], isRangeProxy); + + const rangeIdentifier = new RangeIdentifier(localClient); + const candidateExtractor = new CandidateExtractor(); + + const longestMatchReducer = new LongestMatchReducer(); + + const rangeDataConverter = new RangeDataConverter(); + const sender = new RabbitMqWriter(connection, ["ranges.multicast"], (range) => range.rangeId.toString()); + + receiver.pipe(rangeIdentifier).pipe(candidateExtractor).pipe(longestMatchReducer).pipe(rangeDataConverter).pipe(sender); } -main(); +main() \ No newline at end of file diff --git a/ranges/multicast/src/rangeId/index.ts b/ranges/multicast/src/rangeId/index.ts deleted file mode 100644 index 32acc6a3..00000000 --- a/ranges/multicast/src/rangeId/index.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { LocalClient } from "dc-db-local"; - - -export async function getRangeId(prismaClient: LocalClient, rangeMac: string, rangeIp: string): Promise { - const range = await prismaClient.knownRanges.findUnique({ - where: { - macAddress: rangeMac, - } - }); - if (!range) { - const rangeIdStr = rangeIp.split(".")?.pop(); - if (!rangeIdStr) { - throw new Error(`Could not resolve range id for ip ${rangeIp}`); - } - let rangeId = parseInt(rangeIdStr); - if (isNaN(rangeId)) { - throw new Error(`Could not resolve range id for ip ${rangeIp}`); - } - const exists = await prismaClient.knownRanges.findUnique({ - where: { - rangeId: rangeId - } - }); - if (exists) { - return null; - } - await prismaClient.knownRanges.create({ - data: { - rangeId: rangeId, - macAddress: rangeMac, - lastIp: rangeIp - } - }); - return rangeId; - } - if (range.lastIp !== rangeIp) { - await prismaClient.knownRanges.update({ - where: { - macAddress: rangeMac, - }, - data: { - lastIp: rangeIp - } - }); - } - return range.rangeId; -} \ No newline at end of file diff --git a/ranges/multicast/src/shooter/index.ts b/ranges/multicast/src/shooter/index.ts deleted file mode 100644 index c6a7f534..00000000 --- a/ranges/multicast/src/shooter/index.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { LocalClient } from "dc-db-local"; -import { isShooter, InternalShooter, mergeMaps } from "dc-ranges-types" - -const matchShooter = new Map(); - -export async function updateShooters(client: LocalClient) { - const shooters = await client.cache.findMany({ - where: { - type: "shooter" - } - }); - const shooterTempMap = new Map(); - for (const shooter of shooters) { - if (!isShooter(shooter.value)) { - continue; - } - if (!shooter.value.id) { - continue; - } - if (shooterTempMap.has(`${shooter.value.lastName}, ${shooter.value.firstName}`)) { - shooterTempMap.set(`${shooter.value.lastName}, ${shooter.value.firstName}`, { - firstName: shooter.value.firstName, - lastName: shooter.value.lastName - }); - } else { - shooterTempMap.set(`${shooter.value.lastName}, ${shooter.value.firstName}`, shooter.value.id); - } - } - mergeMaps(matchShooter, shooterTempMap); -} - -export function getShooters(message: string): InternalShooter | null { - const names = Array.from(matchShooter.keys()).sort((a, b) => b.length - a.length); - for (const name of names) { - if (message.includes(name)) { - return structuredClone(matchShooter.get(name) ?? null); - } - } - return null; -} - diff --git a/ranges/multicast/src/startList/index.ts b/ranges/multicast/src/startList/index.ts deleted file mode 100644 index 70a5e3cb..00000000 --- a/ranges/multicast/src/startList/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { LocalClient } from "dc-db-local"; -import { isStartList, mergeMaps } from "dc-ranges-types"; - -const matchStartLists = new Map(); - -export async function updateStartList(client: LocalClient) { - const startList = await client.cache.findMany({ - where: { - type: "startList" - } - }); - const startListTempMap = new Map(); - for (const list of startList) { - if (!isStartList(list.value)) { - continue; - } - if (!list.value.name) { - continue; - } - startListTempMap.set(list.value.name, Number(list.key)); - } - mergeMaps(matchStartLists, startListTempMap); -} - -export function getStartList(message: string): number | null { - const names = Array.from(matchStartLists.keys()) - .sort((a, b) => b.length - a.length); // longest first - - for (const name of names) { - if (message.includes(name)) { - return structuredClone(matchStartLists.get(name) ?? null); - } - } - - return null; -} \ No newline at end of file diff --git a/ranges/multicast/src/streams/candidates.ts b/ranges/multicast/src/streams/candidates.ts new file mode 100644 index 00000000..c62db2d7 --- /dev/null +++ b/ranges/multicast/src/streams/candidates.ts @@ -0,0 +1,53 @@ +import { TypedTransform } from "dc-streams"; +import { IdentifiedRange } from "./rangeId"; +import { Candidate, Matcher, PacketCandidates } from "../types"; +import { TransformCallback } from "node:stream"; +import { potentialDisciplines } from "../cache/disciplines"; +import { potentialStartLists } from "../cache/startlists"; +import { potentialShooters } from "../cache/shooters"; +import { logger } from "dc-logger"; + +export class CandidateExtractor extends TypedTransform { + + private findCandidates(packet: string, matcher: Matcher): Candidate[] { + const matches = matcher.matcher.search(packet); + const candidates: Candidate[] = []; + for (const [position, needles] of matches) { + + for (const needle of needles) { + const data = matcher.candidates.get(needle); + + if (!data) { + continue; + } + + const end = position + needle.length; + candidates.push(...data.map(candidateData => ({ + start: position, + end, + data: candidateData, + match: needle + }))); + } + } + return candidates; + } + + _transform(chunk: IdentifiedRange, encoding: BufferEncoding, callback: TransformCallback): void { + logger.info(`Received packet from range ${chunk.id}`); + + const disciplineCandidates = this.findCandidates(chunk.packet, potentialDisciplines); + const startListCandidates = this.findCandidates(chunk.packet, potentialStartLists); + const shooterCandidates = this.findCandidates(chunk.packet, potentialShooters); + + const candidates: PacketCandidates = { + id: chunk.id, + disciplineCandidates, + startListCandidates, + shooterCandidates + }; + + this.push(candidates); + callback(); + } +} \ No newline at end of file diff --git a/ranges/multicast/src/streams/longestMatchReducer.ts b/ranges/multicast/src/streams/longestMatchReducer.ts new file mode 100644 index 00000000..d78ed86b --- /dev/null +++ b/ranges/multicast/src/streams/longestMatchReducer.ts @@ -0,0 +1,36 @@ +import { TypedTransform } from "dc-streams"; +import { Candidate, PacketCandidates } from "../types"; + +export class LongestMatchReducer extends TypedTransform { + private reduceToLongestMatch(candidates: Candidate[]): Candidate[] { + if (candidates.length === 0) { + return []; + } + + let longest = candidates[0]; + let longestLength = longest.end - longest.start; + for (const candidate of candidates) { + const len = candidate.end - candidate.start; + if (len > longestLength) { + longest = candidate; + longestLength = len; + } + } + return [longest]; + } + + _transform(chunk: PacketCandidates, encoding: BufferEncoding, callback: () => void): void { + const disciplineCandidates = this.reduceToLongestMatch(chunk.disciplineCandidates); + const startListCandidates = this.reduceToLongestMatch(chunk.startListCandidates); + const shooterCandidates = this.reduceToLongestMatch(chunk.shooterCandidates); + + const reduced: PacketCandidates = { + id: chunk.id, + disciplineCandidates, + startListCandidates, + shooterCandidates + }; + this.push(reduced); + callback(); + } +} diff --git a/ranges/multicast/src/streams/overlapFilter.ts b/ranges/multicast/src/streams/overlapFilter.ts new file mode 100644 index 00000000..d4942c69 --- /dev/null +++ b/ranges/multicast/src/streams/overlapFilter.ts @@ -0,0 +1,39 @@ +import { TypedTransform } from "dc-streams"; +import { Candidate, PacketCandidates } from "../types"; + +export class ContainedCandidatesFilter extends TypedTransform { + private filterContainedCandidate(candidates: Candidate[]): Candidate[] { + // This should remove all candidates that are fully covered by another candidate. + // It should not remove candidates that are the same length but different data, as they still add more information. + // Should we do this for all candidate types independently or across all types? + + const sorted = candidates.slice().sort((a, b) => a.start - b.start || b.end - a.end); + const filtered: Candidate[] = []; + let lastEnd = -1; + let lastStart = -1; + for (const candidate of sorted) { + if (candidate.end <= lastEnd && !(candidate.start === lastStart && candidate.end === lastEnd)) { + continue; + } + filtered.push(candidate); + lastEnd = Math.max(lastEnd, candidate.end); + lastStart = candidate.start; + } + return filtered; + } + + _transform(chunk: PacketCandidates, encoding: BufferEncoding, callback: () => void): void { + const disciplineCandidates = this.filterContainedCandidate(chunk.disciplineCandidates); + const startListCandidates = this.filterContainedCandidate(chunk.startListCandidates); + const shooterCandidates = this.filterContainedCandidate(chunk.shooterCandidates); + + const filtered: PacketCandidates = { + id: chunk.id, + disciplineCandidates, + startListCandidates, + shooterCandidates + }; + this.push(filtered); + callback(); + } +} \ No newline at end of file diff --git a/ranges/multicast/src/streams/rangeDataConverter.ts b/ranges/multicast/src/streams/rangeDataConverter.ts new file mode 100644 index 00000000..6662bc6f --- /dev/null +++ b/ranges/multicast/src/streams/rangeDataConverter.ts @@ -0,0 +1,44 @@ +import { TypedTransform } from "dc-streams" +import { Candidate, CandidateDiscipline, isOverride, PacketCandidates } from "../types"; +import { InternalDiscipline, InternalRange } from "dc-ranges-types"; +import { logger } from "dc-logger"; + +export class RangeDataConverter extends TypedTransform { + private resolveCandidate(candidates: Candidate[]): T | null { + if (candidates.length !== 1) { + return null; + } + return candidates[0].data; + } + + private resolveDiscipline(candidates: Candidate[]): InternalDiscipline | null { + const candidate = this.resolveCandidate(candidates); + if (!candidate) { + return null; + } + if (isOverride(candidate)) { + return { + overrideId: candidate.overrideId, + roundId: candidate.roundId, + }; + } + return { + disciplineId: candidate.disciplineId, + roundId: candidate.roundId, + }; + } + + _transform(chunk: PacketCandidates, encoding: BufferEncoding, callback: () => void): void { + const range: InternalRange = { + rangeId: chunk.id, + discipline: this.resolveDiscipline(chunk.disciplineCandidates), + startListId: this.resolveCandidate(chunk.startListCandidates), + shooter: this.resolveCandidate(chunk.shooterCandidates), + hits: [], + source: "multicast", + ttl: 20000 + }; + this.push(range); + callback(); + } +} diff --git a/ranges/multicast/src/streams/rangeId.ts b/ranges/multicast/src/streams/rangeId.ts new file mode 100644 index 00000000..bb76d81c --- /dev/null +++ b/ranges/multicast/src/streams/rangeId.ts @@ -0,0 +1,90 @@ +import { TypedTransform } from "dc-streams"; +import { RangeProxyType } from "../../proxy/src/types"; +import { LocalClient } from "dc-db-local"; +import { logger } from "dc-logger"; +import { RangeId } from "dc-ranges-types"; + +export type IdentifiedRange = { + id: RangeId; + packet: string; +} + +export class RangeIdentifier extends TypedTransform { + private readonly prismaClient: LocalClient; + + constructor(prismaClient: LocalClient) { + super(); + this.prismaClient = prismaClient; + } + + async resolveRangeId(rangeMac: string, rangeIp: string): Promise { + const existing = await this.prismaClient.knownRanges.findUnique({ + where: { macAddress: rangeMac } + }); + + if (existing) { + if (existing.lastIp !== rangeIp) { + await this.prismaClient.knownRanges.update({ + where: { macAddress: rangeMac }, + data: { lastIp: rangeIp } + }); + } + + return existing.rangeId; + } + + // MAC not known → derive ID + let rangeId: number | null = null; + + const parts = rangeIp.split("."); + if (parts.length !== 4) { + logger.warn(`Invalid IP ${rangeIp} for range with mac ${rangeMac}`); + } + + const candidate = parseInt(parts[3], 10); + if (isNaN(candidate)) { + logger.warn(`Invalid IP ${rangeIp} for range with mac ${rangeMac}`); + } + + const exists = await this.prismaClient.knownRanges.findUnique({ + where: { rangeId: candidate } + }); + + if (!exists) { + rangeId = candidate; + } else { + logger.warn(`Range ID ${candidate} already exists`); + } + + // Safe insert + const created = await this.prismaClient.knownRanges.upsert({ + where: { macAddress: rangeMac }, + update: { lastIp: rangeIp }, + create: { + macAddress: rangeMac, + lastIp: rangeIp, + rangeId: rangeId + } + }); + + return created.rangeId; + } + + async _transform(value: RangeProxyType, encoding: BufferEncoding, callback: (error?: Error | null, data?: IdentifiedRange) => void): Promise { + try { + const rangeId = await this.resolveRangeId(value.mac, value.ip); + if (!rangeId) { + logger.warn(`Could not resolve range id for range with mac ${value.mac} and ip ${value.ip}, skipping packet`); + } else { + this.push({ + id: rangeId, + packet: value.message + }); + } + callback(); + } catch (error) { + logger.error(`Error while getting range id for range with mac ${value.mac} and ip ${value.ip}: ${error}`); + callback(error as Error); + } + } +} \ No newline at end of file diff --git a/ranges/multicast/src/types.ts b/ranges/multicast/src/types.ts new file mode 100644 index 00000000..8d37bd31 --- /dev/null +++ b/ranges/multicast/src/types.ts @@ -0,0 +1,39 @@ +import AhoCorasick from "ahocorasick"; +import { Index, InternalShooter, RangeId, UnsignedInteger } from "dc-ranges-types"; + +export type Candidate = { + readonly start: UnsignedInteger, + readonly end: UnsignedInteger, + readonly data: T + readonly match: string; +} + +export type CandidateBaseDiscipline = { + disciplineId: Index; + roundId: Index; +} + +export type CandidateOverrideDiscipline = CandidateBaseDiscipline & { + overrideId: Index; + startListId: Index; +} + +export function isOverride(discipline: CandidateDiscipline): discipline is CandidateOverrideDiscipline { + return "overrideId" in discipline; +} + +export type CandidateDiscipline = CandidateBaseDiscipline | CandidateOverrideDiscipline; + +export type CandidateStartList = Index; + +export type Matcher = { + matcher: AhoCorasick; + candidates: ReadonlyMap; +} + +export type PacketCandidates = { + id: RangeId; + disciplineCandidates: Candidate[]; + startListCandidates: Candidate[]; + shooterCandidates: Candidate[]; +} \ No newline at end of file From 7d382365fdb43064152dcecf7b17db81a720d2ff Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 7 Mar 2026 19:10:57 +0100 Subject: [PATCH 10/31] fix: New volume path --- database/local/docker-compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/local/docker-compose.yaml b/database/local/docker-compose.yaml index 24ae53c7..f99b340f 100644 --- a/database/local/docker-compose.yaml +++ b/database/local/docker-compose.yaml @@ -19,7 +19,7 @@ services: timeout: 5s retries: 5 volumes: - - postgres_data:/var/lib/postgresql/data + - postgres_data:/var/lib/postgresql dc-db-migrate: container_name: dc-db-migrate image: ghcr.io/svenfinn/dc-db-migrate:${APP_VERSION} From 5529dc552ea2dd7ef202638b4843996c4c315281 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 7 Mar 2026 19:11:08 +0100 Subject: [PATCH 11/31] fix: make lastIp non-unique --- .../migrations/20241010070636_add_known_ranges/migration.sql | 3 --- database/local/schema.prisma | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/database/local/migrations/20241010070636_add_known_ranges/migration.sql b/database/local/migrations/20241010070636_add_known_ranges/migration.sql index adbb6ee6..69b00181 100644 --- a/database/local/migrations/20241010070636_add_known_ranges/migration.sql +++ b/database/local/migrations/20241010070636_add_known_ranges/migration.sql @@ -11,6 +11,3 @@ CREATE TABLE "public"."KnownRanges" ( -- CreateIndex CREATE UNIQUE INDEX "KnownRanges_rangeId_key" ON "public"."KnownRanges"("rangeId"); - --- CreateIndex -CREATE UNIQUE INDEX "KnownRanges_lastIp_key" ON "public"."KnownRanges"("lastIp"); diff --git a/database/local/schema.prisma b/database/local/schema.prisma index 38e7b3a6..a2dd8cf6 100644 --- a/database/local/schema.prisma +++ b/database/local/schema.prisma @@ -58,7 +58,7 @@ enum CacheTypes { model KnownRanges { macAddress String @id rangeId Int? @unique - lastIp String? @unique @db.Inet + lastIp String? @db.Inet createdAt DateTime @default(now()) updatedAt DateTime @default(now()) @updatedAt } From db2018b790936522d23895370cfed591fd5083f9 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 7 Mar 2026 19:20:44 +0100 Subject: [PATCH 12/31] chore: Dependencies --- database/local/package-lock.json | 162 +++++++++++------------ database/local/package.json | 12 +- database/smdb/package-lock.json | 135 ++++++++++--------- database/smdb/package.json | 8 +- database/ssmdb2/package-lock.json | 135 ++++++++++--------- database/ssmdb2/package.json | 8 +- database/tableWatcher/package-lock.json | 88 ++++++------ database/tableWatcher/package.json | 4 +- logger/package-lock.json | 16 +-- logger/package.json | 2 +- ranges/cache/package-lock.json | 42 +++--- ranges/cache/package.json | 2 +- ranges/log/package-lock.json | 34 ++--- ranges/log/package.json | 2 +- ranges/merge/package-lock.json | 32 ++--- ranges/merge/package.json | 2 +- ranges/multicast/package-lock.json | 32 ++--- ranges/multicast/package.json | 2 +- ranges/multicast/proxy/package-lock.json | 18 +-- ranges/multicast/proxy/package.json | 2 +- ranges/ssmdb2/package-lock.json | 44 +++--- ranges/ssmdb2/package.json | 2 +- ranges/ttl/package-lock.json | 16 +-- ranges/ttl/package.json | 2 +- screens/evaluations/package-lock.json | 64 +++++---- screens/evaluations/package.json | 6 +- screens/images/package-lock.json | 34 ++--- screens/images/package.json | 4 +- screens/screenCast/package-lock.json | 18 +-- screens/screenCast/package.json | 2 +- screens/screenManager/package-lock.json | 30 ++--- screens/screenManager/package.json | 2 +- serverState/package-lock.json | 38 +++--- serverState/package.json | 2 +- streams/package-lock.json | 18 +-- streams/package.json | 2 +- syncTime/package-lock.json | 38 +++--- syncTime/package.json | 2 +- utils/recorder/package-lock.json | 71 +++++----- utils/recorder/package.json | 4 +- 40 files changed, 581 insertions(+), 556 deletions(-) diff --git a/database/local/package-lock.json b/database/local/package-lock.json index 1ac5c6c7..3304a2b2 100644 --- a/database/local/package-lock.json +++ b/database/local/package-lock.json @@ -9,15 +9,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -117,23 +117,23 @@ } }, "node_modules/@prisma/adapter-pg": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.4.0.tgz", - "integrity": "sha512-LWwTHaio0bMxvzahmpwpWqsZM0vTfMqwF8zo06YvILL/o47voaSfKzCVxZw/o9awf4fRgS5Vgthobikj9Dusaw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.4.2.tgz", + "integrity": "sha512-oUo2Zhe9Tf6YwVL8kLPuOLTK1Z2pwi/Ua77t2PuGyBan2w7shRKqHvYK+3XXmRH9RWhPJ4SMtHZKpNo6Ax/4bQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.4.0", + "@prisma/driver-adapter-utils": "7.4.2", "pg": "^8.16.3", "postgres-array": "3.0.4" } }, "node_modules/@prisma/client": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.0.tgz", - "integrity": "sha512-Sc+ncr7+ph1hMf1LQfn6UyEXDEamCd5pXMsx8Q3SBH0NGX+zjqs3eaABt9hXwbcK9l7f8UyK8ldxOWA2LyPynQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.2.tgz", + "integrity": "sha512-ts2mu+cQHriAhSxngO3StcYubBGTWDtu/4juZhXCUKOwgh26l+s4KD3vT2kMUzFyrYnll9u/3qWrtzRv9CGWzA==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.4.0" + "@prisma/client-runtime-utils": "7.4.2" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -152,15 +152,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.0.tgz", - "integrity": "sha512-jTmWAOBGBSCT8n7SMbpjCpHjELgcDW9GNP/CeK6CeqjUFlEL6dn8Cl81t/NBDjJdXDm85XDJmc+PEQqqQee3xw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.2.tgz", + "integrity": "sha512-cID+rzOEb38VyMsx5LwJMEY4NGIrWCNpKu/0ImbeooQ2Px7TI+kOt7cm0NelxUzF2V41UVVXAmYjANZQtCu1/Q==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", - "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", + "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -171,9 +171,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", - "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", + "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -203,65 +203,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.0.tgz", - "integrity": "sha512-jEyE5LkqZ27Ba/DIOfCGOQl6nKMLxuwJNRceCfh7/LRs46UkIKn3bmkI97MEH2t7zkYV3PGBrUr+6sMJaHvc0A==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.2.tgz", + "integrity": "sha512-REdjFpT/ye9KdDs+CXAXPIbMQkVLhne9G5Pe97sNY4Ovx4r2DAbWM9hOFvvB1Oq8H8bOCdu0Ri3AoGALquQqVw==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/engines": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", - "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", + "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/fetch-engine": "7.4.0", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/fetch-engine": "7.4.2", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/engines-version": { - "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", - "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", + "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", + "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", - "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", + "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/get-platform": { @@ -308,19 +308,19 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/pg": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.16.0.tgz", - "integrity": "sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.18.0.tgz", + "integrity": "sha512-gT+oueVQkqnj6ajGJXblFR4iavIXWsGAFCk3dP4Kki5+a9R4NMt0JARdk6s8cUKcfUoqP5dAtDSLU8xYUTFV+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -838,15 +838,15 @@ "license": "MIT" }, "node_modules/pg": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.18.0.tgz", - "integrity": "sha512-xqrUDL1b9MbkydY/s+VZ6v+xiMUmOUk7SS9d/1kpyQxoJ6U9AO1oIJyUWVZojbfe5Cc/oluutcgFG4L9RDP1iQ==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", "peer": true, "dependencies": { - "pg-connection-string": "^2.11.0", - "pg-pool": "^3.11.0", - "pg-protocol": "^1.11.0", + "pg-connection-string": "^2.12.0", + "pg-pool": "^3.13.0", + "pg-protocol": "^1.13.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, @@ -873,9 +873,9 @@ "optional": true }, "node_modules/pg-connection-string": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.11.0.tgz", - "integrity": "sha512-kecgoJwhOpxYU21rZjULrmrBJ698U2RxXofKVzOn5UDj61BPj/qMb7diYUR1nLScCDbrztQFl1TaQZT0t1EtzQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.12.0.tgz", + "integrity": "sha512-U7qg+bpswf3Cs5xLzRqbXbQl85ng0mfSV/J0nnA31MCLgvEaAo7CIhmeyrmJpOr7o+zm0rXK+hNnT5l9RHkCkQ==", "license": "MIT" }, "node_modules/pg-int8": { @@ -888,18 +888,18 @@ } }, "node_modules/pg-pool": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.11.0.tgz", - "integrity": "sha512-MJYfvHwtGp870aeusDh+hg9apvOe2zmpZJpyt+BMtzUWlVqbhFmMK6bOBXLBUPd7iRtIF9fZplDc7KrPN3PN7w==", + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", + "integrity": "sha512-gB+R+Xud1gLFuRD/QgOIgGOBE2KCQPaPwkzBBGC9oG69pHTkhQeIuejVIk3/cnDyX39av2AxomQiyPT13WKHQA==", "license": "MIT", "peerDependencies": { "pg": ">=8.0" } }, "node_modules/pg-protocol": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.11.0.tgz", - "integrity": "sha512-pfsxk2M9M3BuGgDOfuy37VNRRX3jmKgMjcvAcWqNDpZSf4cUmv8HSOl5ViRQFsfARFn0KuUQTgLxVMbNq5NW3g==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.13.0.tgz", + "integrity": "sha512-zzdvXfS6v89r6v7OcFCHfHlyG/wvry1ALxZo4LqgUoy7W9xhBDMaqOuMiF3qEV45VqsN6rdlcehHrfDtlCPc8w==", "license": "MIT" }, "node_modules/pg-types": { @@ -1002,17 +1002,17 @@ } }, "node_modules/prisma": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", - "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", + "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.4.0", + "@prisma/config": "7.4.2", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.0", + "@prisma/engines": "7.4.2", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" @@ -1257,9 +1257,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/database/local/package.json b/database/local/package.json index ce82d072..4134e673 100644 --- a/database/local/package.json +++ b/database/local/package.json @@ -13,15 +13,15 @@ "license": "ISC", "description": "", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" }, "files": [ diff --git a/database/smdb/package-lock.json b/database/smdb/package-lock.json index 2e78cde4..678f0420 100644 --- a/database/smdb/package-lock.json +++ b/database/smdb/package-lock.json @@ -8,14 +8,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -24,15 +24,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -132,22 +132,22 @@ } }, "node_modules/@prisma/adapter-mariadb": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.0.tgz", - "integrity": "sha512-iGld7w4Oqm0Fux/6nzkVBkK0Wtv2Rdjy0QDPcs8dcfdZ4DolHWD585f8K5RMZ5riJ8IdIAqOxLKowlNloQYPuQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.2.tgz", + "integrity": "sha512-s9iIan8UDce47Mdsqzm/JnFK/c2vmTXAtKYvBuE4zOockjxLZCB487AMPLx9CgUknqBsGlVqad7AY4QkznSYkA==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.4.0", + "@prisma/driver-adapter-utils": "7.4.2", "mariadb": "3.4.5" } }, "node_modules/@prisma/client": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.0.tgz", - "integrity": "sha512-Sc+ncr7+ph1hMf1LQfn6UyEXDEamCd5pXMsx8Q3SBH0NGX+zjqs3eaABt9hXwbcK9l7f8UyK8ldxOWA2LyPynQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.2.tgz", + "integrity": "sha512-ts2mu+cQHriAhSxngO3StcYubBGTWDtu/4juZhXCUKOwgh26l+s4KD3vT2kMUzFyrYnll9u/3qWrtzRv9CGWzA==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.4.0" + "@prisma/client-runtime-utils": "7.4.2" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -166,15 +166,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.0.tgz", - "integrity": "sha512-jTmWAOBGBSCT8n7SMbpjCpHjELgcDW9GNP/CeK6CeqjUFlEL6dn8Cl81t/NBDjJdXDm85XDJmc+PEQqqQee3xw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.2.tgz", + "integrity": "sha512-cID+rzOEb38VyMsx5LwJMEY4NGIrWCNpKu/0ImbeooQ2Px7TI+kOt7cm0NelxUzF2V41UVVXAmYjANZQtCu1/Q==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", - "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", + "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -185,9 +185,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", - "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", + "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -217,65 +217,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.0.tgz", - "integrity": "sha512-jEyE5LkqZ27Ba/DIOfCGOQl6nKMLxuwJNRceCfh7/LRs46UkIKn3bmkI97MEH2t7zkYV3PGBrUr+6sMJaHvc0A==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.2.tgz", + "integrity": "sha512-REdjFpT/ye9KdDs+CXAXPIbMQkVLhne9G5Pe97sNY4Ovx4r2DAbWM9hOFvvB1Oq8H8bOCdu0Ri3AoGALquQqVw==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/engines": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", - "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", + "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/fetch-engine": "7.4.0", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/fetch-engine": "7.4.2", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/engines-version": { - "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", - "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", + "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", + "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", - "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", + "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/get-platform": { @@ -328,15 +328,22 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/react": { "version": "19.2.9", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", @@ -918,17 +925,17 @@ } }, "node_modules/prisma": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", - "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", + "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.4.0", + "@prisma/config": "7.4.2", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.0", + "@prisma/engines": "7.4.2", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" diff --git a/database/smdb/package.json b/database/smdb/package.json index 2457f59d..c54f782e 100644 --- a/database/smdb/package.json +++ b/database/smdb/package.json @@ -10,13 +10,13 @@ "generate": "npx prisma generate --no-hints" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" }, "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, diff --git a/database/ssmdb2/package-lock.json b/database/ssmdb2/package-lock.json index 87b71ff1..0764c7bb 100644 --- a/database/ssmdb2/package-lock.json +++ b/database/ssmdb2/package-lock.json @@ -9,14 +9,14 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -25,15 +25,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -133,22 +133,22 @@ } }, "node_modules/@prisma/adapter-mariadb": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.0.tgz", - "integrity": "sha512-iGld7w4Oqm0Fux/6nzkVBkK0Wtv2Rdjy0QDPcs8dcfdZ4DolHWD585f8K5RMZ5riJ8IdIAqOxLKowlNloQYPuQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.2.tgz", + "integrity": "sha512-s9iIan8UDce47Mdsqzm/JnFK/c2vmTXAtKYvBuE4zOockjxLZCB487AMPLx9CgUknqBsGlVqad7AY4QkznSYkA==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.4.0", + "@prisma/driver-adapter-utils": "7.4.2", "mariadb": "3.4.5" } }, "node_modules/@prisma/client": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.0.tgz", - "integrity": "sha512-Sc+ncr7+ph1hMf1LQfn6UyEXDEamCd5pXMsx8Q3SBH0NGX+zjqs3eaABt9hXwbcK9l7f8UyK8ldxOWA2LyPynQ==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.2.tgz", + "integrity": "sha512-ts2mu+cQHriAhSxngO3StcYubBGTWDtu/4juZhXCUKOwgh26l+s4KD3vT2kMUzFyrYnll9u/3qWrtzRv9CGWzA==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.4.0" + "@prisma/client-runtime-utils": "7.4.2" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -167,15 +167,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.0.tgz", - "integrity": "sha512-jTmWAOBGBSCT8n7SMbpjCpHjELgcDW9GNP/CeK6CeqjUFlEL6dn8Cl81t/NBDjJdXDm85XDJmc+PEQqqQee3xw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.2.tgz", + "integrity": "sha512-cID+rzOEb38VyMsx5LwJMEY4NGIrWCNpKu/0ImbeooQ2Px7TI+kOt7cm0NelxUzF2V41UVVXAmYjANZQtCu1/Q==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", - "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", + "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -186,9 +186,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", - "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", + "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -218,65 +218,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.0.tgz", - "integrity": "sha512-jEyE5LkqZ27Ba/DIOfCGOQl6nKMLxuwJNRceCfh7/LRs46UkIKn3bmkI97MEH2t7zkYV3PGBrUr+6sMJaHvc0A==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.2.tgz", + "integrity": "sha512-REdjFpT/ye9KdDs+CXAXPIbMQkVLhne9G5Pe97sNY4Ovx4r2DAbWM9hOFvvB1Oq8H8bOCdu0Ri3AoGALquQqVw==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/engines": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", - "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", + "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/fetch-engine": "7.4.0", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/fetch-engine": "7.4.2", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/engines-version": { - "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", - "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", + "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", + "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", - "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", + "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/get-platform": { @@ -329,15 +329,22 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/react": { "version": "19.2.9", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", @@ -919,17 +926,17 @@ } }, "node_modules/prisma": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", - "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", + "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.4.0", + "@prisma/config": "7.4.2", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.0", + "@prisma/engines": "7.4.2", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" diff --git a/database/ssmdb2/package.json b/database/ssmdb2/package.json index 2667083d..9d627e92 100644 --- a/database/ssmdb2/package.json +++ b/database/ssmdb2/package.json @@ -13,14 +13,14 @@ "license": "ISC", "description": "", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" }, "files": [ diff --git a/database/tableWatcher/package-lock.json b/database/tableWatcher/package-lock.json index 3fa9fd9d..76f5c754 100644 --- a/database/tableWatcher/package-lock.json +++ b/database/tableWatcher/package-lock.json @@ -13,8 +13,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -28,7 +28,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -374,9 +374,9 @@ } }, "node_modules/@prisma/config": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.0.tgz", - "integrity": "sha512-EnNrZMwZ9+O6UlG+YO9SP3VhVw4zwMahDRzQm3r0DQn9KeU5NwzmaDAY+BzACrgmaU71Id1/0FtWIDdl7xQp9g==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", + "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -387,9 +387,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.0.tgz", - "integrity": "sha512-fZicwzgFHvvPMrRLCUinrsBTdadJsi/1oirzShjmFvNLwtu2DYlkxwRVy5zEGhp85mrEGnLeS/PdNRCdE027+Q==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", + "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", "dev": true, "license": "Apache-2.0" }, @@ -420,56 +420,56 @@ } }, "node_modules/@prisma/engines": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.0.tgz", - "integrity": "sha512-H+dgpbbY3VN/j5hOSVP1LXsv/rU0w/4C2zh5PZUwo/Q3NqZjOvBlVvkhtziioRmeEZ3SBAqPCsf1sQ74sI3O/w==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", + "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/fetch-engine": "7.4.0", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/fetch-engine": "7.4.2", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/engines-version": { - "version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57.tgz", - "integrity": "sha512-5o3/bubIYdUeg38cyNf+VDq+LVtxvvi2393Fd1Uru52LPfkGJnmVbCaX1wBOAncgKR3BCloMJFD+Koog9LtYqQ==", + "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", + "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", "dev": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.0.tgz", - "integrity": "sha512-IXPOYskT89UTVsntuSnMTiKRWCuTg5JMWflgEDV1OSKFpuhwP5vqbfF01/iwo9y6rCjR0sDIO+jdV5kq38/hgA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", + "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0", - "@prisma/engines-version": "7.4.0-20.ab56fe763f921d033a6c195e7ddeb3e255bdbb57", - "@prisma/get-platform": "7.4.0" + "@prisma/debug": "7.4.2", + "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", + "@prisma/get-platform": "7.4.2" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.0.tgz", - "integrity": "sha512-fOUIoGzAPgtjHVs4DsVSnEDPBEauAmFeZr4Ej3tMwxywam7hHdRtCzgKagQBKcYIJuya8gzYrTqUoukzXtWJaA==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", + "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.0" + "@prisma/debug": "7.4.2" } }, "node_modules/@prisma/get-platform": { @@ -520,13 +520,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/react": { @@ -1093,16 +1093,16 @@ } }, "node_modules/prisma": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.0.tgz", - "integrity": "sha512-n2xU9vSaH4uxZF/l2aKoGYtKtC7BL936jM9Q94Syk1zOD39t/5hjDUxMgaPkVRDX5wWEMsIqvzQxoebNIesOKw==", + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", + "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/config": "7.4.0", + "@prisma/config": "7.4.2", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.0", + "@prisma/engines": "7.4.2", "@prisma/studio-core": "0.13.1", "mysql2": "3.15.3", "postgres": "3.4.7" @@ -1379,7 +1379,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/database/tableWatcher/package.json b/database/tableWatcher/package.json index 8aaaa3e4..0ba5907e 100644 --- a/database/tableWatcher/package.json +++ b/database/tableWatcher/package.json @@ -12,8 +12,8 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" }, "files": [ diff --git a/logger/package-lock.json b/logger/package-lock.json index e07884e8..37d14bc3 100644 --- a/logger/package-lock.json +++ b/logger/package-lock.json @@ -14,7 +14,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -25,13 +25,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/atomic-sleep": { @@ -317,9 +317,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/logger/package.json b/logger/package.json index db1ba7c6..788bb3bd 100644 --- a/logger/package.json +++ b/logger/package.json @@ -17,7 +17,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } } \ No newline at end of file diff --git a/ranges/cache/package-lock.json b/ranges/cache/package-lock.json index c53beff3..1c9b83dc 100644 --- a/ranges/cache/package-lock.json +++ b/ranges/cache/package-lock.json @@ -17,7 +17,7 @@ "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -27,15 +27,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -43,14 +43,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -63,8 +63,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -78,7 +78,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -133,13 +133,13 @@ } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/anymatch": { @@ -663,9 +663,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" } diff --git a/ranges/cache/package.json b/ranges/cache/package.json index 8d4dac73..3b70440a 100644 --- a/ranges/cache/package.json +++ b/ranges/cache/package.json @@ -18,7 +18,7 @@ "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index bc0bd9dd..c6437cab 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", "typescript": "~5.9.3" @@ -34,15 +34,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -56,7 +56,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -70,7 +70,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "~5.9.3" } }, @@ -78,7 +78,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -182,14 +182,14 @@ } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "devOptional": true, "license": "MIT", "peer": true, "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/amqplib": { @@ -1690,9 +1690,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "devOptional": true, "license": "MIT" }, diff --git a/ranges/log/package.json b/ranges/log/package.json index a42a05c3..8ad6b23b 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -24,7 +24,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", "typescript": "~5.9.3" diff --git a/ranges/merge/package-lock.json b/ranges/merge/package-lock.json index 75d92125..d07bc1df 100644 --- a/ranges/merge/package-lock.json +++ b/ranges/merge/package-lock.json @@ -21,7 +21,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -31,15 +31,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -53,7 +53,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -61,7 +61,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -201,12 +201,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/qs": { @@ -1820,9 +1820,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/unpipe": { diff --git a/ranges/merge/package.json b/ranges/merge/package.json index 7a29ad97..5a93d42f 100644 --- a/ranges/merge/package.json +++ b/ranges/merge/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, diff --git a/ranges/multicast/package-lock.json b/ranges/multicast/package-lock.json index 5cdbc348..618f1005 100644 --- a/ranges/multicast/package-lock.json +++ b/ranges/multicast/package-lock.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -52,7 +52,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -66,7 +66,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "~5.9.3" } }, @@ -137,13 +137,13 @@ } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/ahocorasick": { @@ -700,9 +700,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index d3ed947f..67e3e01b 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, diff --git a/ranges/multicast/proxy/package-lock.json b/ranges/multicast/proxy/package-lock.json index d5be7645..892d382c 100644 --- a/ranges/multicast/proxy/package-lock.json +++ b/ranges/multicast/proxy/package-lock.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -31,7 +31,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -55,13 +55,13 @@ } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/amqplib": { @@ -148,9 +148,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/ranges/multicast/proxy/package.json b/ranges/multicast/proxy/package.json index 68bc5a88..fa3f0b7a 100644 --- a/ranges/multicast/proxy/package.json +++ b/ranges/multicast/proxy/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } } diff --git a/ranges/ssmdb2/package-lock.json b/ranges/ssmdb2/package-lock.json index cac8d042..d2a77117 100644 --- a/ranges/ssmdb2/package-lock.json +++ b/ranges/ssmdb2/package-lock.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -47,14 +47,14 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -67,8 +67,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -82,7 +82,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -96,7 +96,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "~5.9.3" } }, @@ -161,13 +161,13 @@ } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/amqplib": { @@ -726,9 +726,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index d9561ed0..90f5fcb9 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, diff --git a/ranges/ttl/package-lock.json b/ranges/ttl/package-lock.json index 3cb78dad..2649bb01 100644 --- a/ranges/ttl/package-lock.json +++ b/ranges/ttl/package-lock.json @@ -8,18 +8,18 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/typescript": { @@ -37,9 +37,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" } diff --git a/ranges/ttl/package.json b/ranges/ttl/package.json index ad198bb0..7944b904 100644 --- a/ranges/ttl/package.json +++ b/ranges/ttl/package.json @@ -9,7 +9,7 @@ "build": "tsc" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" }, "files": [ diff --git a/screens/evaluations/package-lock.json b/screens/evaluations/package-lock.json index a1e44392..410751a6 100644 --- a/screens/evaluations/package-lock.json +++ b/screens/evaluations/package-lock.json @@ -13,14 +13,14 @@ "dc-logger": "file:../../logger", "dotenv": "^17.3.1", "express": "^5.2.1", - "express-rate-limit": "^8.2.1", + "express-rate-limit": "^8.3.0", "jsdom": "^28.1.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", - "@types/jsdom": "^27.0.0", - "@types/node": "^25.2.3", + "@types/jsdom": "^28.0.0", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -52,7 +52,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -349,15 +349,16 @@ "license": "MIT" }, "node_modules/@types/jsdom": { - "version": "27.0.0", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-27.0.0.tgz", - "integrity": "sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==", + "version": "28.0.0", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-28.0.0.tgz", + "integrity": "sha512-A8TBQQC/xAOojy9kM8E46cqT00sF0h7dWjV8t8BJhUi2rG6JRh7XXQo/oLoENuZIQEpXsxLccLCnknyQd7qssQ==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "*", "@types/tough-cookie": "*", - "parse5": "^7.0.0" + "parse5": "^7.0.0", + "undici-types": "^7.21.0" } }, "node_modules/@types/mime": { @@ -368,15 +369,22 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/qs": { "version": "6.14.0", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", @@ -950,12 +958,12 @@ } }, "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.0.tgz", + "integrity": "sha512-KJzBawY6fB9FiZGdE/0aftepZ91YlaGIrV8vgblRM3J8X+dHx/aiowJWwkx6LIGyuqGiANsjSwwrbb8mifOJ4Q==", "license": "MIT", "dependencies": { - "ip-address": "10.0.1" + "ip-address": "10.1.0" }, "engines": { "node": ">= 16" @@ -1261,9 +1269,9 @@ "license": "ISC" }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", "engines": { "node": ">= 12" @@ -2164,9 +2172,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.22.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.22.0.tgz", + "integrity": "sha512-RKZvifiL60xdsIuC80UY0dq8Z7DbJUV8/l2hOVbyZAxBzEeQU4Z58+4ZzJ6WN2Lidi9KzT5EbiGX+PI/UGYuRw==", "dev": true, "license": "MIT" }, diff --git a/screens/evaluations/package.json b/screens/evaluations/package.json index 688c7c0e..10bff8a7 100644 --- a/screens/evaluations/package.json +++ b/screens/evaluations/package.json @@ -14,14 +14,14 @@ "dc-logger": "file:../../logger", "dotenv": "^17.3.1", "express": "^5.2.1", - "express-rate-limit": "^8.2.1", + "express-rate-limit": "^8.3.0", "jsdom": "^28.1.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", - "@types/jsdom": "^27.0.0", - "@types/node": "^25.2.3", + "@types/jsdom": "^28.0.0", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/images/package-lock.json b/screens/images/package-lock.json index 11b33437..5b779d63 100644 --- a/screens/images/package-lock.json +++ b/screens/images/package-lock.json @@ -14,13 +14,13 @@ "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", - "express-rate-limit": "^8.2.1", + "express-rate-limit": "^8.3.0", "pdf2pic": "^3.2.0" }, "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -35,7 +35,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -159,13 +159,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/qs": { @@ -626,12 +626,12 @@ } }, "node_modules/express-rate-limit": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.2.1.tgz", - "integrity": "sha512-PCZEIEIxqwhzw4KF0n7QF4QqruVTcF73O5kFKUnGOyjbCCgizBBiFaYpd/fnBLUMPw/BWw9OsiN7GgrNYr7j6g==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.0.tgz", + "integrity": "sha512-KJzBawY6fB9FiZGdE/0aftepZ91YlaGIrV8vgblRM3J8X+dHx/aiowJWwkx6LIGyuqGiANsjSwwrbb8mifOJ4Q==", "license": "MIT", "dependencies": { - "ip-address": "10.0.1" + "ip-address": "10.1.0" }, "engines": { "node": ">= 16" @@ -940,9 +940,9 @@ "license": "ISC" }, "node_modules/ip-address": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", - "integrity": "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", "license": "MIT", "engines": { "node": ">= 12" @@ -1660,9 +1660,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/screens/images/package.json b/screens/images/package.json index 36a9afdf..e22f96e4 100644 --- a/screens/images/package.json +++ b/screens/images/package.json @@ -15,13 +15,13 @@ "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", - "express-rate-limit": "^8.2.1", + "express-rate-limit": "^8.3.0", "pdf2pic": "^3.2.0" }, "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/screenCast/package-lock.json b/screens/screenCast/package-lock.json index 7f3afb9d..8f5f0888 100644 --- a/screens/screenCast/package-lock.json +++ b/screens/screenCast/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -30,7 +30,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -72,12 +72,12 @@ } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/accepts": { @@ -327,9 +327,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/url-parse": { diff --git a/screens/screenCast/package.json b/screens/screenCast/package.json index 1785dc2c..9a709d1a 100644 --- a/screens/screenCast/package.json +++ b/screens/screenCast/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } } diff --git a/screens/screenManager/package-lock.json b/screens/screenManager/package-lock.json index ec57b85f..76951241 100644 --- a/screens/screenManager/package-lock.json +++ b/screens/screenManager/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -32,15 +32,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -54,7 +54,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -206,12 +206,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/qs": { @@ -1825,9 +1825,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/unpipe": { diff --git a/screens/screenManager/package.json b/screens/screenManager/package.json index 284537ee..b582592a 100644 --- a/screens/screenManager/package.json +++ b/screens/screenManager/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/serverState/package-lock.json b/serverState/package-lock.json index 654fe9b7..fe20848f 100644 --- a/serverState/package-lock.json +++ b/serverState/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } @@ -32,15 +32,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -48,14 +48,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -69,7 +69,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -171,12 +171,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/qs": { @@ -1335,9 +1335,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/unpipe": { diff --git a/serverState/package.json b/serverState/package.json index b3b38364..347b548d 100644 --- a/serverState/package.json +++ b/serverState/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } diff --git a/streams/package-lock.json b/streams/package-lock.json index d9069713..87dcbf99 100644 --- a/streams/package-lock.json +++ b/streams/package-lock.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "~5.9.3" } }, @@ -28,7 +28,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -43,13 +43,13 @@ } }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/amqplib": { @@ -102,9 +102,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/streams/package.json b/streams/package.json index 31093d51..59b9bfe9 100644 --- a/streams/package.json +++ b/streams/package.json @@ -15,7 +15,7 @@ ], "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "~5.9.3" }, "dependencies": { diff --git a/syncTime/package-lock.json b/syncTime/package-lock.json index ee74f5a6..91e50415 100644 --- a/syncTime/package-lock.json +++ b/syncTime/package-lock.json @@ -16,7 +16,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -25,15 +25,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-pg": "^7.4.2", + "@prisma/client": "^7.4.2", "dotenv": "^17.3.1", - "pg": "^8.18.0" + "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "@types/pg": "^8.16.0", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "@types/pg": "^8.18.0", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -41,14 +41,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.0", - "@prisma/client": "^7.4.0", + "@prisma/adapter-mariadb": "^7.4.2", + "@prisma/client": "^7.4.2", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.2.3", - "prisma": "^7.4.0", + "@types/node": "^25.3.5", + "prisma": "^7.4.2", "typescript": "^5.9.3" } }, @@ -62,7 +62,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" } }, @@ -73,13 +73,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/dc-db-local": { @@ -211,9 +211,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/syncTime/package.json b/syncTime/package.json index 6205e112..5ee04900 100644 --- a/syncTime/package.json +++ b/syncTime/package.json @@ -11,7 +11,7 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "typescript": "^5.9.3" }, "dependencies": { diff --git a/utils/recorder/package-lock.json b/utils/recorder/package-lock.json index b5eee7c9..99ef3668 100644 --- a/utils/recorder/package-lock.json +++ b/utils/recorder/package-lock.json @@ -12,8 +12,8 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "nodemon": "^3.1.11", + "@types/node": "^25.3.5", + "nodemon": "^3.1.14", "ts-node": "^10.9.2", "typescript": "^5.9.3" } @@ -88,14 +88,14 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/acorn": { @@ -146,11 +146,14 @@ "license": "MIT" }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/binary-extensions": { "version": "2.3.0", @@ -166,14 +169,16 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/braces": { @@ -214,13 +219,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true, - "license": "MIT" - }, "node_modules/create-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", @@ -389,16 +387,19 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^1.1.7" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/ms": { @@ -409,16 +410,16 @@ "license": "MIT" }, "node_modules/nodemon": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.11.tgz", - "integrity": "sha512-is96t8F/1//UHAjNPHpbsNY46ELPpftGUoSVNXwUfMk/qdjSylYrWSu1XavVTBOn526kFiOR733ATgNBCQyH0g==", + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", + "integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==", "dev": true, "license": "MIT", "dependencies": { "chokidar": "^3.5.2", "debug": "^4", "ignore-by-default": "^1.0.1", - "minimatch": "^3.1.2", + "minimatch": "^10.2.1", "pstree.remy": "^1.1.8", "semver": "^7.5.3", "simple-update-notifier": "^2.0.0", @@ -609,9 +610,9 @@ "license": "MIT" }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "dev": true, "license": "MIT" }, diff --git a/utils/recorder/package.json b/utils/recorder/package.json index ddb03152..8998dff6 100644 --- a/utils/recorder/package.json +++ b/utils/recorder/package.json @@ -15,8 +15,8 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.2.3", - "nodemon": "^3.1.11", + "@types/node": "^25.3.5", + "nodemon": "^3.1.14", "ts-node": "^10.9.2", "typescript": "^5.9.3" } From 4870f83aeaeb009b52e6c138ff0e3bfe3f6cfb77 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 8 Mar 2026 09:46:59 +0100 Subject: [PATCH 13/31] Remove unnecessary dependency --- database/local/pgadmin/docker-compose.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/database/local/pgadmin/docker-compose.yaml b/database/local/pgadmin/docker-compose.yaml index dee0a474..d862da82 100644 --- a/database/local/pgadmin/docker-compose.yaml +++ b/database/local/pgadmin/docker-compose.yaml @@ -23,5 +23,3 @@ services: depends_on: dc-database: condition: service_healthy - dc-db-migrate: - condition: service_completed_successfully From 5ba99bb0b728448e71b2f472f11cfe0d96d19568 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 8 Mar 2026 15:09:29 +0100 Subject: [PATCH 14/31] feat: Change range protocol to explicitly represent shooter ambiguity --- .../CpcView/range/rangeView/index.tsx | 8 +++- .../DrawTarget/ranges/range/name.tsx | 5 ++- ranges/log/src/cache/shooter.ts | 39 +++++++------------ ranges/log/src/streams/mergeRange.ts | 2 +- ranges/log/src/streams/rangeState.ts | 12 +++--- ranges/merge/src/cache/shooters.ts | 23 +++++++---- ranges/merge/src/rangeMerger/merge.ts | 4 +- ranges/multicast/src/cache/shooters.ts | 3 +- .../src/streams/rangeDataConverter.ts | 14 ++++++- ranges/ssmdb2/src/streams/rangeData.ts | 2 +- ranges/types/src/index.ts | 7 ++-- ranges/types/src/shooter/index.ts | 36 +++++++++++++---- 12 files changed, 96 insertions(+), 59 deletions(-) diff --git a/frontend/src/app/show/cpcView/components/CpcView/range/rangeView/index.tsx b/frontend/src/app/show/cpcView/components/CpcView/range/rangeView/index.tsx index 74f280ee..5e273e44 100644 --- a/frontend/src/app/show/cpcView/components/CpcView/range/rangeView/index.tsx +++ b/frontend/src/app/show/cpcView/components/CpcView/range/rangeView/index.tsx @@ -7,9 +7,13 @@ export function RangeView({ id }: { id: number }): React.JSX.Element { const range = useAppSelector(state => state.ranges[id]); if (!range) return <>; if (!range.active) return <>; - let shooterName = "- - - Frei - - -"; + let shooterName = "Nicht identifizierbar"; if (range.shooter) { - shooterName = `${range.shooter.lastName}, ${range.shooter.firstName}`; + if (range.shooter.type === "free") { + shooterName = "- - - Frei - - -"; + } else { + shooterName = `${range.shooter.lastName}, ${range.shooter.firstName}`; + } } return ( diff --git a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/name.tsx b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/name.tsx index a9776cfc..12ad725e 100644 --- a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/name.tsx +++ b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/name.tsx @@ -6,9 +6,12 @@ export default function Name({ id }: { id: number }): React.JSX.Element { const shooterName = useAppSelector((state) => { const range = state.ranges[id]; if (range && range.active && range.shooter) { + if (range.shooter.type === "free") { + return "- - - Frei - - -"; + } return `${range.shooter.firstName} ${range.shooter.lastName}`; } - return "- - - Frei - - -"; + return "Nicht identifizierbar"; }); return (
diff --git a/ranges/log/src/cache/shooter.ts b/ranges/log/src/cache/shooter.ts index a99f43b7..56c33a35 100644 --- a/ranges/log/src/cache/shooter.ts +++ b/ranges/log/src/cache/shooter.ts @@ -1,5 +1,5 @@ import { LocalClient } from "dc-db-local"; -import { isShooter, mergeMaps, isShooterId, isInternalShooterByName, InternalShooter, ShooterId, InternalShooterByName } from "dc-ranges-types"; +import { isShooter, mergeMaps, InternalShooter, ShooterId, InternalShooterByName } from "dc-ranges-types"; export const shooterMap = new Map(); @@ -17,35 +17,24 @@ export async function updateShooters(client: LocalClient) { if (shooter.value.id === null) { continue; } - shooterTempMap.set(shooter.value.id, { firstName: shooter.value.firstName, lastName: shooter.value.lastName }); + shooterTempMap.set(shooter.value.id, { type: "byName", firstName: shooter.value.firstName, lastName: shooter.value.lastName }); } mergeMaps(shooterMap, shooterTempMap); } export function isSameShooter(shooterOne: InternalShooter | null, shooterTwo: InternalShooter | null): boolean { - if (shooterOne === null && shooterTwo === null) { - return true; - } else if (shooterOne === null || shooterTwo === null) { - return false; + if (shooterOne === null || shooterTwo === null) return shooterOne === null && shooterTwo === null; + if (shooterOne.type === "free" || shooterTwo.type === "free") return shooterOne.type === shooterTwo.type; + + if (shooterOne.type === "byId" && shooterTwo.type === "byId") { + return shooterOne.id === shooterTwo.id; } - const isShooterOneById = isShooterId(shooterOne); - const isShooterTwoById = isShooterId(shooterTwo); - if (isShooterOneById && isShooterTwoById) { - return shooterOne === shooterTwo; - } else if (isInternalShooterByName(shooterOne) && isInternalShooterByName(shooterTwo)) { - return shooterOne.firstName === shooterTwo.firstName && shooterOne.lastName === shooterTwo.lastName; - } else if (isShooterOneById && isInternalShooterByName(shooterTwo)) { - const shooter = shooterMap.get(shooterOne); - if (!shooter) { - return false; - } - return shooter.firstName === shooterTwo.firstName && shooter.lastName === shooterTwo.lastName; - } else if (isShooterTwoById && isInternalShooterByName(shooterOne)) { - const shooter = shooterMap.get(shooterTwo); - if (!shooter) { - return false; - } - return shooter.firstName === shooterOne.firstName && shooter.lastName === shooterOne.lastName; + + const shooterOneByName = shooterOne.type === "byId" ? shooterMap.get(shooterOne.id) : shooterOne; + const shooterTwoByName = shooterTwo.type === "byId" ? shooterMap.get(shooterTwo.id) : shooterTwo; + if (!shooterOneByName || !shooterTwoByName) { + return false; } - return false; + + return shooterOneByName.firstName === shooterTwoByName.firstName && shooterOneByName.lastName === shooterTwoByName.lastName; } \ No newline at end of file diff --git a/ranges/log/src/streams/mergeRange.ts b/ranges/log/src/streams/mergeRange.ts index 5e3d86e1..01e21126 100644 --- a/ranges/log/src/streams/mergeRange.ts +++ b/ranges/log/src/streams/mergeRange.ts @@ -89,7 +89,7 @@ export class RangeMerger extends TypedTransform { } // If range is free and the last shot was more than freeTimeout ago, consider it free // Do not blacklist target, as the shooter might not have left the range yet - if (logState.shooter === null && logState.last_update.getTime() < Date.now() - this.freeTimeout) return null; + if ((logState.shooter === null || logState.shooter.type === "free") && logState.last_update.getTime() < Date.now() - this.freeTimeout) return null; // We now have a valid state to merge return { diff --git a/ranges/log/src/streams/rangeState.ts b/ranges/log/src/streams/rangeState.ts index d409e4a3..038ee85e 100644 --- a/ranges/log/src/streams/rangeState.ts +++ b/ranges/log/src/streams/rangeState.ts @@ -11,7 +11,7 @@ export class RangeStateStream extends TypedTransform(); +import { Shooter, isShooter, InternalShooter, RangeShooter, mergeMaps } from "dc-ranges-types"; +export const shooters = new Map(); export async function updateShooters(localClient: LocalClient) { const newShooters = await localClient.cache.findMany({ @@ -8,7 +8,7 @@ export async function updateShooters(localClient: LocalClient) { type: "shooter", }, }); - const shooterTempMap = new Map(); + const shooterTempMap = new Map(); for (const shooter of newShooters) { if (!isShooter(shooter.value)) { continue; @@ -16,19 +16,28 @@ export async function updateShooters(localClient: LocalClient) { if (shooter.value.id === null) { continue; } - shooterTempMap.set(shooter.value.id, shooter.value); + shooterTempMap.set(shooter.value.id, { + type: "occupied", + id: shooter.value.id, + firstName: shooter.value.firstName, + lastName: shooter.value.lastName, + }); } mergeMaps(shooters, shooterTempMap); } -export function getShooter(shooter: InternalShooter | null): Shooter | null { +export function getShooter(shooter: InternalShooter | null): RangeShooter | null { if (shooter == null) { // Range is free return null; } - if (isShooterId(shooter)) { - return structuredClone(shooters.get(shooter) ?? null); + if (shooter.type === "free") { + return { type: "free" }; + } + if (shooter.type == "byId") { + return structuredClone(shooters.get(shooter.id) ?? null); } return { + type: "occupied", id: null, firstName: shooter.firstName, lastName: shooter.lastName, diff --git a/ranges/merge/src/rangeMerger/merge.ts b/ranges/merge/src/rangeMerger/merge.ts index 02e7c950..91807d05 100644 --- a/ranges/merge/src/rangeMerger/merge.ts +++ b/ranges/merge/src/rangeMerger/merge.ts @@ -1,5 +1,5 @@ import { TTLHandler } from "dc-ranges-ttl"; -import { ActiveRange, InactiveRange, Source } from "dc-ranges-types"; +import { ActiveRange, InactiveRange, RangeShooter, Source } from "dc-ranges-types"; import { InternalRange, Discipline, Shooter, StartList, Hits, Hit } from "dc-ranges-types"; import { getDiscipline } from "../cache/disciplines"; import { getShooter } from "../cache/shooters"; @@ -22,7 +22,7 @@ function mergeDiscipline(sourceData: SourceData): Discipline | null { return getDiscipline(getFirstNotNull(disciplines) || null); } -function mergeShooter(sourceData: SourceData): Shooter | null { +function mergeShooter(sourceData: SourceData): RangeShooter | null { const shooters = sourceData.map((source) => source.getMessage()?.shooter); return getShooter(getFirstNotNull(shooters) || null); } diff --git a/ranges/multicast/src/cache/shooters.ts b/ranges/multicast/src/cache/shooters.ts index 38bdcfc2..539d2a16 100644 --- a/ranges/multicast/src/cache/shooters.ts +++ b/ranges/multicast/src/cache/shooters.ts @@ -24,11 +24,12 @@ export async function updatePotentialShooters(localClient: LocalClient) { const name = `${shooter.lastName}, ${shooter.firstName}`; const existing = shooters.get(name); if (!existing) { - shooters.set(name, shooter.id); + shooters.set(name, { type: "byId", id: shooter.id }); continue; } if (typeof existing === "number") { shooters.set(name, { + type: "byName", firstName: shooter.firstName, lastName: shooter.lastName }); diff --git a/ranges/multicast/src/streams/rangeDataConverter.ts b/ranges/multicast/src/streams/rangeDataConverter.ts index 6662bc6f..959671f5 100644 --- a/ranges/multicast/src/streams/rangeDataConverter.ts +++ b/ranges/multicast/src/streams/rangeDataConverter.ts @@ -1,6 +1,6 @@ import { TypedTransform } from "dc-streams" import { Candidate, CandidateDiscipline, isOverride, PacketCandidates } from "../types"; -import { InternalDiscipline, InternalRange } from "dc-ranges-types"; +import { InternalDiscipline, InternalRange, InternalShooter } from "dc-ranges-types"; import { logger } from "dc-logger"; export class RangeDataConverter extends TypedTransform { @@ -11,6 +11,16 @@ export class RangeDataConverter extends TypedTransform[]): InternalShooter | null { + if (candidates.length === 0) { + return { type: "free" }; + } + if (candidates.length > 1) { + return null; + } + return candidates[0].data; + } + private resolveDiscipline(candidates: Candidate[]): InternalDiscipline | null { const candidate = this.resolveCandidate(candidates); if (!candidate) { @@ -33,7 +43,7 @@ export class RangeDataConverter extends TypedTransform; @@ -88,7 +88,8 @@ export { UnsignedNumber, OverrideDiscipline, Shooter, - ShooterId + ShooterId, + RangeShooter } // The ShootMaster software represents a invalid hit as the maximum 32-bit integer value. diff --git a/ranges/types/src/shooter/index.ts b/ranges/types/src/shooter/index.ts index 8ca1f28e..10e75a21 100644 --- a/ranges/types/src/shooter/index.ts +++ b/ranges/types/src/shooter/index.ts @@ -1,17 +1,37 @@ -import { createIs } from "typia"; -import { Index, UnsignedInteger } from "../common/index.js"; +import { Index } from "../common/index.js"; export type ShooterId = Index; -export type Shooter = { - id: ShooterId | null; // Null = Can't be determined uniquely +type ShooterName = { firstName: string; lastName: string; } -export type InternalShooter = ShooterId | InternalShooterByName; +export type Shooter = { + id: ShooterId | null; // Null = Can't be determined uniquely +} & ShooterName; -export type InternalShooterByName = { - firstName: string, - lastName: string, +export type ShooterFree = { + type: "free"; +} + +export type ShooterOccupied = { + type: "occupied"; +} & Shooter; + +export type RangeShooter = ShooterFree | ShooterOccupied; + +export type InternalShooter = InternalShooterFree | InternalShooterById | InternalShooterByName; + +export type InternalShooterFree = { + type: "free"; } + +export type InternalShooterById = { + type: "byId"; + id: ShooterId; +} + +export type InternalShooterByName = { + type: "byName"; +} & ShooterName; From 211a487f6bc0d820ace11fbdbf90d58b7b1755e7 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 8 Mar 2026 15:10:08 +0100 Subject: [PATCH 15/31] feat: Add (dormant) extrapolation code --- frontend/package-lock.json | 64 +++++++++---------- frontend/package.json | 12 ++-- .../DrawTarget/ranges/range/index.tsx | 2 +- .../DrawTarget/ranges/range/total.tsx | 7 +- .../src/app/show/lib/ranges/accumulate.ts | 58 +++++++++++++++++ 5 files changed, 101 insertions(+), 42 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 91ec5071..5926e0e3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -11,10 +11,10 @@ "@emotion/cache": "^11.14.0", "@emotion/react": "^11.14.0", "@reduxjs/toolkit": "^2.11.2", - "@rjsf/core": "^6.3.1", - "@rjsf/react-bootstrap": "^6.3.1", - "@rjsf/utils": "^6.3.1", - "@rjsf/validator-ajv8": "^6.3.1", + "@rjsf/core": "^6.4.1", + "@rjsf/react-bootstrap": "^6.4.1", + "@rjsf/utils": "^6.4.1", + "@rjsf/validator-ajv8": "^6.4.1", "bootstrap": "^5.3.8", "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", @@ -24,7 +24,7 @@ "react": "^19.2.4", "react-bootstrap": "^2.10.10", "react-dom": "^19.2.4", - "react-icons": "^5.5.0", + "react-icons": "^5.6.0", "react-redux": "^9.2.0", "react-select": "^5.10.2", "react-shadow": "^20.6.0", @@ -32,7 +32,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", @@ -1112,9 +1112,9 @@ } }, "node_modules/@rjsf/core": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.3.1.tgz", - "integrity": "sha512-LTjFz5Fk3FlbgFPJ+OJi1JdWJyiap9dSpx8W6u7JHNB7K5VbwzJe8gIU45XWLHzWFGDHKPm89VrUzjOs07TPtg==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.4.1.tgz", + "integrity": "sha512-+QaiSgQnOuO6ghIsohH2u/QcylkN+Da2968a75g/i4oARYJRYVxXDm2u3JR5aXndpMb4t4jTFrYyG8cNIv6oEg==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -1127,14 +1127,14 @@ "node": ">=20" }, "peerDependencies": { - "@rjsf/utils": "^6.3.x", + "@rjsf/utils": "^6.4.x", "react": ">=18" } }, "node_modules/@rjsf/react-bootstrap": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@rjsf/react-bootstrap/-/react-bootstrap-6.3.1.tgz", - "integrity": "sha512-4CzdIaVtIAZRxs936u+f7Mz6KA3itOhAFlOA0VNd8HeNXkjmIJF3ybs/7/AtMupcPGyYolHBF2sZdUMhcsWdwg==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@rjsf/react-bootstrap/-/react-bootstrap-6.4.1.tgz", + "integrity": "sha512-cls64Q6uV+1x0HpEQ0jO4ZG2VAKG3ky0cjQckyIukxgyO6sFxUvz1qdfXZm+5DXXsj05mBAPKxkGtaW2CxmvTA==", "license": "MIT", "dependencies": { "@react-icons/all-files": "^4.1.0" @@ -1143,16 +1143,16 @@ "node": ">=20" }, "peerDependencies": { - "@rjsf/core": "^6.3.x", - "@rjsf/utils": "^6.3.x", + "@rjsf/core": "^6.4.x", + "@rjsf/utils": "^6.4.x", "react": ">=18", "react-bootstrap": "^2.x" } }, "node_modules/@rjsf/utils": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.3.1.tgz", - "integrity": "sha512-ve2KHl1ITYG8QIonnuK83/T1k/5NuxP4D1egVqP9Hz2ub28kgl0rNMwmRSxXs3WIbCcMW9g3ox+daVrbSNc4Mw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.4.1.tgz", + "integrity": "sha512-5NL3jwt3rIS5/WRTrKt++y40FS/ScKGVwYJ3jIrHSQHSwBdLnd4cHf2zcnA97L1Klj8I6tvS/ugh+blf/Diwuw==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -1171,9 +1171,9 @@ } }, "node_modules/@rjsf/validator-ajv8": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-6.3.1.tgz", - "integrity": "sha512-2RHDxBc0gBplPniau5UZj7aznpTelSBm1b3DNybok8L0NuIfmndbp9kNXgFuRvlyfsQSyYmZSBjbzeYqr0Hpcw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/@rjsf/validator-ajv8/-/validator-ajv8-6.4.1.tgz", + "integrity": "sha512-Gx28sRIV7E4CYs2c7BxOGLX44p5IlJE+IaD7GbVk1S+6TxDATqFBSYYZukLB+/vNk3urpndQMreQLKW3W7POHQ==", "license": "Apache-2.0", "dependencies": { "ajv": "^8.17.1", @@ -1185,7 +1185,7 @@ "node": ">=20" }, "peerDependencies": { - "@rjsf/utils": "^6.3.x" + "@rjsf/utils": "^6.4.x" } }, "node_modules/@socket.io/component-emitter": { @@ -1248,12 +1248,12 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.2.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.3.tgz", - "integrity": "sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==", + "version": "25.3.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", + "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", "license": "MIT", "dependencies": { - "undici-types": "~7.16.0" + "undici-types": "~7.18.0" } }, "node_modules/@types/parse-json": { @@ -2581,9 +2581,9 @@ } }, "node_modules/react-icons": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", - "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.6.0.tgz", + "integrity": "sha512-RH93p5ki6LfOiIt0UtDyNg/cee+HLVR6cHHtW3wALfo+eOHTp8RnU2kRkI6E+H19zMIs03DyxUG/GfZMOGvmiA==", "license": "MIT", "peerDependencies": { "react": "*" @@ -3139,9 +3139,9 @@ } }, "node_modules/undici-types": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", - "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "license": "MIT" }, "node_modules/update-browserslist-db": { diff --git a/frontend/package.json b/frontend/package.json index 89589ec4..57aba5d2 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,10 +12,10 @@ "@emotion/cache": "^11.14.0", "@emotion/react": "^11.14.0", "@reduxjs/toolkit": "^2.11.2", - "@rjsf/core": "^6.3.1", - "@rjsf/react-bootstrap": "^6.3.1", - "@rjsf/utils": "^6.3.1", - "@rjsf/validator-ajv8": "^6.3.1", + "@rjsf/core": "^6.4.1", + "@rjsf/react-bootstrap": "^6.4.1", + "@rjsf/utils": "^6.4.1", + "@rjsf/validator-ajv8": "^6.4.1", "bootstrap": "^5.3.8", "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", @@ -25,7 +25,7 @@ "react": "^19.2.4", "react-bootstrap": "^2.10.10", "react-dom": "^19.2.4", - "react-icons": "^5.5.0", + "react-icons": "^5.6.0", "react-redux": "^9.2.0", "react-select": "^5.10.2", "react-shadow": "^20.6.0", @@ -33,7 +33,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.2.3", + "@types/node": "^25.3.5", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", diff --git a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/index.tsx b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/index.tsx index 14e820f8..3eb8c4df 100644 --- a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/index.tsx +++ b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/index.tsx @@ -37,7 +37,7 @@ export default function Range({ highlightAssign, id }: DrawTargetRangeProps): Re - +
); } diff --git a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx index 04273911..00f63d3d 100644 --- a/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx +++ b/frontend/src/app/show/drawTarget/components/DrawTarget/ranges/range/total.tsx @@ -1,12 +1,13 @@ import styles from "./range.module.css" import { useAppSelector } from "../../ranges-store/store"; -import { getTotal } from "@frontend/app/show/lib/ranges/accumulate"; +import { getExtrapolated, getTotal } from "@frontend/app/show/lib/ranges/accumulate"; -export default function Total({ id }: { id: number }): React.JSX.Element { +export default function Total({ id, extrapolate }: { id: number, extrapolate: boolean }): React.JSX.Element { const total = useAppSelector((state => { const range = state.ranges[id]; if (!range || !range.active || !range.discipline) return null; - return getTotal(range.discipline.rounds[range.round], range.discipline.gauge, range.hits[range.round] || []); + const extrapolated = extrapolate ? ` (${getExtrapolated(range.discipline.rounds[range.round], range.hits[range.round] || [])}` : ""; + return getTotal(range.discipline.rounds[range.round], range.discipline.gauge, range.hits[range.round] || []) + extrapolated; })); if (total === null) return <>; return ( diff --git a/frontend/src/app/show/lib/ranges/accumulate.ts b/frontend/src/app/show/lib/ranges/accumulate.ts index 9400822d..d135b8c6 100644 --- a/frontend/src/app/show/lib/ranges/accumulate.ts +++ b/frontend/src/app/show/lib/ranges/accumulate.ts @@ -2,6 +2,7 @@ import { Hits, Round, UnsignedNumber } from "dc-ranges-types"; import smallestEnclosingCircle from "smallest-enclosing-circle"; import { floor, round as mRound } from "../math"; import { getHitsOfSeries, getLatestSeriesId } from "."; +import { getHitEval } from "./eval"; export function getSeries(round: Round | null, gauge: UnsignedNumber, hits: Hits): Array { if (!round) return []; @@ -16,6 +17,63 @@ export function getSeries(round: Round | null, gauge: UnsignedNumber, hits: Hits return series; } +export function getExtrapolated(round: Round | null, hits: Hits): string | null { + // This does not use the same extrapolation method as the ShootMaster system, + // but it provides a reasonable estimate. + + const MIN_HITS_FOR_EXTRAPOLATION = 8; + + if (!round) return null; + if (!round.counts) return null; + + const mode = round.mode.mode; + if (mode != "rings" && mode != "ringsDiv" && mode != "hundred" && mode != "decimal" && mode != "integerDecimal") return null; + + if (hits.length == 0) return null; + if (hits.length >= round.maxHits) return null; + + const validHits = hits.filter((hit) => hit.valid); + if (validHits.length < MIN_HITS_FOR_EXTRAPOLATION) { + return null; + } + + let hitValues: number[] = []; + let decimals: number = 0; + switch (round.mode.mode) { + case "rings": + case "ringsDiv": + decimals = round.mode.decimals; + hitValues = validHits.map((hit) => floor(hit.rings, decimals)); + break; + case "hundred": + decimals = 0; + hitValues = validHits.map((hit) => Math.floor(hit.rings) * 10); + break; + case "decimal": + decimals = 0; + hitValues = validHits.map((hit) => Math.floor(hit.rings * 10) % 10); + break; + case "integerDecimal": + decimals = 0; + hitValues = validHits.map((hit) => { + const integer = Math.floor(hit.rings); + const decimal = Math.floor((hit.rings - integer) * 10); + return integer * decimal; + }); + break; + default: + return null; + } + + const sum = hitValues.reduce((sum, value) => sum + value, 0); + + const average = sum / hitValues.length; + + const extrapolatedValue = sum + average * (round.maxHits - hits.length); + + return mRound(extrapolatedValue, decimals || 0).toFixed(decimals || 0); +} + export function getTotal(round: Round | null, gauge: UnsignedNumber, hits: Hits): string { if (!round) return "0"; return accumulateHits(hits, round, gauge, true); From f5c9099e66213de71e14d0268bd4dd6ad6efd436 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 8 Mar 2026 21:31:15 +0100 Subject: [PATCH 16/31] fix: Database unhealthy detection --- database/smdb/schema.prisma | 17 +++++++---------- serverState/src/checkServer.ts | 7 +++---- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/database/smdb/schema.prisma b/database/smdb/schema.prisma index 9a3d7693..3ba96999 100644 --- a/database/smdb/schema.prisma +++ b/database/smdb/schema.prisma @@ -660,11 +660,11 @@ model Shooter { image Bytes? @map("SchuetzenFoto") @db.MediumBlob shooterFilters FilterShooter[] - club Club @relation(fields: [clubId], references: [id], map: "Schuetze_ibfk_1") - nation Country @relation(fields: [nationShort], references: [short], map: "Schuetze_ibfk_2") + club Club @relation(fields: [clubId], references: [id], map: "Schuetze_ibfk_1") + nation Country @relation(fields: [nationShort], references: [short], map: "Schuetze_ibfk_2") seedingLists SeedingList[] startListEntry StartListEntry[] - clubShooters Vereinszuordnung[] + clubShooters ClubAssoc[] @@index([nationShort], map: "LandesKuerzel") @@index([lastName], map: "Nachname") @@ -804,14 +804,14 @@ model Club { teams Team[] shooters Shooter[] startListEntries StartListEntry[] - union Union @relation(fields: [unionId], references: [id], map: "Verein_ibfk_1") - clubShooter Vereinszuordnung[] + union Union @relation(fields: [unionId], references: [id], map: "Verein_ibfk_1") + clubShooter ClubAssoc[] @@index([unionId], map: "VerbandsID") @@map("Verein") } -model Vereinszuordnung { +model ClubAssoc { shooterId BigInt @map("SportpassID") clubId Int @map("VereinsID") @@ -823,11 +823,8 @@ model Vereinszuordnung { @@map("Vereinszuordnung") } -// Contains version numbers of the database model Version { - Versionsnummer Int - - @@ignore + version Int @unique @map("Versionsnummer") @db.Int } model Zeit { diff --git a/serverState/src/checkServer.ts b/serverState/src/checkServer.ts index 1d33fab8..9c60b5ce 100644 --- a/serverState/src/checkServer.ts +++ b/serverState/src/checkServer.ts @@ -89,7 +89,6 @@ function checkServerCompatibility(serverState: AdvServerState): boolean { return false; } if (!serverState.services.smdb) { - logger.warn("SMDB service is not available"); return false; } if (!process.env.MAX_SM_VERSION || !process.env.MIN_SM_VERSION) { @@ -119,12 +118,12 @@ function checkServerCompatibility(serverState: AdvServerState): boolean { async function checkDatabaseAvailability(): Promise { const client = await createSMDBClient(prismaClient); try { - await client.$connect(); - await client.$disconnect(); + await client.version.findFirst(); return true; } catch (e) { - logger.error("Error while checking database availability: " + e); return false; + } finally { + await client.$disconnect().catch(); } } \ No newline at end of file From ddf60bbb1942badd4756078dc57292a5bbe86599 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 14 Mar 2026 17:46:35 +0100 Subject: [PATCH 17/31] fix: Dropping range state updates --- ranges/merge/src/rangeMan/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ranges/merge/src/rangeMan/index.ts b/ranges/merge/src/rangeMan/index.ts index 3859b7bc..c8284c0a 100644 --- a/ranges/merge/src/rangeMan/index.ts +++ b/ranges/merge/src/rangeMan/index.ts @@ -45,8 +45,8 @@ export class RangeManager { logger.error("Namespace not set in RangeManager"); return; } - this.namespace.to(`range:${data.id}`).volatile.emit('data', data); - this.namespace.to('all').volatile.emit('data', data); + this.namespace.to(`range:${data.id}`).emit('data', data); + this.namespace.to('all').emit('data', data); } public getRangeData(rangeId: number): Range { From cd8052b60674972bd841a6d39af5f3e885b25570 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 14 Mar 2026 17:46:48 +0100 Subject: [PATCH 18/31] fix: Log not working on free ranges --- ranges/log/src/streams/rangeState.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ranges/log/src/streams/rangeState.ts b/ranges/log/src/streams/rangeState.ts index 038ee85e..37e20df8 100644 --- a/ranges/log/src/streams/rangeState.ts +++ b/ranges/log/src/streams/rangeState.ts @@ -99,7 +99,7 @@ export class RangeStateStream extends TypedTransform Date: Sat, 14 Mar 2026 17:49:37 +0100 Subject: [PATCH 19/31] fix: SSMDB2 Stabilizer --- ranges/ssmdb2/src/index.ts | 15 +- .../src/streams/{rangeData.ts => dbQuery.ts} | 17 +-- .../ssmdb2/src/streams/rangeDataTranslator.ts | 26 ++++ ranges/ssmdb2/src/streams/rangeStabilizer.ts | 132 +++++++++++++----- ranges/ssmdb2/src/types.ts | 11 +- 5 files changed, 142 insertions(+), 59 deletions(-) rename ranges/ssmdb2/src/streams/{rangeData.ts => dbQuery.ts} (84%) create mode 100644 ranges/ssmdb2/src/streams/rangeDataTranslator.ts diff --git a/ranges/ssmdb2/src/index.ts b/ranges/ssmdb2/src/index.ts index 99d8f7ca..aa5f2d40 100644 --- a/ranges/ssmdb2/src/index.ts +++ b/ranges/ssmdb2/src/index.ts @@ -1,11 +1,12 @@ import { createSSMDB2Client } from "dc-db-ssmdb2"; import "./cache/updater"; // Import the cache updater import { TableWatcherStream } from "./streams/tableWatcher"; -import { RangeDataStream } from "./streams/rangeData"; import { StabilizerStream } from "./streams/rangeStabilizer"; -import { DebounceTransform, RabbitMqWriter } from "dc-streams"; -import { SSMDB2InternalRange } from "./types"; +import { RabbitMqWriter } from "dc-streams"; import amqp from "amqplib"; +import { InternalRange } from "dc-ranges-types"; +import { DbQueryStream } from "./streams/dbQuery"; +import { RangeDataTranslator } from "./streams/rangeDataTranslator"; async function main() { const connection = await amqp.connect("amqp://rabbitmq"); @@ -17,10 +18,10 @@ async function main() { 100, 30000, ) - .pipe(new RangeDataStream(ssmdb2Client)) - .pipe(new StabilizerStream(20000)) - .pipe(new DebounceTransform((value: SSMDB2InternalRange) => value.rangeId.toString(), 500)) - .pipe(new RabbitMqWriter(connection, ["ranges.ssmdb2"], (value: SSMDB2InternalRange) => value.rangeId.toString())); + .pipe(new DbQueryStream(ssmdb2Client)) + .pipe(new StabilizerStream(3000, 20000)) + .pipe(new RangeDataTranslator()) + .pipe(new RabbitMqWriter(connection, ["ranges.ssmdb2"], (value: InternalRange) => value.rangeId.toString())); } main(); diff --git a/ranges/ssmdb2/src/streams/rangeData.ts b/ranges/ssmdb2/src/streams/dbQuery.ts similarity index 84% rename from ranges/ssmdb2/src/streams/rangeData.ts rename to ranges/ssmdb2/src/streams/dbQuery.ts index a569b8c8..b2f2f8c9 100644 --- a/ranges/ssmdb2/src/streams/rangeData.ts +++ b/ranges/ssmdb2/src/streams/dbQuery.ts @@ -1,13 +1,12 @@ import { TransformCallback } from "stream"; import { Ssmdb2Client } from "dc-db-ssmdb2"; import { Hits, INVALID_HIT_POS, UnsignedInteger } from "dc-ranges-types"; -import { getDisciplineId } from "../cache/disciplines"; import { logger } from "dc-logger"; import { getLocalMs } from "../utils"; import { SSMDB2InternalRange } from "../types"; import { TypedTransform } from "dc-streams"; -export class RangeDataStream extends TypedTransform { +export class DbQueryStream extends TypedTransform { private readonly prisma: Ssmdb2Client; private readonly timeoutMs: number; @@ -74,14 +73,9 @@ export class RangeDataStream extends TypedTransform= INVALID_HIT_POS[0] && hit.y >= INVALID_HIT_POS[1]) { result[roundId]?.push({ @@ -121,6 +115,5 @@ export class RangeDataStream extends TypedTransform round?.sort((a, b) => a.id - b.id)) - .map((round) => (round === undefined ? [] : round)); } } diff --git a/ranges/ssmdb2/src/streams/rangeDataTranslator.ts b/ranges/ssmdb2/src/streams/rangeDataTranslator.ts new file mode 100644 index 00000000..d3bc5559 --- /dev/null +++ b/ranges/ssmdb2/src/streams/rangeDataTranslator.ts @@ -0,0 +1,26 @@ +import { TypedTransform } from "dc-streams"; +import { SSMDB2InternalRange } from "../types"; +import { InternalRange } from "dc-ranges-types"; +import { TransformCallback } from "node:stream"; +import { getDisciplineId } from "../cache/disciplines"; + +export class RangeDataTranslator extends TypedTransform { + + _transform( + chunk: SSMDB2InternalRange, + encoding: BufferEncoding, + callback: TransformCallback, + ): void { + const translated: InternalRange = { + rangeId: chunk.rangeId, + startListId: chunk.startListId, + shooter: chunk.shooter ? { type: "byId", id: chunk.shooter } : { type: "free" }, + hits: chunk.hits, + discipline: getDisciplineId(chunk.disciplineId, chunk.hits.length - 1), + source: "ssmdb2", + ttl: 25000, + } + this.push(translated); + callback(); + } +} diff --git a/ranges/ssmdb2/src/streams/rangeStabilizer.ts b/ranges/ssmdb2/src/streams/rangeStabilizer.ts index 1192cbb7..2cfe7eaa 100644 --- a/ranges/ssmdb2/src/streams/rangeStabilizer.ts +++ b/ranges/ssmdb2/src/streams/rangeStabilizer.ts @@ -4,18 +4,53 @@ import { logger } from "dc-logger"; import { SSMDB2InternalRange } from "../types"; import { TypedTransform } from "dc-streams"; -type RangeStabilize = { +type StableCandidate = { data: SSMDB2InternalRange; + hash: string; timeout: NodeJS.Timeout; +} + +type RangeStabilize = { + stable: StableCandidate; + candidate?: StableCandidate; }; export class StabilizerStream extends TypedTransform { private readonly ranges: Map = new Map(); private readonly resetTime: number; + private readonly candidateAcceptTime: number; - constructor(resetTime: number) { + constructor(candidateAcceptTime: number, resetTime: number) { super(); this.resetTime = resetTime; + this.candidateAcceptTime = candidateAcceptTime; + } + + private hashRange(range: SSMDB2InternalRange): string { + return JSON.stringify(range); + } + + private isMoreHits(oldRange: SSMDB2InternalRange, newRange: SSMDB2InternalRange): boolean { + const newHits = newRange.hits; + const oldHits = oldRange.hits; + if (newHits.length > oldHits.length) { + return true; + } + if (newHits.length < oldHits.length) { + return false; + } + for (let i = 0; i < newHits.length; i++) { + if (oldHits[i] === undefined && newHits[i].length > 0) { + return true; + } + if (oldHits[i] === undefined && newHits[i] === undefined) { + continue; + } + if (newHits[i].length > oldHits[i].length) { + return true; + } + } + return false; } _transform( @@ -24,49 +59,72 @@ export class StabilizerStream extends TypedTransform { - this.ranges.delete(chunk.targetId); - }, this.resetTime), + stable: { + data: chunk, + hash: this.hashRange(chunk), + timeout: setTimeout(() => { + this.ranges.delete(chunk.targetId); + }, this.resetTime), + } }); + this.push(structuredClone(chunk)); + callback(); + return; } - let changed = false; - const existingData = structuredClone( - this.ranges.get(chunk.targetId)!.data, - ); - for (let i = 0; i < chunk.hits.length; i++) { - const existingHits = existingData.hits[i]; - if (!existingHits) continue; - const newHitsLength = chunk.hits[i]?.length || 0; - if (existingHits.length > newHitsLength) { - chunk.hits[i] = existingHits; - changed = true; - logger.debug( - `Restored missing hits for range ${chunk.rangeId}, round ${i}`, - ); + + const stable = entry.stable; + + if (this.isMoreHits(stable.data, chunk)) { + logger.info(`Accepting new range ${chunk.rangeId} with more hits (${chunk.hits.flat().length} hits) than stable range (${stable.data.hits.flat().length} hits)`); + stable.data.hits = chunk.hits; + stable.hash = this.hashRange(stable.data); + stable.timeout.refresh(); + if (entry.candidate) { + clearTimeout(entry.candidate.timeout); + delete entry.candidate; } + this.push(structuredClone(stable.data)); + callback(); + return; } - if ( - chunk.discipline && - existingData.discipline && - chunk.discipline.roundId < existingData.discipline.roundId - ) { - chunk.discipline.roundId = existingData.discipline.roundId; - changed = true; - logger.debug(`Restored roundId for range ${chunk.rangeId}`); + + const chunkHash = this.hashRange(chunk); + + if (stable.hash === chunkHash) { + stable.timeout.refresh(); + if (entry.candidate) { + clearTimeout(entry.candidate.timeout); + delete entry.candidate; + } + this.push(structuredClone(stable.data)); + callback(); + return; } - if (!changed) { - clearTimeout(this.ranges.get(chunk.targetId)!.timeout); - this.ranges.set(chunk.targetId, { + + if (!entry.candidate) { + entry.candidate = { data: chunk, + hash: chunkHash, timeout: setTimeout(() => { - this.ranges.delete(chunk.targetId); - }, this.resetTime), - }); + if (entry.candidate) { + entry.stable.data = structuredClone(entry.candidate.data); + entry.stable.hash = entry.candidate.hash; + delete entry.candidate; + stable.timeout.refresh(); + this.push(structuredClone(entry.stable.data)); + } + }, this.candidateAcceptTime), + }; + } else { + entry.candidate.data = chunk; + entry.candidate.hash = chunkHash; + entry.candidate.timeout.refresh(); } - this.push(chunk); + this.push(structuredClone(stable.data)); callback(); + return; } -} +} \ No newline at end of file diff --git a/ranges/ssmdb2/src/types.ts b/ranges/ssmdb2/src/types.ts index 1a4b7ff4..b60c12a1 100644 --- a/ranges/ssmdb2/src/types.ts +++ b/ranges/ssmdb2/src/types.ts @@ -1,5 +1,10 @@ -import { InternalRange, UnsignedInteger } from "dc-ranges-types"; +import { Hits, Index, UnsignedInteger } from "dc-ranges-types"; -export type SSMDB2InternalRange = InternalRange & { +export type SSMDB2InternalRange = { + rangeId: Index; + startListId: Index; + disciplineId: Index; + hits: Array; + shooter: Index | null; targetId: UnsignedInteger; -}; +}; \ No newline at end of file From 00b3b25b5dc32b4a585113cdc776807eb21258f6 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:16:07 +0100 Subject: [PATCH 20/31] fix: Height of the range grid --- .../components/Ranges/Grid/grid.module.css | 27 +++++++++++++------ .../app/show/components/Ranges/Grid/index.tsx | 8 +++--- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/frontend/src/app/show/components/Ranges/Grid/grid.module.css b/frontend/src/app/show/components/Ranges/Grid/grid.module.css index ce81c8fd..d3879f71 100644 --- a/frontend/src/app/show/components/Ranges/Grid/grid.module.css +++ b/frontend/src/app/show/components/Ranges/Grid/grid.module.css @@ -2,19 +2,30 @@ div.grid { width: 100%; height: 100%; position: relative; - --border-width: calc(var(--height) *0.005); + + --border-width: calc(var(--height) * 0.005); + display: grid; - padding-bottom: var(--border-width); - padding-right: var(--border-width); + grid-template-rows: repeat(var(--rows, 1), 1fr); + grid-template-columns: repeat(var(--columns, 1), 1fr); + + font-size: calc(calc(var(--height, 0px) * var(--font-height-ratio)) / var(--rows, 1)); + + border: var(--border-width) solid #888; + gap: var(--border-width); + background: #888; } + div.grid>div { - border: var(--border-width) solid transparent; - height: calc(100% + var(--border-width)); - width: calc(100% + var(--border-width)); + height: 100%; + width: 100%; position: relative; + + background: white; } -div.grid>div:not(:empty) { - border-color: #888; +div.grid>div:empty { + padding-top: var(--border-width); + background: white; } \ No newline at end of file diff --git a/frontend/src/app/show/components/Ranges/Grid/index.tsx b/frontend/src/app/show/components/Ranges/Grid/index.tsx index 8aedf6f7..296ae446 100644 --- a/frontend/src/app/show/components/Ranges/Grid/index.tsx +++ b/frontend/src/app/show/components/Ranges/Grid/index.tsx @@ -13,10 +13,10 @@ export default function Grid({ rows, columns, children, className }: GridProps): return (
+ "--rows": rows, + "--columns": columns, + } as React.CSSProperties + } className={styles.grid}> {children}
From ac3191b7b37e81eebf6139c6a62746fa3390f331 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 14 Mar 2026 20:44:26 +0100 Subject: [PATCH 21/31] fix: AhoCorasick returns the end position, not the start --- ranges/multicast/src/streams/candidates.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/ranges/multicast/src/streams/candidates.ts b/ranges/multicast/src/streams/candidates.ts index c62db2d7..94ac9cde 100644 --- a/ranges/multicast/src/streams/candidates.ts +++ b/ranges/multicast/src/streams/candidates.ts @@ -21,10 +21,11 @@ export class CandidateExtractor extends TypedTransform ({ - start: position, - end, + start, + end: position, data: candidateData, match: needle }))); @@ -40,6 +41,10 @@ export class CandidateExtractor extends TypedTransform c.match).join(", ")}`); + logger.debug(`Found ${startListCandidates.length} start list candidates: ${startListCandidates.map(c => c.match).join(", ")}`); + logger.debug(`Found ${shooterCandidates.length} shooter candidates: ${shooterCandidates.map(c => c.match).join(", ")}`); + const candidates: PacketCandidates = { id: chunk.id, disciplineCandidates, From 1874523d6b53c5bf930501ed8eb96bfad66984a2 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 14 Mar 2026 23:10:44 +0100 Subject: [PATCH 22/31] feat: Switch to more sophisticated constraint solver for multicast Resolves #200 (I hope this works) --- ranges/multicast/src/cache/startlists.ts | 29 ++- ranges/multicast/src/index.ts | 8 +- ranges/multicast/src/streams/candidates.ts | 7 +- .../multicast/src/streams/constraintSolver.ts | 178 ++++++++++++++++++ .../src/streams/longestMatchReducer.ts | 28 +-- ranges/multicast/src/streams/overlapFilter.ts | 32 +++- .../src/streams/rangeDataConverter.ts | 54 +++--- ranges/multicast/src/types.ts | 11 +- 8 files changed, 294 insertions(+), 53 deletions(-) create mode 100644 ranges/multicast/src/streams/constraintSolver.ts diff --git a/ranges/multicast/src/cache/startlists.ts b/ranges/multicast/src/cache/startlists.ts index 56ff987f..efee1714 100644 --- a/ranges/multicast/src/cache/startlists.ts +++ b/ranges/multicast/src/cache/startlists.ts @@ -1,4 +1,4 @@ -import { isStartList } from "dc-ranges-types"; +import { Index, isOverrideDiscipline, isStartList } from "dc-ranges-types"; import { CandidateStartList, Matcher } from "../types"; import { LocalClient } from "dc-db-local"; import { createMatcher } from "./matcher"; @@ -8,6 +8,8 @@ export let potentialStartLists: Matcher = createMatcher(new export async function updatePotentialStartLists(localClient: LocalClient) { const startLists: Map = new Map(); + const overrideStartListIds = await getStartListOverrideSet(localClient); + const startListData = await localClient.cache.findMany({ where: { type: "startList" @@ -26,8 +28,31 @@ export async function updatePotentialStartLists(localClient: LocalClient) { entry = []; startLists.set(startList.name, entry); } - entry.push(startList.id); + entry.push({ + id: startList.id, + hasOverrideDisciplines: overrideStartListIds.has(startList.id) + }); } potentialStartLists = createMatcher(startLists); +} + +async function getStartListOverrideSet(localClient: LocalClient): Promise> { + const overrideSet = new Set(); + const overrides = await localClient.cache.findMany({ + where: { + type: "overrideDiscipline" + } + }); + for (const override of overrides) { + if (!override.value) { + continue; + } + const overrideData = override.value; + if (!isOverrideDiscipline(overrideData)) { + continue; + } + overrideSet.add(overrideData.startListId); + } + return overrideSet; } \ No newline at end of file diff --git a/ranges/multicast/src/index.ts b/ranges/multicast/src/index.ts index f235ef43..c799f544 100644 --- a/ranges/multicast/src/index.ts +++ b/ranges/multicast/src/index.ts @@ -4,10 +4,11 @@ import { isRangeProxy } from "../proxy/src/types"; import { RangeIdentifier } from './streams/rangeId'; import { createLocalClient } from 'dc-db-local'; import { CandidateExtractor } from './streams/candidates'; -import { LongestMatchReducer } from './streams/longestMatchReducer'; import { RangeDataConverter } from './streams/rangeDataConverter'; import { InternalRange } from 'dc-ranges-types'; import "./cache"; +import { ConstraintSolver } from './streams/constraintSolver'; +import { ContainedCandidatesFilter } from './streams/overlapFilter'; async function main() { const localClient = await createLocalClient(); @@ -18,12 +19,13 @@ async function main() { const rangeIdentifier = new RangeIdentifier(localClient); const candidateExtractor = new CandidateExtractor(); - const longestMatchReducer = new LongestMatchReducer(); + const overlapFilter = new ContainedCandidatesFilter(); + const constraintSolver = new ConstraintSolver(); const rangeDataConverter = new RangeDataConverter(); const sender = new RabbitMqWriter(connection, ["ranges.multicast"], (range) => range.rangeId.toString()); - receiver.pipe(rangeIdentifier).pipe(candidateExtractor).pipe(longestMatchReducer).pipe(rangeDataConverter).pipe(sender); + receiver.pipe(rangeIdentifier).pipe(candidateExtractor).pipe(overlapFilter).pipe(constraintSolver).pipe(rangeDataConverter).pipe(sender); } main() \ No newline at end of file diff --git a/ranges/multicast/src/streams/candidates.ts b/ranges/multicast/src/streams/candidates.ts index 94ac9cde..9d971743 100644 --- a/ranges/multicast/src/streams/candidates.ts +++ b/ranges/multicast/src/streams/candidates.ts @@ -36,14 +36,15 @@ export class CandidateExtractor extends TypedTransform c.match).join(", ")}`); - logger.debug(`Found ${startListCandidates.length} start list candidates: ${startListCandidates.map(c => c.match).join(", ")}`); - logger.debug(`Found ${shooterCandidates.length} shooter candidates: ${shooterCandidates.map(c => c.match).join(", ")}`); + logger.debug(`Found ${disciplineCandidates.length} discipline candidates: ${disciplineCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`Found ${startListCandidates.length} start list candidates: ${startListCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`Found ${shooterCandidates.length} shooter candidates: ${shooterCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); const candidates: PacketCandidates = { id: chunk.id, diff --git a/ranges/multicast/src/streams/constraintSolver.ts b/ranges/multicast/src/streams/constraintSolver.ts new file mode 100644 index 00000000..4238fcad --- /dev/null +++ b/ranges/multicast/src/streams/constraintSolver.ts @@ -0,0 +1,178 @@ +import { TypedTransform } from "dc-streams"; +import { Candidate, CandidateDiscipline, CandidateOverrideDiscipline, CandidateStartList, isOverride, PacketCandidates, ResolvedPacketCandidates } from "../types"; +import { TransformCallback } from "node:stream"; +import { StartList } from "dc-ranges-types"; +import { logger } from "dc-logger"; + +export class ConstraintSolver extends TypedTransform { + private removeOverlaps(candidates: Candidate[], toRemove: Candidate): Candidate[] { + // Remove candidates that overlap with toRemove + return candidates.filter(candidate => candidate.end <= toRemove.start || candidate.start >= toRemove.end); + } + + private hasAnyOverlaps(candidates: PacketCandidates, b: Candidate): boolean { + return candidates.disciplineCandidates.some(candidate => !(candidate.end <= b.start || candidate.start >= b.end)) || + candidates.startListCandidates.some(candidate => !(candidate.end <= b.start || candidate.start >= b.end)) || + candidates.shooterCandidates.some(candidate => !(candidate.end <= b.start || candidate.start >= b.end)); + } + + private resolveCandidate( + candidates: ResolvedPacketCandidates, + key: K, + candidate: Candidate, + ): ResolvedPacketCandidates { + logger.debug(`Resolving ${key} to ${candidate.match} based on candidate at position (${candidate.start},${candidate.end})`); + // print remaining candidates after filtering + const filteredDisciplineCandidates = key === "discipline" ? [] : this.removeOverlaps(candidates.disciplineCandidates, candidate); + const filteredStartListCandidates = key === "startList" ? [] : this.removeOverlaps(candidates.startListCandidates, candidate); + const filteredShooterCandidates = key === "shooter" ? [] : this.removeOverlaps(candidates.shooterCandidates, candidate); + logger.debug(`Remaining discipline candidates after resolving ${key}: ${filteredDisciplineCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`Remaining start list candidates after resolving ${key}: ${filteredStartListCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`Remaining shooter candidates after resolving ${key}: ${filteredShooterCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + return { + ...candidates, + [key]: candidate.data, + disciplineCandidates: filteredDisciplineCandidates, + startListCandidates: filteredStartListCandidates, + shooterCandidates: filteredShooterCandidates + } as ResolvedPacketCandidates; + } + + private resolveStartList(candidates: ResolvedPacketCandidates): ResolvedPacketCandidates { + if (candidates.startListCandidates.length === 1) { + //logger.debug(`Only one start list candidate remains, resolving to ${candidates.startListCandidates[0].match}`); + const candidate = candidates.startListCandidates[0]; + return this.resolveCandidate(candidates, "startList", candidate); + } + // if all remaining start list candidates point to the same start list (and they have no overlaps with candidates of other types), this start list is selected as the identified start list, as it is likely that the different candidates are just different parts of the same start list name. This reflects the domain observation, that, while technically possible, it is unlikely for a range to contain multiple different start lists, as this would usually indicate a misconfiguration of the range. + + const candidatesWithoutStartListCandidates = { + ...candidates, + startListCandidates: [] // This should ignore any start list candidates in the overlap check, as we want to check if any start list candidate overlaps with candidates of other types. + }; + const startListIds = new Set(candidates.startListCandidates.map(candidate => candidate.data.id)); + if (startListIds.size === 1 && !candidates.startListCandidates.some(candidate => this.hasAnyOverlaps(candidatesWithoutStartListCandidates, candidate))) { + const candidate = candidates.startListCandidates[0]; + return this.resolveCandidate(candidates, "startList", candidate); + } + return candidates; + } + + private filterDisciplinesByStartList(candidates: ResolvedPacketCandidates): Candidate[] { + const startLists = candidates.startListCandidates.map(candidate => candidate.data); + if (candidates.startList) { + startLists.push(candidates.startList); + } + const disciplineCandidates = candidates.disciplineCandidates; + if (startLists.length === 0) { + return disciplineCandidates; + } + + const overrideStartListIds = startLists + .filter(candidate => candidate.hasOverrideDisciplines) + .map(candidate => candidate.id); + const overrideStartListIdsSet = new Set(overrideStartListIds); + + // Check if all identified start list candidates are price shooting start lists + if (overrideStartListIds.length === startLists.length) { + // If all identified start list candidates are price shooting start lists, only retain discipline candidates that belong to specializations of these price shootings or base disciplines, as these are the only disciplines that can be used in price shooting contexts + return disciplineCandidates.filter(candidate => { + const discipline = candidate.data; + return !isOverride(discipline) || overrideStartListIdsSet.has(discipline.startListId); + }); + } + + if (overrideStartListIds.length === 0) { + // If none of the identified start list candidates are price shooting start lists, only retain discipline candidates that do not belong to any price shooting specialization, as these are the only disciplines that can be used in non-price shooting contexts + return disciplineCandidates.filter(candidate => { + const discipline = candidate.data; + return !isOverride(discipline) // Only specialization disciplines have a startListId + }); + } + // If there is a mix of price shooting and non-price shooting start list candidates, no discipline candidates can be safely removed, as it is unclear which start list candidate is correct + return disciplineCandidates; + } + + private resolveDiscipline(candidates: ResolvedPacketCandidates): ResolvedPacketCandidates { + if (candidates.discipline) { + return candidates; + } + const disciplineCandidates = this.filterDisciplinesByStartList(candidates); + logger.debug(`After filtering disciplines by start list, ${disciplineCandidates.length} discipline candidates remain: ${disciplineCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + if (disciplineCandidates.length === 1) { + // If, after contextual filtering, exactly one discipline candidate remains, it is accepted as the identified discipline. + const discipline = disciplineCandidates[0]; + return this.resolveCandidate(candidates, "discipline", discipline); + } + // This combination is only considered, if none of the remaining discipline candidates overlap with candidates of other entity types. If such overlaps exist, no combination logic is applied, as removing candidates could discard important contextual information. + const filteredCandidates = { + ...candidates, + disciplineCandidates: [] // This should ignore any discipline candidates in the overlap check, as we want to check if any discipline candidate overlaps with candidates of other types. + } + if (disciplineCandidates.some(candidate => this.hasAnyOverlaps(filteredCandidates, candidate))) { + logger.debug(`Multiple discipline candidates remain, but at least one overlaps with candidates of other types, cannot resolve discipline`); + return filteredCandidates; + } + + // - If all specialization candidates point to the same specialization and this specialization belongs to the start list (or any of the start list candidates, as identified above), the specialization is selected as the final discipline. This reflects the domain observation, that, while technically possible, it is unlikely for a non-specialized discipline to be used in combination with a price shooting + // We do not need to check for start lists here, as the filtering is done in the filterDisciplinesByStartList + const specializationCandidates = disciplineCandidates.filter(candidate => isOverride(candidate.data)) as unknown as Array>; + if (specializationCandidates.length > 0) { + const specializationIds = new Set(specializationCandidates.map(candidate => candidate.data.overrideId)); + if (specializationIds.size === 1) { + logger.debug(`Multiple specialization candidates remain, but they all belong to the same specialization, resolving to ${specializationCandidates[0].match} (${specializationCandidates[0].data.overrideId})`); + const specializationCandidate = specializationCandidates[0]; + return this.resolveCandidate(candidates, "discipline", specializationCandidate); + } + } + + // - Otherwise, the base discipline is selected as the identified discipline. This fallback is considered safe, as specializations only affect presentation attributes such as name, identifier or color. Falling back to the base discipline therefore does not result in a loss of critical information + const baseDisciplineIds = new Set(disciplineCandidates.map(candidate => candidate.data.disciplineId)); + if (baseDisciplineIds.size === 1) { + const baseDisciplineId = baseDisciplineIds.values().next().value; + logger.debug(`Multiple discipline candidates remain, but they all belong to the same base discipline, resolving to ${baseDisciplineId}`); + const baseDisciplineCandidate = disciplineCandidates.find(candidate => !isOverride(candidate.data)) || disciplineCandidates[0]; // If there is no base discipline candidate, which can happen if all discipline candidates are specializations of the same base discipline, just take any candidate, as they all belong to the same base discipline + return this.resolveCandidate(candidates, "discipline", baseDisciplineCandidate); + } + + // If there is no discipline candidate, which is a possible - but invalid - state of the range, the discipline is reported as empty. This can happen, for example, if the range uses a discipline that is not known to the ShootMaster server, which is possible as the range maintains its own discipline list that can be different from the one on the server. + return candidates; + } + + private resolveShooter(candidates: ResolvedPacketCandidates): ResolvedPacketCandidates { + if (candidates.shooterCandidates.length === 1) { + const candidate = candidates.shooterCandidates[0]; + return this.resolveCandidate(candidates, "shooter", candidate); + } + return candidates; + } + + _transform(chunk: PacketCandidates, encoding: BufferEncoding, callback: TransformCallback): void { + let candidates: ResolvedPacketCandidates = { + ...chunk, + discipline: null, + startList: null, + shooter: null + }; + + // First pass + candidates = this.resolveStartList(candidates); + candidates = this.resolveDiscipline(candidates); + candidates = this.resolveShooter(candidates); + + // Second pass to catch any new resolutions that were made possible by the first pass + candidates = this.resolveStartList(candidates); + candidates = this.resolveDiscipline(candidates); + candidates = this.resolveShooter(candidates); + + logger.debug(`After constraint solving, resolved discipline: ${candidates.discipline ? candidates.discipline.disciplineId : "none"}`); + logger.debug(`After constraint solving, resolved start list: ${candidates.startList ? candidates.startList.id : "none"}`); + logger.debug(`After constraint solving, resolved shooter: ${JSON.stringify(candidates.shooter)}`); + logger.debug(`Remaining discipline candidates: ${candidates.disciplineCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`Remaining start list candidates: ${candidates.startListCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`Remaining shooter candidates: ${candidates.shooterCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + + this.push(candidates); + callback(); + } +} \ No newline at end of file diff --git a/ranges/multicast/src/streams/longestMatchReducer.ts b/ranges/multicast/src/streams/longestMatchReducer.ts index d78ed86b..80ff6417 100644 --- a/ranges/multicast/src/streams/longestMatchReducer.ts +++ b/ranges/multicast/src/streams/longestMatchReducer.ts @@ -1,10 +1,10 @@ import { TypedTransform } from "dc-streams"; -import { Candidate, PacketCandidates } from "../types"; +import { Candidate, PacketCandidates, ResolvedPacketCandidates } from "../types"; -export class LongestMatchReducer extends TypedTransform { - private reduceToLongestMatch(candidates: Candidate[]): Candidate[] { +export class LongestMatchReducer extends TypedTransform { + private reduceToLongestMatch(candidates: Candidate[]): T | null { if (candidates.length === 0) { - return []; + return null; } let longest = candidates[0]; @@ -16,19 +16,23 @@ export class LongestMatchReducer extends TypedTransform void): void { - const disciplineCandidates = this.reduceToLongestMatch(chunk.disciplineCandidates); - const startListCandidates = this.reduceToLongestMatch(chunk.startListCandidates); - const shooterCandidates = this.reduceToLongestMatch(chunk.shooterCandidates); + const discipline = this.reduceToLongestMatch(chunk.disciplineCandidates); + const startList = this.reduceToLongestMatch(chunk.startListCandidates); + const shooter = this.reduceToLongestMatch(chunk.shooterCandidates); - const reduced: PacketCandidates = { + const reduced: ResolvedPacketCandidates = { id: chunk.id, - disciplineCandidates, - startListCandidates, - shooterCandidates + disciplineCandidates: [], + startListCandidates: [], + shooterCandidates: [], + discipline, + startList, + shooter + }; this.push(reduced); callback(); diff --git a/ranges/multicast/src/streams/overlapFilter.ts b/ranges/multicast/src/streams/overlapFilter.ts index d4942c69..384b7d12 100644 --- a/ranges/multicast/src/streams/overlapFilter.ts +++ b/ranges/multicast/src/streams/overlapFilter.ts @@ -1,13 +1,14 @@ import { TypedTransform } from "dc-streams"; import { Candidate, PacketCandidates } from "../types"; +import { logger } from "dc-logger"; export class ContainedCandidatesFilter extends TypedTransform { private filterContainedCandidate(candidates: Candidate[]): Candidate[] { // This should remove all candidates that are fully covered by another candidate. // It should not remove candidates that are the same length but different data, as they still add more information. - // Should we do this for all candidate types independently or across all types? const sorted = candidates.slice().sort((a, b) => a.start - b.start || b.end - a.end); + const filtered: Candidate[] = []; let lastEnd = -1; let lastStart = -1; @@ -22,16 +23,39 @@ export class ContainedCandidatesFilter extends TypedTransform(candidates: Candidate[], otherCandidates: Candidate[]): Candidate[] { + // This should remove candidates that are fully covered by another candidate of a different type, as they likely don't add any information. + // For example, if a discipline candidate is fully covered by a shooter candidate, it likely doesn't add any information, as the shooter candidate already implies the discipline. + // it should not remove candidates that are the same length but different data, as they still add more information. + + const filtered: Candidate[] = []; + for (const candidate of candidates) { + const isCovered = otherCandidates.some(other => other.start <= candidate.start && other.end >= candidate.end && !(other.start === candidate.start && other.end === candidate.end)); + if (!isCovered) { + filtered.push(candidate); + } + } + return filtered; + } + _transform(chunk: PacketCandidates, encoding: BufferEncoding, callback: () => void): void { const disciplineCandidates = this.filterContainedCandidate(chunk.disciplineCandidates); const startListCandidates = this.filterContainedCandidate(chunk.startListCandidates); const shooterCandidates = this.filterContainedCandidate(chunk.shooterCandidates); + const filteredDisciplineCandidates = this.filterContainedOverlapsWithDifferentTypes(disciplineCandidates, [...startListCandidates, ...shooterCandidates]); + const filteredShooterCandidates = this.filterContainedOverlapsWithDifferentTypes(shooterCandidates, [...disciplineCandidates, ...startListCandidates]); + const filteredStartListCandidates = this.filterContainedOverlapsWithDifferentTypes(startListCandidates, [...disciplineCandidates, ...shooterCandidates]); + + logger.debug(`After filtering, ${filteredDisciplineCandidates.length} discipline candidates remain: ${filteredDisciplineCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`After filtering, ${filteredStartListCandidates.length} start list candidates remain: ${filteredStartListCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + logger.debug(`After filtering, ${filteredShooterCandidates.length} shooter candidates remain: ${filteredShooterCandidates.map(c => `${c.match} (${c.start},${c.end})`).join(", ")}`); + const filtered: PacketCandidates = { id: chunk.id, - disciplineCandidates, - startListCandidates, - shooterCandidates + disciplineCandidates: filteredDisciplineCandidates, + startListCandidates: filteredStartListCandidates, + shooterCandidates: filteredShooterCandidates }; this.push(filtered); callback(); diff --git a/ranges/multicast/src/streams/rangeDataConverter.ts b/ranges/multicast/src/streams/rangeDataConverter.ts index 959671f5..26e8e423 100644 --- a/ranges/multicast/src/streams/rangeDataConverter.ts +++ b/ranges/multicast/src/streams/rangeDataConverter.ts @@ -1,49 +1,47 @@ import { TypedTransform } from "dc-streams" -import { Candidate, CandidateDiscipline, isOverride, PacketCandidates } from "../types"; -import { InternalDiscipline, InternalRange, InternalShooter } from "dc-ranges-types"; -import { logger } from "dc-logger"; +import { isOverride, ResolvedPacketCandidates } from "../types"; +import { Index, InternalDiscipline, InternalRange, InternalShooter } from "dc-ranges-types"; -export class RangeDataConverter extends TypedTransform { - private resolveCandidate(candidates: Candidate[]): T | null { - if (candidates.length !== 1) { - return null; - } - return candidates[0].data; - } +export class RangeDataConverter extends TypedTransform { - private resolveShooter(candidates: Candidate[]): InternalShooter | null { - if (candidates.length === 0) { - return { type: "free" }; + private resolveShooter(chunk: ResolvedPacketCandidates): InternalShooter | null { + if (chunk.shooterCandidates.length > 0) { + return null; // ambiguous, cannot resolve } - if (candidates.length > 1) { - return null; + if (chunk.shooter) { + return chunk.shooter; } - return candidates[0].data; + return { type: "free" }; + } - private resolveDiscipline(candidates: Candidate[]): InternalDiscipline | null { - const candidate = this.resolveCandidate(candidates); - if (!candidate) { + private resolveDiscipline(chunk: ResolvedPacketCandidates): InternalDiscipline | null { + const discipline = chunk.discipline; + if (!discipline) { return null; } - if (isOverride(candidate)) { + if (isOverride(discipline)) { return { - overrideId: candidate.overrideId, - roundId: candidate.roundId, + overrideId: discipline.overrideId, + roundId: discipline.roundId, }; } return { - disciplineId: candidate.disciplineId, - roundId: candidate.roundId, + disciplineId: discipline.disciplineId, + roundId: discipline.roundId, }; } - _transform(chunk: PacketCandidates, encoding: BufferEncoding, callback: () => void): void { + private resolveStartList(chunk: ResolvedPacketCandidates): Index | null { + return chunk.startList ? chunk.startList.id : null; + } + + _transform(chunk: ResolvedPacketCandidates, encoding: BufferEncoding, callback: () => void): void { const range: InternalRange = { rangeId: chunk.id, - discipline: this.resolveDiscipline(chunk.disciplineCandidates), - startListId: this.resolveCandidate(chunk.startListCandidates), - shooter: this.resolveShooter(chunk.shooterCandidates), + discipline: this.resolveDiscipline(chunk), + startListId: this.resolveStartList(chunk), + shooter: this.resolveShooter(chunk), hits: [], source: "multicast", ttl: 20000 diff --git a/ranges/multicast/src/types.ts b/ranges/multicast/src/types.ts index 8d37bd31..20917de9 100644 --- a/ranges/multicast/src/types.ts +++ b/ranges/multicast/src/types.ts @@ -24,7 +24,10 @@ export function isOverride(discipline: CandidateDiscipline): discipline is Candi export type CandidateDiscipline = CandidateBaseDiscipline | CandidateOverrideDiscipline; -export type CandidateStartList = Index; +export type CandidateStartList = { + id: Index; + hasOverrideDisciplines: boolean; +}; export type Matcher = { matcher: AhoCorasick; @@ -36,4 +39,10 @@ export type PacketCandidates = { disciplineCandidates: Candidate[]; startListCandidates: Candidate[]; shooterCandidates: Candidate[]; +} + +export type ResolvedPacketCandidates = PacketCandidates & { + discipline: CandidateDiscipline | null; + startList: CandidateStartList | null; + shooter: InternalShooter | null; } \ No newline at end of file From b5c990162ea2edacefac6fd32e4afbdea2d79426 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sat, 14 Mar 2026 23:35:00 +0100 Subject: [PATCH 23/31] chore: Dependencies --- database/local/package-lock.json | 235 +++++++++++++++-------- database/local/package.json | 8 +- database/smdb/package-lock.json | 160 +++++++-------- database/smdb/package.json | 8 +- database/ssmdb2/package-lock.json | 160 +++++++-------- database/ssmdb2/package.json | 8 +- database/tableWatcher/package-lock.json | 120 ++++++------ database/tableWatcher/package.json | 4 +- frontend/package-lock.json | 12 +- frontend/package.json | 2 +- logger/package-lock.json | 8 +- logger/package.json | 2 +- ranges/cache/package-lock.json | 32 +-- ranges/cache/package.json | 2 +- ranges/log/package-lock.json | 79 +++++--- ranges/log/package.json | 4 +- ranges/merge/package-lock.json | 22 +-- ranges/merge/package.json | 2 +- ranges/multicast/package-lock.json | 22 +-- ranges/multicast/package.json | 2 +- ranges/multicast/proxy/package-lock.json | 10 +- ranges/multicast/proxy/package.json | 2 +- ranges/ssmdb2/package-lock.json | 34 ++-- ranges/ssmdb2/package.json | 2 +- ranges/ttl/package-lock.json | 8 +- ranges/ttl/package.json | 2 +- ranges/types/src/common/index.ts | 14 +- ranges/types/src/hits/index.ts | 4 +- screens/evaluations/package-lock.json | 26 +-- screens/evaluations/package.json | 4 +- screens/images/package-lock.json | 18 +- screens/images/package.json | 4 +- screens/screenCast/package-lock.json | 12 +- screens/screenCast/package.json | 2 +- screens/screenManager/package-lock.json | 22 +-- screens/screenManager/package.json | 2 +- serverState/package-lock.json | 28 +-- serverState/package.json | 2 +- streams/package-lock.json | 10 +- streams/package.json | 2 +- syncTime/package-lock.json | 26 +-- syncTime/package.json | 2 +- utils/recorder/package-lock.json | 8 +- utils/recorder/package.json | 2 +- 44 files changed, 631 insertions(+), 507 deletions(-) diff --git a/database/local/package-lock.json b/database/local/package-lock.json index 3304a2b2..7aec66b9 100644 --- a/database/local/package-lock.json +++ b/database/local/package-lock.json @@ -9,15 +9,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -117,23 +117,83 @@ } }, "node_modules/@prisma/adapter-pg": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.4.2.tgz", - "integrity": "sha512-oUo2Zhe9Tf6YwVL8kLPuOLTK1Z2pwi/Ua77t2PuGyBan2w7shRKqHvYK+3XXmRH9RWhPJ4SMtHZKpNo6Ax/4bQ==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.5.0.tgz", + "integrity": "sha512-EJx7OLULahcC3IjJgdx2qRDNCT+ToY2v66UkeETMCLhNOTgqVzRzYvOEphY7Zp0eHyzfkC33Edd/qqeadf9R4A==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.4.2", + "@prisma/driver-adapter-utils": "7.5.0", + "@types/pg": "8.11.11", "pg": "^8.16.3", "postgres-array": "3.0.4" } }, + "node_modules/@prisma/adapter-pg/node_modules/@types/pg": { + "version": "8.11.11", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.11.tgz", + "integrity": "sha512-kGT1qKM8wJQ5qlawUrEkXgvMSXoV213KfMGXcwfDwUIfUHXqXYXOfS1nE1LINRJVVVx5wCm70XnFlMHaIcQAfw==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^4.0.1" + } + }, + "node_modules/@prisma/adapter-pg/node_modules/pg-types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.1.0.tgz", + "integrity": "sha512-o2XFanIMy/3+mThw69O8d4n1E5zsLhdO+OPqswezu7Z5ekP4hYDqlDjlmOpYMbzY2Br0ufCwJLdDIXeNVwcWFg==", + "license": "MIT", + "dependencies": { + "pg-int8": "1.0.1", + "pg-numeric": "1.0.2", + "postgres-array": "~3.0.1", + "postgres-bytea": "~3.0.0", + "postgres-date": "~2.1.0", + "postgres-interval": "^3.0.0", + "postgres-range": "^1.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@prisma/adapter-pg/node_modules/postgres-bytea": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "license": "MIT", + "dependencies": { + "obuf": "~1.1.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@prisma/adapter-pg/node_modules/postgres-date": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz", + "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/@prisma/adapter-pg/node_modules/postgres-interval": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", + "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/@prisma/client": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.2.tgz", - "integrity": "sha512-ts2mu+cQHriAhSxngO3StcYubBGTWDtu/4juZhXCUKOwgh26l+s4KD3vT2kMUzFyrYnll9u/3qWrtzRv9CGWzA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.5.0.tgz", + "integrity": "sha512-h4hF9ctp+kSRs7ENHGsFQmHAgHcfkOCxbYt6Ti9Xi8x7D+kP4tTi9x51UKmiTH/OqdyJAO+8V+r+JA5AWdav7w==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.4.2" + "@prisma/client-runtime-utils": "7.5.0" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -152,15 +212,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.2.tgz", - "integrity": "sha512-cID+rzOEb38VyMsx5LwJMEY4NGIrWCNpKu/0ImbeooQ2Px7TI+kOt7cm0NelxUzF2V41UVVXAmYjANZQtCu1/Q==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.5.0.tgz", + "integrity": "sha512-KnJ2b4Si/pcWEtK68uM+h0h1oh80CZt2suhLTVuLaSKg4n58Q9jBF/A42Kw6Ma+aThy1yAhfDeTC0JvEmeZnFQ==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", - "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.5.0.tgz", + "integrity": "sha512-1J/9YEX7A889xM46PYg9e8VAuSL1IUmXJW3tEhMv7XQHDWlfC9YSkIw9sTYRaq5GswGlxZ+GnnyiNsUZ9JJhSQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -171,9 +231,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", - "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.5.0.tgz", + "integrity": "sha512-163+nffny0JoPEkDhfNco0vcuT3ymIJc9+WX7MHSQhfkeKUmKe9/wqvGk5SjppT93DtBjVwr5HPJYlXbzm6qtg==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -203,65 +263,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.2.tgz", - "integrity": "sha512-REdjFpT/ye9KdDs+CXAXPIbMQkVLhne9G5Pe97sNY4Ovx4r2DAbWM9hOFvvB1Oq8H8bOCdu0Ri3AoGALquQqVw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.5.0.tgz", + "integrity": "sha512-B79N/amgV677mFesFDBAdrW0OIaqawap9E0sjgLBtzIz2R3hIMS1QB8mLZuUEiS4q5Y8Oh3I25Kw4SLxMypk9Q==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/engines": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", - "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.5.0.tgz", + "integrity": "sha512-ondGRhzoaVpRWvFaQ5wH5zS1BIbhzbKqczKjCn6j3L0Zfe/LInjcEg8+xtB49AuZBX30qyx1ZtGoootUohz2pw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/fetch-engine": "7.4.2", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/fetch-engine": "7.5.0", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", - "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", + "version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e.tgz", + "integrity": "sha512-E+iRV/vbJLl8iGjVr6g/TEWokA+gjkV/doZkaQN1i/ULVdDwGnPJDfLUIFGS3BVwlG/m6L8T4x1x5isl8hGMxA==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", - "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.5.0.tgz", + "integrity": "sha512-kZCl2FV54qnyrVdnII8MI6qvt7HfU6Cbiz8dZ8PXz4f4lbSw45jEB9/gEMK2SGdiNhBKyk/Wv95uthoLhGMLYA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/get-platform": { @@ -289,11 +349,15 @@ "license": "Apache-2.0" }, "node_modules/@prisma/studio-core": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.13.1.tgz", - "integrity": "sha512-agdqaPEePRHcQ7CexEfkX1RvSH9uWDb6pXrZnhCRykhDFAV0/0P3d07WtfiY8hZWb7oRU4v+NkT4cGFHkQJIPg==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.21.1.tgz", + "integrity": "sha512-bOGqG/eMQtKC0XVvcVLRmhWWzm/I+0QUWqAEhEBtetpuS3k3V4IWqKGUONkAIT223DNXJMxMtZp36b1FmcdPeg==", "devOptional": true, "license": "Apache-2.0", + "engines": { + "node": "^20.19 || ^22.12 || ^24.0", + "pnpm": "8" + }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", @@ -308,10 +372,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", - "dev": true, + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" @@ -330,9 +393,9 @@ } }, "node_modules/@types/react": { - "version": "19.2.9", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", - "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", "peer": true, @@ -806,6 +869,12 @@ "devOptional": true, "license": "MIT" }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "license": "MIT" + }, "node_modules/ohash": { "version": "2.0.11", "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", @@ -887,6 +956,15 @@ "node": ">=4.0.0" } }, + "node_modules/pg-numeric": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", + "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", + "license": "ISC", + "engines": { + "node": ">=4" + } + }, "node_modules/pg-pool": { "version": "3.13.0", "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.13.0.tgz", @@ -1001,19 +1079,25 @@ "node": ">=0.10.0" } }, + "node_modules/postgres-range": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.4.tgz", + "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==", + "license": "MIT" + }, "node_modules/prisma": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", - "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.5.0.tgz", + "integrity": "sha512-n30qZpWehaYQzigLjmuPisyEsvOzHt7bZeRyg8gZ5DvJo9FGjD+gNaY59Ns3hlLD5/jZH5GBeftIss0jDbUoLg==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.4.2", + "@prisma/config": "7.5.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.2", - "@prisma/studio-core": "0.13.1", + "@prisma/engines": "7.5.0", + "@prisma/studio-core": "0.21.1", "mysql2": "3.15.3", "postgres": "3.4.7" }, @@ -1084,9 +1168,9 @@ } }, "node_modules/react": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", - "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "devOptional": true, "license": "MIT", "peer": true, @@ -1095,9 +1179,9 @@ } }, "node_modules/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "devOptional": true, "license": "MIT", "peer": true, @@ -1105,7 +1189,7 @@ "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.3" + "react": "^19.2.4" } }, "node_modules/readdirp": { @@ -1232,9 +1316,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "devOptional": true, "license": "MIT", "engines": { @@ -1260,7 +1344,6 @@ "version": "7.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "dev": true, "license": "MIT" }, "node_modules/valibot": { diff --git a/database/local/package.json b/database/local/package.json index 4134e673..1698e95c 100644 --- a/database/local/package.json +++ b/database/local/package.json @@ -13,15 +13,15 @@ "license": "ISC", "description": "", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" }, "files": [ diff --git a/database/smdb/package-lock.json b/database/smdb/package-lock.json index 678f0420..d8ac433a 100644 --- a/database/smdb/package-lock.json +++ b/database/smdb/package-lock.json @@ -8,14 +8,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -24,15 +24,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -132,22 +132,22 @@ } }, "node_modules/@prisma/adapter-mariadb": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.2.tgz", - "integrity": "sha512-s9iIan8UDce47Mdsqzm/JnFK/c2vmTXAtKYvBuE4zOockjxLZCB487AMPLx9CgUknqBsGlVqad7AY4QkznSYkA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.5.0.tgz", + "integrity": "sha512-p2fP31AXkuB8sBvX/c3lB3a6BVGmTnCpfltzNa8uXxoGkV/qhCYtu7ZNfxQO7JbPtAoGNK5A6/h6JC5FWQxUkQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.4.2", + "@prisma/driver-adapter-utils": "7.5.0", "mariadb": "3.4.5" } }, "node_modules/@prisma/client": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.2.tgz", - "integrity": "sha512-ts2mu+cQHriAhSxngO3StcYubBGTWDtu/4juZhXCUKOwgh26l+s4KD3vT2kMUzFyrYnll9u/3qWrtzRv9CGWzA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.5.0.tgz", + "integrity": "sha512-h4hF9ctp+kSRs7ENHGsFQmHAgHcfkOCxbYt6Ti9Xi8x7D+kP4tTi9x51UKmiTH/OqdyJAO+8V+r+JA5AWdav7w==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.4.2" + "@prisma/client-runtime-utils": "7.5.0" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -166,15 +166,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.2.tgz", - "integrity": "sha512-cID+rzOEb38VyMsx5LwJMEY4NGIrWCNpKu/0ImbeooQ2Px7TI+kOt7cm0NelxUzF2V41UVVXAmYjANZQtCu1/Q==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.5.0.tgz", + "integrity": "sha512-KnJ2b4Si/pcWEtK68uM+h0h1oh80CZt2suhLTVuLaSKg4n58Q9jBF/A42Kw6Ma+aThy1yAhfDeTC0JvEmeZnFQ==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", - "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.5.0.tgz", + "integrity": "sha512-1J/9YEX7A889xM46PYg9e8VAuSL1IUmXJW3tEhMv7XQHDWlfC9YSkIw9sTYRaq5GswGlxZ+GnnyiNsUZ9JJhSQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -185,9 +185,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", - "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.5.0.tgz", + "integrity": "sha512-163+nffny0JoPEkDhfNco0vcuT3ymIJc9+WX7MHSQhfkeKUmKe9/wqvGk5SjppT93DtBjVwr5HPJYlXbzm6qtg==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -217,65 +217,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.2.tgz", - "integrity": "sha512-REdjFpT/ye9KdDs+CXAXPIbMQkVLhne9G5Pe97sNY4Ovx4r2DAbWM9hOFvvB1Oq8H8bOCdu0Ri3AoGALquQqVw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.5.0.tgz", + "integrity": "sha512-B79N/amgV677mFesFDBAdrW0OIaqawap9E0sjgLBtzIz2R3hIMS1QB8mLZuUEiS4q5Y8Oh3I25Kw4SLxMypk9Q==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/engines": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", - "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.5.0.tgz", + "integrity": "sha512-ondGRhzoaVpRWvFaQ5wH5zS1BIbhzbKqczKjCn6j3L0Zfe/LInjcEg8+xtB49AuZBX30qyx1ZtGoootUohz2pw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/fetch-engine": "7.4.2", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/fetch-engine": "7.5.0", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", - "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", + "version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e.tgz", + "integrity": "sha512-E+iRV/vbJLl8iGjVr6g/TEWokA+gjkV/doZkaQN1i/ULVdDwGnPJDfLUIFGS3BVwlG/m6L8T4x1x5isl8hGMxA==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", - "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.5.0.tgz", + "integrity": "sha512-kZCl2FV54qnyrVdnII8MI6qvt7HfU6Cbiz8dZ8PXz4f4lbSw45jEB9/gEMK2SGdiNhBKyk/Wv95uthoLhGMLYA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/get-platform": { @@ -303,11 +303,15 @@ "license": "Apache-2.0" }, "node_modules/@prisma/studio-core": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.13.1.tgz", - "integrity": "sha512-agdqaPEePRHcQ7CexEfkX1RvSH9uWDb6pXrZnhCRykhDFAV0/0P3d07WtfiY8hZWb7oRU4v+NkT4cGFHkQJIPg==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.21.1.tgz", + "integrity": "sha512-bOGqG/eMQtKC0XVvcVLRmhWWzm/I+0QUWqAEhEBtetpuS3k3V4IWqKGUONkAIT223DNXJMxMtZp36b1FmcdPeg==", "devOptional": true, "license": "Apache-2.0", + "engines": { + "node": "^20.19 || ^22.12 || ^24.0", + "pnpm": "8" + }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", @@ -328,9 +332,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { @@ -345,9 +349,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.9", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", - "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", "peer": true, @@ -925,18 +929,18 @@ } }, "node_modules/prisma": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", - "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.5.0.tgz", + "integrity": "sha512-n30qZpWehaYQzigLjmuPisyEsvOzHt7bZeRyg8gZ5DvJo9FGjD+gNaY59Ns3hlLD5/jZH5GBeftIss0jDbUoLg==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.4.2", + "@prisma/config": "7.5.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.2", - "@prisma/studio-core": "0.13.1", + "@prisma/engines": "7.5.0", + "@prisma/studio-core": "0.21.1", "mysql2": "3.15.3", "postgres": "3.4.7" }, @@ -1007,9 +1011,9 @@ } }, "node_modules/react": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", - "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "devOptional": true, "license": "MIT", "peer": true, @@ -1018,9 +1022,9 @@ } }, "node_modules/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "devOptional": true, "license": "MIT", "peer": true, @@ -1028,7 +1032,7 @@ "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.3" + "react": "^19.2.4" } }, "node_modules/readdirp": { @@ -1145,9 +1149,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "devOptional": true, "license": "MIT", "engines": { diff --git a/database/smdb/package.json b/database/smdb/package.json index c54f782e..0900d1c5 100644 --- a/database/smdb/package.json +++ b/database/smdb/package.json @@ -10,13 +10,13 @@ "generate": "npx prisma generate --no-hints" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" }, "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, diff --git a/database/ssmdb2/package-lock.json b/database/ssmdb2/package-lock.json index 0764c7bb..36f511fb 100644 --- a/database/ssmdb2/package-lock.json +++ b/database/ssmdb2/package-lock.json @@ -9,14 +9,14 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -25,15 +25,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -133,22 +133,22 @@ } }, "node_modules/@prisma/adapter-mariadb": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.4.2.tgz", - "integrity": "sha512-s9iIan8UDce47Mdsqzm/JnFK/c2vmTXAtKYvBuE4zOockjxLZCB487AMPLx9CgUknqBsGlVqad7AY4QkznSYkA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.5.0.tgz", + "integrity": "sha512-p2fP31AXkuB8sBvX/c3lB3a6BVGmTnCpfltzNa8uXxoGkV/qhCYtu7ZNfxQO7JbPtAoGNK5A6/h6JC5FWQxUkQ==", "license": "Apache-2.0", "dependencies": { - "@prisma/driver-adapter-utils": "7.4.2", + "@prisma/driver-adapter-utils": "7.5.0", "mariadb": "3.4.5" } }, "node_modules/@prisma/client": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.4.2.tgz", - "integrity": "sha512-ts2mu+cQHriAhSxngO3StcYubBGTWDtu/4juZhXCUKOwgh26l+s4KD3vT2kMUzFyrYnll9u/3qWrtzRv9CGWzA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client/-/client-7.5.0.tgz", + "integrity": "sha512-h4hF9ctp+kSRs7ENHGsFQmHAgHcfkOCxbYt6Ti9Xi8x7D+kP4tTi9x51UKmiTH/OqdyJAO+8V+r+JA5AWdav7w==", "license": "Apache-2.0", "dependencies": { - "@prisma/client-runtime-utils": "7.4.2" + "@prisma/client-runtime-utils": "7.5.0" }, "engines": { "node": "^20.19 || ^22.12 || >=24.0" @@ -167,15 +167,15 @@ } }, "node_modules/@prisma/client-runtime-utils": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.4.2.tgz", - "integrity": "sha512-cID+rzOEb38VyMsx5LwJMEY4NGIrWCNpKu/0ImbeooQ2Px7TI+kOt7cm0NelxUzF2V41UVVXAmYjANZQtCu1/Q==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/client-runtime-utils/-/client-runtime-utils-7.5.0.tgz", + "integrity": "sha512-KnJ2b4Si/pcWEtK68uM+h0h1oh80CZt2suhLTVuLaSKg4n58Q9jBF/A42Kw6Ma+aThy1yAhfDeTC0JvEmeZnFQ==", "license": "Apache-2.0" }, "node_modules/@prisma/config": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", - "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.5.0.tgz", + "integrity": "sha512-1J/9YEX7A889xM46PYg9e8VAuSL1IUmXJW3tEhMv7XQHDWlfC9YSkIw9sTYRaq5GswGlxZ+GnnyiNsUZ9JJhSQ==", "devOptional": true, "license": "Apache-2.0", "dependencies": { @@ -186,9 +186,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", - "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.5.0.tgz", + "integrity": "sha512-163+nffny0JoPEkDhfNco0vcuT3ymIJc9+WX7MHSQhfkeKUmKe9/wqvGk5SjppT93DtBjVwr5HPJYlXbzm6qtg==", "license": "Apache-2.0" }, "node_modules/@prisma/dev": { @@ -218,65 +218,65 @@ } }, "node_modules/@prisma/driver-adapter-utils": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.4.2.tgz", - "integrity": "sha512-REdjFpT/ye9KdDs+CXAXPIbMQkVLhne9G5Pe97sNY4Ovx4r2DAbWM9hOFvvB1Oq8H8bOCdu0Ri3AoGALquQqVw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.5.0.tgz", + "integrity": "sha512-B79N/amgV677mFesFDBAdrW0OIaqawap9E0sjgLBtzIz2R3hIMS1QB8mLZuUEiS4q5Y8Oh3I25Kw4SLxMypk9Q==", "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/engines": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", - "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.5.0.tgz", + "integrity": "sha512-ondGRhzoaVpRWvFaQ5wH5zS1BIbhzbKqczKjCn6j3L0Zfe/LInjcEg8+xtB49AuZBX30qyx1ZtGoootUohz2pw==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/fetch-engine": "7.4.2", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/fetch-engine": "7.5.0", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", - "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", + "version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e.tgz", + "integrity": "sha512-E+iRV/vbJLl8iGjVr6g/TEWokA+gjkV/doZkaQN1i/ULVdDwGnPJDfLUIFGS3BVwlG/m6L8T4x1x5isl8hGMxA==", "devOptional": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", - "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.5.0.tgz", + "integrity": "sha512-kZCl2FV54qnyrVdnII8MI6qvt7HfU6Cbiz8dZ8PXz4f4lbSw45jEB9/gEMK2SGdiNhBKyk/Wv95uthoLhGMLYA==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "devOptional": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/get-platform": { @@ -304,11 +304,15 @@ "license": "Apache-2.0" }, "node_modules/@prisma/studio-core": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.13.1.tgz", - "integrity": "sha512-agdqaPEePRHcQ7CexEfkX1RvSH9uWDb6pXrZnhCRykhDFAV0/0P3d07WtfiY8hZWb7oRU4v+NkT4cGFHkQJIPg==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.21.1.tgz", + "integrity": "sha512-bOGqG/eMQtKC0XVvcVLRmhWWzm/I+0QUWqAEhEBtetpuS3k3V4IWqKGUONkAIT223DNXJMxMtZp36b1FmcdPeg==", "devOptional": true, "license": "Apache-2.0", + "engines": { + "node": "^20.19 || ^22.12 || ^24.0", + "pnpm": "8" + }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", @@ -329,9 +333,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { @@ -346,9 +350,9 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "19.2.9", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", - "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "devOptional": true, "license": "MIT", "peer": true, @@ -926,18 +930,18 @@ } }, "node_modules/prisma": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", - "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.5.0.tgz", + "integrity": "sha512-n30qZpWehaYQzigLjmuPisyEsvOzHt7bZeRyg8gZ5DvJo9FGjD+gNaY59Ns3hlLD5/jZH5GBeftIss0jDbUoLg==", "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", "peer": true, "dependencies": { - "@prisma/config": "7.4.2", + "@prisma/config": "7.5.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.2", - "@prisma/studio-core": "0.13.1", + "@prisma/engines": "7.5.0", + "@prisma/studio-core": "0.21.1", "mysql2": "3.15.3", "postgres": "3.4.7" }, @@ -1008,9 +1012,9 @@ } }, "node_modules/react": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", - "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "devOptional": true, "license": "MIT", "peer": true, @@ -1019,9 +1023,9 @@ } }, "node_modules/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "devOptional": true, "license": "MIT", "peer": true, @@ -1029,7 +1033,7 @@ "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.3" + "react": "^19.2.4" } }, "node_modules/readdirp": { @@ -1146,9 +1150,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "devOptional": true, "license": "MIT", "engines": { diff --git a/database/ssmdb2/package.json b/database/ssmdb2/package.json index 9d627e92..0816bc02 100644 --- a/database/ssmdb2/package.json +++ b/database/ssmdb2/package.json @@ -13,14 +13,14 @@ "license": "ISC", "description": "", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" }, "files": [ diff --git a/database/tableWatcher/package-lock.json b/database/tableWatcher/package-lock.json index 76f5c754..fbe528c3 100644 --- a/database/tableWatcher/package-lock.json +++ b/database/tableWatcher/package-lock.json @@ -13,8 +13,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -28,7 +28,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -374,9 +374,9 @@ } }, "node_modules/@prisma/config": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.4.2.tgz", - "integrity": "sha512-CftBjWxav99lzY1Z4oDgomdb1gh9BJFAOmWF6P2v1xRfXqQb56DfBub+QKcERRdNoAzCb3HXy3Zii8Vb4AsXhg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/config/-/config-7.5.0.tgz", + "integrity": "sha512-1J/9YEX7A889xM46PYg9e8VAuSL1IUmXJW3tEhMv7XQHDWlfC9YSkIw9sTYRaq5GswGlxZ+GnnyiNsUZ9JJhSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -387,9 +387,9 @@ } }, "node_modules/@prisma/debug": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.4.2.tgz", - "integrity": "sha512-aP7qzu+g/JnbF6U69LMwHoUkELiserKmWsE2shYuEpNUJ4GrtxBCvZwCyCBHFSH2kLTF2l1goBlBh4wuvRq62w==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.5.0.tgz", + "integrity": "sha512-163+nffny0JoPEkDhfNco0vcuT3ymIJc9+WX7MHSQhfkeKUmKe9/wqvGk5SjppT93DtBjVwr5HPJYlXbzm6qtg==", "dev": true, "license": "Apache-2.0" }, @@ -420,56 +420,56 @@ } }, "node_modules/@prisma/engines": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.4.2.tgz", - "integrity": "sha512-B+ZZhI4rXlzjVqRw/93AothEKOU5/x4oVyJFGo9RpHPnBwaPwk4Pi0Q4iGXipKxeXPs/dqljgNBjK0m8nocOJA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.5.0.tgz", + "integrity": "sha512-ondGRhzoaVpRWvFaQ5wH5zS1BIbhzbKqczKjCn6j3L0Zfe/LInjcEg8+xtB49AuZBX30qyx1ZtGoootUohz2pw==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/fetch-engine": "7.4.2", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/fetch-engine": "7.5.0", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/engines-version": { - "version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919.tgz", - "integrity": "sha512-5FIKY3KoYQlBuZC2yc16EXfVRQ8HY+fLqgxkYfWCtKhRb3ajCRzP/rPeoSx11+NueJDANdh4hjY36mdmrTcGSg==", + "version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "resolved": "https://registry.npmjs.org/@prisma/engines-version/-/engines-version-7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e.tgz", + "integrity": "sha512-E+iRV/vbJLl8iGjVr6g/TEWokA+gjkV/doZkaQN1i/ULVdDwGnPJDfLUIFGS3BVwlG/m6L8T4x1x5isl8hGMxA==", "dev": true, "license": "Apache-2.0" }, "node_modules/@prisma/engines/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/fetch-engine": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.4.2.tgz", - "integrity": "sha512-f/c/MwYpdJO7taLETU8rahEstLeXfYgQGlz5fycG7Fbmva3iPdzGmjiSWHeSWIgNnlXnelUdCJqyZnFocurZuA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/fetch-engine/-/fetch-engine-7.5.0.tgz", + "integrity": "sha512-kZCl2FV54qnyrVdnII8MI6qvt7HfU6Cbiz8dZ8PXz4f4lbSw45jEB9/gEMK2SGdiNhBKyk/Wv95uthoLhGMLYA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2", - "@prisma/engines-version": "7.5.0-10.94a226be1cf2967af2541cca5529f0f7ba866919", - "@prisma/get-platform": "7.4.2" + "@prisma/debug": "7.5.0", + "@prisma/engines-version": "7.5.0-15.280c870be64f457428992c43c1f6d557fab6e29e", + "@prisma/get-platform": "7.5.0" } }, "node_modules/@prisma/fetch-engine/node_modules/@prisma/get-platform": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.4.2.tgz", - "integrity": "sha512-UTnChXRwiauzl/8wT4hhe7Xmixja9WE28oCnGpBtRejaHhvekx5kudr3R4Y9mLSA0kqGnAMeyTiKwDVMjaEVsw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@prisma/get-platform/-/get-platform-7.5.0.tgz", + "integrity": "sha512-7I+2y1nu/gkEKSiHHbcZ1HPe/euGdEqJZxEEMT0246q4De1+hla0ZzlTgvaT9dHcVCgLSuCG8v39db5qUUWNgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@prisma/debug": "7.4.2" + "@prisma/debug": "7.5.0" } }, "node_modules/@prisma/get-platform": { @@ -497,11 +497,15 @@ "license": "Apache-2.0" }, "node_modules/@prisma/studio-core": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.13.1.tgz", - "integrity": "sha512-agdqaPEePRHcQ7CexEfkX1RvSH9uWDb6pXrZnhCRykhDFAV0/0P3d07WtfiY8hZWb7oRU4v+NkT4cGFHkQJIPg==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@prisma/studio-core/-/studio-core-0.21.1.tgz", + "integrity": "sha512-bOGqG/eMQtKC0XVvcVLRmhWWzm/I+0QUWqAEhEBtetpuS3k3V4IWqKGUONkAIT223DNXJMxMtZp36b1FmcdPeg==", "dev": true, "license": "Apache-2.0", + "engines": { + "node": "^20.19 || ^22.12 || ^24.0", + "pnpm": "8" + }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", @@ -520,9 +524,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { @@ -530,9 +534,9 @@ } }, "node_modules/@types/react": { - "version": "19.2.9", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.9.tgz", - "integrity": "sha512-Lpo8kgb/igvMIPeNV2rsYKTgaORYdO1XGVZ4Qz3akwOj0ySGYMPlQWa8BaLn0G63D1aSaAQ5ldR06wCpChQCjA==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "dev": true, "license": "MIT", "peer": true, @@ -1093,17 +1097,17 @@ } }, "node_modules/prisma": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.4.2.tgz", - "integrity": "sha512-2bP8Ruww3Q95Z2eH4Yqh4KAENRsj/SxbdknIVBfd6DmjPwmpsC4OVFMLOeHt6tM3Amh8ebjvstrUz3V/hOe1dA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.5.0.tgz", + "integrity": "sha512-n30qZpWehaYQzigLjmuPisyEsvOzHt7bZeRyg8gZ5DvJo9FGjD+gNaY59Ns3hlLD5/jZH5GBeftIss0jDbUoLg==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@prisma/config": "7.4.2", + "@prisma/config": "7.5.0", "@prisma/dev": "0.20.0", - "@prisma/engines": "7.4.2", - "@prisma/studio-core": "0.13.1", + "@prisma/engines": "7.5.0", + "@prisma/studio-core": "0.21.1", "mysql2": "3.15.3", "postgres": "3.4.7" }, @@ -1174,9 +1178,9 @@ } }, "node_modules/react": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", - "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "dev": true, "license": "MIT", "peer": true, @@ -1185,9 +1189,9 @@ } }, "node_modules/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==", + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "dev": true, "license": "MIT", "peer": true, @@ -1195,7 +1199,7 @@ "scheduler": "^0.27.0" }, "peerDependencies": { - "react": "^19.2.3" + "react": "^19.2.4" } }, "node_modules/readdirp": { @@ -1356,9 +1360,9 @@ "license": "MIT" }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "dev": true, "license": "MIT", "engines": { diff --git a/database/tableWatcher/package.json b/database/tableWatcher/package.json index 0ba5907e..485a1621 100644 --- a/database/tableWatcher/package.json +++ b/database/tableWatcher/package.json @@ -12,8 +12,8 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" }, "files": [ diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 5926e0e3..ae24d3ac 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -32,7 +32,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", @@ -44,7 +44,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -56,7 +56,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -1248,9 +1248,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" diff --git a/frontend/package.json b/frontend/package.json index 57aba5d2..22c12348 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -33,7 +33,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "@types/smallest-enclosing-circle": "^1.0.3", diff --git a/logger/package-lock.json b/logger/package-lock.json index 37d14bc3..b26c7db3 100644 --- a/logger/package-lock.json +++ b/logger/package-lock.json @@ -14,7 +14,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -25,9 +25,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/logger/package.json b/logger/package.json index 788bb3bd..cb051194 100644 --- a/logger/package.json +++ b/logger/package.json @@ -17,7 +17,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } } \ No newline at end of file diff --git a/ranges/cache/package-lock.json b/ranges/cache/package-lock.json index 1c9b83dc..0ca5befe 100644 --- a/ranges/cache/package-lock.json +++ b/ranges/cache/package-lock.json @@ -17,7 +17,7 @@ "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -27,15 +27,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -43,14 +43,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -63,8 +63,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -78,7 +78,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -87,7 +87,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -133,9 +133,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ranges/cache/package.json b/ranges/cache/package.json index 3b70440a..5bd73b57 100644 --- a/ranges/cache/package.json +++ b/ranges/cache/package.json @@ -18,7 +18,7 @@ "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index c6437cab..ec118af2 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -19,11 +19,11 @@ "dc-streams": "file:../../streams", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3", - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", "typescript": "~5.9.3" @@ -34,15 +34,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -56,7 +56,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -70,7 +70,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "~5.9.3" } }, @@ -78,7 +78,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -87,7 +87,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -153,12 +153,6 @@ "node": ">= 8" } }, - "node_modules/@samchon/openapi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-6.0.1.tgz", - "integrity": "sha512-+nkznmCf/6YavoVkvWg60YoC0UbXY/oK9uMZReyrFcIcXecf+YoWmOLUg+TlgHi+h+6DPgRy6zRkZfiRd3uRnA==", - "license": "MIT" - }, "node_modules/@socket.io/component-emitter": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", @@ -182,9 +176,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "devOptional": true, "license": "MIT", "peer": true, @@ -192,6 +186,42 @@ "undici-types": "~7.18.0" } }, + "node_modules/@typia/core": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@typia/core/-/core-12.0.0.tgz", + "integrity": "sha512-KtxUiqSqJVT6Eiyn56FL/nnAaRewHiYUx83PRz41CtI6w/P/DgvZhVe2kUjxjWjiaOirEGzu33KbztNf9APvCA==", + "license": "MIT", + "dependencies": { + "@typia/interface": "^12.0.0", + "@typia/utils": "^12.0.0" + } + }, + "node_modules/@typia/interface": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@typia/interface/-/interface-12.0.0.tgz", + "integrity": "sha512-Kxtlc2vM6mjoHza3DBjqNY02jMCB07BDCTc54qdHfr9sT/TYELsYEOzNblF7d7xeJRQrXw7e0R/3pJqik/zKWg==", + "license": "MIT" + }, + "node_modules/@typia/transform": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@typia/transform/-/transform-12.0.0.tgz", + "integrity": "sha512-BYl/FM1oZ5ZwyA4BrzqyGA6dOOFNae4pMWIgehOH+Ai55sdDB5kGTCRaN289FODrLbfs0UgUDunhIdbVVZN3nQ==", + "license": "MIT", + "dependencies": { + "@typia/core": "^12.0.0", + "@typia/interface": "^12.0.0", + "@typia/utils": "^12.0.0" + } + }, + "node_modules/@typia/utils": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@typia/utils/-/utils-12.0.0.tgz", + "integrity": "sha512-wb1av26sn6QzXXwVUz4mbWmy/cDc5AOySFol8XwO7VRIEZUcnuDW/3+LOFPdLiNyEIkOSvoJhi08NTecF6TcEg==", + "license": "MIT", + "dependencies": { + "@typia/interface": "^12.0.0" + } + }, "node_modules/amqplib": { "version": "0.10.9", "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.9.tgz", @@ -1660,13 +1690,16 @@ } }, "node_modules/typia": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.3.tgz", - "integrity": "sha512-L7x7WzOCpFyNCauWl6VYJVEG9EHZi5EPNBRzxTO1luaLCd6WEDf+xrJNT+hMZ8U+0X7hCsR1EUpi29LdHhvCvA==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/typia/-/typia-12.0.0.tgz", + "integrity": "sha512-gmTfpAdq25LpG9E+JmYf6Ho+ePzqoi+0vLxgQyN8Et0vwZwAt7NQNyHA9cxVBhq3HN9j/7hHfuti67qup864LA==", "license": "MIT", "dependencies": { - "@samchon/openapi": "^6.0.0", "@standard-schema/spec": "^1.0.0", + "@typia/core": "^12.0.0", + "@typia/interface": "^12.0.0", + "@typia/transform": "^12.0.0", + "@typia/utils": "^12.0.0", "commander": "^10.0.0", "comment-json": "^4.2.3", "inquirer": "^8.2.5", diff --git a/ranges/log/package.json b/ranges/log/package.json index 8ad6b23b..f4643ec3 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -20,11 +20,11 @@ "dc-streams": "file:../../streams", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3", - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "ts-patch": "^3.3.0", "tsc-alias": "^1.8.16", "typescript": "~5.9.3" diff --git a/ranges/merge/package-lock.json b/ranges/merge/package-lock.json index d07bc1df..ef541793 100644 --- a/ranges/merge/package-lock.json +++ b/ranges/merge/package-lock.json @@ -21,7 +21,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -31,15 +31,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -53,7 +53,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -61,7 +61,7 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -70,7 +70,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -201,9 +201,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" diff --git a/ranges/merge/package.json b/ranges/merge/package.json index 5a93d42f..cf4fde7b 100644 --- a/ranges/merge/package.json +++ b/ranges/merge/package.json @@ -12,7 +12,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, diff --git a/ranges/multicast/package-lock.json b/ranges/multicast/package-lock.json index 618f1005..1e9c31d8 100644 --- a/ranges/multicast/package-lock.json +++ b/ranges/multicast/package-lock.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -52,7 +52,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -66,7 +66,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "~5.9.3" } }, @@ -75,7 +75,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -137,9 +137,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index 67e3e01b..abbdc39c 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, diff --git a/ranges/multicast/proxy/package-lock.json b/ranges/multicast/proxy/package-lock.json index 892d382c..0f27ade8 100644 --- a/ranges/multicast/proxy/package-lock.json +++ b/ranges/multicast/proxy/package-lock.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -31,7 +31,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -55,9 +55,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ranges/multicast/proxy/package.json b/ranges/multicast/proxy/package.json index fa3f0b7a..3c34083e 100644 --- a/ranges/multicast/proxy/package.json +++ b/ranges/multicast/proxy/package.json @@ -18,7 +18,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } } diff --git a/ranges/ssmdb2/package-lock.json b/ranges/ssmdb2/package-lock.json index d2a77117..f49a8160 100644 --- a/ranges/ssmdb2/package-lock.json +++ b/ranges/ssmdb2/package-lock.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -47,14 +47,14 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -67,8 +67,8 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -82,7 +82,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -96,7 +96,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "~5.9.3" } }, @@ -105,7 +105,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -161,9 +161,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index 90f5fcb9..7d9ab517 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -11,7 +11,7 @@ "description": "", "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" }, diff --git a/ranges/ttl/package-lock.json b/ranges/ttl/package-lock.json index 2649bb01..368896a2 100644 --- a/ranges/ttl/package-lock.json +++ b/ranges/ttl/package-lock.json @@ -8,14 +8,14 @@ "name": "dc-ranges-ttl", "version": "1.0.0", "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/ranges/ttl/package.json b/ranges/ttl/package.json index 7944b904..ce1a73ae 100644 --- a/ranges/ttl/package.json +++ b/ranges/ttl/package.json @@ -9,7 +9,7 @@ "build": "tsc" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" }, "files": [ diff --git a/ranges/types/src/common/index.ts b/ranges/types/src/common/index.ts index 21d1dde5..46fe1e86 100644 --- a/ranges/types/src/common/index.ts +++ b/ranges/types/src/common/index.ts @@ -1,14 +1,10 @@ -import { Maximum } from "typia/lib/tags/Maximum.js"; -import { Minimum } from "typia/lib/tags/Minimum.js"; -import { MultipleOf } from "typia/lib/tags/MultipleOf.js"; -import { MinLength } from "typia/lib/tags/MinLength.js"; -import { MaxLength } from "typia/lib/tags/MaxLength.js"; +import { tags } from "typia"; -export type Integer = number & MultipleOf<1>; -export type UnsignedNumber = number & Minimum<0>; +export type Integer = number & tags.MultipleOf<1>; +export type UnsignedNumber = number & tags.Minimum<0>; export type UnsignedInteger = Integer & UnsignedNumber; -export type RangeId = Integer & Minimum<1> & Maximum<416>; +export type RangeId = Integer & tags.Minimum<1> & tags.Maximum<416>; export type Index = UnsignedInteger; -export type ColorCode = string & MinLength<7> & MaxLength<7>; \ No newline at end of file +export type ColorCode = string & tags.MinLength<7> & tags.MaxLength<7>; \ No newline at end of file diff --git a/ranges/types/src/hits/index.ts b/ranges/types/src/hits/index.ts index fab716b3..f66dd28d 100644 --- a/ranges/types/src/hits/index.ts +++ b/ranges/types/src/hits/index.ts @@ -1,7 +1,7 @@ -import { Maximum } from "typia/lib/tags/Maximum.js"; +import { tags } from "typia"; import { Index, UnsignedNumber } from "../common/index.js"; -export type HitIndex = Index & Maximum<1000>; +export type HitIndex = Index & tags.Maximum<1000>; export type Hits = Array; diff --git a/screens/evaluations/package-lock.json b/screens/evaluations/package-lock.json index 410751a6..6b045c8f 100644 --- a/screens/evaluations/package-lock.json +++ b/screens/evaluations/package-lock.json @@ -13,14 +13,14 @@ "dc-logger": "file:../../logger", "dotenv": "^17.3.1", "express": "^5.2.1", - "express-rate-limit": "^8.3.0", + "express-rate-limit": "^8.3.1", "jsdom": "^28.1.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", "@types/jsdom": "^28.0.0", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -30,15 +30,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -52,7 +52,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -369,9 +369,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { @@ -958,9 +958,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.0.tgz", - "integrity": "sha512-KJzBawY6fB9FiZGdE/0aftepZ91YlaGIrV8vgblRM3J8X+dHx/aiowJWwkx6LIGyuqGiANsjSwwrbb8mifOJ4Q==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", "license": "MIT", "dependencies": { "ip-address": "10.1.0" diff --git a/screens/evaluations/package.json b/screens/evaluations/package.json index 10bff8a7..debb5902 100644 --- a/screens/evaluations/package.json +++ b/screens/evaluations/package.json @@ -14,14 +14,14 @@ "dc-logger": "file:../../logger", "dotenv": "^17.3.1", "express": "^5.2.1", - "express-rate-limit": "^8.3.0", + "express-rate-limit": "^8.3.1", "jsdom": "^28.1.0", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", "@types/jsdom": "^28.0.0", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/images/package-lock.json b/screens/images/package-lock.json index 5b779d63..46153a10 100644 --- a/screens/images/package-lock.json +++ b/screens/images/package-lock.json @@ -14,13 +14,13 @@ "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", - "express-rate-limit": "^8.3.0", + "express-rate-limit": "^8.3.1", "pdf2pic": "^3.2.0" }, "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -35,7 +35,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -159,9 +159,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { @@ -626,9 +626,9 @@ } }, "node_modules/express-rate-limit": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.0.tgz", - "integrity": "sha512-KJzBawY6fB9FiZGdE/0aftepZ91YlaGIrV8vgblRM3J8X+dHx/aiowJWwkx6LIGyuqGiANsjSwwrbb8mifOJ4Q==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", "license": "MIT", "dependencies": { "ip-address": "10.1.0" diff --git a/screens/images/package.json b/screens/images/package.json index e22f96e4..dbbf56cc 100644 --- a/screens/images/package.json +++ b/screens/images/package.json @@ -15,13 +15,13 @@ "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", - "express-rate-limit": "^8.3.0", + "express-rate-limit": "^8.3.1", "pdf2pic": "^3.2.0" }, "devDependencies": { "@types/express": "^5.0.6", "@types/express-fileupload": "^1.5.1", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/screens/screenCast/package-lock.json b/screens/screenCast/package-lock.json index 8f5f0888..22b5b4ff 100644 --- a/screens/screenCast/package-lock.json +++ b/screens/screenCast/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -30,7 +30,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -39,7 +39,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -72,9 +72,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" diff --git a/screens/screenCast/package.json b/screens/screenCast/package.json index 9a709d1a..79469ce7 100644 --- a/screens/screenCast/package.json +++ b/screens/screenCast/package.json @@ -17,7 +17,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } } diff --git a/screens/screenManager/package-lock.json b/screens/screenManager/package-lock.json index 76951241..873e45d0 100644 --- a/screens/screenManager/package-lock.json +++ b/screens/screenManager/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } @@ -32,15 +32,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -54,7 +54,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -63,7 +63,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -75,7 +75,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -206,9 +206,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" diff --git a/screens/screenManager/package.json b/screens/screenManager/package.json index b582592a..2b049beb 100644 --- a/screens/screenManager/package.json +++ b/screens/screenManager/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } diff --git a/serverState/package-lock.json b/serverState/package-lock.json index fe20848f..e37aff64 100644 --- a/serverState/package-lock.json +++ b/serverState/package-lock.json @@ -22,7 +22,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } @@ -32,15 +32,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -48,14 +48,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -69,7 +69,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -78,7 +78,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.0" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -171,9 +171,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "license": "MIT", "dependencies": { "undici-types": "~7.18.0" diff --git a/serverState/package.json b/serverState/package.json index 347b548d..52e9af2b 100644 --- a/serverState/package.json +++ b/serverState/package.json @@ -23,7 +23,7 @@ "devDependencies": { "@types/amqplib": "^0.10.8", "@types/express": "^5.0.6", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/semver": "^7.7.1", "typescript": "^5.9.3" } diff --git a/streams/package-lock.json b/streams/package-lock.json index 87dcbf99..8c4671de 100644 --- a/streams/package-lock.json +++ b/streams/package-lock.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "~5.9.3" } }, @@ -28,7 +28,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -43,9 +43,9 @@ } }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/streams/package.json b/streams/package.json index 59b9bfe9..f1264698 100644 --- a/streams/package.json +++ b/streams/package.json @@ -15,7 +15,7 @@ ], "devDependencies": { "@types/amqplib": "^0.10.8", - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "~5.9.3" }, "dependencies": { diff --git a/syncTime/package-lock.json b/syncTime/package-lock.json index 91e50415..e71f987a 100644 --- a/syncTime/package-lock.json +++ b/syncTime/package-lock.json @@ -16,7 +16,7 @@ "socket.io-client": "^4.8.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -25,15 +25,15 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@prisma/adapter-pg": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", "dotenv": "^17.3.1", "pg": "^8.20.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "@types/pg": "^8.18.0", - "prisma": "^7.4.2", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -41,14 +41,14 @@ "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { - "@prisma/adapter-mariadb": "^7.4.2", - "@prisma/client": "^7.4.2", + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", "dc-db-local": "file:../local", "dotenv": "^17.3.1" }, "devDependencies": { - "@types/node": "^25.3.5", - "prisma": "^7.4.2", + "@types/node": "^25.5.0", + "prisma": "^7.5.0", "typescript": "^5.9.3" } }, @@ -62,7 +62,7 @@ "pino-pretty": "^13.1.3" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" } }, @@ -73,9 +73,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "dependencies": { diff --git a/syncTime/package.json b/syncTime/package.json index 5ee04900..be0015a7 100644 --- a/syncTime/package.json +++ b/syncTime/package.json @@ -11,7 +11,7 @@ "license": "ISC", "description": "", "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "typescript": "^5.9.3" }, "dependencies": { diff --git a/utils/recorder/package-lock.json b/utils/recorder/package-lock.json index 99ef3668..902a756c 100644 --- a/utils/recorder/package-lock.json +++ b/utils/recorder/package-lock.json @@ -12,7 +12,7 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "nodemon": "^3.1.14", "ts-node": "^10.9.2", "typescript": "^5.9.3" @@ -88,9 +88,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.3.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz", - "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==", + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", "peer": true, diff --git a/utils/recorder/package.json b/utils/recorder/package.json index 8998dff6..885b8d2d 100644 --- a/utils/recorder/package.json +++ b/utils/recorder/package.json @@ -15,7 +15,7 @@ "eventsource": "^4.1.0" }, "devDependencies": { - "@types/node": "^25.3.5", + "@types/node": "^25.5.0", "nodemon": "^3.1.14", "ts-node": "^10.9.2", "typescript": "^5.9.3" From e0839b84d6a1a07cafd4137631eaf84586efdc04 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 22 Mar 2026 20:58:30 +0100 Subject: [PATCH 24/31] feat: Move logger to lib directory --- database/local/package-lock.json | 13 +- database/smdb/package-lock.json | 12 +- database/ssmdb2/package-lock.json | 12 +- database/tableWatcher/package-lock.json | 266 ++------------------- database/tableWatcher/package.json | 2 +- frontend/package-lock.json | 113 ++++++--- {logger => lib/logger}/package-lock.json | 0 {logger => lib/logger}/package.json | 0 {logger => lib/logger}/src/index.ts | 0 {logger => lib/logger}/tsconfig.json | 0 ranges/cache/Dockerfile | 4 +- ranges/cache/docker-compose.yaml | 2 +- ranges/cache/package-lock.json | 23 +- ranges/cache/package.json | 4 +- ranges/log/Dockerfile | 4 +- ranges/log/docker-compose.yaml | 2 +- ranges/log/package-lock.json | 25 +- ranges/log/package.json | 4 +- ranges/merge/Dockerfile | 4 +- ranges/merge/docker-compose.yaml | 2 +- ranges/merge/package-lock.json | 21 +- ranges/merge/package.json | 4 +- ranges/multicast/Dockerfile | 4 +- ranges/multicast/docker-compose.yaml | 2 +- ranges/multicast/package-lock.json | 23 +- ranges/multicast/package.json | 4 +- ranges/multicast/proxy/Dockerfile | 2 +- ranges/multicast/proxy/docker-compose.yaml | 2 +- ranges/multicast/proxy/package-lock.json | 19 +- ranges/multicast/proxy/package.json | 4 +- ranges/ssmdb2/Dockerfile | 4 +- ranges/ssmdb2/docker-compose.yaml | 2 +- ranges/ssmdb2/package-lock.json | 25 +- ranges/ssmdb2/package.json | 4 +- ranges/types/package-lock.json | 1 - screens/evaluations/Dockerfile | 4 +- screens/evaluations/docker-compose.yaml | 2 +- screens/evaluations/package-lock.json | 22 +- screens/evaluations/package.json | 2 +- screens/images/Dockerfile | 2 +- screens/images/docker-compose.yaml | 2 +- screens/images/package-lock.json | 20 +- screens/images/package.json | 4 +- screens/screenCast/Dockerfile | 4 +- screens/screenCast/docker-compose.yaml | 2 +- screens/screenCast/package-lock.json | 21 +- screens/screenCast/package.json | 4 +- screens/screenManager/Dockerfile | 4 +- screens/screenManager/docker-compose.yaml | 2 +- screens/screenManager/package-lock.json | 23 +- screens/screenManager/package.json | 4 +- screens/types/package-lock.json | 1 - serverState/Dockerfile | 4 +- serverState/docker-compose.yaml | 2 +- serverState/package-lock.json | 21 +- serverState/package.json | 4 +- streams/package-lock.json | 19 +- streams/package.json | 2 +- syncTime/Dockerfile | 4 +- syncTime/docker-compose.yaml | 2 +- syncTime/package-lock.json | 19 +- syncTime/package.json | 4 +- utils/recorder/package-lock.json | 2 - 63 files changed, 407 insertions(+), 412 deletions(-) rename {logger => lib/logger}/package-lock.json (100%) rename {logger => lib/logger}/package.json (100%) rename {logger => lib/logger}/src/index.ts (100%) rename {logger => lib/logger}/tsconfig.json (100%) diff --git a/database/local/package-lock.json b/database/local/package-lock.json index 7aec66b9..60796af3 100644 --- a/database/local/package-lock.json +++ b/database/local/package-lock.json @@ -63,8 +63,7 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "devOptional": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -533,7 +532,8 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/deepmerge-ts": { "version": "7.1.5", @@ -710,7 +710,6 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -911,7 +910,6 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.20.0.tgz", "integrity": "sha512-ldhMxz2r8fl/6QkXnBD3CR9/xg694oT6DZQ2s6c/RI28OjtSOpxnPrUCGOBJ46RCUxcWdx3p6kw/xnDHjKvaRA==", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.12.0", "pg-pool": "^3.13.0", @@ -1092,7 +1090,6 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@prisma/config": "7.5.0", "@prisma/dev": "0.20.0", @@ -1245,7 +1242,8 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1331,7 +1329,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/smdb/package-lock.json b/database/smdb/package-lock.json index d8ac433a..835a5951 100644 --- a/database/smdb/package-lock.json +++ b/database/smdb/package-lock.json @@ -78,8 +78,7 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "devOptional": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -489,7 +488,8 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dc-db-local": { "resolved": "../local", @@ -669,7 +669,6 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -935,7 +934,6 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@prisma/config": "7.5.0", "@prisma/dev": "0.20.0", @@ -1087,7 +1085,8 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1164,7 +1163,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/ssmdb2/package-lock.json b/database/ssmdb2/package-lock.json index 36f511fb..94b0c69f 100644 --- a/database/ssmdb2/package-lock.json +++ b/database/ssmdb2/package-lock.json @@ -79,8 +79,7 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "devOptional": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -490,7 +489,8 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dc-db-local": { "resolved": "../local", @@ -670,7 +670,6 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -936,7 +935,6 @@ "devOptional": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@prisma/config": "7.5.0", "@prisma/dev": "0.20.0", @@ -1088,7 +1086,8 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "devOptional": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1165,7 +1164,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/tableWatcher/package-lock.json b/database/tableWatcher/package-lock.json index fbe528c3..b29838f2 100644 --- a/database/tableWatcher/package-lock.json +++ b/database/tableWatcher/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "socket.io-client": "^4.8.3" }, "devDependencies": { @@ -18,7 +18,7 @@ "typescript": "^5.9.3" } }, - "../../logger": { + "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", "license": "ISC", @@ -32,252 +32,21 @@ "typescript": "^5.9.3" } }, - "../../logger/node_modules/@pinojs/redact": { - "version": "0.4.0", - "license": "MIT" - }, - "../../logger/node_modules/@types/node": { - "version": "24.10.1", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.16.0" - } - }, - "../../logger/node_modules/atomic-sleep": { + "../../logger": { + "name": "dc-logger", "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "../../logger/node_modules/colorette": { - "version": "2.0.20", - "license": "MIT" - }, - "../../logger/node_modules/dateformat": { - "version": "4.6.3", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../../logger/node_modules/dotenv": { - "version": "17.2.3", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "../../logger/node_modules/end-of-stream": { - "version": "1.4.5", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "../../logger/node_modules/fast-copy": { - "version": "3.0.2", - "license": "MIT" - }, - "../../logger/node_modules/fast-safe-stringify": { - "version": "2.1.1", - "license": "MIT" - }, - "../../logger/node_modules/help-me": { - "version": "5.0.0", - "license": "MIT" - }, - "../../logger/node_modules/joycon": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "../../logger/node_modules/minimist": { - "version": "1.2.8", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../../logger/node_modules/on-exit-leak-free": { - "version": "2.1.2", - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "../../logger/node_modules/once": { - "version": "1.4.0", + "extraneous": true, "license": "ISC", "dependencies": { - "wrappy": "1" - } - }, - "../../logger/node_modules/pino": { - "version": "10.1.0", - "license": "MIT", - "dependencies": { - "@pinojs/redact": "^0.4.0", - "atomic-sleep": "^1.0.0", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^3.0.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "../../logger/node_modules/pino-abstract-transport": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "split2": "^4.0.0" - } - }, - "../../logger/node_modules/pino-pretty": { - "version": "13.1.2", - "license": "MIT", - "dependencies": { - "colorette": "^2.0.7", - "dateformat": "^4.6.3", - "fast-copy": "^3.0.2", - "fast-safe-stringify": "^2.1.1", - "help-me": "^5.0.0", - "joycon": "^3.1.1", - "minimist": "^1.2.6", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", - "pump": "^3.0.0", - "secure-json-parse": "^4.0.0", - "sonic-boom": "^4.0.1", - "strip-json-comments": "^5.0.2" - }, - "bin": { - "pino-pretty": "bin.js" - } - }, - "../../logger/node_modules/pino-std-serializers": { - "version": "7.0.0", - "license": "MIT" - }, - "../../logger/node_modules/process-warning": { - "version": "5.0.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "../../logger/node_modules/pump": { - "version": "3.0.3", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "../../logger/node_modules/quick-format-unescaped": { - "version": "4.0.4", - "license": "MIT" - }, - "../../logger/node_modules/real-require": { - "version": "0.2.0", - "license": "MIT", - "engines": { - "node": ">= 12.13.0" - } - }, - "../../logger/node_modules/safe-stable-stringify": { - "version": "2.5.0", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "../../logger/node_modules/secure-json-parse": { - "version": "4.0.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "../../logger/node_modules/sonic-boom": { - "version": "4.2.0", - "license": "MIT", - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, - "../../logger/node_modules/split2": { - "version": "4.2.0", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, - "../../logger/node_modules/strip-json-comments": { - "version": "5.0.2", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../../logger/node_modules/thread-stream": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "real-require": "^0.2.0" - } - }, - "../../logger/node_modules/typescript": { - "version": "5.9.3", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" }, - "engines": { - "node": ">=14.17" + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" } }, - "../../logger/node_modules/undici-types": { - "version": "7.16.0", - "dev": true, - "license": "MIT" - }, - "../../logger/node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, "node_modules/@chevrotain/cst-dts-gen": { "version": "10.5.0", "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-10.5.0.tgz", @@ -320,8 +89,7 @@ "resolved": "https://registry.npmjs.org/@electric-sql/pglite/-/pglite-0.3.15.tgz", "integrity": "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==", "dev": true, - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/@electric-sql/pglite-socket": { "version": "0.0.20", @@ -661,10 +429,11 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/debug": { @@ -876,7 +645,6 @@ "integrity": "sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -1255,7 +1023,8 @@ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/seq-queue": { "version": "0.0.5", @@ -1373,7 +1142,6 @@ "version": "5.9.3", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/database/tableWatcher/package.json b/database/tableWatcher/package.json index 485a1621..3380b5b0 100644 --- a/database/tableWatcher/package.json +++ b/database/tableWatcher/package.json @@ -20,7 +20,7 @@ "dist" ], "dependencies": { - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "socket.io-client": "^4.8.3" } } \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ae24d3ac..4650d217 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -44,7 +44,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -56,7 +56,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -841,6 +841,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.10.tgz", "integrity": "sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q==", "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" @@ -1001,7 +1002,6 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -1116,7 +1116,6 @@ "resolved": "https://registry.npmjs.org/@rjsf/core/-/core-6.4.1.tgz", "integrity": "sha512-+QaiSgQnOuO6ghIsohH2u/QcylkN+Da2968a75g/i4oARYJRYVxXDm2u3JR5aXndpMb4t4jTFrYyG8cNIv6oEg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "lodash": "^4.17.23", "lodash-es": "^4.17.23", @@ -1154,7 +1153,6 @@ "resolved": "https://registry.npmjs.org/@rjsf/utils/-/utils-6.4.1.tgz", "integrity": "sha512-5NL3jwt3rIS5/WRTrKt++y40FS/ScKGVwYJ3jIrHSQHSwBdLnd4cHf2zcnA97L1Klj8I6tvS/ugh+blf/Diwuw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@x0k/json-schema-merge": "^1.0.2", "fast-uri": "^3.1.0", @@ -1220,6 +1218,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "license": "MIT", + "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -1230,6 +1229,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "license": "MIT", + "peer": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -1239,7 +1239,8 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@types/json-schema": { "version": "7.0.15", @@ -1273,7 +1274,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -1321,6 +1321,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -1330,25 +1331,29 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", @@ -1359,13 +1364,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1378,6 +1385,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "license": "MIT", + "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -1387,6 +1395,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -1395,13 +1404,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1418,6 +1429,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", @@ -1431,6 +1443,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", @@ -1443,6 +1456,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", @@ -1457,6 +1471,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "license": "MIT", + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" @@ -1475,13 +1490,15 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "license": "BSD-3-Clause" + "license": "BSD-3-Clause", + "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/acorn": { "version": "8.15.0", @@ -1501,6 +1518,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz", "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.13.0" }, @@ -1513,7 +1531,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -1547,6 +1564,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "license": "MIT", + "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -1643,7 +1661,8 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/callsites": { "version": "3.1.0", @@ -1679,6 +1698,7 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=6.0" } @@ -1699,7 +1719,8 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/convert-source-map": { "version": "1.9.0", @@ -1787,7 +1808,8 @@ "version": "1.5.194", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz", "integrity": "sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==", - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/emojis-list": { "version": "3.0.0", @@ -1842,6 +1864,7 @@ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -1863,13 +1886,15 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/escalade": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -1891,6 +1916,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "license": "BSD-2-Clause", + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1904,6 +1930,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "license": "BSD-2-Clause", + "peer": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -1916,6 +1943,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } @@ -1925,6 +1953,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "license": "BSD-2-Clause", + "peer": true, "engines": { "node": ">=4.0" } @@ -1934,6 +1963,7 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.8.x" } @@ -1985,19 +2015,22 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "license": "BSD-2-Clause" + "license": "BSD-2-Clause", + "peer": true }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=8" } @@ -2096,6 +2129,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "license": "MIT", + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -2167,6 +2201,7 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "license": "MIT", + "peer": true, "engines": { "node": ">=6.11.5" } @@ -2236,7 +2271,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/mime": { "version": "4.1.0", @@ -2258,6 +2294,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", + "peer": true, "engines": { "node": ">= 0.6" } @@ -2267,6 +2304,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", + "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -2284,7 +2322,8 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/next": { "version": "16.1.6", @@ -2343,7 +2382,8 @@ "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/object-assign": { "version": "4.1.1", @@ -2501,6 +2541,7 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", + "peer": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -2530,7 +2571,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2540,7 +2580,6 @@ "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.10.10.tgz", "integrity": "sha512-gMckKUqn8aK/vCnfwoBpBVFUGT9SVQxwsYrp9yDHt0arXMamxALerliKBxr1TPbntirK/HGrUAHYbAeQTa9GHQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.24.7", "@restart/hooks": "^0.4.9", @@ -2572,7 +2611,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -2606,7 +2644,6 @@ "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz", "integrity": "sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==", "license": "MIT", - "peer": true, "dependencies": { "@types/use-sync-external-store": "^0.0.6", "use-sync-external-store": "^1.4.0" @@ -2680,8 +2717,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/redux-thunk": { "version": "3.1.0", @@ -2754,7 +2790,8 @@ "url": "https://feross.org/support" } ], - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/scheduler": { "version": "0.27.0", @@ -2785,7 +2822,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2830,6 +2866,7 @@ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "license": "BSD-3-Clause", + "peer": true, "dependencies": { "randombytes": "^2.1.0" } @@ -2953,6 +2990,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -2963,6 +3001,7 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "license": "BSD-3-Clause", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3001,6 +3040,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "license": "MIT", + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -3028,6 +3068,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", "license": "MIT", + "peer": true, "engines": { "node": ">=6" } @@ -3037,6 +3078,7 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.43.1.tgz", "integrity": "sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==", "license": "BSD-2-Clause", + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.14.0", @@ -3055,6 +3097,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "license": "MIT", + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", @@ -3089,6 +3132,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "license": "MIT", + "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -3163,6 +3207,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" @@ -3220,6 +3265,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", "license": "MIT", + "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -3233,6 +3279,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.0.tgz", "integrity": "sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==", "license": "MIT", + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -3281,6 +3328,7 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", "license": "MIT", + "peer": true, "engines": { "node": ">=10.13.0" } @@ -3290,6 +3338,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "license": "MIT", + "peer": true, "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", diff --git a/logger/package-lock.json b/lib/logger/package-lock.json similarity index 100% rename from logger/package-lock.json rename to lib/logger/package-lock.json diff --git a/logger/package.json b/lib/logger/package.json similarity index 100% rename from logger/package.json rename to lib/logger/package.json diff --git a/logger/src/index.ts b/lib/logger/src/index.ts similarity index 100% rename from logger/src/index.ts rename to lib/logger/src/index.ts diff --git a/logger/tsconfig.json b/lib/logger/tsconfig.json similarity index 100% rename from logger/tsconfig.json rename to lib/logger/tsconfig.json diff --git a/ranges/cache/Dockerfile b/ranges/cache/Dockerfile index df796f74..a13b5807 100644 --- a/ranges/cache/Dockerfile +++ b/ranges/cache/Dockerfile @@ -13,7 +13,7 @@ ARG CACHE_REFRESH_INTERVAL FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -46,7 +46,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-smdb /app/database/smdb /app/database/smdb COPY --from=deps-table-watcher /app/database/tableWatcher /app/database/tableWatcher diff --git a/ranges/cache/docker-compose.yaml b/ranges/cache/docker-compose.yaml index 28f340bb..59f6e9ec 100644 --- a/ranges/cache/docker-compose.yaml +++ b/ranges/cache/docker-compose.yaml @@ -14,7 +14,7 @@ services: - smdb=../../database/smdb - table-watcher=../../database/tableWatcher - range-types=../types - - logger=../../logger + - logger=../../lib/logger args: - SELF_DB_HOST=${SELF_DB_HOST} - SELF_DB_USER=${SELF_DB_USER} diff --git a/ranges/cache/package-lock.json b/ranges/cache/package-lock.json index 0ca5befe..dbbc9758 100644 --- a/ranges/cache/package-lock.json +++ b/ranges/cache/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "dc-db-local": "file:../../database/local", "dc-db-smdb": "file:../../database/smdb", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", "dotenv": "^17.3.1" @@ -59,7 +59,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "socket.io-client": "^4.8.3" }, "devDependencies": { @@ -68,9 +68,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -87,7 +102,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -236,7 +251,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/dc-ranges-types": { diff --git a/ranges/cache/package.json b/ranges/cache/package.json index 5bd73b57..f728ed80 100644 --- a/ranges/cache/package.json +++ b/ranges/cache/package.json @@ -12,7 +12,7 @@ "dependencies": { "dc-db-local": "file:../../database/local", "dc-db-smdb": "file:../../database/smdb", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-table-watcher": "file:../../database/tableWatcher", "dotenv": "^17.3.1" @@ -22,4 +22,4 @@ "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/ranges/log/Dockerfile b/ranges/log/Dockerfile index 44f54cdd..86f34e9a 100644 --- a/ranges/log/Dockerfile +++ b/ranges/log/Dockerfile @@ -11,7 +11,7 @@ ARG SELF_DB_NAME ARG CACHE_REFRESH_INTERVAL FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -44,7 +44,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-streams /app/streams /app/streams COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-ranges-ttl /app/ranges/ttl /app/ranges/ttl diff --git a/ranges/log/docker-compose.yaml b/ranges/log/docker-compose.yaml index 7fd20251..29fc2747 100644 --- a/ranges/log/docker-compose.yaml +++ b/ranges/log/docker-compose.yaml @@ -19,7 +19,7 @@ services: - local-db=../../database/local - range-types=../types - range-ttl=../ttl - - logger=../../logger + - logger=../../lib/logger - streams=../../streams networks: - displaycontroller diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index ec118af2..71711d34 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -13,7 +13,7 @@ "csv-parse": "^6.1.0", "date-fns": "^4.1.0", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", @@ -46,9 +46,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -66,7 +81,7 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../logger" + "dc-logger": "file:../lib/logger" }, "devDependencies": { "@types/amqplib": "^0.10.8", @@ -87,7 +102,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -181,7 +196,6 @@ "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.18.0" } @@ -549,7 +563,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/dc-ranges-ttl": { @@ -1680,7 +1694,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/ranges/log/package.json b/ranges/log/package.json index f4643ec3..6fcaa57c 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -14,7 +14,7 @@ "csv-parse": "^6.1.0", "date-fns": "^4.1.0", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", @@ -29,4 +29,4 @@ "tsc-alias": "^1.8.16", "typescript": "~5.9.3" } -} +} \ No newline at end of file diff --git a/ranges/merge/Dockerfile b/ranges/merge/Dockerfile index 6d3f7a3d..a145d370 100644 --- a/ranges/merge/Dockerfile +++ b/ranges/merge/Dockerfile @@ -9,7 +9,7 @@ ARG SELF_DB_NAME ARG CACHE_REFRESH_INTERVAL FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -36,7 +36,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-ranges-ttl /app/ranges/ttl /app/ranges/ttl COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/ranges/merge/docker-compose.yaml b/ranges/merge/docker-compose.yaml index b199bbac..5a18520f 100644 --- a/ranges/merge/docker-compose.yaml +++ b/ranges/merge/docker-compose.yaml @@ -17,7 +17,7 @@ services: - local-db=../../database/local - range-types=../types - range-ttl=../ttl - - logger=../../logger + - logger=../../lib/logger networks: - displaycontroller depends_on: diff --git a/ranges/merge/package-lock.json b/ranges/merge/package-lock.json index ef541793..ceed74e0 100644 --- a/ranges/merge/package-lock.json +++ b/ranges/merge/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dotenv": "^17.3.1", @@ -43,9 +43,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -70,7 +85,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -490,7 +505,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/dc-ranges-ttl": { diff --git a/ranges/merge/package.json b/ranges/merge/package.json index cf4fde7b..aa7111b0 100644 --- a/ranges/merge/package.json +++ b/ranges/merge/package.json @@ -19,11 +19,11 @@ "dependencies": { "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", "dotenv": "^17.3.1", "express": "^5.2.1", "socket.io": "^4.8.3" } -} +} \ No newline at end of file diff --git a/ranges/multicast/Dockerfile b/ranges/multicast/Dockerfile index a33cc49e..e2a39264 100644 --- a/ranges/multicast/Dockerfile +++ b/ranges/multicast/Dockerfile @@ -9,7 +9,7 @@ ARG SELF_DB_NAME ARG CACHE_REFRESH_INTERVAL FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -36,7 +36,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-streams /app/streams /app/streams COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/ranges/multicast/docker-compose.yaml b/ranges/multicast/docker-compose.yaml index d294c4a3..c1868490 100644 --- a/ranges/multicast/docker-compose.yaml +++ b/ranges/multicast/docker-compose.yaml @@ -19,7 +19,7 @@ services: additional_contexts: - local-db=../../database/local - range-types=../types - - logger=../../logger + - logger=../../lib/logger - streams=../../streams networks: - displaycontroller diff --git a/ranges/multicast/package-lock.json b/ranges/multicast/package-lock.json index 1e9c31d8..49ec20ea 100644 --- a/ranges/multicast/package-lock.json +++ b/ranges/multicast/package-lock.json @@ -13,7 +13,7 @@ "ahocorasick": "^1.0.2", "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", "dotenv": "^17.3.1" @@ -42,9 +42,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -62,7 +77,7 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../logger" + "dc-logger": "file:../lib/logger" }, "devDependencies": { "@types/amqplib": "^0.10.8", @@ -75,7 +90,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -261,7 +276,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/dc-ranges-types": { diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index abbdc39c..a15cc882 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -20,9 +20,9 @@ "ahocorasick": "^1.0.2", "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", "dotenv": "^17.3.1" } -} +} \ No newline at end of file diff --git a/ranges/multicast/proxy/Dockerfile b/ranges/multicast/proxy/Dockerfile index 88bb0469..83770ab0 100644 --- a/ranges/multicast/proxy/Dockerfile +++ b/ranges/multicast/proxy/Dockerfile @@ -6,7 +6,7 @@ WORKDIR /app FROM base AS local-deps -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build diff --git a/ranges/multicast/proxy/docker-compose.yaml b/ranges/multicast/proxy/docker-compose.yaml index 56d93717..d95fd9fc 100644 --- a/ranges/multicast/proxy/docker-compose.yaml +++ b/ranges/multicast/proxy/docker-compose.yaml @@ -10,7 +10,7 @@ services: args: - MULTICAST_MSG_MIN_LENGTH=${MULTICAST_MSG_MIN_LENGTH} additional_contexts: - - logger=../../../logger + - logger=../../../lib/logger depends_on: dc-rabbitmq: condition: service_healthy diff --git a/ranges/multicast/proxy/package-lock.json b/ranges/multicast/proxy/package-lock.json index 0f27ade8..db847b10 100644 --- a/ranges/multicast/proxy/package-lock.json +++ b/ranges/multicast/proxy/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@network-utils/arp-lookup": "^2.1.0", "amqplib": "^0.10.9", - "dc-logger": "file:../../../logger", + "dc-logger": "file:../../../lib/logger", "dotenv": "^17.3.1", "iconv-lite": "^0.7.2" }, @@ -21,9 +21,24 @@ "typescript": "^5.9.3" } }, + "../../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -84,7 +99,7 @@ "license": "MIT" }, "node_modules/dc-logger": { - "resolved": "../../../logger", + "resolved": "../../../lib/logger", "link": true }, "node_modules/dotenv": { diff --git a/ranges/multicast/proxy/package.json b/ranges/multicast/proxy/package.json index 3c34083e..2e6a1290 100644 --- a/ranges/multicast/proxy/package.json +++ b/ranges/multicast/proxy/package.json @@ -12,7 +12,7 @@ "dependencies": { "@network-utils/arp-lookup": "^2.1.0", "amqplib": "^0.10.9", - "dc-logger": "file:../../../logger", + "dc-logger": "file:../../../lib/logger", "dotenv": "^17.3.1", "iconv-lite": "^0.7.2" }, @@ -21,4 +21,4 @@ "@types/node": "^25.5.0", "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/ranges/ssmdb2/Dockerfile b/ranges/ssmdb2/Dockerfile index bcd45aaa..25de9126 100644 --- a/ranges/ssmdb2/Dockerfile +++ b/ranges/ssmdb2/Dockerfile @@ -12,7 +12,7 @@ ARG CACHE_REFRESH_INTERVAL FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -51,7 +51,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-streams /app/streams /app/streams COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-ssmdb2 /app/database/ssmdb2 /app/database/ssmdb2 diff --git a/ranges/ssmdb2/docker-compose.yaml b/ranges/ssmdb2/docker-compose.yaml index c6bc71df..1b482523 100644 --- a/ranges/ssmdb2/docker-compose.yaml +++ b/ranges/ssmdb2/docker-compose.yaml @@ -20,7 +20,7 @@ services: - ssmdb2=../../database/ssmdb2 - range-types=../types - table-watcher=../../database/tableWatcher - - logger=../../logger + - logger=../../lib/logger - streams=../../streams networks: - displaycontroller diff --git a/ranges/ssmdb2/package-lock.json b/ranges/ssmdb2/package-lock.json index f49a8160..38f7d948 100644 --- a/ranges/ssmdb2/package-lock.json +++ b/ranges/ssmdb2/package-lock.json @@ -12,7 +12,7 @@ "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", "dc-db-ssmdb2": "file:../../database/ssmdb2", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", "dc-table-watcher": "file:../../database/tableWatcher", @@ -63,7 +63,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "socket.io-client": "^4.8.3" }, "devDependencies": { @@ -72,9 +72,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -92,7 +107,7 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../logger" + "dc-logger": "file:../lib/logger" }, "devDependencies": { "@types/amqplib": "^0.10.8", @@ -105,7 +120,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -283,7 +298,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/dc-ranges-types": { diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index 7d9ab517..412aca51 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -19,10 +19,10 @@ "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", "dc-db-ssmdb2": "file:../../database/ssmdb2", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-streams": "file:../../streams", "dc-table-watcher": "file:../../database/tableWatcher", "dotenv": "^17.3.1" } -} +} \ No newline at end of file diff --git a/ranges/types/package-lock.json b/ranges/types/package-lock.json index aa606c34..72a64899 100644 --- a/ranges/types/package-lock.json +++ b/ranges/types/package-lock.json @@ -903,7 +903,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/screens/evaluations/Dockerfile b/screens/evaluations/Dockerfile index 291d2a25..e2e7f716 100644 --- a/screens/evaluations/Dockerfile +++ b/screens/evaluations/Dockerfile @@ -11,7 +11,7 @@ ARG SM_SMB_USER ARG SM_SMB_PASS FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -26,7 +26,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local FROM local-deps AS deps diff --git a/screens/evaluations/docker-compose.yaml b/screens/evaluations/docker-compose.yaml index f5217a62..69e44c6c 100644 --- a/screens/evaluations/docker-compose.yaml +++ b/screens/evaluations/docker-compose.yaml @@ -11,7 +11,7 @@ services: dockerfile: Dockerfile additional_contexts: - local-db=../../database/local - - logger=../../logger + - logger=../../lib/logger - files-utils=../utils/files args: - SELF_DB_HOST=${SELF_DB_HOST} diff --git a/screens/evaluations/package-lock.json b/screens/evaluations/package-lock.json index 6b045c8f..88a0c4ba 100644 --- a/screens/evaluations/package-lock.json +++ b/screens/evaluations/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dotenv": "^17.3.1", "express": "^5.2.1", "express-rate-limit": "^8.3.1", @@ -42,9 +42,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -190,7 +205,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" }, @@ -229,7 +243,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=20.19.0" } @@ -707,7 +720,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/debug": { @@ -918,7 +931,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", diff --git a/screens/evaluations/package.json b/screens/evaluations/package.json index debb5902..7ebac045 100644 --- a/screens/evaluations/package.json +++ b/screens/evaluations/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dotenv": "^17.3.1", "express": "^5.2.1", "express-rate-limit": "^8.3.1", diff --git a/screens/images/Dockerfile b/screens/images/Dockerfile index c2de051f..e7891c6c 100644 --- a/screens/images/Dockerfile +++ b/screens/images/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /app FROM base AS local-deps -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build diff --git a/screens/images/docker-compose.yaml b/screens/images/docker-compose.yaml index ed9cd6ca..ed7b7ad5 100644 --- a/screens/images/docker-compose.yaml +++ b/screens/images/docker-compose.yaml @@ -10,7 +10,7 @@ services: context: . dockerfile: Dockerfile additional_contexts: - - logger=../../logger + - logger=../../lib/logger - files-utils=../utils/files volumes: - images_data:/app/files diff --git a/screens/images/package-lock.json b/screens/images/package-lock.json index 46153a10..8ccb92e0 100644 --- a/screens/images/package-lock.json +++ b/screens/images/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "body-parser": "^2.2.2", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", @@ -25,9 +25,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -441,7 +456,7 @@ } }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/debug": { @@ -574,7 +589,6 @@ "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", "license": "MIT", - "peer": true, "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", diff --git a/screens/images/package.json b/screens/images/package.json index dbbf56cc..d0d3a09a 100644 --- a/screens/images/package.json +++ b/screens/images/package.json @@ -11,7 +11,7 @@ "license": "ISC", "dependencies": { "body-parser": "^2.2.2", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dotenv": "^17.3.1", "express": "^5.2.1", "express-fileupload": "^1.5.2", @@ -25,4 +25,4 @@ "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/screens/screenCast/Dockerfile b/screens/screenCast/Dockerfile index 428a1d6b..82a6ddc3 100644 --- a/screens/screenCast/Dockerfile +++ b/screens/screenCast/Dockerfile @@ -4,7 +4,7 @@ WORKDIR /app FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -18,7 +18,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-screens-types /app/screens/types /app/screens/types FROM local-deps AS deps diff --git a/screens/screenCast/docker-compose.yaml b/screens/screenCast/docker-compose.yaml index b50ba095..dfd1a39e 100644 --- a/screens/screenCast/docker-compose.yaml +++ b/screens/screenCast/docker-compose.yaml @@ -10,7 +10,7 @@ services: context: . dockerfile: Dockerfile additional_contexts: - - logger=../../logger + - logger=../../lib/logger - screen-types=../types depends_on: dc-rabbitmq: diff --git a/screens/screenCast/package-lock.json b/screens/screenCast/package-lock.json index 22b5b4ff..182b6576 100644 --- a/screens/screenCast/package-lock.json +++ b/screens/screenCast/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-screens-types": "file:../types", "socket.io": "^4.8.3" }, @@ -20,9 +20,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -39,7 +54,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -144,7 +159,7 @@ } }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/dc-screens-types": { diff --git a/screens/screenCast/package.json b/screens/screenCast/package.json index 79469ce7..8cf55000 100644 --- a/screens/screenCast/package.json +++ b/screens/screenCast/package.json @@ -11,7 +11,7 @@ "description": "", "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-screens-types": "file:../types", "socket.io": "^4.8.3" }, @@ -20,4 +20,4 @@ "@types/node": "^25.5.0", "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/screens/screenManager/Dockerfile b/screens/screenManager/Dockerfile index 7ee6da88..b8e6aa47 100644 --- a/screens/screenManager/Dockerfile +++ b/screens/screenManager/Dockerfile @@ -6,7 +6,7 @@ ARG SELF_DB_USER ARG SELF_DB_PASS FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -33,7 +33,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-screens-types /app/screens/types /app/screens/types COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/screens/screenManager/docker-compose.yaml b/screens/screenManager/docker-compose.yaml index 1a94c681..84b4df0c 100644 --- a/screens/screenManager/docker-compose.yaml +++ b/screens/screenManager/docker-compose.yaml @@ -12,7 +12,7 @@ services: additional_contexts: - local-db=../../database/local - ranges=../../ranges/types - - logger=../../logger + - logger=../../lib/logger - file-utils=../utils/files - screen-types=../types args: diff --git a/screens/screenManager/package-lock.json b/screens/screenManager/package-lock.json index 873e45d0..683adfef 100644 --- a/screens/screenManager/package-lock.json +++ b/screens/screenManager/package-lock.json @@ -12,7 +12,7 @@ "amqplib": "^0.10.9", "body-parser": "^2.2.2", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", "dotenv": "^17.3.1", @@ -44,9 +44,24 @@ "typescript": "^5.9.3" } }, + "../../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -63,7 +78,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -75,7 +90,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -495,7 +510,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../../logger", + "resolved": "../../lib/logger", "link": true }, "node_modules/dc-ranges-types": { diff --git a/screens/screenManager/package.json b/screens/screenManager/package.json index 2b049beb..ff6c23d4 100644 --- a/screens/screenManager/package.json +++ b/screens/screenManager/package.json @@ -13,7 +13,7 @@ "amqplib": "^0.10.9", "body-parser": "^2.2.2", "dc-db-local": "file:../../database/local", - "dc-logger": "file:../../logger", + "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", "dotenv": "^17.3.1", @@ -27,4 +27,4 @@ "tsc-alias": "^1.8.16", "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/screens/types/package-lock.json b/screens/types/package-lock.json index 74c1ed9b..2aa8a81f 100644 --- a/screens/types/package-lock.json +++ b/screens/types/package-lock.json @@ -889,7 +889,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/serverState/Dockerfile b/serverState/Dockerfile index 7c0944a3..34a5fa78 100644 --- a/serverState/Dockerfile +++ b/serverState/Dockerfile @@ -14,7 +14,7 @@ ARG SELF_DB_USER ARG SELF_DB_PASS FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -41,7 +41,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-smdb /app/database/smdb /app/database/smdb COPY --from=deps-screens-types /app/screens/types /app/screens/types diff --git a/serverState/docker-compose.yaml b/serverState/docker-compose.yaml index 8408d4e3..f3a5ea88 100644 --- a/serverState/docker-compose.yaml +++ b/serverState/docker-compose.yaml @@ -13,7 +13,7 @@ services: - local-db=../database/local - smdb=../database/smdb - screen-types=../screens/types - - logger=../logger + - logger=../lib/logger args: - MIN_SM_VERSION=${MIN_SM_VERSION} - MAX_SM_VERSION=${MAX_SM_VERSION} diff --git a/serverState/package-lock.json b/serverState/package-lock.json index e37aff64..956d84a3 100644 --- a/serverState/package-lock.json +++ b/serverState/package-lock.json @@ -12,7 +12,7 @@ "amqplib": "^0.10.9", "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", - "dc-logger": "file:../logger", + "dc-logger": "file:../lib/logger", "dc-screens-types": "file:../screens/types", "dotenv": "^17.3.1", "express": "^5.2.1", @@ -59,9 +59,24 @@ "typescript": "^5.9.3" } }, + "../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -78,7 +93,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^12.0.0" + "typia": "^11.0.3" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -386,7 +401,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../logger", + "resolved": "../lib/logger", "link": true }, "node_modules/dc-screens-types": { diff --git a/serverState/package.json b/serverState/package.json index 52e9af2b..1192f969 100644 --- a/serverState/package.json +++ b/serverState/package.json @@ -13,7 +13,7 @@ "amqplib": "^0.10.9", "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", - "dc-logger": "file:../logger", + "dc-logger": "file:../lib/logger", "dc-screens-types": "file:../screens/types", "dotenv": "^17.3.1", "express": "^5.2.1", @@ -27,4 +27,4 @@ "@types/semver": "^7.7.1", "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/streams/package-lock.json b/streams/package-lock.json index 8c4671de..bcf2863c 100644 --- a/streams/package-lock.json +++ b/streams/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../logger" + "dc-logger": "file:../lib/logger" }, "devDependencies": { "@types/amqplib": "^0.10.8", @@ -18,9 +18,24 @@ "typescript": "~5.9.3" } }, + "../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -72,7 +87,7 @@ "license": "MIT" }, "node_modules/dc-logger": { - "resolved": "../logger", + "resolved": "../lib/logger", "link": true }, "node_modules/querystringify": { diff --git a/streams/package.json b/streams/package.json index f1264698..653f39ce 100644 --- a/streams/package.json +++ b/streams/package.json @@ -20,6 +20,6 @@ }, "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../logger" + "dc-logger": "file:../lib/logger" } } \ No newline at end of file diff --git a/syncTime/Dockerfile b/syncTime/Dockerfile index 8d41c71a..af6f1217 100644 --- a/syncTime/Dockerfile +++ b/syncTime/Dockerfile @@ -10,7 +10,7 @@ ARG SM_DB_USER ARG SM_DB_PASS FROM base AS deps-logger -WORKDIR /app/logger +WORKDIR /app/lib/logger COPY --from=logger . . RUN npm ci --loglevel=info && \ npm run build; @@ -31,7 +31,7 @@ RUN npm ci --loglevel=info && \ FROM base AS local-deps WORKDIR /app -COPY --from=deps-logger /app/logger /app/logger +COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-smdb /app/database/smdb /app/database/smdb diff --git a/syncTime/docker-compose.yaml b/syncTime/docker-compose.yaml index 7ecc55b8..0931b45c 100644 --- a/syncTime/docker-compose.yaml +++ b/syncTime/docker-compose.yaml @@ -10,7 +10,7 @@ services: additional_contexts: - local-db=../database/local - smdb-db=../database/smdb - - logger=../logger + - logger=../lib/logger args: - SELF_DB_HOST=${SELF_DB_HOST} - SELF_DB_NAME=${SELF_DB_NAME} diff --git a/syncTime/package-lock.json b/syncTime/package-lock.json index e71f987a..509847e0 100644 --- a/syncTime/package-lock.json +++ b/syncTime/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", - "dc-logger": "file:../logger", + "dc-logger": "file:../lib/logger", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3" }, @@ -52,9 +52,24 @@ "typescript": "^5.9.3" } }, + "../lib/logger": { + "name": "dc-logger", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dotenv": "^17.3.1", + "pino": "^10.3.1", + "pino-pretty": "^13.1.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -91,7 +106,7 @@ "link": true }, "node_modules/dc-logger": { - "resolved": "../logger", + "resolved": "../lib/logger", "link": true }, "node_modules/debug": { diff --git a/syncTime/package.json b/syncTime/package.json index be0015a7..d42ca3d8 100644 --- a/syncTime/package.json +++ b/syncTime/package.json @@ -17,8 +17,8 @@ "dependencies": { "dc-db-local": "file:../database/local", "dc-db-smdb": "file:../database/smdb", - "dc-logger": "file:../logger", + "dc-logger": "file:../lib/logger", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3" } -} +} \ No newline at end of file diff --git a/utils/recorder/package-lock.json b/utils/recorder/package-lock.json index 902a756c..1861a1f8 100644 --- a/utils/recorder/package-lock.json +++ b/utils/recorder/package-lock.json @@ -93,7 +93,6 @@ "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~7.18.0" } @@ -593,7 +592,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" From ad0f5f0c2f18b9889f652a82f7205d77d0782e36 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:01:01 +0100 Subject: [PATCH 25/31] fix: Prisma migrations not working --- database/local/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/database/local/Dockerfile b/database/local/Dockerfile index e42330cf..870f9b1c 100644 --- a/database/local/Dockerfile +++ b/database/local/Dockerfile @@ -31,8 +31,8 @@ RUN apk add --no-cache --update netcat-openbsd nano RUN adduser -D display-user && chown -R display-user /app USER display-user -COPY --from=build /app/dist ./ -COPY --from=deps /app/node_modules ./node_modules -COPY --from=deps /app/package.json ./package.json +COPY --from=build --chown=display-user /app/dist ./ +COPY --from=deps --chown=display-user /app/node_modules ./node_modules +COPY --from=deps --chown=display-user /app/package.json ./package.json CMD ["sh", "entrypoint.sh"] \ No newline at end of file From 461d413236dca29a428761722d88043417c582ac Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:07:20 +0100 Subject: [PATCH 26/31] feat: Move streams to lib directory --- {streams => lib/streams}/package-lock.json | 0 {streams => lib/streams}/package.json | 2 +- {streams => lib/streams}/src/core/duplex.ts | 0 {streams => lib/streams}/src/core/readable.ts | 0 {streams => lib/streams}/src/core/transform.ts | 0 {streams => lib/streams}/src/core/writable.ts | 0 {streams => lib/streams}/src/index.ts | 0 {streams => lib/streams}/src/rabbitMq/receiver.ts | 0 {streams => lib/streams}/src/rabbitMq/writer.ts | 0 {streams => lib/streams}/src/transforms/debounce.ts | 0 {streams => lib/streams}/tsconfig.json | 0 ranges/log/Dockerfile | 4 ++-- ranges/log/docker-compose.yaml | 2 +- ranges/log/package.json | 2 +- ranges/multicast/Dockerfile | 4 ++-- ranges/multicast/docker-compose.yaml | 2 +- ranges/multicast/package.json | 2 +- ranges/ssmdb2/Dockerfile | 4 ++-- ranges/ssmdb2/docker-compose.yaml | 2 +- ranges/ssmdb2/package.json | 2 +- 20 files changed, 13 insertions(+), 13 deletions(-) rename {streams => lib/streams}/package-lock.json (100%) rename {streams => lib/streams}/package.json (92%) rename {streams => lib/streams}/src/core/duplex.ts (100%) rename {streams => lib/streams}/src/core/readable.ts (100%) rename {streams => lib/streams}/src/core/transform.ts (100%) rename {streams => lib/streams}/src/core/writable.ts (100%) rename {streams => lib/streams}/src/index.ts (100%) rename {streams => lib/streams}/src/rabbitMq/receiver.ts (100%) rename {streams => lib/streams}/src/rabbitMq/writer.ts (100%) rename {streams => lib/streams}/src/transforms/debounce.ts (100%) rename {streams => lib/streams}/tsconfig.json (100%) diff --git a/streams/package-lock.json b/lib/streams/package-lock.json similarity index 100% rename from streams/package-lock.json rename to lib/streams/package-lock.json diff --git a/streams/package.json b/lib/streams/package.json similarity index 92% rename from streams/package.json rename to lib/streams/package.json index 653f39ce..f1264698 100644 --- a/streams/package.json +++ b/lib/streams/package.json @@ -20,6 +20,6 @@ }, "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../lib/logger" + "dc-logger": "file:../logger" } } \ No newline at end of file diff --git a/streams/src/core/duplex.ts b/lib/streams/src/core/duplex.ts similarity index 100% rename from streams/src/core/duplex.ts rename to lib/streams/src/core/duplex.ts diff --git a/streams/src/core/readable.ts b/lib/streams/src/core/readable.ts similarity index 100% rename from streams/src/core/readable.ts rename to lib/streams/src/core/readable.ts diff --git a/streams/src/core/transform.ts b/lib/streams/src/core/transform.ts similarity index 100% rename from streams/src/core/transform.ts rename to lib/streams/src/core/transform.ts diff --git a/streams/src/core/writable.ts b/lib/streams/src/core/writable.ts similarity index 100% rename from streams/src/core/writable.ts rename to lib/streams/src/core/writable.ts diff --git a/streams/src/index.ts b/lib/streams/src/index.ts similarity index 100% rename from streams/src/index.ts rename to lib/streams/src/index.ts diff --git a/streams/src/rabbitMq/receiver.ts b/lib/streams/src/rabbitMq/receiver.ts similarity index 100% rename from streams/src/rabbitMq/receiver.ts rename to lib/streams/src/rabbitMq/receiver.ts diff --git a/streams/src/rabbitMq/writer.ts b/lib/streams/src/rabbitMq/writer.ts similarity index 100% rename from streams/src/rabbitMq/writer.ts rename to lib/streams/src/rabbitMq/writer.ts diff --git a/streams/src/transforms/debounce.ts b/lib/streams/src/transforms/debounce.ts similarity index 100% rename from streams/src/transforms/debounce.ts rename to lib/streams/src/transforms/debounce.ts diff --git a/streams/tsconfig.json b/lib/streams/tsconfig.json similarity index 100% rename from streams/tsconfig.json rename to lib/streams/tsconfig.json diff --git a/ranges/log/Dockerfile b/ranges/log/Dockerfile index 86f34e9a..cf037dd5 100644 --- a/ranges/log/Dockerfile +++ b/ranges/log/Dockerfile @@ -36,7 +36,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM deps-logger AS deps-streams -WORKDIR /app/streams +WORKDIR /app/lib/streams COPY --from=streams . . RUN npm ci --loglevel=info && \ npm run build; @@ -45,7 +45,7 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-streams /app/streams /app/streams +COPY --from=deps-streams /app/lib/streams /app/lib/streams COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-ranges-ttl /app/ranges/ttl /app/ranges/ttl COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/ranges/log/docker-compose.yaml b/ranges/log/docker-compose.yaml index 29fc2747..9b1b43e7 100644 --- a/ranges/log/docker-compose.yaml +++ b/ranges/log/docker-compose.yaml @@ -20,7 +20,7 @@ services: - range-types=../types - range-ttl=../ttl - logger=../../lib/logger - - streams=../../streams + - streams=../../lib/streams networks: - displaycontroller depends_on: diff --git a/ranges/log/package.json b/ranges/log/package.json index 6fcaa57c..69851400 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -17,7 +17,7 @@ "dc-logger": "file:../../lib/logger", "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dc-streams": "file:../../streams", + "dc-streams": "file:../../lib/streams", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3", "typia": "^12.0.0" diff --git a/ranges/multicast/Dockerfile b/ranges/multicast/Dockerfile index e2a39264..862e530b 100644 --- a/ranges/multicast/Dockerfile +++ b/ranges/multicast/Dockerfile @@ -28,7 +28,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM deps-logger AS deps-streams -WORKDIR /app/streams +WORKDIR /app/lib/streams COPY --from=streams . . RUN npm ci --loglevel=info && \ npm run build; @@ -38,7 +38,7 @@ WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local -COPY --from=deps-streams /app/streams /app/streams +COPY --from=deps-streams /app/lib/streams /app/lib/streams COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types FROM local-deps AS deps diff --git a/ranges/multicast/docker-compose.yaml b/ranges/multicast/docker-compose.yaml index c1868490..947d4ed0 100644 --- a/ranges/multicast/docker-compose.yaml +++ b/ranges/multicast/docker-compose.yaml @@ -20,7 +20,7 @@ services: - local-db=../../database/local - range-types=../types - logger=../../lib/logger - - streams=../../streams + - streams=../../lib/streams networks: - displaycontroller depends_on: diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index a15cc882..c0470b07 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -22,7 +22,7 @@ "dc-db-local": "file:../../database/local", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", - "dc-streams": "file:../../streams", + "dc-streams": "file:../../lib/streams", "dotenv": "^17.3.1" } } \ No newline at end of file diff --git a/ranges/ssmdb2/Dockerfile b/ranges/ssmdb2/Dockerfile index 25de9126..01ca13b0 100644 --- a/ranges/ssmdb2/Dockerfile +++ b/ranges/ssmdb2/Dockerfile @@ -43,7 +43,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM deps-logger AS deps-streams -WORKDIR /app/streams +WORKDIR /app/lib/streams COPY --from=streams . . RUN npm ci --loglevel=info && \ npm run build; @@ -52,7 +52,7 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-streams /app/streams /app/streams +COPY --from=deps-streams /app/lib/streams /app/lib/streams COPY --from=deps-local-db /app/database/local /app/database/local COPY --from=deps-ssmdb2 /app/database/ssmdb2 /app/database/ssmdb2 COPY --from=deps-table-watcher /app/database/tableWatcher /app/database/tableWatcher diff --git a/ranges/ssmdb2/docker-compose.yaml b/ranges/ssmdb2/docker-compose.yaml index 1b482523..266dcb36 100644 --- a/ranges/ssmdb2/docker-compose.yaml +++ b/ranges/ssmdb2/docker-compose.yaml @@ -21,7 +21,7 @@ services: - range-types=../types - table-watcher=../../database/tableWatcher - logger=../../lib/logger - - streams=../../streams + - streams=../../lib/streams networks: - displaycontroller depends_on: diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index 412aca51..a4cac562 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -21,7 +21,7 @@ "dc-db-ssmdb2": "file:../../database/ssmdb2", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", - "dc-streams": "file:../../streams", + "dc-streams": "file:../../lib/streams", "dc-table-watcher": "file:../../database/tableWatcher", "dotenv": "^17.3.1" } From dba0753a11d8d4ef9c68eb6c200a0e16b4a9c3d3 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:11:14 +0100 Subject: [PATCH 27/31] feat: Move ttl to lib dir --- {ranges => lib}/ttl/package-lock.json | 0 {ranges => lib}/ttl/package.json | 2 +- {ranges => lib}/ttl/src/index.ts | 0 {ranges => lib}/ttl/tsconfig.json | 0 ranges/log/Dockerfile | 8 ++++---- ranges/log/docker-compose.yaml | 2 +- ranges/log/package.json | 2 +- ranges/log/src/streams/mergeRange.ts | 2 +- ranges/merge/Dockerfile | 8 ++++---- ranges/merge/docker-compose.yaml | 2 +- ranges/merge/package.json | 2 +- ranges/merge/src/rangeMerger/index.ts | 2 +- ranges/merge/src/rangeMerger/merge.ts | 2 +- 13 files changed, 16 insertions(+), 16 deletions(-) rename {ranges => lib}/ttl/package-lock.json (100%) rename {ranges => lib}/ttl/package.json (92%) rename {ranges => lib}/ttl/src/index.ts (100%) rename {ranges => lib}/ttl/tsconfig.json (100%) diff --git a/ranges/ttl/package-lock.json b/lib/ttl/package-lock.json similarity index 100% rename from ranges/ttl/package-lock.json rename to lib/ttl/package-lock.json diff --git a/ranges/ttl/package.json b/lib/ttl/package.json similarity index 92% rename from ranges/ttl/package.json rename to lib/ttl/package.json index ce1a73ae..822dcf11 100644 --- a/ranges/ttl/package.json +++ b/lib/ttl/package.json @@ -1,5 +1,5 @@ { - "name": "dc-ranges-ttl", + "name": "dc-ttl", "version": "1.0.0", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/ranges/ttl/src/index.ts b/lib/ttl/src/index.ts similarity index 100% rename from ranges/ttl/src/index.ts rename to lib/ttl/src/index.ts diff --git a/ranges/ttl/tsconfig.json b/lib/ttl/tsconfig.json similarity index 100% rename from ranges/ttl/tsconfig.json rename to lib/ttl/tsconfig.json diff --git a/ranges/log/Dockerfile b/ranges/log/Dockerfile index cf037dd5..0f30461e 100644 --- a/ranges/log/Dockerfile +++ b/ranges/log/Dockerfile @@ -23,9 +23,9 @@ RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ npm run build; -FROM base AS deps-ranges-ttl -WORKDIR /app/ranges/ttl -COPY --from=range-ttl . . +FROM base AS deps-ttl +WORKDIR /app/lib/ttl +COPY --from=ttl . . RUN npm ci --loglevel=info && \ npm run build; @@ -47,7 +47,7 @@ WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-streams /app/lib/streams /app/lib/streams COPY --from=deps-local-db /app/database/local /app/database/local -COPY --from=deps-ranges-ttl /app/ranges/ttl /app/ranges/ttl +COPY --from=deps-ttl /app/lib/ttl /app/lib/ttl COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types FROM local-deps AS deps diff --git a/ranges/log/docker-compose.yaml b/ranges/log/docker-compose.yaml index 9b1b43e7..b2fdda25 100644 --- a/ranges/log/docker-compose.yaml +++ b/ranges/log/docker-compose.yaml @@ -18,7 +18,7 @@ services: additional_contexts: - local-db=../../database/local - range-types=../types - - range-ttl=../ttl + - ttl=../../lib/ttl - logger=../../lib/logger - streams=../../lib/streams networks: diff --git a/ranges/log/package.json b/ranges/log/package.json index 69851400..7d7d4d29 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -15,7 +15,7 @@ "date-fns": "^4.1.0", "dc-db-local": "file:../../database/local", "dc-logger": "file:../../lib/logger", - "dc-ranges-ttl": "file:../ttl", + "dc-ttl": "file:../../lib/ttl", "dc-ranges-types": "file:../types", "dc-streams": "file:../../lib/streams", "dotenv": "^17.3.1", diff --git a/ranges/log/src/streams/mergeRange.ts b/ranges/log/src/streams/mergeRange.ts index 01e21126..7741f43a 100644 --- a/ranges/log/src/streams/mergeRange.ts +++ b/ranges/log/src/streams/mergeRange.ts @@ -1,4 +1,4 @@ -import { TTLHandler } from "dc-ranges-ttl"; +import { TTLHandler } from "dc-ttl"; import { InternalDiscipline, InternalRange, isInternalOverrideDiscipline, isNormInternalDiscipline } from "dc-ranges-types"; import { LogInternalRange, MulticastInternalRange } from "../types"; import { LocalClient } from "dc-db-local"; diff --git a/ranges/merge/Dockerfile b/ranges/merge/Dockerfile index a145d370..e7e4d4b5 100644 --- a/ranges/merge/Dockerfile +++ b/ranges/merge/Dockerfile @@ -21,9 +21,9 @@ RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ npm run build; -FROM base AS deps-ranges-ttl -WORKDIR /app/ranges/ttl -COPY --from=range-ttl . . +FROM base AS deps-ttl +WORKDIR /app/lib/ttl +COPY --from=ttl . . RUN npm ci --loglevel=info && \ npm run build; @@ -38,7 +38,7 @@ WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-local-db /app/database/local /app/database/local -COPY --from=deps-ranges-ttl /app/ranges/ttl /app/ranges/ttl +COPY --from=deps-ttl /app/lib/ttl /app/lib/ttl COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types FROM local-deps AS deps diff --git a/ranges/merge/docker-compose.yaml b/ranges/merge/docker-compose.yaml index 5a18520f..3008ed1c 100644 --- a/ranges/merge/docker-compose.yaml +++ b/ranges/merge/docker-compose.yaml @@ -16,7 +16,7 @@ services: additional_contexts: - local-db=../../database/local - range-types=../types - - range-ttl=../ttl + - ttl=../../lib/ttl - logger=../../lib/logger networks: - displaycontroller diff --git a/ranges/merge/package.json b/ranges/merge/package.json index aa7111b0..4d5edd3f 100644 --- a/ranges/merge/package.json +++ b/ranges/merge/package.json @@ -20,7 +20,7 @@ "amqplib": "^0.10.9", "dc-db-local": "file:../../database/local", "dc-logger": "file:../../lib/logger", - "dc-ranges-ttl": "file:../ttl", + "dc-ttl": "file:../../lib/ttl", "dc-ranges-types": "file:../types", "dotenv": "^17.3.1", "express": "^5.2.1", diff --git a/ranges/merge/src/rangeMerger/index.ts b/ranges/merge/src/rangeMerger/index.ts index c47f9c32..1d37e95a 100644 --- a/ranges/merge/src/rangeMerger/index.ts +++ b/ranges/merge/src/rangeMerger/index.ts @@ -1,6 +1,6 @@ import { Range, InternalRange } from "dc-ranges-types"; import { EventEmitter } from "events"; -import { TTLHandler } from "dc-ranges-ttl"; +import { TTLHandler } from "dc-ttl"; import { mergeRange } from "./merge"; export class RangeMerger extends EventEmitter { diff --git a/ranges/merge/src/rangeMerger/merge.ts b/ranges/merge/src/rangeMerger/merge.ts index 91807d05..b2d68c9b 100644 --- a/ranges/merge/src/rangeMerger/merge.ts +++ b/ranges/merge/src/rangeMerger/merge.ts @@ -1,4 +1,4 @@ -import { TTLHandler } from "dc-ranges-ttl"; +import { TTLHandler } from "dc-ttl"; import { ActiveRange, InactiveRange, RangeShooter, Source } from "dc-ranges-types"; import { InternalRange, Discipline, Shooter, StartList, Hits, Hit } from "dc-ranges-types"; import { getDiscipline } from "../cache/disciplines"; From c6318396bc293aa1871e1511a84f03377826f007 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:23:59 +0100 Subject: [PATCH 28/31] feat: Move database clients to lib dir --- database/{local => }/docker-compose.yaml | 17 +---------------- database/{local => migrate}/Dockerfile | 11 ++++++----- database/migrate/docker-compose.yaml | 19 +++++++++++++++++++ database/{local/src => migrate}/entrypoint.sh | 0 database/{local => }/pgadmin/Dockerfile | 0 .../{local => }/pgadmin/create-configs.sh | 0 .../{local => }/pgadmin/docker-compose.yaml | 0 docker-compose.yaml | 2 +- .../database}/local/.dockerignore | 0 .../migration.sql | 0 .../20240818143212_add_screens/migration.sql | 0 .../20240930124210_add_cache/migration.sql | 0 .../migration.sql | 0 .../local/migrations/migration_lock.toml | 0 .../database}/local/package-lock.json | 0 {database => lib/database}/local/package.json | 0 .../database}/local/prisma.config.ts | 0 .../database}/local/schema.prisma | 0 {database => lib/database}/local/src/index.ts | 0 .../database}/local/tsconfig.json | 0 {database => lib/database}/smdb/.dockerignore | 0 .../database}/smdb/package-lock.json | 0 {database => lib/database}/smdb/package.json | 0 {database => lib/database}/smdb/schema.prisma | 0 {database => lib/database}/smdb/src/index.ts | 0 {database => lib/database}/smdb/tsconfig.json | 0 .../database}/ssmdb2/.dockerignore | 0 .../database}/ssmdb2/package-lock.json | 0 .../database}/ssmdb2/package.json | 0 .../database}/ssmdb2/schema.prisma | 0 .../database}/ssmdb2/src/index.ts | 0 .../database}/ssmdb2/tsconfig.json | 0 .../database}/tableWatcher/.dockerignore | 0 .../database}/tableWatcher/package-lock.json | 0 .../database}/tableWatcher/package.json | 2 +- .../database}/tableWatcher/src/index.ts | 0 .../database}/tableWatcher/tsconfig.json | 0 ranges/cache/Dockerfile | 12 ++++++------ ranges/cache/docker-compose.yaml | 6 +++--- ranges/cache/package.json | 6 +++--- ranges/log/Dockerfile | 4 ++-- ranges/log/docker-compose.yaml | 2 +- ranges/log/package.json | 2 +- ranges/merge/Dockerfile | 4 ++-- ranges/merge/docker-compose.yaml | 2 +- ranges/merge/package.json | 2 +- ranges/multicast/Dockerfile | 4 ++-- ranges/multicast/docker-compose.yaml | 2 +- ranges/multicast/package.json | 2 +- ranges/ssmdb2/Dockerfile | 12 ++++++------ ranges/ssmdb2/docker-compose.yaml | 6 +++--- ranges/ssmdb2/package.json | 6 +++--- screens/evaluations/Dockerfile | 4 ++-- screens/evaluations/docker-compose.yaml | 2 +- screens/evaluations/package.json | 2 +- screens/screenManager/Dockerfile | 4 ++-- screens/screenManager/docker-compose.yaml | 2 +- screens/screenManager/package.json | 2 +- serverState/Dockerfile | 8 ++++---- serverState/docker-compose.yaml | 4 ++-- serverState/package.json | 4 ++-- syncTime/Dockerfile | 8 ++++---- syncTime/docker-compose.yaml | 4 ++-- syncTime/package.json | 4 ++-- 64 files changed, 88 insertions(+), 83 deletions(-) rename database/{local => }/docker-compose.yaml (56%) rename database/{local => migrate}/Dockerfile (73%) create mode 100644 database/migrate/docker-compose.yaml rename database/{local/src => migrate}/entrypoint.sh (100%) rename database/{local => }/pgadmin/Dockerfile (100%) rename database/{local => }/pgadmin/create-configs.sh (100%) rename database/{local => }/pgadmin/docker-compose.yaml (100%) rename {database => lib/database}/local/.dockerignore (100%) rename {database => lib/database}/local/migrations/20240811084813_add_parameters/migration.sql (100%) rename {database => lib/database}/local/migrations/20240818143212_add_screens/migration.sql (100%) rename {database => lib/database}/local/migrations/20240930124210_add_cache/migration.sql (100%) rename {database => lib/database}/local/migrations/20241010070636_add_known_ranges/migration.sql (100%) rename {database => lib/database}/local/migrations/migration_lock.toml (100%) rename {database => lib/database}/local/package-lock.json (100%) rename {database => lib/database}/local/package.json (100%) rename {database => lib/database}/local/prisma.config.ts (100%) rename {database => lib/database}/local/schema.prisma (100%) rename {database => lib/database}/local/src/index.ts (100%) rename {database => lib/database}/local/tsconfig.json (100%) rename {database => lib/database}/smdb/.dockerignore (100%) rename {database => lib/database}/smdb/package-lock.json (100%) rename {database => lib/database}/smdb/package.json (100%) rename {database => lib/database}/smdb/schema.prisma (100%) rename {database => lib/database}/smdb/src/index.ts (100%) rename {database => lib/database}/smdb/tsconfig.json (100%) rename {database => lib/database}/ssmdb2/.dockerignore (100%) rename {database => lib/database}/ssmdb2/package-lock.json (100%) rename {database => lib/database}/ssmdb2/package.json (100%) rename {database => lib/database}/ssmdb2/schema.prisma (100%) rename {database => lib/database}/ssmdb2/src/index.ts (100%) rename {database => lib/database}/ssmdb2/tsconfig.json (100%) rename {database => lib/database}/tableWatcher/.dockerignore (100%) rename {database => lib/database}/tableWatcher/package-lock.json (100%) rename {database => lib/database}/tableWatcher/package.json (92%) rename {database => lib/database}/tableWatcher/src/index.ts (100%) rename {database => lib/database}/tableWatcher/tsconfig.json (100%) diff --git a/database/local/docker-compose.yaml b/database/docker-compose.yaml similarity index 56% rename from database/local/docker-compose.yaml rename to database/docker-compose.yaml index f99b340f..1a9b5902 100644 --- a/database/local/docker-compose.yaml +++ b/database/docker-compose.yaml @@ -1,5 +1,6 @@ include: - ./pgadmin/docker-compose.yaml + - ./migrate/docker-compose.yaml services: dc-database: @@ -20,22 +21,6 @@ services: retries: 5 volumes: - postgres_data:/var/lib/postgresql - dc-db-migrate: - container_name: dc-db-migrate - image: ghcr.io/svenfinn/dc-db-migrate:${APP_VERSION} - networks: - - displaycontroller - build: - context: . - dockerfile: Dockerfile - args: - - SELF_DB_HOST=${SELF_DB_HOST} - - SELF_DB_USER=${SELF_DB_USER} - - SELF_DB_PASS=${SELF_DB_PASS} - - SELF_DB_NAME=${SELF_DB_NAME} - depends_on: - dc-database: - condition: service_healthy volumes: postgres_data: diff --git a/database/local/Dockerfile b/database/migrate/Dockerfile similarity index 73% rename from database/local/Dockerfile rename to database/migrate/Dockerfile index 870f9b1c..2263d06b 100644 --- a/database/local/Dockerfile +++ b/database/migrate/Dockerfile @@ -9,20 +9,21 @@ ARG SELF_DB_PASS FROM base AS deps -COPY package.json package-lock.json schema.prisma ./ +COPY --from=local-db package.json package-lock.json schema.prisma ./ RUN npm ci --omit=dev --loglevel=info; FROM base AS build -COPY package.json package-lock.json schema.prisma ./ +COPY --from=local-db package.json package-lock.json schema.prisma ./ RUN npm ci --loglevel=info; -COPY . . +COPY --from=local-db . . RUN export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ npm run build && \ echo "SELF_DB_URL=postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" > dist/.env; -COPY migrations dist/migrations -COPY src/entrypoint.sh prisma.config.ts schema.prisma dist/ +COPY --from=local-db migrations dist/migrations +COPY --from=local-db prisma.config.ts schema.prisma dist/ +COPY entrypoint.sh dist/ FROM base AS final diff --git a/database/migrate/docker-compose.yaml b/database/migrate/docker-compose.yaml new file mode 100644 index 00000000..10cf718b --- /dev/null +++ b/database/migrate/docker-compose.yaml @@ -0,0 +1,19 @@ +services: + dc-db-migrate: + container_name: dc-db-migrate + image: ghcr.io/svenfinn/dc-db-migrate:${APP_VERSION} + networks: + - displaycontroller + build: + context: . + dockerfile: Dockerfile + args: + - SELF_DB_HOST=${SELF_DB_HOST} + - SELF_DB_USER=${SELF_DB_USER} + - SELF_DB_PASS=${SELF_DB_PASS} + - SELF_DB_NAME=${SELF_DB_NAME} + additional_contexts: + - local-db=../../lib/database/local + depends_on: + dc-database: + condition: service_healthy diff --git a/database/local/src/entrypoint.sh b/database/migrate/entrypoint.sh similarity index 100% rename from database/local/src/entrypoint.sh rename to database/migrate/entrypoint.sh diff --git a/database/local/pgadmin/Dockerfile b/database/pgadmin/Dockerfile similarity index 100% rename from database/local/pgadmin/Dockerfile rename to database/pgadmin/Dockerfile diff --git a/database/local/pgadmin/create-configs.sh b/database/pgadmin/create-configs.sh similarity index 100% rename from database/local/pgadmin/create-configs.sh rename to database/pgadmin/create-configs.sh diff --git a/database/local/pgadmin/docker-compose.yaml b/database/pgadmin/docker-compose.yaml similarity index 100% rename from database/local/pgadmin/docker-compose.yaml rename to database/pgadmin/docker-compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml index 02ac4470..6e4b6c1a 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,7 +2,7 @@ name: displaycontroller include: - proxy/docker-compose.yaml - - database/local/docker-compose.yaml + - database/docker-compose.yaml - serverState/docker-compose.yaml - syncTime/docker-compose.yaml - screens/docker-compose.yaml diff --git a/database/local/.dockerignore b/lib/database/local/.dockerignore similarity index 100% rename from database/local/.dockerignore rename to lib/database/local/.dockerignore diff --git a/database/local/migrations/20240811084813_add_parameters/migration.sql b/lib/database/local/migrations/20240811084813_add_parameters/migration.sql similarity index 100% rename from database/local/migrations/20240811084813_add_parameters/migration.sql rename to lib/database/local/migrations/20240811084813_add_parameters/migration.sql diff --git a/database/local/migrations/20240818143212_add_screens/migration.sql b/lib/database/local/migrations/20240818143212_add_screens/migration.sql similarity index 100% rename from database/local/migrations/20240818143212_add_screens/migration.sql rename to lib/database/local/migrations/20240818143212_add_screens/migration.sql diff --git a/database/local/migrations/20240930124210_add_cache/migration.sql b/lib/database/local/migrations/20240930124210_add_cache/migration.sql similarity index 100% rename from database/local/migrations/20240930124210_add_cache/migration.sql rename to lib/database/local/migrations/20240930124210_add_cache/migration.sql diff --git a/database/local/migrations/20241010070636_add_known_ranges/migration.sql b/lib/database/local/migrations/20241010070636_add_known_ranges/migration.sql similarity index 100% rename from database/local/migrations/20241010070636_add_known_ranges/migration.sql rename to lib/database/local/migrations/20241010070636_add_known_ranges/migration.sql diff --git a/database/local/migrations/migration_lock.toml b/lib/database/local/migrations/migration_lock.toml similarity index 100% rename from database/local/migrations/migration_lock.toml rename to lib/database/local/migrations/migration_lock.toml diff --git a/database/local/package-lock.json b/lib/database/local/package-lock.json similarity index 100% rename from database/local/package-lock.json rename to lib/database/local/package-lock.json diff --git a/database/local/package.json b/lib/database/local/package.json similarity index 100% rename from database/local/package.json rename to lib/database/local/package.json diff --git a/database/local/prisma.config.ts b/lib/database/local/prisma.config.ts similarity index 100% rename from database/local/prisma.config.ts rename to lib/database/local/prisma.config.ts diff --git a/database/local/schema.prisma b/lib/database/local/schema.prisma similarity index 100% rename from database/local/schema.prisma rename to lib/database/local/schema.prisma diff --git a/database/local/src/index.ts b/lib/database/local/src/index.ts similarity index 100% rename from database/local/src/index.ts rename to lib/database/local/src/index.ts diff --git a/database/local/tsconfig.json b/lib/database/local/tsconfig.json similarity index 100% rename from database/local/tsconfig.json rename to lib/database/local/tsconfig.json diff --git a/database/smdb/.dockerignore b/lib/database/smdb/.dockerignore similarity index 100% rename from database/smdb/.dockerignore rename to lib/database/smdb/.dockerignore diff --git a/database/smdb/package-lock.json b/lib/database/smdb/package-lock.json similarity index 100% rename from database/smdb/package-lock.json rename to lib/database/smdb/package-lock.json diff --git a/database/smdb/package.json b/lib/database/smdb/package.json similarity index 100% rename from database/smdb/package.json rename to lib/database/smdb/package.json diff --git a/database/smdb/schema.prisma b/lib/database/smdb/schema.prisma similarity index 100% rename from database/smdb/schema.prisma rename to lib/database/smdb/schema.prisma diff --git a/database/smdb/src/index.ts b/lib/database/smdb/src/index.ts similarity index 100% rename from database/smdb/src/index.ts rename to lib/database/smdb/src/index.ts diff --git a/database/smdb/tsconfig.json b/lib/database/smdb/tsconfig.json similarity index 100% rename from database/smdb/tsconfig.json rename to lib/database/smdb/tsconfig.json diff --git a/database/ssmdb2/.dockerignore b/lib/database/ssmdb2/.dockerignore similarity index 100% rename from database/ssmdb2/.dockerignore rename to lib/database/ssmdb2/.dockerignore diff --git a/database/ssmdb2/package-lock.json b/lib/database/ssmdb2/package-lock.json similarity index 100% rename from database/ssmdb2/package-lock.json rename to lib/database/ssmdb2/package-lock.json diff --git a/database/ssmdb2/package.json b/lib/database/ssmdb2/package.json similarity index 100% rename from database/ssmdb2/package.json rename to lib/database/ssmdb2/package.json diff --git a/database/ssmdb2/schema.prisma b/lib/database/ssmdb2/schema.prisma similarity index 100% rename from database/ssmdb2/schema.prisma rename to lib/database/ssmdb2/schema.prisma diff --git a/database/ssmdb2/src/index.ts b/lib/database/ssmdb2/src/index.ts similarity index 100% rename from database/ssmdb2/src/index.ts rename to lib/database/ssmdb2/src/index.ts diff --git a/database/ssmdb2/tsconfig.json b/lib/database/ssmdb2/tsconfig.json similarity index 100% rename from database/ssmdb2/tsconfig.json rename to lib/database/ssmdb2/tsconfig.json diff --git a/database/tableWatcher/.dockerignore b/lib/database/tableWatcher/.dockerignore similarity index 100% rename from database/tableWatcher/.dockerignore rename to lib/database/tableWatcher/.dockerignore diff --git a/database/tableWatcher/package-lock.json b/lib/database/tableWatcher/package-lock.json similarity index 100% rename from database/tableWatcher/package-lock.json rename to lib/database/tableWatcher/package-lock.json diff --git a/database/tableWatcher/package.json b/lib/database/tableWatcher/package.json similarity index 92% rename from database/tableWatcher/package.json rename to lib/database/tableWatcher/package.json index 3380b5b0..485a1621 100644 --- a/database/tableWatcher/package.json +++ b/lib/database/tableWatcher/package.json @@ -20,7 +20,7 @@ "dist" ], "dependencies": { - "dc-logger": "file:../../lib/logger", + "dc-logger": "file:../../logger", "socket.io-client": "^4.8.3" } } \ No newline at end of file diff --git a/database/tableWatcher/src/index.ts b/lib/database/tableWatcher/src/index.ts similarity index 100% rename from database/tableWatcher/src/index.ts rename to lib/database/tableWatcher/src/index.ts diff --git a/database/tableWatcher/tsconfig.json b/lib/database/tableWatcher/tsconfig.json similarity index 100% rename from database/tableWatcher/tsconfig.json rename to lib/database/tableWatcher/tsconfig.json diff --git a/ranges/cache/Dockerfile b/ranges/cache/Dockerfile index a13b5807..3d6fbe7e 100644 --- a/ranges/cache/Dockerfile +++ b/ranges/cache/Dockerfile @@ -19,20 +19,20 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ npm run build; FROM deps-local-db AS deps-smdb -WORKDIR /app/database/smdb +WORKDIR /app/lib/database/smdb COPY --from=smdb . . RUN npm ci --loglevel=info && \ npm run build; FROM deps-logger AS deps-table-watcher -WORKDIR /app/database/tableWatcher +WORKDIR /app/lib/database/tableWatcher COPY --from=table-watcher . . RUN npm ci --loglevel=info && \ npm run build; @@ -47,9 +47,9 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-local-db /app/database/local /app/database/local -COPY --from=deps-smdb /app/database/smdb /app/database/smdb -COPY --from=deps-table-watcher /app/database/tableWatcher /app/database/tableWatcher +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local +COPY --from=deps-smdb /app/lib/database/smdb /app/lib/database/smdb +COPY --from=deps-table-watcher /app/lib/database/tableWatcher /app/lib/database/tableWatcher COPY --from=deps-range-types /app/ranges/types /app/ranges/types FROM local-deps AS deps diff --git a/ranges/cache/docker-compose.yaml b/ranges/cache/docker-compose.yaml index 59f6e9ec..3b590a06 100644 --- a/ranges/cache/docker-compose.yaml +++ b/ranges/cache/docker-compose.yaml @@ -10,9 +10,9 @@ services: context: . dockerfile: Dockerfile additional_contexts: - - local-db=../../database/local - - smdb=../../database/smdb - - table-watcher=../../database/tableWatcher + - local-db=../../lib/database/local + - smdb=../../lib/database/smdb + - table-watcher=../../lib/database/tableWatcher - range-types=../types - logger=../../lib/logger args: diff --git a/ranges/cache/package.json b/ranges/cache/package.json index f728ed80..7f1f09d0 100644 --- a/ranges/cache/package.json +++ b/ranges/cache/package.json @@ -10,11 +10,11 @@ "license": "ISC", "description": "", "dependencies": { - "dc-db-local": "file:../../database/local", - "dc-db-smdb": "file:../../database/smdb", + "dc-db-local": "file:../../lib/database/local", + "dc-db-smdb": "file:../../lib/database/smdb", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", - "dc-table-watcher": "file:../../database/tableWatcher", + "dc-table-watcher": "file:../../lib/database/tableWatcher", "dotenv": "^17.3.1" }, "devDependencies": { diff --git a/ranges/log/Dockerfile b/ranges/log/Dockerfile index 0f30461e..5c5e300a 100644 --- a/ranges/log/Dockerfile +++ b/ranges/log/Dockerfile @@ -17,7 +17,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ @@ -46,7 +46,7 @@ WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-streams /app/lib/streams /app/lib/streams -COPY --from=deps-local-db /app/database/local /app/database/local +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local COPY --from=deps-ttl /app/lib/ttl /app/lib/ttl COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/ranges/log/docker-compose.yaml b/ranges/log/docker-compose.yaml index b2fdda25..dcfea08a 100644 --- a/ranges/log/docker-compose.yaml +++ b/ranges/log/docker-compose.yaml @@ -16,7 +16,7 @@ services: - SM_SSH_PASS=${SM_SSH_PASS} - CACHE_REFRESH_INTERVAL=${CACHE_REFRESH_INTERVAL} additional_contexts: - - local-db=../../database/local + - local-db=../../lib/database/local - range-types=../types - ttl=../../lib/ttl - logger=../../lib/logger diff --git a/ranges/log/package.json b/ranges/log/package.json index 7d7d4d29..f005a59d 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -13,7 +13,7 @@ "amqplib": "^0.10.9", "csv-parse": "^6.1.0", "date-fns": "^4.1.0", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dc-ttl": "file:../../lib/ttl", "dc-ranges-types": "file:../types", diff --git a/ranges/merge/Dockerfile b/ranges/merge/Dockerfile index e7e4d4b5..047f97e3 100644 --- a/ranges/merge/Dockerfile +++ b/ranges/merge/Dockerfile @@ -15,7 +15,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ @@ -37,7 +37,7 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-local-db /app/database/local /app/database/local +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local COPY --from=deps-ttl /app/lib/ttl /app/lib/ttl COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/ranges/merge/docker-compose.yaml b/ranges/merge/docker-compose.yaml index 3008ed1c..4b3c25ff 100644 --- a/ranges/merge/docker-compose.yaml +++ b/ranges/merge/docker-compose.yaml @@ -14,7 +14,7 @@ services: - SELF_DB_NAME=${SELF_DB_NAME} - CACHE_REFRESH_INTERVAL=${CACHE_REFRESH_INTERVAL} additional_contexts: - - local-db=../../database/local + - local-db=../../lib/database/local - range-types=../types - ttl=../../lib/ttl - logger=../../lib/logger diff --git a/ranges/merge/package.json b/ranges/merge/package.json index 4d5edd3f..26ae133c 100644 --- a/ranges/merge/package.json +++ b/ranges/merge/package.json @@ -18,7 +18,7 @@ }, "dependencies": { "amqplib": "^0.10.9", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dc-ttl": "file:../../lib/ttl", "dc-ranges-types": "file:../types", diff --git a/ranges/multicast/Dockerfile b/ranges/multicast/Dockerfile index 862e530b..2f5f8537 100644 --- a/ranges/multicast/Dockerfile +++ b/ranges/multicast/Dockerfile @@ -15,7 +15,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ @@ -37,7 +37,7 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-local-db /app/database/local /app/database/local +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local COPY --from=deps-streams /app/lib/streams /app/lib/streams COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/ranges/multicast/docker-compose.yaml b/ranges/multicast/docker-compose.yaml index 947d4ed0..5db264a4 100644 --- a/ranges/multicast/docker-compose.yaml +++ b/ranges/multicast/docker-compose.yaml @@ -17,7 +17,7 @@ services: - SELF_DB_NAME=${SELF_DB_NAME} - CACHE_REFRESH_INTERVAL=${CACHE_REFRESH_INTERVAL} additional_contexts: - - local-db=../../database/local + - local-db=../../lib/database/local - range-types=../types - logger=../../lib/logger - streams=../../lib/streams diff --git a/ranges/multicast/package.json b/ranges/multicast/package.json index c0470b07..a7079252 100644 --- a/ranges/multicast/package.json +++ b/ranges/multicast/package.json @@ -19,7 +19,7 @@ "@types/ahocorasick": "^1.0.0", "ahocorasick": "^1.0.2", "amqplib": "^0.10.9", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-streams": "file:../../lib/streams", diff --git a/ranges/ssmdb2/Dockerfile b/ranges/ssmdb2/Dockerfile index 01ca13b0..e0f30f2d 100644 --- a/ranges/ssmdb2/Dockerfile +++ b/ranges/ssmdb2/Dockerfile @@ -18,20 +18,20 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ npm run build; FROM deps-local-db AS deps-ssmdb2 -WORKDIR /app/database/ssmdb2 +WORKDIR /app/lib/database/ssmdb2 COPY --from=ssmdb2 . . RUN npm ci --loglevel=info && \ npm run build; FROM deps-logger AS deps-table-watcher -WORKDIR /app/database/tableWatcher +WORKDIR /app/lib/database/tableWatcher COPY --from=table-watcher . . RUN npm ci --loglevel=info && \ npm run build; @@ -53,9 +53,9 @@ WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger COPY --from=deps-streams /app/lib/streams /app/lib/streams -COPY --from=deps-local-db /app/database/local /app/database/local -COPY --from=deps-ssmdb2 /app/database/ssmdb2 /app/database/ssmdb2 -COPY --from=deps-table-watcher /app/database/tableWatcher /app/database/tableWatcher +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local +COPY --from=deps-ssmdb2 /app/lib/database/ssmdb2 /app/lib/database/ssmdb2 +COPY --from=deps-table-watcher /app/lib/database/tableWatcher /app/lib/database/tableWatcher COPY --from=deps-range-types /app/ranges/types /app/ranges/types FROM local-deps AS deps diff --git a/ranges/ssmdb2/docker-compose.yaml b/ranges/ssmdb2/docker-compose.yaml index 266dcb36..5acbb598 100644 --- a/ranges/ssmdb2/docker-compose.yaml +++ b/ranges/ssmdb2/docker-compose.yaml @@ -16,10 +16,10 @@ services: - SM_DB_PASS=${SM_DB_PASS} - CACHE_REFRESH_INTERVAL=${CACHE_REFRESH_INTERVAL} additional_contexts: - - local-db=../../database/local - - ssmdb2=../../database/ssmdb2 + - local-db=../../lib/database/local + - ssmdb2=../../lib/database/ssmdb2 - range-types=../types - - table-watcher=../../database/tableWatcher + - table-watcher=../../lib/database/tableWatcher - logger=../../lib/logger - streams=../../lib/streams networks: diff --git a/ranges/ssmdb2/package.json b/ranges/ssmdb2/package.json index a4cac562..534ac8e9 100644 --- a/ranges/ssmdb2/package.json +++ b/ranges/ssmdb2/package.json @@ -17,12 +17,12 @@ }, "dependencies": { "amqplib": "^0.10.9", - "dc-db-local": "file:../../database/local", - "dc-db-ssmdb2": "file:../../database/ssmdb2", + "dc-db-local": "file:../../lib/database/local", + "dc-db-ssmdb2": "file:../../lib/database/ssmdb2", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", "dc-streams": "file:../../lib/streams", - "dc-table-watcher": "file:../../database/tableWatcher", + "dc-table-watcher": "file:../../lib/database/tableWatcher", "dotenv": "^17.3.1" } } \ No newline at end of file diff --git a/screens/evaluations/Dockerfile b/screens/evaluations/Dockerfile index e2e7f716..40789b63 100644 --- a/screens/evaluations/Dockerfile +++ b/screens/evaluations/Dockerfile @@ -17,7 +17,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ @@ -27,7 +27,7 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-local-db /app/database/local /app/database/local +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local FROM local-deps AS deps diff --git a/screens/evaluations/docker-compose.yaml b/screens/evaluations/docker-compose.yaml index 69e44c6c..9f691046 100644 --- a/screens/evaluations/docker-compose.yaml +++ b/screens/evaluations/docker-compose.yaml @@ -10,7 +10,7 @@ services: context: . dockerfile: Dockerfile additional_contexts: - - local-db=../../database/local + - local-db=../../lib/database/local - logger=../../lib/logger - files-utils=../utils/files args: diff --git a/screens/evaluations/package.json b/screens/evaluations/package.json index 7ebac045..3f18c6ea 100644 --- a/screens/evaluations/package.json +++ b/screens/evaluations/package.json @@ -10,7 +10,7 @@ "author": "Sven Finn", "license": "ISC", "dependencies": { - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dotenv": "^17.3.1", "express": "^5.2.1", diff --git a/screens/screenManager/Dockerfile b/screens/screenManager/Dockerfile index b8e6aa47..8616e049 100644 --- a/screens/screenManager/Dockerfile +++ b/screens/screenManager/Dockerfile @@ -12,7 +12,7 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ @@ -34,7 +34,7 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-local-db /app/database/local /app/database/local +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local COPY --from=deps-screens-types /app/screens/types /app/screens/types COPY --from=deps-ranges-types /app/ranges/types /app/ranges/types diff --git a/screens/screenManager/docker-compose.yaml b/screens/screenManager/docker-compose.yaml index 84b4df0c..14f18e19 100644 --- a/screens/screenManager/docker-compose.yaml +++ b/screens/screenManager/docker-compose.yaml @@ -10,7 +10,7 @@ services: context: . dockerfile: ./Dockerfile additional_contexts: - - local-db=../../database/local + - local-db=../../lib/database/local - ranges=../../ranges/types - logger=../../lib/logger - file-utils=../utils/files diff --git a/screens/screenManager/package.json b/screens/screenManager/package.json index ff6c23d4..44f65c2f 100644 --- a/screens/screenManager/package.json +++ b/screens/screenManager/package.json @@ -12,7 +12,7 @@ "dependencies": { "amqplib": "^0.10.9", "body-parser": "^2.2.2", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", diff --git a/serverState/Dockerfile b/serverState/Dockerfile index 34a5fa78..338fdd6d 100644 --- a/serverState/Dockerfile +++ b/serverState/Dockerfile @@ -20,14 +20,14 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ npm run build; FROM deps-local-db AS deps-smdb -WORKDIR /app/database/smdb +WORKDIR /app/lib/database/smdb COPY --from=smdb . . RUN npm ci --loglevel=info && \ npm run build; @@ -42,8 +42,8 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-local-db /app/database/local /app/database/local -COPY --from=deps-smdb /app/database/smdb /app/database/smdb +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local +COPY --from=deps-smdb /app/lib/database/smdb /app/lib/database/smdb COPY --from=deps-screens-types /app/screens/types /app/screens/types FROM local-deps AS deps diff --git a/serverState/docker-compose.yaml b/serverState/docker-compose.yaml index f3a5ea88..330adc5b 100644 --- a/serverState/docker-compose.yaml +++ b/serverState/docker-compose.yaml @@ -10,8 +10,8 @@ services: context: . dockerfile: Dockerfile additional_contexts: - - local-db=../database/local - - smdb=../database/smdb + - local-db=../lib/database/local + - smdb=../lib/database/smdb - screen-types=../screens/types - logger=../lib/logger args: diff --git a/serverState/package.json b/serverState/package.json index 1192f969..2675a899 100644 --- a/serverState/package.json +++ b/serverState/package.json @@ -11,8 +11,8 @@ "description": "", "dependencies": { "amqplib": "^0.10.9", - "dc-db-local": "file:../database/local", - "dc-db-smdb": "file:../database/smdb", + "dc-db-local": "file:../lib/database/local", + "dc-db-smdb": "file:../lib/database/smdb", "dc-logger": "file:../lib/logger", "dc-screens-types": "file:../screens/types", "dotenv": "^17.3.1", diff --git a/syncTime/Dockerfile b/syncTime/Dockerfile index af6f1217..d0239803 100644 --- a/syncTime/Dockerfile +++ b/syncTime/Dockerfile @@ -16,14 +16,14 @@ RUN npm ci --loglevel=info && \ npm run build; FROM base AS deps-local-db -WORKDIR /app/database/local +WORKDIR /app/lib/database/local COPY --from=local-db . . RUN npm ci --loglevel=info && \ export SELF_DB_URL="postgresql://$SELF_DB_USER:$SELF_DB_PASS@$SELF_DB_HOST:5432/$SELF_DB_NAME" && \ npm run build; FROM deps-local-db AS deps-smdb -WORKDIR /app/database/smdb +WORKDIR /app/lib/database/smdb COPY --from=smdb-db . . RUN npm ci --loglevel=info && \ npm run build; @@ -32,8 +32,8 @@ FROM base AS local-deps WORKDIR /app COPY --from=deps-logger /app/lib/logger /app/lib/logger -COPY --from=deps-local-db /app/database/local /app/database/local -COPY --from=deps-smdb /app/database/smdb /app/database/smdb +COPY --from=deps-local-db /app/lib/database/local /app/lib/database/local +COPY --from=deps-smdb /app/lib/database/smdb /app/lib/database/smdb FROM local-deps AS deps diff --git a/syncTime/docker-compose.yaml b/syncTime/docker-compose.yaml index 0931b45c..48d67495 100644 --- a/syncTime/docker-compose.yaml +++ b/syncTime/docker-compose.yaml @@ -8,8 +8,8 @@ services: context: . dockerfile: Dockerfile additional_contexts: - - local-db=../database/local - - smdb-db=../database/smdb + - local-db=../lib/database/local + - smdb-db=../lib/database/smdb - logger=../lib/logger args: - SELF_DB_HOST=${SELF_DB_HOST} diff --git a/syncTime/package.json b/syncTime/package.json index d42ca3d8..f8853e2f 100644 --- a/syncTime/package.json +++ b/syncTime/package.json @@ -15,8 +15,8 @@ "typescript": "^5.9.3" }, "dependencies": { - "dc-db-local": "file:../database/local", - "dc-db-smdb": "file:../database/smdb", + "dc-db-local": "file:../lib/database/local", + "dc-db-smdb": "file:../lib/database/smdb", "dc-logger": "file:../lib/logger", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3" From 5e0028ff7afd80b930e60bea6b4637338c380013 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:27:09 +0100 Subject: [PATCH 29/31] feat: Add endpoint lib --- lib/endpoints/package-lock.json | 1695 ++++++++++++++++++++++++++++ lib/endpoints/package.json | 24 + lib/endpoints/src/http/endpoint.ts | 26 + lib/endpoints/src/http/handler.ts | 106 ++ lib/endpoints/src/http/index.ts | 24 + lib/endpoints/src/http/request.ts | 93 ++ lib/endpoints/src/index.ts | 1 + lib/endpoints/tsconfig.json | 20 + 8 files changed, 1989 insertions(+) create mode 100644 lib/endpoints/package-lock.json create mode 100644 lib/endpoints/package.json create mode 100644 lib/endpoints/src/http/endpoint.ts create mode 100644 lib/endpoints/src/http/handler.ts create mode 100644 lib/endpoints/src/http/index.ts create mode 100644 lib/endpoints/src/http/request.ts create mode 100644 lib/endpoints/src/index.ts create mode 100644 lib/endpoints/tsconfig.json diff --git a/lib/endpoints/package-lock.json b/lib/endpoints/package-lock.json new file mode 100644 index 00000000..908dc3f2 --- /dev/null +++ b/lib/endpoints/package-lock.json @@ -0,0 +1,1695 @@ +{ + "name": "dc-endpoints", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dc-endpoints", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "express": "^5.2.1", + "path-to-regexp": "^8.3.0", + "typia": "^12.0.1" + }, + "devDependencies": { + "@types/express": "^5.0.6", + "@types/node": "^25.5.0", + "ts-patch": "^3.3.0", + "typescript": "~5.9.3" + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@standard-schema/spec": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", + "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/express": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express/-/express-5.0.6.tgz", + "integrity": "sha512-sKYVuV7Sv9fbPIt/442koC7+IIwK5olP1KWeD88e/idgoJqDm3JV/YUiPwkoKK92ylff2MGxSz1CSjsXelx0YA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^5.0.0", + "@types/serve-static": "^2" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.1.1.tgz", + "integrity": "sha512-v4zIMr/cX7/d2BpAEX3KNKL/JrT1s43s96lLvvdTmza1oEvDudCqK9aF/djc/SWgy8Yh0h30TZx5VpzqFCxk5A==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "devOptional": true, + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-1.2.1.tgz", + "integrity": "sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-8mam4H1NHLtu7nmtalF7eyBH14QyOASmcxHhSfEoRyr0nP/YdoesEtU+uSRvMe96TW/HPTtkoKqQLl53N7UXMQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*" + } + }, + "node_modules/@typia/core": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/core/-/core-12.0.1.tgz", + "integrity": "sha512-w7BZDLliZ4sJJW6WNN2cMhpLhKHghRELRZynCsfX1eFbQqsi3/lVtvpkTBSzEZXzuFJjb6VxyugB/e2gIZZeKw==", + "dependencies": { + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" + } + }, + "node_modules/@typia/interface": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/interface/-/interface-12.0.1.tgz", + "integrity": "sha512-HUlNN6Iqq3LXecVCzoSdwTYIZ4dq7eYRbUsNREPvtM10Ej1J2dKIH6zCEl9Ey0tQhcAwexdbubfLOSUQQYCD5A==" + }, + "node_modules/@typia/transform": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/transform/-/transform-12.0.1.tgz", + "integrity": "sha512-SX4VCRPHTxRY3l99iU74yn8iqZIQ0DE4939n+XYoojKlvFVmTlg/OCMxsWq3xe6Qw19Vaa8bdcXGV4tx+TAlqw==", + "dependencies": { + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" + } + }, + "node_modules/@typia/utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/utils/-/utils-12.0.1.tgz", + "integrity": "sha512-JIKsRhY4jxLtl/obttkR3vGp8d8hPysY6g0PUsIEDZ9/OO85OU7q8lYhu2GkZOJN/7htyqP+95GhpSNt2uELBQ==", + "dependencies": { + "@typia/interface": "^12.0.1" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/array-timsort": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==" + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "engines": { + "node": ">=14" + } + }, + "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==", + "dependencies": { + "array-timsort": "^1.0.3", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "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==", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/drange": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/global-prefix": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "dev": true, + "dependencies": { + "ini": "^4.1.3", + "kind-of": "^6.0.3", + "which": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.7.tgz", + "integrity": "sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==", + "dependencies": { + "@inquirer/external-editor": "^1.0.0", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-manager-detector": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", + "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", + "dependencies": { + "quansync": "^0.2.7" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ] + }, + "node_modules/randexp": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", + "dependencies": { + "drange": "^1.0.2", + "ret": "^0.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ret": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-patch": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ts-patch/-/ts-patch-3.3.0.tgz", + "integrity": "sha512-zAOzDnd5qsfEnjd9IGy1IRuvA7ygyyxxdxesbhMdutt8AHFjD8Vw8hU2rMF89HX1BKRWFYqKHrO8Q6lw0NeUZg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.2", + "global-prefix": "^4.0.0", + "minimist": "^1.2.8", + "resolve": "^1.22.2", + "semver": "^7.6.3", + "strip-ansi": "^6.0.1" + }, + "bin": { + "ts-patch": "bin/ts-patch.js", + "tspc": "bin/tspc.js" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typia": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/typia/-/typia-12.0.1.tgz", + "integrity": "sha512-meL2qpo6yYFj6wC5coz7T3XpQT9+UjdHErhw46jGfmLFJUq6Za74B0/KYMDRjLxF/0Fd63oVx6X3+MUlI1ZJcQ==", + "dependencies": { + "@standard-schema/spec": "^1.0.0", + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/transform": "^12.0.1", + "@typia/utils": "^12.0.1", + "commander": "^10.0.0", + "comment-json": "^4.2.3", + "inquirer": "^8.2.5", + "package-manager-detector": "^0.2.0", + "randexp": "^0.5.3" + }, + "bin": { + "typia": "lib/executable/typia.js" + }, + "peerDependencies": { + "typescript": ">=4.8.0 <5.10.0" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "devOptional": true + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/lib/endpoints/package.json b/lib/endpoints/package.json new file mode 100644 index 00000000..7e322646 --- /dev/null +++ b/lib/endpoints/package.json @@ -0,0 +1,24 @@ +{ + "name": "dc-endpoints", + "version": "1.0.0", + "description": "", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "scripts": { + "prepare": "ts-patch install", + "build": "tsc" + }, + "author": "Fabian Kast", + "license": "ISC", + "devDependencies": { + "@types/express": "^5.0.6", + "@types/node": "^25.5.0", + "ts-patch": "^3.3.0", + "typescript": "~5.9.3" + }, + "dependencies": { + "express": "^5.2.1", + "path-to-regexp": "^8.3.0", + "typia": "^12.0.1" + } +} \ No newline at end of file diff --git a/lib/endpoints/src/http/endpoint.ts b/lib/endpoints/src/http/endpoint.ts new file mode 100644 index 00000000..8726e470 --- /dev/null +++ b/lib/endpoints/src/http/endpoint.ts @@ -0,0 +1,26 @@ +export type Endpoint = MutatingEndpoint | GetEndpoint; + +export type MutatingEndpoint = { + method: 'POST' | 'PUT' | 'DELETE' | 'PATCH'; + request: MutatingEndpointRequest; + response: EndpointResponse; +}; + +export type GetEndpoint = { + method: 'GET'; + request: GetEndpointRequest; + response: EndpointResponse; +} + +export type GetEndpointRequest = { + path: string; + isParams: (input: unknown) => input is P; + isQuery: (input: unknown) => input is Q; +}; +export type MutatingEndpointRequest = GetEndpointRequest & { + isBody: (input: unknown) => input is B; +}; + +export type EndpointResponse = { + isResponseBody: (input: unknown) => input is RB; +}; \ No newline at end of file diff --git a/lib/endpoints/src/http/handler.ts b/lib/endpoints/src/http/handler.ts new file mode 100644 index 00000000..2200b204 --- /dev/null +++ b/lib/endpoints/src/http/handler.ts @@ -0,0 +1,106 @@ +import { isHttpError, isResponse, Response } from "."; +import { Express, Request as ExpressRequest, Response as ExpressResponse } from "express"; +import { Endpoint, GetEndpoint, MutatingEndpoint } from "./endpoint"; + +export type MutatingRequestHandler

= (params: P, query: Q, body: B) => Promise | undefined>; +export type GetRequestHandler

= (params: P, query: Q) => Promise | undefined>; + +export function createEndpointHandler

(app: Express, endpoint: GetEndpoint, handler: GetRequestHandler): void; +export function createEndpointHandler

(app: Express, endpoint: MutatingEndpoint, handler: MutatingRequestHandler): void; +export function createEndpointHandler

(app: Express, endpoint: Endpoint, handler: GetRequestHandler | MutatingRequestHandler): void { + const { method, request } = endpoint; + const expressHandler = async (req: ExpressRequest, res: ExpressResponse) => { + const { params, query, body } = req; + if (!request.isParams(params)) { + res.status(400).send({ + code: 400, + message: "Path parameters could not be validated", + }); + return; + } + if (!request.isQuery(query)) { + res.status(400).send({ + code: 400, + message: "Query parameters could not be validated", + }); + return; + } + if (method !== 'GET' && !request.isBody(body)) { + res.status(400).send({ + code: 400, + message: "Request body could not be validated", + }); + return; + } + try { + let result: RB | Response | void; + if (method === 'GET') { + const h = handler as GetRequestHandler; + result = await h(params, query); + } else { + const h = handler as MutatingRequestHandler; + result = await h(params, query, body); + } + + if (result === undefined) { + return res.status(204).send(); + } + if (isResponse(result)) { + if (isHttpError(result)) { + return res.status(result.code).json(result); + } + if (result.code === 204 || result.code === 205) { + return res.status(result.code).send(); + } + if (!("body" in result)) { + return res.status(500).json({ + code: 500, + message: "Response is missing body", + }); + } + if (!endpoint.response.isResponseBody(result.body)) { + return res.status(500).json({ + code: 500, + message: "Response body could not be validated", + }); + } + return res.status(result.code).json(result.body); + } + + if (endpoint.response.isResponseBody(result)) { + return res.status(200).json(result); + } else { + return res.status(500).json({ + code: 500, + message: "Response could not be validated", + }); + } + } catch (e) { + if (isHttpError(e)) { + res.status(e.code).send(e); + return; + } + res.status(500).send({ + code: 500, + message: "Internal server error", + }); + } + }; + switch (method) { + case 'GET': + app.get(request.path, expressHandler); + break; + case 'POST': + app.post(request.path, expressHandler); + break; + case 'PUT': + app.put(request.path, expressHandler); + break; + case 'DELETE': + app.delete(request.path, expressHandler); + break; + case 'PATCH': + app.patch(request.path, expressHandler); + break; + } +} \ No newline at end of file diff --git a/lib/endpoints/src/http/index.ts b/lib/endpoints/src/http/index.ts new file mode 100644 index 00000000..4dc9f5bd --- /dev/null +++ b/lib/endpoints/src/http/index.ts @@ -0,0 +1,24 @@ +import { createIs, tags } from "typia"; + +export type Response = SuccessfulResponse | HttpError; + +export type SuccessfulResponse = { + code: Exclude & tags.ExclusiveMaximum<300> & tags.MultipleOf<1>, 204 | 205>; + body: RB; +} | NoBodySuccessfulResponse; + +type NoBodySuccessfulResponse = { + code: 204 | 205; +}; + +export type HttpError = { + code: number & tags.Minimum<300> & tags.ExclusiveMaximum<600> & tags.MultipleOf<1>; + message: string; +}; + +export const isResponse = createIs>(); +export const isHttpError = createIs(); + +export { request } from "./request"; +export { createEndpointHandler } from "./handler"; +export { Endpoint } from "./endpoint"; \ No newline at end of file diff --git a/lib/endpoints/src/http/request.ts b/lib/endpoints/src/http/request.ts new file mode 100644 index 00000000..00a167f8 --- /dev/null +++ b/lib/endpoints/src/http/request.ts @@ -0,0 +1,93 @@ +import { compile } from "path-to-regexp"; +import { isHttpError, Response } from "."; +import { Endpoint, GetEndpoint, MutatingEndpoint } from "./endpoint"; + +export type GetRequest

= { + params: P; + query: Q; +}; + +export type MutatingRequest

= GetRequest & { + body: B; +}; + +export async function request

(endpoint: GetEndpoint, params: P, query: Q): Promise>; +export async function request

(endpoint: MutatingEndpoint, params: P, query: Q, body: B): Promise>; +export async function request

(endpoint: Endpoint, params: P, query: Q, body?: B): Promise> { + const { method, request, response } = endpoint; + if (!request.isParams(params)) { + return { + code: 400, + message: "Path parameters could not be validated locally" + } + } + if (!request.isQuery(query)) { + return { + code: 400, + message: "Query parameters could not be validated locally" + } + } + if (method !== 'GET' && !request.isBody(body)) { + return { + code: 400, + message: "Request body could not be validated locally" + } + } + const searchParams = new URLSearchParams( + Object.entries(query).map(([k, v]) => [k, String(v)]) + ); + const toPath = compile(request.path); + const resolvedPath = toPath(params); + const queryString = searchParams.toString(); + const url = queryString ? `${resolvedPath}?${queryString}` : resolvedPath; + const result = await fetch(url, { + method, + body: method === 'GET' ? undefined : JSON.stringify(body), + headers: method === 'GET' ? undefined : { + "Content-Type": "application/json" + } + }); + if (result.ok) { + if (result.status === 204 || result.status === 205) { + return { + code: result.status + }; + } + let responseBody: unknown; + try { + responseBody = await result.json(); + } catch (e) { + return { + code: 500, + message: "Response body is not valid JSON" + }; + } + if (response.isResponseBody(responseBody)) { + return { + code: result.status, + body: responseBody + }; + } else { + return { + code: 500, + message: "Response body could not be validated locally" + }; + } + } else { + try { + const errorBody = await result.json(); + if (!isHttpError(errorBody)) { + return { + code: 500, + message: "Error response body could not be validated locally" + }; + } + return errorBody; + } catch (e) { + return { + code: 500, + message: "Error response body is not valid JSON" + }; + } + } +} \ No newline at end of file diff --git a/lib/endpoints/src/index.ts b/lib/endpoints/src/index.ts new file mode 100644 index 00000000..c37c4171 --- /dev/null +++ b/lib/endpoints/src/index.ts @@ -0,0 +1 @@ +export * from "./http"; \ No newline at end of file diff --git a/lib/endpoints/tsconfig.json b/lib/endpoints/tsconfig.json new file mode 100644 index 00000000..908e16d0 --- /dev/null +++ b/lib/endpoints/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "target": "ES2023", + "module": "nodenext", + "moduleResolution": "nodenext", + "declaration": true, + "strict": true, + "outDir": "./dist", + "skipLibCheck": true, + "strictNullChecks": true, + "plugins": [ + { + "transform": "typia/lib/transform" + } + ] + }, + "include": [ + "src/**/*.ts" + ] +} \ No newline at end of file From de171ce9afd305019c3ad4bd8f95937723880fe2 Mon Sep 17 00:00:00 2001 From: Fabian Kast <77897281+SvenFinn@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:59:39 +0100 Subject: [PATCH 30/31] chore: Dependencies --- frontend/package-lock.json | 99 +++++---- frontend/package.json | 2 +- lib/database/local/package-lock.json | 8 +- lib/database/local/package.json | 2 +- lib/database/local/tsconfig.json | 3 +- lib/database/smdb/package-lock.json | 2 +- lib/database/smdb/tsconfig.json | 1 + lib/database/ssmdb2/package-lock.json | 2 +- lib/database/ssmdb2/tsconfig.json | 1 + lib/database/tableWatcher/package-lock.json | 6 +- lib/database/tableWatcher/tsconfig.json | 1 + lib/endpoints/package-lock.json | 7 +- lib/logger/tsconfig.json | 3 +- lib/streams/package-lock.json | 6 +- lib/ttl/package-lock.json | 4 +- lib/ttl/tsconfig.json | 1 + prep.sh | 5 + ranges/cache/package-lock.json | 63 +++++- ranges/cache/tsconfig.json | 3 +- ranges/log/package-lock.json | 122 ++++++---- ranges/log/package.json | 4 +- ranges/merge/package-lock.json | 43 +++- ranges/merge/tsconfig.json | 3 +- ranges/multicast/package-lock.json | 43 +++- ranges/multicast/proxy/tsconfig.json | 1 + ranges/multicast/tsconfig.json | 3 +- ranges/ssmdb2/package-lock.json | 83 ++++++- ranges/ssmdb2/tsconfig.json | 3 +- ranges/types/package-lock.json | 55 ++++- ranges/types/package.json | 2 +- screens/evaluations/package-lock.json | 234 +++++++++----------- screens/evaluations/package.json | 4 +- screens/evaluations/tsconfig.json | 3 +- screens/images/tsconfig.json | 3 +- screens/screenCast/package-lock.json | 2 +- screens/screenCast/tsconfig.json | 3 +- screens/screenManager/package-lock.json | 26 ++- screens/screenManager/tsconfig.json | 3 +- screens/types/package-lock.json | 55 ++++- screens/types/package.json | 2 +- serverState/package-lock.json | 44 +++- serverState/tsconfig.json | 3 +- syncTime/package-lock.json | 42 +++- syncTime/tsconfig.json | 1 + utils/recorder/tsconfig.json | 1 + 45 files changed, 691 insertions(+), 316 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 4650d217..c486e485 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -19,7 +19,7 @@ "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", "mime": "^4.1.0", - "next": "^16.1.6", + "next": "^16.2.1", "raw-loader": "^4.0.2", "react": "^19.2.4", "react-bootstrap": "^2.10.10", @@ -44,7 +44,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -56,7 +56,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -864,15 +864,15 @@ } }, "node_modules/@next/env": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.1.6.tgz", - "integrity": "sha512-N1ySLuZjnAtN3kFnwhAwPvZah8RJxKasD7x1f8shFqhncnWZn4JMfg37diLNuoHsLAlrDfM3g4mawVdtAG8XLQ==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.1.tgz", + "integrity": "sha512-n8P/HCkIWW+gVal2Z8XqXJ6aB3J0tuM29OcHpCsobWlChH/SITBs1DFBk/HajgrwDkqqBXPbuUuzgDvUekREPg==", "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.1.6.tgz", - "integrity": "sha512-wTzYulosJr/6nFnqGW7FrG3jfUUlEf8UjGA0/pyypJl42ExdVgC6xJgcXQ+V8QFn6niSG2Pb8+MIG1mZr2vczw==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.1.tgz", + "integrity": "sha512-BwZ8w8YTaSEr2HIuXLMLxIdElNMPvY9fLqb20LX9A9OMGtJilhHLbCL3ggyd0TwjmMcTxi0XXt+ur1vWUoxj2Q==", "cpu": [ "arm64" ], @@ -886,9 +886,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.1.6.tgz", - "integrity": "sha512-BLFPYPDO+MNJsiDWbeVzqvYd4NyuRrEYVB5k2N3JfWncuHAy2IVwMAOlVQDFjj+krkWzhY2apvmekMkfQR0CUQ==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.1.tgz", + "integrity": "sha512-/vrcE6iQSJq3uL3VGVHiXeaKbn8Es10DGTGRJnRZlkNQQk3kaNtAJg8Y6xuAlrx/6INKVjkfi5rY0iEXorZ6uA==", "cpu": [ "x64" ], @@ -902,9 +902,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.1.6.tgz", - "integrity": "sha512-OJYkCd5pj/QloBvoEcJ2XiMnlJkRv9idWA/j0ugSuA34gMT6f5b7vOiCQHVRpvStoZUknhl6/UxOXL4OwtdaBw==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.1.tgz", + "integrity": "sha512-uLn+0BK+C31LTVbQ/QU+UaVrV0rRSJQ8RfniQAHPghDdgE+SlroYqcmFnO5iNjNfVWCyKZHYrs3Nl0mUzWxbBw==", "cpu": [ "arm64" ], @@ -918,9 +918,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.1.6.tgz", - "integrity": "sha512-S4J2v+8tT3NIO9u2q+S0G5KdvNDjXfAv06OhfOzNDaBn5rw84DGXWndOEB7d5/x852A20sW1M56vhC/tRVbccQ==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.1.tgz", + "integrity": "sha512-ssKq6iMRnHdnycGp9hCuGnXJZ0YPr4/wNwrfE5DbmvEcgl9+yv97/Kq3TPVDfYome1SW5geciLB9aiEqKXQjlQ==", "cpu": [ "arm64" ], @@ -934,9 +934,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.1.6.tgz", - "integrity": "sha512-2eEBDkFlMMNQnkTyPBhQOAyn2qMxyG2eE7GPH2WIDGEpEILcBPI/jdSv4t6xupSP+ot/jkfrCShLAa7+ZUPcJQ==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.1.tgz", + "integrity": "sha512-HQm7SrHRELJ30T1TSmT706IWovFFSRGxfgUkyWJZF/RKBMdbdRWJuFrcpDdE5vy9UXjFOx6L3mRdqH04Mmx0hg==", "cpu": [ "x64" ], @@ -950,9 +950,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.1.6.tgz", - "integrity": "sha512-oicJwRlyOoZXVlxmIMaTq7f8pN9QNbdes0q2FXfRsPhfCi8n8JmOZJm5oo1pwDaFbnnD421rVU409M3evFbIqg==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.1.tgz", + "integrity": "sha512-aV2iUaC/5HGEpbBkE+4B8aHIudoOy5DYekAKOMSHoIYQ66y/wIVeaRx8MS2ZMdxe/HIXlMho4ubdZs/J8441Tg==", "cpu": [ "x64" ], @@ -966,9 +966,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.1.6.tgz", - "integrity": "sha512-gQmm8izDTPgs+DCWH22kcDmuUp7NyiJgEl18bcr8irXA5N2m2O+JQIr6f3ct42GOs9c0h8QF3L5SzIxcYAAXXw==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.1.tgz", + "integrity": "sha512-IXdNgiDHaSk0ZUJ+xp0OQTdTgnpx1RCfRTalhn3cjOP+IddTMINwA7DXZrwTmGDO8SUr5q2hdP/du4DcrB1GxA==", "cpu": [ "arm64" ], @@ -982,9 +982,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.1.6.tgz", - "integrity": "sha512-NRfO39AIrzBnixKbjuo2YiYhB6o9d8v/ymU9m/Xk8cyVk+k7XylniXkHwjs4s70wedVffc6bQNbufk5v0xEm0A==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.1.tgz", + "integrity": "sha512-qvU+3a39Hay+ieIztkGSbF7+mccbbg1Tk25hc4JDylf8IHjYmY/Zm64Qq1602yPyQqvie+vf5T/uPwNxDNIoeg==", "cpu": [ "x64" ], @@ -1588,12 +1588,15 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.9.10", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.10.tgz", - "integrity": "sha512-2VIKvDx8Z1a9rTB2eCkdPE5nSe28XnA+qivGnWHoB40hMMt/h1hSz0960Zqsn6ZyxWXUie0EBdElKv8may20AA==", + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz", + "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==", "license": "Apache-2.0", "bin": { - "baseline-browser-mapping": "dist/cli.js" + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" } }, "node_modules/big.js": { @@ -2326,14 +2329,14 @@ "peer": true }, "node_modules/next": { - "version": "16.1.6", - "resolved": "https://registry.npmjs.org/next/-/next-16.1.6.tgz", - "integrity": "sha512-hkyRkcu5x/41KoqnROkfTm2pZVbKxvbZRuNvKXLRXxs3VfyO0WhY50TQS40EuKO9SW3rBj/sF3WbVwDACeMZyw==", + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/next/-/next-16.2.1.tgz", + "integrity": "sha512-VaChzNL7o9rbfdt60HUj8tev4m6d7iC1igAy157526+cJlXOQu5LzsBXNT+xaJnTP/k+utSX5vMv7m0G+zKH+Q==", "license": "MIT", "dependencies": { - "@next/env": "16.1.6", + "@next/env": "16.2.1", "@swc/helpers": "0.5.15", - "baseline-browser-mapping": "^2.8.3", + "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" @@ -2345,15 +2348,15 @@ "node": ">=20.9.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "16.1.6", - "@next/swc-darwin-x64": "16.1.6", - "@next/swc-linux-arm64-gnu": "16.1.6", - "@next/swc-linux-arm64-musl": "16.1.6", - "@next/swc-linux-x64-gnu": "16.1.6", - "@next/swc-linux-x64-musl": "16.1.6", - "@next/swc-win32-arm64-msvc": "16.1.6", - "@next/swc-win32-x64-msvc": "16.1.6", - "sharp": "^0.34.4" + "@next/swc-darwin-arm64": "16.2.1", + "@next/swc-darwin-x64": "16.2.1", + "@next/swc-linux-arm64-gnu": "16.2.1", + "@next/swc-linux-arm64-musl": "16.2.1", + "@next/swc-linux-x64-gnu": "16.2.1", + "@next/swc-linux-x64-musl": "16.2.1", + "@next/swc-win32-arm64-msvc": "16.2.1", + "@next/swc-win32-x64-msvc": "16.2.1", + "sharp": "^0.34.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", diff --git a/frontend/package.json b/frontend/package.json index 22c12348..fbd87942 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -20,7 +20,7 @@ "dc-ranges-types": "file:../ranges/types", "dc-screens-types": "file:../screens/types", "mime": "^4.1.0", - "next": "^16.1.6", + "next": "^16.2.1", "raw-loader": "^4.0.2", "react": "^19.2.4", "react-bootstrap": "^2.10.10", diff --git a/lib/database/local/package-lock.json b/lib/database/local/package-lock.json index 60796af3..045caae7 100644 --- a/lib/database/local/package-lock.json +++ b/lib/database/local/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@types/node": "^25.5.0", - "@types/pg": "^8.18.0", + "@types/pg": "^8.20.0", "prisma": "^7.5.0", "typescript": "^5.9.3" } @@ -380,9 +380,9 @@ } }, "node_modules/@types/pg": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.18.0.tgz", - "integrity": "sha512-gT+oueVQkqnj6ajGJXblFR4iavIXWsGAFCk3dP4Kki5+a9R4NMt0JARdk6s8cUKcfUoqP5dAtDSLU8xYUTFV+Q==", + "version": "8.20.0", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.20.0.tgz", + "integrity": "sha512-bEPFOaMAHTEP1EzpvHTbmwR8UsFyHSKsRisLIHVMXnpNefSbGA1bD6CVy+qKjGSqmZqNqBDV2azOBo8TgkcVow==", "dev": true, "license": "MIT", "dependencies": { diff --git a/lib/database/local/package.json b/lib/database/local/package.json index 1698e95c..937e638a 100644 --- a/lib/database/local/package.json +++ b/lib/database/local/package.json @@ -20,7 +20,7 @@ }, "devDependencies": { "@types/node": "^25.5.0", - "@types/pg": "^8.18.0", + "@types/pg": "^8.20.0", "prisma": "^7.5.0", "typescript": "^5.9.3" }, diff --git a/lib/database/local/tsconfig.json b/lib/database/local/tsconfig.json index 6e0f02f0..5644268b 100644 --- a/lib/database/local/tsconfig.json +++ b/lib/database/local/tsconfig.json @@ -5,7 +5,8 @@ "moduleResolution": "nodenext", "declaration": true, "strict": true, - "outDir": "./dist" + "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/lib/database/smdb/package-lock.json b/lib/database/smdb/package-lock.json index 835a5951..7bea324c 100644 --- a/lib/database/smdb/package-lock.json +++ b/lib/database/smdb/package-lock.json @@ -31,7 +31,7 @@ }, "devDependencies": { "@types/node": "^25.5.0", - "@types/pg": "^8.18.0", + "@types/pg": "^8.20.0", "prisma": "^7.5.0", "typescript": "^5.9.3" } diff --git a/lib/database/smdb/tsconfig.json b/lib/database/smdb/tsconfig.json index 85e8281a..44ec7a4d 100644 --- a/lib/database/smdb/tsconfig.json +++ b/lib/database/smdb/tsconfig.json @@ -6,6 +6,7 @@ "strict": true, "outDir": "./dist", "declaration": true, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/lib/database/ssmdb2/package-lock.json b/lib/database/ssmdb2/package-lock.json index 94b0c69f..faa44e72 100644 --- a/lib/database/ssmdb2/package-lock.json +++ b/lib/database/ssmdb2/package-lock.json @@ -32,7 +32,7 @@ }, "devDependencies": { "@types/node": "^25.5.0", - "@types/pg": "^8.18.0", + "@types/pg": "^8.20.0", "prisma": "^7.5.0", "typescript": "^5.9.3" } diff --git a/lib/database/ssmdb2/tsconfig.json b/lib/database/ssmdb2/tsconfig.json index 85e8281a..44ec7a4d 100644 --- a/lib/database/ssmdb2/tsconfig.json +++ b/lib/database/ssmdb2/tsconfig.json @@ -6,6 +6,7 @@ "strict": true, "outDir": "./dist", "declaration": true, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/lib/database/tableWatcher/package-lock.json b/lib/database/tableWatcher/package-lock.json index b29838f2..22eea2ab 100644 --- a/lib/database/tableWatcher/package-lock.json +++ b/lib/database/tableWatcher/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dc-logger": "file:../../lib/logger", + "dc-logger": "file:../../logger", "socket.io-client": "^4.8.3" }, "devDependencies": { @@ -21,6 +21,7 @@ "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -35,7 +36,6 @@ "../../logger": { "name": "dc-logger", "version": "1.0.0", - "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -433,7 +433,7 @@ "peer": true }, "node_modules/dc-logger": { - "resolved": "../../lib/logger", + "resolved": "../../logger", "link": true }, "node_modules/debug": { diff --git a/lib/database/tableWatcher/tsconfig.json b/lib/database/tableWatcher/tsconfig.json index 85e8281a..44ec7a4d 100644 --- a/lib/database/tableWatcher/tsconfig.json +++ b/lib/database/tableWatcher/tsconfig.json @@ -6,6 +6,7 @@ "strict": true, "outDir": "./dist", "declaration": true, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/lib/endpoints/package-lock.json b/lib/endpoints/package-lock.json index 908dc3f2..e556acfb 100644 --- a/lib/endpoints/package-lock.json +++ b/lib/endpoints/package-lock.json @@ -137,6 +137,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/@typia/core/-/core-12.0.1.tgz", "integrity": "sha512-w7BZDLliZ4sJJW6WNN2cMhpLhKHghRELRZynCsfX1eFbQqsi3/lVtvpkTBSzEZXzuFJjb6VxyugB/e2gIZZeKw==", + "license": "MIT", "dependencies": { "@typia/interface": "^12.0.1", "@typia/utils": "^12.0.1" @@ -145,12 +146,14 @@ "node_modules/@typia/interface": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/@typia/interface/-/interface-12.0.1.tgz", - "integrity": "sha512-HUlNN6Iqq3LXecVCzoSdwTYIZ4dq7eYRbUsNREPvtM10Ej1J2dKIH6zCEl9Ey0tQhcAwexdbubfLOSUQQYCD5A==" + "integrity": "sha512-HUlNN6Iqq3LXecVCzoSdwTYIZ4dq7eYRbUsNREPvtM10Ej1J2dKIH6zCEl9Ey0tQhcAwexdbubfLOSUQQYCD5A==", + "license": "MIT" }, "node_modules/@typia/transform": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/@typia/transform/-/transform-12.0.1.tgz", "integrity": "sha512-SX4VCRPHTxRY3l99iU74yn8iqZIQ0DE4939n+XYoojKlvFVmTlg/OCMxsWq3xe6Qw19Vaa8bdcXGV4tx+TAlqw==", + "license": "MIT", "dependencies": { "@typia/core": "^12.0.1", "@typia/interface": "^12.0.1", @@ -161,6 +164,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/@typia/utils/-/utils-12.0.1.tgz", "integrity": "sha512-JIKsRhY4jxLtl/obttkR3vGp8d8hPysY6g0PUsIEDZ9/OO85OU7q8lYhu2GkZOJN/7htyqP+95GhpSNt2uELBQ==", + "license": "MIT", "dependencies": { "@typia/interface": "^12.0.1" } @@ -1604,6 +1608,7 @@ "version": "12.0.1", "resolved": "https://registry.npmjs.org/typia/-/typia-12.0.1.tgz", "integrity": "sha512-meL2qpo6yYFj6wC5coz7T3XpQT9+UjdHErhw46jGfmLFJUq6Za74B0/KYMDRjLxF/0Fd63oVx6X3+MUlI1ZJcQ==", + "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", "@typia/core": "^12.0.1", diff --git a/lib/logger/tsconfig.json b/lib/logger/tsconfig.json index ed492c33..aa4e4593 100644 --- a/lib/logger/tsconfig.json +++ b/lib/logger/tsconfig.json @@ -5,7 +5,8 @@ "moduleResolution": "NodeNext", "declaration": true, "strict": true, - "outDir": "./dist" + "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/lib/streams/package-lock.json b/lib/streams/package-lock.json index bcf2863c..32e999d7 100644 --- a/lib/streams/package-lock.json +++ b/lib/streams/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-logger": "file:../lib/logger" + "dc-logger": "file:../logger" }, "devDependencies": { "@types/amqplib": "^0.10.8", @@ -21,6 +21,7 @@ "../lib/logger": { "name": "dc-logger", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -35,7 +36,6 @@ "../logger": { "name": "dc-logger", "version": "1.0.0", - "extraneous": true, "license": "ISC", "dependencies": { "dotenv": "^17.3.1", @@ -87,7 +87,7 @@ "license": "MIT" }, "node_modules/dc-logger": { - "resolved": "../lib/logger", + "resolved": "../logger", "link": true }, "node_modules/querystringify": { diff --git a/lib/ttl/package-lock.json b/lib/ttl/package-lock.json index 368896a2..a7490a9e 100644 --- a/lib/ttl/package-lock.json +++ b/lib/ttl/package-lock.json @@ -1,11 +1,11 @@ { - "name": "dc-ranges-ttl", + "name": "dc-ttl", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "dc-ranges-ttl", + "name": "dc-ttl", "version": "1.0.0", "devDependencies": { "@types/node": "^25.5.0", diff --git a/lib/ttl/tsconfig.json b/lib/ttl/tsconfig.json index 85e8281a..44ec7a4d 100644 --- a/lib/ttl/tsconfig.json +++ b/lib/ttl/tsconfig.json @@ -6,6 +6,7 @@ "strict": true, "outDir": "./dist", "declaration": true, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/prep.sh b/prep.sh index 0e8e71f8..23582078 100755 --- a/prep.sh +++ b/prep.sh @@ -10,6 +10,7 @@ cd "$(dirname "$0")" # This script loops through all directories in the src folder and runs npm install on folders that contain a package.json file. function install_dependencies() { + local folder="$1" echo "Installing dependencies in $folder" cd "$folder" rm -rf node_modules @@ -51,6 +52,10 @@ function generate_proxy_certs() { npx npm-check-updates --upgrade --loglevel=info --deep +install_dependencies ./lib/logger + +traverse_folder ./lib + traverse_folder . generate_proxy_certs \ No newline at end of file diff --git a/ranges/cache/package-lock.json b/ranges/cache/package-lock.json index dbbc9758..ecb61134 100644 --- a/ranges/cache/package-lock.json +++ b/ranges/cache/package-lock.json @@ -9,11 +9,11 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dc-db-local": "file:../../database/local", - "dc-db-smdb": "file:../../database/smdb", + "dc-db-local": "file:../../lib/database/local", + "dc-db-smdb": "file:../../lib/database/smdb", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", - "dc-table-watcher": "file:../../database/tableWatcher", + "dc-table-watcher": "file:../../lib/database/tableWatcher", "dotenv": "^17.3.1" }, "devDependencies": { @@ -25,6 +25,7 @@ "../../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -42,6 +43,7 @@ "../../database/smdb": { "name": "dc-db-smdb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@prisma/adapter-mariadb": "^7.5.0", "@prisma/client": "^7.5.0", @@ -57,6 +59,7 @@ "../../database/tableWatcher": { "name": "dc-table-watcher", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dc-logger": "file:../../lib/logger", @@ -68,6 +71,52 @@ "typescript": "^5.9.3" } }, + "../../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../../lib/database/smdb": { + "name": "dc-db-smdb", + "version": "1.0.0", + "dependencies": { + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", + "dc-db-local": "file:../local", + "dotenv": "^17.3.1" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../../lib/database/tableWatcher": { + "name": "dc-table-watcher", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dc-logger": "file:../../logger", + "socket.io-client": "^4.8.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", @@ -102,7 +151,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -243,11 +292,11 @@ } }, "node_modules/dc-db-local": { - "resolved": "../../database/local", + "resolved": "../../lib/database/local", "link": true }, "node_modules/dc-db-smdb": { - "resolved": "../../database/smdb", + "resolved": "../../lib/database/smdb", "link": true }, "node_modules/dc-logger": { @@ -259,7 +308,7 @@ "link": true }, "node_modules/dc-table-watcher": { - "resolved": "../../database/tableWatcher", + "resolved": "../../lib/database/tableWatcher", "link": true }, "node_modules/dir-glob": { diff --git a/ranges/cache/tsconfig.json b/ranges/cache/tsconfig.json index a1f0fc6d..12128d60 100644 --- a/ranges/cache/tsconfig.json +++ b/ranges/cache/tsconfig.json @@ -4,7 +4,8 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "strict": true, - "outDir": "./dist" + "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index 71711d34..122da600 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -10,16 +10,16 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "csv-parse": "^6.1.0", + "csv-parse": "^6.2.1", "date-fns": "^4.1.0", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", - "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", - "dc-streams": "file:../../streams", + "dc-streams": "file:../../lib/streams", + "dc-ttl": "file:../../lib/ttl", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3", - "typia": "^12.0.0" + "typia": "^12.0.1" }, "devDependencies": { "@types/amqplib": "^0.10.8", @@ -32,6 +32,7 @@ "../../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -46,6 +47,23 @@ "typescript": "^5.9.3" } }, + "../../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", @@ -60,6 +78,28 @@ "typescript": "^5.9.3" } }, + "../../lib/streams": { + "name": "dc-streams", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + }, + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.5.0", + "typescript": "~5.9.3" + } + }, + "../../lib/ttl": { + "name": "dc-ttl", + "version": "1.0.0", + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", @@ -78,6 +118,7 @@ "../../streams": { "name": "dc-streams", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "amqplib": "^0.10.9", @@ -92,6 +133,7 @@ "../ttl": { "name": "dc-ranges-ttl", "version": "1.0.0", + "extraneous": true, "devDependencies": { "@types/node": "^25.5.0", "typescript": "^5.9.3" @@ -102,7 +144,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -201,39 +243,39 @@ } }, "node_modules/@typia/core": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@typia/core/-/core-12.0.0.tgz", - "integrity": "sha512-KtxUiqSqJVT6Eiyn56FL/nnAaRewHiYUx83PRz41CtI6w/P/DgvZhVe2kUjxjWjiaOirEGzu33KbztNf9APvCA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/core/-/core-12.0.1.tgz", + "integrity": "sha512-w7BZDLliZ4sJJW6WNN2cMhpLhKHghRELRZynCsfX1eFbQqsi3/lVtvpkTBSzEZXzuFJjb6VxyugB/e2gIZZeKw==", "license": "MIT", "dependencies": { - "@typia/interface": "^12.0.0", - "@typia/utils": "^12.0.0" + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" } }, "node_modules/@typia/interface": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@typia/interface/-/interface-12.0.0.tgz", - "integrity": "sha512-Kxtlc2vM6mjoHza3DBjqNY02jMCB07BDCTc54qdHfr9sT/TYELsYEOzNblF7d7xeJRQrXw7e0R/3pJqik/zKWg==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/interface/-/interface-12.0.1.tgz", + "integrity": "sha512-HUlNN6Iqq3LXecVCzoSdwTYIZ4dq7eYRbUsNREPvtM10Ej1J2dKIH6zCEl9Ey0tQhcAwexdbubfLOSUQQYCD5A==", "license": "MIT" }, "node_modules/@typia/transform": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@typia/transform/-/transform-12.0.0.tgz", - "integrity": "sha512-BYl/FM1oZ5ZwyA4BrzqyGA6dOOFNae4pMWIgehOH+Ai55sdDB5kGTCRaN289FODrLbfs0UgUDunhIdbVVZN3nQ==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/transform/-/transform-12.0.1.tgz", + "integrity": "sha512-SX4VCRPHTxRY3l99iU74yn8iqZIQ0DE4939n+XYoojKlvFVmTlg/OCMxsWq3xe6Qw19Vaa8bdcXGV4tx+TAlqw==", "license": "MIT", "dependencies": { - "@typia/core": "^12.0.0", - "@typia/interface": "^12.0.0", - "@typia/utils": "^12.0.0" + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" } }, "node_modules/@typia/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@typia/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-wb1av26sn6QzXXwVUz4mbWmy/cDc5AOySFol8XwO7VRIEZUcnuDW/3+LOFPdLiNyEIkOSvoJhi08NTecF6TcEg==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/utils/-/utils-12.0.1.tgz", + "integrity": "sha512-JIKsRhY4jxLtl/obttkR3vGp8d8hPysY6g0PUsIEDZ9/OO85OU7q8lYhu2GkZOJN/7htyqP+95GhpSNt2uELBQ==", "license": "MIT", "dependencies": { - "@typia/interface": "^12.0.0" + "@typia/interface": "^12.0.1" } }, "node_modules/amqplib": { @@ -543,9 +585,9 @@ "license": "MIT" }, "node_modules/csv-parse": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.1.0.tgz", - "integrity": "sha512-CEE+jwpgLn+MmtCpVcPtiCZpVtB6Z2OKPTr34pycYYoL7sxdOkXDdQ4lRiw6ioC0q6BLqhc6cKweCVvral8yhw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.2.1.tgz", + "integrity": "sha512-LRLMV+UCyfMokp8Wb411duBf1gaBKJfOfBWU9eHMJ+b+cJYZsNu3AFmjJf3+yPGd59Exz1TsMjaSFyxnYB9+IQ==", "license": "MIT" }, "node_modules/date-fns": { @@ -559,23 +601,23 @@ } }, "node_modules/dc-db-local": { - "resolved": "../../database/local", + "resolved": "../../lib/database/local", "link": true }, "node_modules/dc-logger": { "resolved": "../../lib/logger", "link": true }, - "node_modules/dc-ranges-ttl": { - "resolved": "../ttl", - "link": true - }, "node_modules/dc-ranges-types": { "resolved": "../types", "link": true }, "node_modules/dc-streams": { - "resolved": "../../streams", + "resolved": "../../lib/streams", + "link": true + }, + "node_modules/dc-ttl": { + "resolved": "../../lib/ttl", "link": true }, "node_modules/debug": { @@ -1703,16 +1745,16 @@ } }, "node_modules/typia": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/typia/-/typia-12.0.0.tgz", - "integrity": "sha512-gmTfpAdq25LpG9E+JmYf6Ho+ePzqoi+0vLxgQyN8Et0vwZwAt7NQNyHA9cxVBhq3HN9j/7hHfuti67qup864LA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/typia/-/typia-12.0.1.tgz", + "integrity": "sha512-meL2qpo6yYFj6wC5coz7T3XpQT9+UjdHErhw46jGfmLFJUq6Za74B0/KYMDRjLxF/0Fd63oVx6X3+MUlI1ZJcQ==", "license": "MIT", "dependencies": { "@standard-schema/spec": "^1.0.0", - "@typia/core": "^12.0.0", - "@typia/interface": "^12.0.0", - "@typia/transform": "^12.0.0", - "@typia/utils": "^12.0.0", + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/transform": "^12.0.1", + "@typia/utils": "^12.0.1", "commander": "^10.0.0", "comment-json": "^4.2.3", "inquirer": "^8.2.5", diff --git a/ranges/log/package.json b/ranges/log/package.json index f005a59d..eec9cca2 100644 --- a/ranges/log/package.json +++ b/ranges/log/package.json @@ -11,7 +11,7 @@ "description": "", "dependencies": { "amqplib": "^0.10.9", - "csv-parse": "^6.1.0", + "csv-parse": "^6.2.1", "date-fns": "^4.1.0", "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", @@ -20,7 +20,7 @@ "dc-streams": "file:../../lib/streams", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3", - "typia": "^12.0.0" + "typia": "^12.0.1" }, "devDependencies": { "@types/amqplib": "^0.10.8", diff --git a/ranges/merge/package-lock.json b/ranges/merge/package-lock.json index ceed74e0..523176cc 100644 --- a/ranges/merge/package-lock.json +++ b/ranges/merge/package-lock.json @@ -10,10 +10,10 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", - "dc-ranges-ttl": "file:../ttl", "dc-ranges-types": "file:../types", + "dc-ttl": "file:../../lib/ttl", "dotenv": "^17.3.1", "express": "^5.2.1", "socket.io": "^4.8.3" @@ -29,6 +29,7 @@ "../../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -43,6 +44,23 @@ "typescript": "^5.9.3" } }, + "../../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", @@ -57,6 +75,14 @@ "typescript": "^5.9.3" } }, + "../../lib/ttl": { + "name": "dc-ttl", + "version": "1.0.0", + "devDependencies": { + "@types/node": "^25.5.0", + "typescript": "^5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", @@ -75,6 +101,7 @@ "../ttl": { "name": "dc-ranges-ttl", "version": "1.0.0", + "extraneous": true, "devDependencies": { "@types/node": "^25.5.0", "typescript": "^5.9.3" @@ -85,7 +112,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -501,21 +528,21 @@ } }, "node_modules/dc-db-local": { - "resolved": "../../database/local", + "resolved": "../../lib/database/local", "link": true }, "node_modules/dc-logger": { "resolved": "../../lib/logger", "link": true }, - "node_modules/dc-ranges-ttl": { - "resolved": "../ttl", - "link": true - }, "node_modules/dc-ranges-types": { "resolved": "../types", "link": true }, + "node_modules/dc-ttl": { + "resolved": "../../lib/ttl", + "link": true + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", diff --git a/ranges/merge/tsconfig.json b/ranges/merge/tsconfig.json index a1f0fc6d..12128d60 100644 --- a/ranges/merge/tsconfig.json +++ b/ranges/merge/tsconfig.json @@ -4,7 +4,8 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "strict": true, - "outDir": "./dist" + "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/ranges/multicast/package-lock.json b/ranges/multicast/package-lock.json index 49ec20ea..44a666a2 100644 --- a/ranges/multicast/package-lock.json +++ b/ranges/multicast/package-lock.json @@ -12,10 +12,10 @@ "@types/ahocorasick": "^1.0.0", "ahocorasick": "^1.0.2", "amqplib": "^0.10.9", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", - "dc-streams": "file:../../streams", + "dc-streams": "file:../../lib/streams", "dotenv": "^17.3.1" }, "devDependencies": { @@ -28,6 +28,7 @@ "../../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -42,6 +43,23 @@ "typescript": "^5.9.3" } }, + "../../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", @@ -56,6 +74,20 @@ "typescript": "^5.9.3" } }, + "../../lib/streams": { + "name": "dc-streams", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + }, + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.5.0", + "typescript": "~5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", @@ -74,6 +106,7 @@ "../../streams": { "name": "dc-streams", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "amqplib": "^0.10.9", @@ -90,7 +123,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -272,7 +305,7 @@ } }, "node_modules/dc-db-local": { - "resolved": "../../database/local", + "resolved": "../../lib/database/local", "link": true }, "node_modules/dc-logger": { @@ -284,7 +317,7 @@ "link": true }, "node_modules/dc-streams": { - "resolved": "../../streams", + "resolved": "../../lib/streams", "link": true }, "node_modules/dir-glob": { diff --git a/ranges/multicast/proxy/tsconfig.json b/ranges/multicast/proxy/tsconfig.json index 0825ea07..12128d60 100644 --- a/ranges/multicast/proxy/tsconfig.json +++ b/ranges/multicast/proxy/tsconfig.json @@ -5,6 +5,7 @@ "moduleResolution": "NodeNext", "strict": true, "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/ranges/multicast/tsconfig.json b/ranges/multicast/tsconfig.json index a1f0fc6d..12128d60 100644 --- a/ranges/multicast/tsconfig.json +++ b/ranges/multicast/tsconfig.json @@ -4,7 +4,8 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "strict": true, - "outDir": "./dist" + "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/ranges/ssmdb2/package-lock.json b/ranges/ssmdb2/package-lock.json index 38f7d948..a2de8b12 100644 --- a/ranges/ssmdb2/package-lock.json +++ b/ranges/ssmdb2/package-lock.json @@ -10,12 +10,12 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-db-local": "file:../../database/local", - "dc-db-ssmdb2": "file:../../database/ssmdb2", + "dc-db-local": "file:../../lib/database/local", + "dc-db-ssmdb2": "file:../../lib/database/ssmdb2", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../types", - "dc-streams": "file:../../streams", - "dc-table-watcher": "file:../../database/tableWatcher", + "dc-streams": "file:../../lib/streams", + "dc-table-watcher": "file:../../lib/database/tableWatcher", "dotenv": "^17.3.1" }, "devDependencies": { @@ -28,6 +28,7 @@ "../../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -45,6 +46,7 @@ "../../database/ssmdb2": { "name": "dc-db-ssmdb2", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-mariadb": "^7.5.0", @@ -61,6 +63,7 @@ "../../database/tableWatcher": { "name": "dc-table-watcher", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "dc-logger": "file:../../lib/logger", @@ -72,6 +75,53 @@ "typescript": "^5.9.3" } }, + "../../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../../lib/database/ssmdb2": { + "name": "dc-db-ssmdb2", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", + "dc-db-local": "file:../local", + "dotenv": "^17.3.1" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../../lib/database/tableWatcher": { + "name": "dc-table-watcher", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "dc-logger": "file:../../logger", + "socket.io-client": "^4.8.3" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", @@ -86,6 +136,20 @@ "typescript": "^5.9.3" } }, + "../../lib/streams": { + "name": "dc-streams", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "amqplib": "^0.10.9", + "dc-logger": "file:../logger" + }, + "devDependencies": { + "@types/amqplib": "^0.10.8", + "@types/node": "^25.5.0", + "typescript": "~5.9.3" + } + }, "../../logger": { "name": "dc-logger", "version": "1.0.0", @@ -104,6 +168,7 @@ "../../streams": { "name": "dc-streams", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "amqplib": "^0.10.9", @@ -120,7 +185,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -290,11 +355,11 @@ } }, "node_modules/dc-db-local": { - "resolved": "../../database/local", + "resolved": "../../lib/database/local", "link": true }, "node_modules/dc-db-ssmdb2": { - "resolved": "../../database/ssmdb2", + "resolved": "../../lib/database/ssmdb2", "link": true }, "node_modules/dc-logger": { @@ -306,11 +371,11 @@ "link": true }, "node_modules/dc-streams": { - "resolved": "../../streams", + "resolved": "../../lib/streams", "link": true }, "node_modules/dc-table-watcher": { - "resolved": "../../database/tableWatcher", + "resolved": "../../lib/database/tableWatcher", "link": true }, "node_modules/dir-glob": { diff --git a/ranges/ssmdb2/tsconfig.json b/ranges/ssmdb2/tsconfig.json index a1f0fc6d..12128d60 100644 --- a/ranges/ssmdb2/tsconfig.json +++ b/ranges/ssmdb2/tsconfig.json @@ -4,7 +4,8 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "strict": true, - "outDir": "./dist" + "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/ranges/types/package-lock.json b/ranges/types/package-lock.json index 72a64899..fc4c54ff 100644 --- a/ranges/types/package-lock.json +++ b/ranges/types/package-lock.json @@ -9,25 +9,55 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", "typescript": "~5.9.3" } }, - "node_modules/@samchon/openapi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-6.0.0.tgz", - "integrity": "sha512-6HnP9gf+RfdEYVuoqv9CCIHyZvSq2wktu8LuFdwzS8fTif+/cp6dN15oWmeGM6e+k3zn5H7LBepaU22pr3YiAg==", - "license": "MIT" - }, "node_modules/@standard-schema/spec": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", "license": "MIT" }, + "node_modules/@typia/core": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/core/-/core-12.0.1.tgz", + "integrity": "sha512-w7BZDLliZ4sJJW6WNN2cMhpLhKHghRELRZynCsfX1eFbQqsi3/lVtvpkTBSzEZXzuFJjb6VxyugB/e2gIZZeKw==", + "license": "MIT", + "dependencies": { + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" + } + }, + "node_modules/@typia/interface": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/interface/-/interface-12.0.1.tgz", + "integrity": "sha512-HUlNN6Iqq3LXecVCzoSdwTYIZ4dq7eYRbUsNREPvtM10Ej1J2dKIH6zCEl9Ey0tQhcAwexdbubfLOSUQQYCD5A==", + "license": "MIT" + }, + "node_modules/@typia/transform": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/transform/-/transform-12.0.1.tgz", + "integrity": "sha512-SX4VCRPHTxRY3l99iU74yn8iqZIQ0DE4939n+XYoojKlvFVmTlg/OCMxsWq3xe6Qw19Vaa8bdcXGV4tx+TAlqw==", + "license": "MIT", + "dependencies": { + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" + } + }, + "node_modules/@typia/utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/utils/-/utils-12.0.1.tgz", + "integrity": "sha512-JIKsRhY4jxLtl/obttkR3vGp8d8hPysY6g0PUsIEDZ9/OO85OU7q8lYhu2GkZOJN/7htyqP+95GhpSNt2uELBQ==", + "license": "MIT", + "dependencies": { + "@typia/interface": "^12.0.1" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -912,13 +942,16 @@ } }, "node_modules/typia": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.3.tgz", - "integrity": "sha512-L7x7WzOCpFyNCauWl6VYJVEG9EHZi5EPNBRzxTO1luaLCd6WEDf+xrJNT+hMZ8U+0X7hCsR1EUpi29LdHhvCvA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/typia/-/typia-12.0.1.tgz", + "integrity": "sha512-meL2qpo6yYFj6wC5coz7T3XpQT9+UjdHErhw46jGfmLFJUq6Za74B0/KYMDRjLxF/0Fd63oVx6X3+MUlI1ZJcQ==", "license": "MIT", "dependencies": { - "@samchon/openapi": "^6.0.0", "@standard-schema/spec": "^1.0.0", + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/transform": "^12.0.1", + "@typia/utils": "^12.0.1", "commander": "^10.0.0", "comment-json": "^4.2.3", "inquirer": "^8.2.5", diff --git a/ranges/types/package.json b/ranges/types/package.json index 54aedb3c..50e5b998 100644 --- a/ranges/types/package.json +++ b/ranges/types/package.json @@ -13,7 +13,7 @@ "license": "ISC", "description": "", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", diff --git a/screens/evaluations/package-lock.json b/screens/evaluations/package-lock.json index 88a0c4ba..5e6b5a95 100644 --- a/screens/evaluations/package-lock.json +++ b/screens/evaluations/package-lock.json @@ -9,17 +9,17 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dotenv": "^17.3.1", "express": "^5.2.1", "express-rate-limit": "^8.3.1", - "jsdom": "^28.1.0", + "jsdom": "^29.0.1", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", - "@types/jsdom": "^28.0.0", + "@types/jsdom": "^28.0.1", "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" @@ -28,6 +28,7 @@ "../../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -42,6 +43,23 @@ "typescript": "^5.9.3" } }, + "../../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", @@ -71,36 +89,36 @@ "typescript": "^5.9.3" } }, - "node_modules/@acemir/cssom": { - "version": "0.9.31", - "resolved": "https://registry.npmjs.org/@acemir/cssom/-/cssom-0.9.31.tgz", - "integrity": "sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==", - "license": "MIT" - }, "node_modules/@asamuzakjp/css-color": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-4.1.2.tgz", - "integrity": "sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-5.0.1.tgz", + "integrity": "sha512-2SZFvqMyvboVV1d15lMf7XiI3m7SDqXUuKaTymJYLN6dSGadqp+fVojqJlVoMlbZnlTmu3S0TLwLTJpvBMO1Aw==", "license": "MIT", "dependencies": { - "@csstools/css-calc": "^3.0.0", - "@csstools/css-color-parser": "^4.0.1", + "@csstools/css-calc": "^3.1.1", + "@csstools/css-color-parser": "^4.0.2", "@csstools/css-parser-algorithms": "^4.0.0", "@csstools/css-tokenizer": "^4.0.0", - "lru-cache": "^11.2.5" + "lru-cache": "^11.2.6" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/@asamuzakjp/dom-selector": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-6.8.1.tgz", - "integrity": "sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-7.0.4.tgz", + "integrity": "sha512-jXR6x4AcT3eIrS2fSNAwJpwirOkGcd+E7F7CP3zjdTqz9B/2huHOL8YJZBgekKwLML+u7qB/6P1LXQuMScsx0w==", "license": "MIT", "dependencies": { "@asamuzakjp/nwsapi": "^2.3.9", "bidi-js": "^1.0.3", - "css-tree": "^3.1.0", + "css-tree": "^3.2.1", "is-potential-custom-element-name": "^1.0.1", - "lru-cache": "^11.2.6" + "lru-cache": "^11.2.7" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=24.0.0" } }, "node_modules/@asamuzakjp/nwsapi": { @@ -122,9 +140,9 @@ } }, "node_modules/@csstools/color-helpers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.1.tgz", - "integrity": "sha512-NmXRccUJMk2AWA5A7e5a//3bCIMyOu2hAtdRYrhPPHjDxINuCwX1w6rnIZ4xjLcp0ayv6h8Pc3X0eJUGiAAXHQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-6.0.2.tgz", + "integrity": "sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==", "funding": [ { "type": "github", @@ -164,9 +182,9 @@ } }, "node_modules/@csstools/css-color-parser": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.1.tgz", - "integrity": "sha512-vYwO15eRBEkeF6xjAno/KQ61HacNhfQuuU/eGwH67DplL0zD5ZixUa563phQvUelA07yDczIXdtmYojCphKJcw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-4.0.2.tgz", + "integrity": "sha512-0GEfbBLmTFf0dJlpsNU7zwxRIH0/BGEMuXLTCvFYxuL1tNhqzTbtnFICyJLTNK4a+RechKP75e7w42ClXSnJQw==", "funding": [ { "type": "github", @@ -179,8 +197,8 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^6.0.1", - "@csstools/css-calc": "^3.0.0" + "@csstools/color-helpers": "^6.0.2", + "@csstools/css-calc": "^3.1.1" }, "engines": { "node": ">=20.19.0" @@ -213,9 +231,9 @@ } }, "node_modules/@csstools/css-syntax-patches-for-csstree": { - "version": "1.0.27", - "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.0.27.tgz", - "integrity": "sha512-sxP33Jwg1bviSUXAV43cVYdmjt2TLnLXNqCWl9xmxHawWVjGz/kEbdkr7F9pxJNBN2Mh+dq0crgItbW6tQvyow==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.1.tgz", + "integrity": "sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==", "funding": [ { "type": "github", @@ -226,7 +244,15 @@ "url": "https://opencollective.com/csstools" } ], - "license": "MIT-0" + "license": "MIT-0", + "peerDependencies": { + "css-tree": "^3.2.1" + }, + "peerDependenciesMeta": { + "css-tree": { + "optional": true + } + } }, "node_modules/@csstools/css-tokenizer": { "version": "4.0.0", @@ -248,9 +274,9 @@ } }, "node_modules/@exodus/bytes": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.11.0.tgz", - "integrity": "sha512-wO3vd8nsEHdumsXrjGO/v4p6irbg7hy9kvIeR6i2AwylZSk4HJdWgL0FNaVquW1+AweJcdvU1IEpuIWk/WaPnA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@exodus/bytes/-/bytes-1.15.0.tgz", + "integrity": "sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==", "license": "MIT", "engines": { "node": "^20.19.0 || ^22.12.0 || >=24.0.0" @@ -362,9 +388,9 @@ "license": "MIT" }, "node_modules/@types/jsdom": { - "version": "28.0.0", - "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-28.0.0.tgz", - "integrity": "sha512-A8TBQQC/xAOojy9kM8E46cqT00sF0h7dWjV8t8BJhUi2rG6JRh7XXQo/oLoENuZIQEpXsxLccLCnknyQd7qssQ==", + "version": "28.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-28.0.1.tgz", + "integrity": "sha512-GJq2QE4TAZ5ajSoCasn5DOFm8u1mI3tIFvM5tIq3W5U/RTB6gsHwc6Yhpl91X9VSDOUVblgXmG+2+sSvFQrdlw==", "dev": true, "license": "MIT", "dependencies": { @@ -454,15 +480,6 @@ "node": ">= 0.6" } }, - "node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -675,33 +692,18 @@ } }, "node_modules/css-tree": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", - "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", + "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", "license": "MIT", "dependencies": { - "mdn-data": "2.12.2", - "source-map-js": "^1.0.1" + "mdn-data": "2.27.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/cssstyle": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-6.0.1.tgz", - "integrity": "sha512-IoJs7La+oFp/AB033wBStxNOJt4+9hHMxsXUPANcoXL2b3W4DZKghlJ2cI/eyeRZIQ9ysvYEorVhjrcYctWbog==", - "license": "MIT", - "dependencies": { - "@asamuzakjp/css-color": "^4.1.2", - "@csstools/css-syntax-patches-for-csstree": "^1.0.26", - "css-tree": "^3.1.0", - "lru-cache": "^11.2.5" - }, - "engines": { - "node": ">=20" - } - }, "node_modules/data-urls": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-7.0.0.tgz", @@ -716,7 +718,7 @@ } }, "node_modules/dc-db-local": { - "resolved": "../../database/local", + "resolved": "../../lib/database/local", "link": true }, "node_modules/dc-logger": { @@ -1238,32 +1240,6 @@ "url": "https://opencollective.com/express" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -1357,35 +1333,35 @@ "license": "MIT" }, "node_modules/jsdom": { - "version": "28.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-28.1.0.tgz", - "integrity": "sha512-0+MoQNYyr2rBHqO1xilltfDjV9G7ymYGlAUazgcDLQaUf8JDHbuGwsxN6U9qWaElZ4w1B2r7yEGIL3GdeW3Rug==", + "version": "29.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-29.0.1.tgz", + "integrity": "sha512-z6JOK5gRO7aMybVq/y/MlIpKh8JIi68FBKMUtKkK2KH/wMSRlCxQ682d08LB9fYXplyY/UXG8P4XXTScmdjApg==", "license": "MIT", "dependencies": { - "@acemir/cssom": "^0.9.31", - "@asamuzakjp/dom-selector": "^6.8.1", + "@asamuzakjp/css-color": "^5.0.1", + "@asamuzakjp/dom-selector": "^7.0.3", "@bramus/specificity": "^2.4.2", - "@exodus/bytes": "^1.11.0", - "cssstyle": "^6.0.1", + "@csstools/css-syntax-patches-for-csstree": "^1.1.1", + "@exodus/bytes": "^1.15.0", + "css-tree": "^3.2.1", "data-urls": "^7.0.0", "decimal.js": "^10.6.0", "html-encoding-sniffer": "^6.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", "is-potential-custom-element-name": "^1.0.1", + "lru-cache": "^11.2.7", "parse5": "^8.0.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^6.0.0", - "undici": "^7.21.0", + "tough-cookie": "^6.0.1", + "undici": "^7.24.5", "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^8.0.1", "whatwg-mimetype": "^5.0.0", - "whatwg-url": "^16.0.0", + "whatwg-url": "^16.0.1", "xml-name-validator": "^5.0.0" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24.0.0" }, "peerDependencies": { "canvas": "^3.0.0" @@ -1409,9 +1385,9 @@ } }, "node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -1427,9 +1403,9 @@ } }, "node_modules/mdn-data": { - "version": "2.12.2", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", - "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "version": "2.27.1", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", + "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", "license": "CC0-1.0" }, "node_modules/media-typer": { @@ -2061,21 +2037,21 @@ "license": "MIT" }, "node_modules/tldts": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.14.tgz", - "integrity": "sha512-lMNHE4aSI3LlkMUMicTmAG3tkkitjOQGDTFboPJwAg2kJXKP1ryWEyqujktg5qhrFZOkk5YFzgkxg3jErE+i5w==", + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.27.tgz", + "integrity": "sha512-I4FZcVFcqCRuT0ph6dCDpPuO4Xgzvh+spkcTr1gK7peIvxWauoloVO0vuy1FQnijT63ss6AsHB6+OIM4aXHbPg==", "license": "MIT", "dependencies": { - "tldts-core": "^7.0.14" + "tldts-core": "^7.0.27" }, "bin": { "tldts": "bin/cli.js" } }, "node_modules/tldts-core": { - "version": "7.0.14", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.14.tgz", - "integrity": "sha512-viZGNK6+NdluOJWwTO9olaugx0bkKhscIdriQQ+lNNhwitIKvb+SvhbYgnCz6j9p7dX3cJntt4agQAKMXLjJ5g==", + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.27.tgz", + "integrity": "sha512-YQ7uPjgWUibIK6DW5lrKujGwUKhLevU4hcGbP5O6TcIUb+oTjJYJVWPS4nZsIHrEEEG6myk/oqAJUEQmpZrHsg==", "license": "MIT" }, "node_modules/to-regex-range": { @@ -2101,9 +2077,9 @@ } }, "node_modules/tough-cookie": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.0.tgz", - "integrity": "sha512-kXuRi1mtaKMrsLUxz3sQYvVl37B0Ns6MzfrtV5DvJceE9bPyspOqk9xxv7XbZWcfLWbFmm997vl83qUWVJA64w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", "license": "BSD-3-Clause", "dependencies": { "tldts": "^7.0.5" @@ -2175,9 +2151,9 @@ } }, "node_modules/undici": { - "version": "7.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.22.0.tgz", - "integrity": "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.5.tgz", + "integrity": "sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==", "license": "MIT", "engines": { "node": ">=20.18.1" @@ -2239,9 +2215,9 @@ } }, "node_modules/whatwg-url": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.0.tgz", - "integrity": "sha512-9CcxtEKsf53UFwkSUZjG+9vydAsFO4lFHBpJUtjBcoJOCJpKnSJNwCw813zrYJHpCJ7sgfbtOe0V5Ku7Pa1XMQ==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-16.0.1.tgz", + "integrity": "sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==", "license": "MIT", "dependencies": { "@exodus/bytes": "^1.11.0", diff --git a/screens/evaluations/package.json b/screens/evaluations/package.json index 3f18c6ea..0bb511ce 100644 --- a/screens/evaluations/package.json +++ b/screens/evaluations/package.json @@ -15,12 +15,12 @@ "dotenv": "^17.3.1", "express": "^5.2.1", "express-rate-limit": "^8.3.1", - "jsdom": "^28.1.0", + "jsdom": "^29.0.1", "socket.io-client": "^4.8.3" }, "devDependencies": { "@types/express": "^5.0.6", - "@types/jsdom": "^28.0.0", + "@types/jsdom": "^28.0.1", "@types/node": "^25.5.0", "tsc-alias": "^1.8.16", "typescript": "^5.9.3" diff --git a/screens/evaluations/tsconfig.json b/screens/evaluations/tsconfig.json index 2aa581d8..3d10893c 100644 --- a/screens/evaluations/tsconfig.json +++ b/screens/evaluations/tsconfig.json @@ -12,7 +12,8 @@ "@shared/files": [ "../utils/files" ] - } + }, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/screens/images/tsconfig.json b/screens/images/tsconfig.json index f16fb840..3d10893c 100644 --- a/screens/images/tsconfig.json +++ b/screens/images/tsconfig.json @@ -12,7 +12,8 @@ "@shared/files": [ "../utils/files" ] - } + }, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/screens/screenCast/package-lock.json b/screens/screenCast/package-lock.json index 182b6576..e0831808 100644 --- a/screens/screenCast/package-lock.json +++ b/screens/screenCast/package-lock.json @@ -54,7 +54,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", diff --git a/screens/screenCast/tsconfig.json b/screens/screenCast/tsconfig.json index a1f0fc6d..12128d60 100644 --- a/screens/screenCast/tsconfig.json +++ b/screens/screenCast/tsconfig.json @@ -4,7 +4,8 @@ "module": "NodeNext", "moduleResolution": "NodeNext", "strict": true, - "outDir": "./dist" + "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/screens/screenManager/package-lock.json b/screens/screenManager/package-lock.json index 683adfef..003b5a34 100644 --- a/screens/screenManager/package-lock.json +++ b/screens/screenManager/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "amqplib": "^0.10.9", "body-parser": "^2.2.2", - "dc-db-local": "file:../../database/local", + "dc-db-local": "file:../../lib/database/local", "dc-logger": "file:../../lib/logger", "dc-ranges-types": "file:../../ranges/types", "dc-screens-types": "file:../types", @@ -30,6 +30,7 @@ "../../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -44,6 +45,23 @@ "typescript": "^5.9.3" } }, + "../../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, "../../lib/logger": { "name": "dc-logger", "version": "1.0.0", @@ -78,7 +96,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -90,7 +108,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -506,7 +524,7 @@ } }, "node_modules/dc-db-local": { - "resolved": "../../database/local", + "resolved": "../../lib/database/local", "link": true }, "node_modules/dc-logger": { diff --git a/screens/screenManager/tsconfig.json b/screens/screenManager/tsconfig.json index 2aa581d8..3d10893c 100644 --- a/screens/screenManager/tsconfig.json +++ b/screens/screenManager/tsconfig.json @@ -12,7 +12,8 @@ "@shared/files": [ "../utils/files" ] - } + }, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/screens/types/package-lock.json b/screens/types/package-lock.json index 2aa8a81f..a87fc1a1 100644 --- a/screens/types/package-lock.json +++ b/screens/types/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -37,18 +37,48 @@ } } }, - "node_modules/@samchon/openapi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-6.0.0.tgz", - "integrity": "sha512-6HnP9gf+RfdEYVuoqv9CCIHyZvSq2wktu8LuFdwzS8fTif+/cp6dN15oWmeGM6e+k3zn5H7LBepaU22pr3YiAg==", - "license": "MIT" - }, "node_modules/@standard-schema/spec": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", "license": "MIT" }, + "node_modules/@typia/core": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/core/-/core-12.0.1.tgz", + "integrity": "sha512-w7BZDLliZ4sJJW6WNN2cMhpLhKHghRELRZynCsfX1eFbQqsi3/lVtvpkTBSzEZXzuFJjb6VxyugB/e2gIZZeKw==", + "license": "MIT", + "dependencies": { + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" + } + }, + "node_modules/@typia/interface": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/interface/-/interface-12.0.1.tgz", + "integrity": "sha512-HUlNN6Iqq3LXecVCzoSdwTYIZ4dq7eYRbUsNREPvtM10Ej1J2dKIH6zCEl9Ey0tQhcAwexdbubfLOSUQQYCD5A==", + "license": "MIT" + }, + "node_modules/@typia/transform": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/transform/-/transform-12.0.1.tgz", + "integrity": "sha512-SX4VCRPHTxRY3l99iU74yn8iqZIQ0DE4939n+XYoojKlvFVmTlg/OCMxsWq3xe6Qw19Vaa8bdcXGV4tx+TAlqw==", + "license": "MIT", + "dependencies": { + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/utils": "^12.0.1" + } + }, + "node_modules/@typia/utils": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@typia/utils/-/utils-12.0.1.tgz", + "integrity": "sha512-JIKsRhY4jxLtl/obttkR3vGp8d8hPysY6g0PUsIEDZ9/OO85OU7q8lYhu2GkZOJN/7htyqP+95GhpSNt2uELBQ==", + "license": "MIT", + "dependencies": { + "@typia/interface": "^12.0.1" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -898,13 +928,16 @@ } }, "node_modules/typia": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/typia/-/typia-11.0.3.tgz", - "integrity": "sha512-L7x7WzOCpFyNCauWl6VYJVEG9EHZi5EPNBRzxTO1luaLCd6WEDf+xrJNT+hMZ8U+0X7hCsR1EUpi29LdHhvCvA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/typia/-/typia-12.0.1.tgz", + "integrity": "sha512-meL2qpo6yYFj6wC5coz7T3XpQT9+UjdHErhw46jGfmLFJUq6Za74B0/KYMDRjLxF/0Fd63oVx6X3+MUlI1ZJcQ==", "license": "MIT", "dependencies": { - "@samchon/openapi": "^6.0.0", "@standard-schema/spec": "^1.0.0", + "@typia/core": "^12.0.1", + "@typia/interface": "^12.0.1", + "@typia/transform": "^12.0.1", + "@typia/utils": "^12.0.1", "commander": "^10.0.0", "comment-json": "^4.2.3", "inquirer": "^8.2.5", diff --git a/screens/types/package.json b/screens/types/package.json index ba76705e..e513fc3a 100644 --- a/screens/types/package.json +++ b/screens/types/package.json @@ -20,6 +20,6 @@ "typescript": "~5.9.3" }, "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" } } \ No newline at end of file diff --git a/serverState/package-lock.json b/serverState/package-lock.json index 956d84a3..4602e714 100644 --- a/serverState/package-lock.json +++ b/serverState/package-lock.json @@ -10,8 +10,8 @@ "license": "ISC", "dependencies": { "amqplib": "^0.10.9", - "dc-db-local": "file:../database/local", - "dc-db-smdb": "file:../database/smdb", + "dc-db-local": "file:../lib/database/local", + "dc-db-smdb": "file:../lib/database/smdb", "dc-logger": "file:../lib/logger", "dc-screens-types": "file:../screens/types", "dotenv": "^17.3.1", @@ -30,6 +30,7 @@ "../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -45,6 +46,39 @@ } }, "../database/smdb": { + "name": "dc-db-smdb", + "version": "1.0.0", + "extraneous": true, + "dependencies": { + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", + "dc-db-local": "file:../local", + "dotenv": "^17.3.1" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../lib/database/smdb": { "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { @@ -93,7 +127,7 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "typia": "^11.0.3" + "typia": "^12.0.1" }, "devDependencies": { "ts-patch": "^3.3.0", @@ -393,11 +427,11 @@ } }, "node_modules/dc-db-local": { - "resolved": "../database/local", + "resolved": "../lib/database/local", "link": true }, "node_modules/dc-db-smdb": { - "resolved": "../database/smdb", + "resolved": "../lib/database/smdb", "link": true }, "node_modules/dc-logger": { diff --git a/serverState/tsconfig.json b/serverState/tsconfig.json index 937f5595..9ed53810 100644 --- a/serverState/tsconfig.json +++ b/serverState/tsconfig.json @@ -5,7 +5,8 @@ "moduleResolution": "NodeNext", "strict": true, "outDir": "./dist", - "resolveJsonModule": true + "resolveJsonModule": true, + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/syncTime/package-lock.json b/syncTime/package-lock.json index 509847e0..0c4e9ecd 100644 --- a/syncTime/package-lock.json +++ b/syncTime/package-lock.json @@ -9,8 +9,8 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "dc-db-local": "file:../database/local", - "dc-db-smdb": "file:../database/smdb", + "dc-db-local": "file:../lib/database/local", + "dc-db-smdb": "file:../lib/database/smdb", "dc-logger": "file:../lib/logger", "dotenv": "^17.3.1", "socket.io-client": "^4.8.3" @@ -23,6 +23,7 @@ "../database/local": { "name": "dc-db-local", "version": "1.0.0", + "extraneous": true, "license": "ISC", "dependencies": { "@prisma/adapter-pg": "^7.5.0", @@ -38,6 +39,39 @@ } }, "../database/smdb": { + "name": "dc-db-smdb", + "version": "1.0.0", + "extraneous": true, + "dependencies": { + "@prisma/adapter-mariadb": "^7.5.0", + "@prisma/client": "^7.5.0", + "dc-db-local": "file:../local", + "dotenv": "^17.3.1" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../lib/database/local": { + "name": "dc-db-local", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@prisma/adapter-pg": "^7.5.0", + "@prisma/client": "^7.5.0", + "dotenv": "^17.3.1", + "pg": "^8.20.0" + }, + "devDependencies": { + "@types/node": "^25.5.0", + "@types/pg": "^8.20.0", + "prisma": "^7.5.0", + "typescript": "^5.9.3" + } + }, + "../lib/database/smdb": { "name": "dc-db-smdb", "version": "1.0.0", "dependencies": { @@ -98,11 +132,11 @@ } }, "node_modules/dc-db-local": { - "resolved": "../database/local", + "resolved": "../lib/database/local", "link": true }, "node_modules/dc-db-smdb": { - "resolved": "../database/smdb", + "resolved": "../lib/database/smdb", "link": true }, "node_modules/dc-logger": { diff --git a/syncTime/tsconfig.json b/syncTime/tsconfig.json index 0825ea07..12128d60 100644 --- a/syncTime/tsconfig.json +++ b/syncTime/tsconfig.json @@ -5,6 +5,7 @@ "moduleResolution": "NodeNext", "strict": true, "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" diff --git a/utils/recorder/tsconfig.json b/utils/recorder/tsconfig.json index 0825ea07..12128d60 100644 --- a/utils/recorder/tsconfig.json +++ b/utils/recorder/tsconfig.json @@ -5,6 +5,7 @@ "moduleResolution": "NodeNext", "strict": true, "outDir": "./dist", + "skipLibCheck": true }, "include": [ "src/**/*.ts" From ac29d7d58a1cab677c3b918dee6e21474d1d429a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:13:52 +0000 Subject: [PATCH 31/31] build(deps): bump the npm_and_yarn group across 12 directories with 7 updates Bumps the npm_and_yarn group with 4 updates in the /frontend directory: [ajv](https://github.com/ajv-validator/ajv), [serialize-javascript](https://github.com/yahoo/serialize-javascript), [socket.io-parser](https://github.com/socketio/socket.io) and [webpack](https://github.com/webpack/webpack). Bumps the npm_and_yarn group with 1 update in the /lib/database/tableWatcher directory: [socket.io-parser](https://github.com/socketio/socket.io). Bumps the npm_and_yarn group with 1 update in the /ranges/log directory: [socket.io-parser](https://github.com/socketio/socket.io). Bumps the npm_and_yarn group with 2 updates in the /ranges/merge directory: [socket.io-parser](https://github.com/socketio/socket.io) and [qs](https://github.com/ljharb/qs). Bumps the npm_and_yarn group with 2 updates in the /ranges/types directory: [lodash](https://github.com/lodash/lodash) and [tmp](https://github.com/raszi/node-tmp). Bumps the npm_and_yarn group with 2 updates in the /screens/evaluations directory: [socket.io-parser](https://github.com/socketio/socket.io) and [qs](https://github.com/ljharb/qs). Bumps the npm_and_yarn group with 1 update in the /screens/images directory: [qs](https://github.com/ljharb/qs). Bumps the npm_and_yarn group with 1 update in the /screens/screenCast directory: [socket.io-parser](https://github.com/socketio/socket.io). Bumps the npm_and_yarn group with 2 updates in the /screens/screenManager directory: [socket.io-parser](https://github.com/socketio/socket.io) and [qs](https://github.com/ljharb/qs). Bumps the npm_and_yarn group with 1 update in the /screens/types directory: [lodash](https://github.com/lodash/lodash). Bumps the npm_and_yarn group with 1 update in the /serverState directory: [socket.io-parser](https://github.com/socketio/socket.io). Bumps the npm_and_yarn group with 1 update in the /syncTime directory: [socket.io-parser](https://github.com/socketio/socket.io). Updates `ajv` from 6.12.6 to 6.14.0 - [Release notes](https://github.com/ajv-validator/ajv/releases) - [Commits](https://github.com/ajv-validator/ajv/compare/v6.12.6...v6.14.0) Removes `serialize-javascript` Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `webpack` from 5.101.0 to 5.105.4 - [Release notes](https://github.com/webpack/webpack/releases) - [Changelog](https://github.com/webpack/webpack/blob/main/CHANGELOG.md) - [Commits](https://github.com/webpack/webpack/compare/v5.101.0...v5.105.4) Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `qs` from 6.14.0 to 6.15.0 - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.15.0) Updates `lodash` from 4.17.21 to 4.17.23 - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23) Removes `tmp` Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `qs` from 6.14.0 to 6.15.0 - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.15.0) Updates `qs` from 6.14.1 to 6.15.0 - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.15.0) Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `qs` from 6.14.1 to 6.15.0 - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](https://github.com/ljharb/qs/compare/v6.14.0...v6.15.0) Updates `lodash` from 4.17.21 to 4.17.23 - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23) Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) Updates `socket.io-parser` from 4.2.4 to 4.2.6 - [Release notes](https://github.com/socketio/socket.io/releases) - [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md) - [Commits](https://github.com/socketio/socket.io/compare/socket.io-parser@4.2.4...socket.io-parser@4.2.6) --- updated-dependencies: - dependency-name: ajv dependency-version: 6.14.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: serialize-javascript dependency-version: dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: webpack dependency-version: 5.105.4 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: qs dependency-version: 6.15.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: tmp dependency-version: dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: qs dependency-version: 6.15.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: qs dependency-version: 6.15.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: qs dependency-version: 6.15.0 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: lodash dependency-version: 4.17.23 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn - dependency-name: socket.io-parser dependency-version: 4.2.6 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- frontend/package-lock.json | 208 ++++++++------------ lib/database/tableWatcher/package-lock.json | 23 ++- ranges/log/package-lock.json | 25 ++- ranges/merge/package-lock.json | 31 +-- ranges/types/package-lock.json | 88 ++++----- screens/evaluations/package-lock.json | 31 +-- screens/images/package-lock.json | 6 +- screens/screenCast/package-lock.json | 25 ++- screens/screenManager/package-lock.json | 31 +-- screens/types/package-lock.json | 6 +- serverState/package-lock.json | 25 +-- syncTime/package-lock.json | 25 ++- 12 files changed, 233 insertions(+), 291 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index c486e485..4218e79d 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -1501,9 +1501,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", "peer": true, "bin": { @@ -1527,9 +1527,9 @@ } }, "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -1628,9 +1628,9 @@ } }, "node_modules/browserslist": { - "version": "4.25.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", - "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "funding": [ { "type": "opencollective", @@ -1648,10 +1648,11 @@ "license": "MIT", "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001726", - "electron-to-chromium": "^1.5.173", - "node-releases": "^2.0.19", - "update-browserslist-db": "^1.1.3" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -1677,9 +1678,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001731", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001731.tgz", - "integrity": "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg==", + "version": "1.0.30001780", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz", + "integrity": "sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ==", "funding": [ { "type": "opencollective", @@ -1808,9 +1809,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.194", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.194.tgz", - "integrity": "sha512-SdnWJwSUot04UR51I2oPD8kuP2VI37/CADR1OHsFOUzZIvfWJBO6q11k5P/uKNyTT3cdOsnyjkrZ+DDShqYqJA==", + "version": "1.5.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", + "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", "license": "ISC", "peer": true }, @@ -1863,14 +1864,14 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.18.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz", - "integrity": "sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==", + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "tapable": "^2.3.0" }, "engines": { "node": ">=10.13.0" @@ -1886,9 +1887,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "license": "MIT", "peer": true }, @@ -2200,13 +2201,17 @@ "license": "MIT" }, "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.1.tgz", + "integrity": "sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==", "license": "MIT", "peer": true, "engines": { "node": ">=6.11.5" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { @@ -2382,9 +2387,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", - "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", "license": "MIT", "peer": true }, @@ -2539,16 +2544,6 @@ "node": ">=6" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, "node_modules/raw-loader": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", @@ -2775,27 +2770,6 @@ "node": ">=4" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "peer": true - }, "node_modules/scheduler": { "version": "0.27.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", @@ -2821,9 +2795,9 @@ } }, "node_modules/schema-utils/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -2864,16 +2838,6 @@ "node": ">=10" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "license": "BSD-3-Clause", - "peer": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, "node_modules/sharp": { "version": "0.34.5", "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", @@ -2941,35 +2905,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -3067,13 +3014,17 @@ } }, "node_modules/tapable": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz", - "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", "license": "MIT", "peer": true, "engines": { "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/terser": { @@ -3096,16 +3047,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", - "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "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==", "license": "MIT", "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { @@ -3192,9 +3142,9 @@ "license": "MIT" }, "node_modules/update-browserslist-db": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", - "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", "funding": [ { "type": "opencollective", @@ -3264,9 +3214,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz", - "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz", + "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==", "license": "MIT", "peer": true, "dependencies": { @@ -3278,9 +3228,9 @@ } }, "node_modules/webpack": { - "version": "5.101.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.0.tgz", - "integrity": "sha512-B4t+nJqytPeuZlHuIKTbalhljIFXeNRqrUGAQgTGlfOl2lXXKXw+yZu6bicycP+PUlM44CxBjCFD6aciKFT3LQ==", + "version": "5.105.4", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.105.4.tgz", + "integrity": "sha512-jTywjboN9aHxFlToqb0K0Zs9SbBoW4zRUlGzI2tYNxVYcEi/IPpn+Xi4ye5jTLvX2YeLuic/IvxNot+Q1jMoOw==", "license": "MIT", "peer": true, "dependencies": { @@ -3290,25 +3240,25 @@ "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", + "acorn": "^8.16.0", "acorn-import-phases": "^1.0.3", - "browserslist": "^4.24.0", + "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.2", - "es-module-lexer": "^1.2.1", + "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.2.0", + "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.11", - "watchpack": "^2.4.1", - "webpack-sources": "^3.3.3" + "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" @@ -3327,9 +3277,9 @@ } }, "node_modules/webpack-sources": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz", - "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==", + "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==", "license": "MIT", "peer": true, "engines": { @@ -3337,9 +3287,9 @@ } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", - "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.3.tgz", + "integrity": "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==", "license": "MIT", "peer": true, "dependencies": { diff --git a/lib/database/tableWatcher/package-lock.json b/lib/database/tableWatcher/package-lock.json index 22eea2ab..3bb64173 100644 --- a/lib/database/tableWatcher/package-lock.json +++ b/lib/database/tableWatcher/package-lock.json @@ -1101,16 +1101,35 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/sqlstring": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", diff --git a/ranges/log/package-lock.json b/ranges/log/package-lock.json index 122da600..4fde3f83 100644 --- a/ranges/log/package-lock.json +++ b/ranges/log/package-lock.json @@ -1581,18 +1581,35 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", diff --git a/ranges/merge/package-lock.json b/ranges/merge/package-lock.json index 523176cc..3767f699 100644 --- a/ranges/merge/package-lock.json +++ b/ranges/merge/package-lock.json @@ -1356,9 +1356,9 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -1708,35 +1708,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/socket.io/node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", diff --git a/ranges/types/package-lock.json b/ranges/types/package-lock.json index fc4c54ff..6370eb40 100644 --- a/ranges/types/package-lock.json +++ b/ranges/types/package-lock.json @@ -16,6 +16,27 @@ "typescript": "~5.9.3" } }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@standard-schema/spec": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", @@ -175,9 +196,9 @@ } }, "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "license": "MIT" }, "node_modules/cli-cursor": { @@ -320,20 +341,6 @@ "node": ">=4" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -406,15 +413,19 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/ieee754": { @@ -454,16 +465,16 @@ } }, "node_modules/inquirer": { - "version": "8.2.6", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", - "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.7.tgz", + "integrity": "sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==", "license": "MIT", "dependencies": { + "@inquirer/external-editor": "^1.0.0", "ansi-escapes": "^4.2.1", "chalk": "^4.1.1", "cli-cursor": "^3.1.0", "cli-width": "^3.0.0", - "external-editor": "^3.0.3", "figures": "^3.0.0", "lodash": "^4.17.21", "mute-stream": "0.0.8", @@ -546,9 +557,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "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/log-symbols": { @@ -630,15 +641,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/package-manager-detector": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", @@ -879,18 +881,6 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "license": "MIT" }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, "node_modules/ts-patch": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/ts-patch/-/ts-patch-3.3.0.tgz", diff --git a/screens/evaluations/package-lock.json b/screens/evaluations/package-lock.json index 5e6b5a95..1db08b3e 100644 --- a/screens/evaluations/package-lock.json +++ b/screens/evaluations/package-lock.json @@ -1636,9 +1636,9 @@ } }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -1983,35 +1983,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", diff --git a/screens/images/package-lock.json b/screens/images/package-lock.json index 8ccb92e0..899601f5 100644 --- a/screens/images/package-lock.json +++ b/screens/images/package-lock.json @@ -1269,9 +1269,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" diff --git a/screens/screenCast/package-lock.json b/screens/screenCast/package-lock.json index e0831808..117f29f5 100644 --- a/screens/screenCast/package-lock.json +++ b/screens/screenCast/package-lock.json @@ -298,18 +298,35 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/socket.io/node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", diff --git a/screens/screenManager/package-lock.json b/screens/screenManager/package-lock.json index 003b5a34..12997d19 100644 --- a/screens/screenManager/package-lock.json +++ b/screens/screenManager/package-lock.json @@ -1352,9 +1352,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -1704,35 +1704,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/socket.io/node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", diff --git a/screens/types/package-lock.json b/screens/types/package-lock.json index a87fc1a1..88886ffa 100644 --- a/screens/types/package-lock.json +++ b/screens/types/package-lock.json @@ -553,9 +553,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "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/log-symbols": { diff --git a/serverState/package-lock.json b/serverState/package-lock.json index 4602e714..54b87fda 100644 --- a/serverState/package-lock.json +++ b/serverState/package-lock.json @@ -1265,35 +1265,18 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, - "node_modules/socket.io-parser/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, "node_modules/socket.io/node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", diff --git a/syncTime/package-lock.json b/syncTime/package-lock.json index 0c4e9ecd..e6d1129c 100644 --- a/syncTime/package-lock.json +++ b/syncTime/package-lock.json @@ -233,18 +233,35 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", - "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1" + "debug": "~4.4.1" }, "engines": { "node": ">=10.0.0" } }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",