diff --git a/package-lock.json b/package-lock.json
index dc7ebc50..5640a426 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,12 +12,12 @@
         "./packages/*"
       ],
       "devDependencies": {
-        "commitizen": "^4.3.0",
+        "commitizen": "^4.3.1",
         "conventional-changelog-cli": "^5.0.0",
         "cz-conventional-changelog": "^3.3.0",
         "lerna": "^8.1.6",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0"
+        "metapak-nfroidure": "19.0.1"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -368,9 +368,9 @@
       }
     },
     "node_modules/@babel/compat-data": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.2.tgz",
-      "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==",
+      "version": "7.26.3",
+      "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz",
+      "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==",
       "dev": true,
       "engines": {
         "node": ">=6.9.0"
@@ -416,13 +416,13 @@
       }
     },
     "node_modules/@babel/generator": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.2.tgz",
-      "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==",
+      "version": "7.26.3",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz",
+      "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==",
       "dev": true,
       "dependencies": {
-        "@babel/parser": "^7.26.2",
-        "@babel/types": "^7.26.0",
+        "@babel/parser": "^7.26.3",
+        "@babel/types": "^7.26.3",
         "@jridgewell/gen-mapping": "^0.3.5",
         "@jridgewell/trace-mapping": "^0.3.25",
         "jsesc": "^3.0.2"
@@ -551,12 +551,12 @@
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.26.2",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
-      "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
+      "version": "7.26.3",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz",
+      "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==",
       "dev": true,
       "dependencies": {
-        "@babel/types": "^7.26.0"
+        "@babel/types": "^7.26.3"
       },
       "bin": {
         "parser": "bin/babel-parser.js"
@@ -802,16 +802,16 @@
       }
     },
     "node_modules/@babel/traverse": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
-      "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+      "version": "7.26.3",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.3.tgz",
+      "integrity": "sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==",
       "dev": true,
       "dependencies": {
-        "@babel/code-frame": "^7.25.9",
-        "@babel/generator": "^7.25.9",
-        "@babel/parser": "^7.25.9",
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.26.3",
+        "@babel/parser": "^7.26.3",
         "@babel/template": "^7.25.9",
-        "@babel/types": "^7.25.9",
+        "@babel/types": "^7.26.3",
         "debug": "^4.3.1",
         "globals": "^11.1.0"
       },
@@ -829,9 +829,9 @@
       }
     },
     "node_modules/@babel/types": {
-      "version": "7.26.0",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
-      "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
+      "version": "7.26.3",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz",
+      "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==",
       "dev": true,
       "dependencies": {
         "@babel/helper-string-parser": "^7.25.9",
@@ -1686,45 +1686,48 @@
       }
     },
     "node_modules/@inquirer/checkbox": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz",
-      "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.0.2.tgz",
+      "integrity": "sha512-+gznPl8ip8P8HYHYecDtUtdsh1t2jvb+sWCD72GAiZ9m45RqwrLmReDaqdC0umQfamtFXVRoMVJ2/qINKGm9Tg==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/figures": "^1.0.6",
-        "@inquirer/type": "^2.0.0",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/figures": "^1.0.8",
+        "@inquirer/type": "^3.0.1",
         "ansi-escapes": "^4.3.2",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/confirm": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz",
-      "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.0.2.tgz",
+      "integrity": "sha512-KJLUHOaKnNCYzwVbryj3TNBxyZIrr56fR5N45v6K9IPrbT6B7DcudBMfylkV1A8PUdJE15mybkEQyp2/ZUpxUA==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/type": "^2.0.0"
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/type": "^3.0.1"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/core": {
-      "version": "9.2.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz",
-      "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==",
-      "dependencies": {
-        "@inquirer/figures": "^1.0.6",
-        "@inquirer/type": "^2.0.0",
-        "@types/mute-stream": "^0.0.4",
-        "@types/node": "^22.5.5",
-        "@types/wrap-ansi": "^3.0.0",
+      "version": "10.1.0",
+      "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.0.tgz",
+      "integrity": "sha512-I+ETk2AL+yAVbvuKx5AJpQmoaWhpiTFOg/UJb7ZkMAK4blmtG8ATh5ct+T/8xNld0CZG/2UhtkdMwpgvld92XQ==",
+      "dependencies": {
+        "@inquirer/figures": "^1.0.8",
+        "@inquirer/type": "^3.0.1",
         "ansi-escapes": "^4.3.2",
         "cli-width": "^4.1.0",
-        "mute-stream": "^1.0.0",
+        "mute-stream": "^2.0.0",
         "signal-exit": "^4.1.0",
         "strip-ansi": "^6.0.1",
         "wrap-ansi": "^6.2.0",
@@ -1743,11 +1746,11 @@
       }
     },
     "node_modules/@inquirer/core/node_modules/mute-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
-      "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
+      "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
       "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+        "node": "^18.17.0 || >=20.5.0"
       }
     },
     "node_modules/@inquirer/core/node_modules/signal-exit": {
@@ -1775,29 +1778,35 @@
       }
     },
     "node_modules/@inquirer/editor": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz",
-      "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==",
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.1.0.tgz",
+      "integrity": "sha512-K1gGWsxEqO23tVdp5MT3H799OZ4ER1za7Dlc8F4um0W7lwSv0KGR/YyrUEyimj0g7dXZd8XknM/5QA2/Uy+TbA==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/type": "^2.0.0",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/type": "^3.0.1",
         "external-editor": "^3.1.0"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/expand": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz",
-      "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.2.tgz",
+      "integrity": "sha512-WdgCX1cUtinz+syKyZdJomovULYlKUWZbVYZzhf+ZeeYf4htAQ3jLymoNs3koIAKfZZl3HUBb819ClCBfyznaw==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/type": "^2.0.0",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/type": "^3.0.1",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/figures": {
@@ -1809,121 +1818,134 @@
       }
     },
     "node_modules/@inquirer/input": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz",
-      "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.0.2.tgz",
+      "integrity": "sha512-yCLCraigU085EcdpIVEDgyfGv4vBiE4I+k1qRkc9C5dMjWF42ADMGy1RFU94+eZlz4YlkmFsiyHZy0W1wdhaNg==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/type": "^2.0.0"
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/type": "^3.0.1"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/number": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz",
-      "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.2.tgz",
+      "integrity": "sha512-MKQhYofdUNk7eqJtz52KvM1dH6R93OMrqHduXCvuefKrsiMjHiMwjc3NZw5Imm2nqY7gWd9xdhYrtcHMJQZUxA==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/type": "^2.0.0"
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/type": "^3.0.1"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/password": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz",
-      "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.2.tgz",
+      "integrity": "sha512-tQXGSu7IO07gsYlGy3VgXRVsbOWqFBMbqAUrJSc1PDTQQ5Qdm+QVwkP0OC0jnUZ62D19iPgXOMO+tnWG+HhjNQ==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/type": "^2.0.0",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/type": "^3.0.1",
         "ansi-escapes": "^4.3.2"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/prompts": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz",
-      "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==",
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.1.0.tgz",
+      "integrity": "sha512-5U/XiVRH2pp1X6gpNAjWOglMf38/Ys522ncEHIKT1voRUvSj/DQnR22OVxHnwu5S+rCFaUiPQ57JOtMFQayqYA==",
       "dependencies": {
-        "@inquirer/checkbox": "^3.0.1",
-        "@inquirer/confirm": "^4.0.1",
-        "@inquirer/editor": "^3.0.1",
-        "@inquirer/expand": "^3.0.1",
-        "@inquirer/input": "^3.0.1",
-        "@inquirer/number": "^2.0.1",
-        "@inquirer/password": "^3.0.1",
-        "@inquirer/rawlist": "^3.0.1",
-        "@inquirer/search": "^2.0.1",
-        "@inquirer/select": "^3.0.1"
+        "@inquirer/checkbox": "^4.0.2",
+        "@inquirer/confirm": "^5.0.2",
+        "@inquirer/editor": "^4.1.0",
+        "@inquirer/expand": "^4.0.2",
+        "@inquirer/input": "^4.0.2",
+        "@inquirer/number": "^3.0.2",
+        "@inquirer/password": "^4.0.2",
+        "@inquirer/rawlist": "^4.0.2",
+        "@inquirer/search": "^3.0.2",
+        "@inquirer/select": "^4.0.2"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/rawlist": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz",
-      "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.0.2.tgz",
+      "integrity": "sha512-3XGcskMoVF8H0Dl1S5TSZ3rMPPBWXRcM0VeNVsS4ByWeWjSeb0lPqfnBg6N7T0608I1B2bSVnbi2cwCrmOD1Yw==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/type": "^2.0.0",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/type": "^3.0.1",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/search": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz",
-      "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.0.2.tgz",
+      "integrity": "sha512-Zv4FC7w4dJ13BOJfKRQCICQfShinGjb1bCEIHxTSnjj2telu3+3RHwHubPG9HyD4aix5s+lyAMEK/wSFD75HLA==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/figures": "^1.0.6",
-        "@inquirer/type": "^2.0.0",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/figures": "^1.0.8",
+        "@inquirer/type": "^3.0.1",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/select": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz",
-      "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==",
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.0.2.tgz",
+      "integrity": "sha512-uSWUzaSYAEj0hlzxa1mUB6VqrKaYx0QxGBLZzU4xWFxaSyGaXxsSE4OSOwdU24j0xl8OajgayqFXW0l2bkl2kg==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/figures": "^1.0.6",
-        "@inquirer/type": "^2.0.0",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/figures": "^1.0.8",
+        "@inquirer/type": "^3.0.1",
         "ansi-escapes": "^4.3.2",
         "yoctocolors-cjs": "^2.1.2"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@inquirer/type": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz",
-      "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==",
-      "dependencies": {
-        "mute-stream": "^1.0.0"
-      },
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.1.tgz",
+      "integrity": "sha512-+ksJMIy92sOAiAccGpcKZUc3bYO07cADnscIxHBknEm3uNts3movSmBofc1908BNy5edKscxYeAdaX1NXkHS6A==",
       "engines": {
         "node": ">=18"
-      }
-    },
-    "node_modules/@inquirer/type/node_modules/mute-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
-      "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "node_modules/@isaacs/cliui": {
@@ -3028,18 +3050,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/@lerna/create/node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/@lerna/create/node_modules/p-limit": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -3088,18 +3098,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/@lerna/create/node_modules/pify": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz",
-      "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/@lerna/create/node_modules/read-pkg": {
       "version": "3.0.0",
       "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
@@ -3242,25 +3240,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@mole-inc/bin-wrapper": {
-      "version": "8.0.1",
-      "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz",
-      "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==",
-      "dev": true,
-      "dependencies": {
-        "bin-check": "^4.1.0",
-        "bin-version-check": "^5.0.0",
-        "content-disposition": "^0.5.4",
-        "ext-name": "^5.0.0",
-        "file-type": "^17.1.6",
-        "filenamify": "^5.0.2",
-        "got": "^11.8.5",
-        "os-filter-obj": "^2.0.0"
-      },
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      }
-    },
     "node_modules/@napi-rs/nice": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@napi-rs/nice/-/nice-1.0.1.tgz",
@@ -4408,6 +4387,12 @@
       "integrity": "sha512-xxeapPiUXdZAE3che6f3xogoJPeZgig6omHEy1rIY5WVsB3H2BHNnZH+gHG6x91SCWyQCzWGsuL2Hh3ClO5/qQ==",
       "hasInstallScript": true
     },
+    "node_modules/@sec-ant/readable-stream": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz",
+      "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==",
+      "dev": true
+    },
     "node_modules/@sigstore/bundle": {
       "version": "2.3.2",
       "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz",
@@ -4489,12 +4474,12 @@
       "dev": true
     },
     "node_modules/@sindresorhus/is": {
-      "version": "4.6.0",
-      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz",
-      "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==",
+      "version": "5.6.0",
+      "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz",
+      "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==",
       "dev": true,
       "engines": {
-        "node": ">=10"
+        "node": ">=14.16"
       },
       "funding": {
         "url": "https://github.com/sindresorhus/is?sponsor=1"
@@ -4519,17 +4504,17 @@
       }
     },
     "node_modules/@swc/cli": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.4.0.tgz",
-      "integrity": "sha512-4JdVrPtF/4rCMXp6Q1h5I6YkYZrCCcqod7Wk97ZQq7K8vNGzJUryBv4eHCvqx5sJOJBrbYm9fcswe1B0TygNoA==",
+      "version": "0.5.2",
+      "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.5.2.tgz",
+      "integrity": "sha512-ul2qIqjM5bfe9zWLqFDmHZCf9HXXSZZAlZLe4czn+lH4PewO+OWZnQcYCscnJKlbx6MuWjzXVR7gkspjNEJwJA==",
       "dev": true,
       "dependencies": {
-        "@mole-inc/bin-wrapper": "^8.0.1",
         "@swc/counter": "^0.1.3",
+        "@xhmikosr/bin-wrapper": "^13.0.5",
         "commander": "^8.3.0",
         "fast-glob": "^3.2.5",
         "minimatch": "^9.0.3",
-        "piscina": "^4.3.0",
+        "piscina": "^4.3.1",
         "semver": "^7.3.8",
         "slash": "3.0.0",
         "source-map": "^0.7.3"
@@ -4553,9 +4538,9 @@
       }
     },
     "node_modules/@swc/core": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.3.tgz",
-      "integrity": "sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.10.0.tgz",
+      "integrity": "sha512-+CuuTCmQFfzaNGg1JmcZvdUVITQXJk9sMnl1C2TiDLzOSVOJRwVD4dNo5dljX/qxpMAN+2BIYlwjlSkoGi6grg==",
       "dev": true,
       "hasInstallScript": true,
       "dependencies": {
@@ -4570,16 +4555,16 @@
         "url": "https://opencollective.com/swc"
       },
       "optionalDependencies": {
-        "@swc/core-darwin-arm64": "1.9.3",
-        "@swc/core-darwin-x64": "1.9.3",
-        "@swc/core-linux-arm-gnueabihf": "1.9.3",
-        "@swc/core-linux-arm64-gnu": "1.9.3",
-        "@swc/core-linux-arm64-musl": "1.9.3",
-        "@swc/core-linux-x64-gnu": "1.9.3",
-        "@swc/core-linux-x64-musl": "1.9.3",
-        "@swc/core-win32-arm64-msvc": "1.9.3",
-        "@swc/core-win32-ia32-msvc": "1.9.3",
-        "@swc/core-win32-x64-msvc": "1.9.3"
+        "@swc/core-darwin-arm64": "1.10.0",
+        "@swc/core-darwin-x64": "1.10.0",
+        "@swc/core-linux-arm-gnueabihf": "1.10.0",
+        "@swc/core-linux-arm64-gnu": "1.10.0",
+        "@swc/core-linux-arm64-musl": "1.10.0",
+        "@swc/core-linux-x64-gnu": "1.10.0",
+        "@swc/core-linux-x64-musl": "1.10.0",
+        "@swc/core-win32-arm64-msvc": "1.10.0",
+        "@swc/core-win32-ia32-msvc": "1.10.0",
+        "@swc/core-win32-x64-msvc": "1.10.0"
       },
       "peerDependencies": {
         "@swc/helpers": "*"
@@ -4591,9 +4576,9 @@
       }
     },
     "node_modules/@swc/core-darwin-arm64": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.3.tgz",
-      "integrity": "sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.10.0.tgz",
+      "integrity": "sha512-wCeUpanqZyzvgqWRtXIyhcFK3CqukAlYyP+fJpY2gWc/+ekdrenNIfZMwY7tyTFDkXDYEKzvn3BN/zDYNJFowQ==",
       "cpu": [
         "arm64"
       ],
@@ -4608,9 +4593,9 @@
       }
     },
     "node_modules/@swc/core-darwin-x64": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.3.tgz",
-      "integrity": "sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.10.0.tgz",
+      "integrity": "sha512-0CZPzqTynUBO+SHEl/qKsFSahp2Jv/P2ZRjFG0gwZY5qIcr1+B/v+o74/GyNMBGz9rft+F2WpU31gz2sJwyF4A==",
       "cpu": [
         "x64"
       ],
@@ -4625,9 +4610,9 @@
       }
     },
     "node_modules/@swc/core-linux-arm-gnueabihf": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.3.tgz",
-      "integrity": "sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.10.0.tgz",
+      "integrity": "sha512-oq+DdMu5uJOFPtRkeiITc4kxmd+QSmK+v+OBzlhdGkSgoH3yRWZP+H2ao0cBXo93ZgCr2LfjiER0CqSKhjGuNA==",
       "cpu": [
         "arm"
       ],
@@ -4642,9 +4627,9 @@
       }
     },
     "node_modules/@swc/core-linux-arm64-gnu": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.3.tgz",
-      "integrity": "sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.10.0.tgz",
+      "integrity": "sha512-Y6+PC8knchEViRxiCUj3j8wsGXaIhuvU+WqrFqV834eiItEMEI9+Vh3FovqJMBE3L7d4E4ZQtgImHCXjrHfxbw==",
       "cpu": [
         "arm64"
       ],
@@ -4659,9 +4644,9 @@
       }
     },
     "node_modules/@swc/core-linux-arm64-musl": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.3.tgz",
-      "integrity": "sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.10.0.tgz",
+      "integrity": "sha512-EbrX9A5U4cECCQQfky7945AW9GYnTXtCUXElWTkTYmmyQK87yCyFfY8hmZ9qMFIwxPOH6I3I2JwMhzdi8Qoz7g==",
       "cpu": [
         "arm64"
       ],
@@ -4676,9 +4661,9 @@
       }
     },
     "node_modules/@swc/core-linux-x64-gnu": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.3.tgz",
-      "integrity": "sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.10.0.tgz",
+      "integrity": "sha512-TaxpO6snTjjfLXFYh5EjZ78se69j2gDcqEM8yB9gguPYwkCHi2Ylfmh7iVaNADnDJFtjoAQp0L41bTV/Pfq9Cg==",
       "cpu": [
         "x64"
       ],
@@ -4693,9 +4678,9 @@
       }
     },
     "node_modules/@swc/core-linux-x64-musl": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.3.tgz",
-      "integrity": "sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.10.0.tgz",
+      "integrity": "sha512-IEGvDd6aEEKEyZFZ8oCKuik05G5BS7qwG5hO5PEMzdGeh8JyFZXxsfFXbfeAqjue4UaUUrhnoX+Ze3M2jBVMHw==",
       "cpu": [
         "x64"
       ],
@@ -4710,9 +4695,9 @@
       }
     },
     "node_modules/@swc/core-win32-arm64-msvc": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.3.tgz",
-      "integrity": "sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.10.0.tgz",
+      "integrity": "sha512-UkQ952GSpY+Z6XONj9GSW8xGSkF53jrCsuLj0nrcuw7Dvr1a816U/9WYZmmcYS8tnG2vHylhpm6csQkyS8lpCw==",
       "cpu": [
         "arm64"
       ],
@@ -4727,9 +4712,9 @@
       }
     },
     "node_modules/@swc/core-win32-ia32-msvc": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.3.tgz",
-      "integrity": "sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.10.0.tgz",
+      "integrity": "sha512-a2QpIZmTiT885u/mUInpeN2W9ClCnqrV2LnMqJR1/Fgx1Afw/hAtiDZPtQ0SqS8yDJ2VR5gfNZo3gpxWMrqdVA==",
       "cpu": [
         "ia32"
       ],
@@ -4744,9 +4729,9 @@
       }
     },
     "node_modules/@swc/core-win32-x64-msvc": {
-      "version": "1.9.3",
-      "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.3.tgz",
-      "integrity": "sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==",
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.10.0.tgz",
+      "integrity": "sha512-tZcCmMwf483nwsEBfUk5w9e046kMa1iSik4bP9Kwi2FGtOfHuDfIcwW4jek3hdcgF5SaBW1ktnK/lgQLDi5AtA==",
       "cpu": [
         "x64"
       ],
@@ -4802,15 +4787,15 @@
       }
     },
     "node_modules/@szmarczak/http-timer": {
-      "version": "4.0.6",
-      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz",
-      "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==",
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz",
+      "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==",
       "dev": true,
       "dependencies": {
-        "defer-to-connect": "^2.0.0"
+        "defer-to-connect": "^2.0.1"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">=14.16"
       }
     },
     "node_modules/@tokenizer/token": {
@@ -4906,21 +4891,9 @@
       }
     },
     "node_modules/@types/bytes": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.4.tgz",
-      "integrity": "sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA=="
-    },
-    "node_modules/@types/cacheable-request": {
-      "version": "6.0.3",
-      "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz",
-      "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==",
-      "dev": true,
-      "dependencies": {
-        "@types/http-cache-semantics": "*",
-        "@types/keyv": "^3.1.4",
-        "@types/node": "*",
-        "@types/responselike": "^1.0.0"
-      }
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.5.tgz",
+      "integrity": "sha512-VgZkrJckypj85YxEsEavcMmmSOIzkUHqWmM4CCyia5dc54YwsXzJ5uT4fYxBQNEXx+oF1krlhgCbvfubXqZYsQ=="
     },
     "node_modules/@types/connect": {
       "version": "3.4.38",
@@ -5059,15 +5032,6 @@
         "@types/node": "*"
       }
     },
-    "node_modules/@types/keyv": {
-      "version": "3.1.4",
-      "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz",
-      "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@types/linkify-it": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
@@ -5117,14 +5081,6 @@
       "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz",
       "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g=="
     },
-    "node_modules/@types/mute-stream": {
-      "version": "0.0.4",
-      "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz",
-      "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==",
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@types/negotiator": {
       "version": "0.6.3",
       "resolved": "https://registry.npmjs.org/@types/negotiator/-/negotiator-0.6.3.tgz",
@@ -5163,15 +5119,6 @@
       "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz",
       "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="
     },
-    "node_modules/@types/responselike": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz",
-      "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "*"
-      }
-    },
     "node_modules/@types/semver": {
       "version": "7.5.8",
       "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
@@ -5226,11 +5173,6 @@
         "@types/node": "*"
       }
     },
-    "node_modules/@types/wrap-ansi": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz",
-      "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g=="
-    },
     "node_modules/@types/yargs": {
       "version": "17.0.33",
       "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz",
@@ -5247,31 +5189,31 @@
       "dev": true
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz",
-      "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==",
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.17.0.tgz",
+      "integrity": "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==",
       "dev": true,
       "dependencies": {
         "@eslint-community/regexpp": "^4.10.0",
-        "@typescript-eslint/scope-manager": "7.18.0",
-        "@typescript-eslint/type-utils": "7.18.0",
-        "@typescript-eslint/utils": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0",
+        "@typescript-eslint/scope-manager": "8.17.0",
+        "@typescript-eslint/type-utils": "8.17.0",
+        "@typescript-eslint/utils": "8.17.0",
+        "@typescript-eslint/visitor-keys": "8.17.0",
         "graphemer": "^1.4.0",
         "ignore": "^5.3.1",
         "natural-compare": "^1.4.0",
         "ts-api-utils": "^1.3.0"
       },
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
       },
       "peerDependencies": {
-        "@typescript-eslint/parser": "^7.0.0",
-        "eslint": "^8.56.0"
+        "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0",
+        "eslint": "^8.57.0 || ^9.0.0"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -5279,57 +5221,27 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
-      "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
+    "node_modules/@typescript-eslint/parser": {
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.17.0.tgz",
+      "integrity": "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "@typescript-eslint/scope-manager": "8.17.0",
+        "@typescript-eslint/types": "8.17.0",
+        "@typescript-eslint/typescript-estree": "8.17.0",
+        "@typescript-eslint/visitor-keys": "8.17.0",
+        "debug": "^4.3.4"
       },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
-      "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
-      "dev": true,
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
-      "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "minimatch": "^9.0.4",
-        "semver": "^7.6.0",
-        "ts-api-utils": "^1.3.0"
       },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -5337,78 +5249,43 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
-      "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "7.18.0",
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/typescript-estree": "7.18.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^8.56.0"
-      }
-    },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
-      "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+    "node_modules/@typescript-eslint/scope-manager": {
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.17.0.tgz",
+      "integrity": "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "eslint-visitor-keys": "^3.4.3"
+        "@typescript-eslint/types": "8.17.0",
+        "@typescript-eslint/visitor-keys": "8.17.0"
       },
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": {
-      "version": "3.4.3",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-      "dev": true,
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/parser": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz",
-      "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==",
+    "node_modules/@typescript-eslint/type-utils": {
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.17.0.tgz",
+      "integrity": "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/scope-manager": "7.18.0",
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/typescript-estree": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0",
-        "debug": "^4.3.4"
+        "@typescript-eslint/typescript-estree": "8.17.0",
+        "@typescript-eslint/utils": "8.17.0",
+        "debug": "^4.3.4",
+        "ts-api-utils": "^1.3.0"
       },
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
       },
       "peerDependencies": {
-        "eslint": "^8.56.0"
+        "eslint": "^8.57.0 || ^9.0.0"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -5416,53 +5293,36 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
-      "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
-      "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
+    "node_modules/@typescript-eslint/types": {
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.17.0.tgz",
+      "integrity": "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==",
       "dev": true,
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
       }
     },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
-      "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
+    "node_modules/@typescript-eslint/typescript-estree": {
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.17.0.tgz",
+      "integrity": "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0",
+        "@typescript-eslint/types": "8.17.0",
+        "@typescript-eslint/visitor-keys": "8.17.0",
         "debug": "^4.3.4",
-        "globby": "^11.1.0",
+        "fast-glob": "^3.3.2",
         "is-glob": "^4.0.3",
         "minimatch": "^9.0.4",
         "semver": "^7.6.0",
         "ts-api-utils": "^1.3.0"
       },
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
@@ -5474,264 +5334,41 @@
         }
       }
     },
-    "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
-      "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
+    "node_modules/@typescript-eslint/utils": {
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.17.0.tgz",
+      "integrity": "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "eslint-visitor-keys": "^3.4.3"
+        "@eslint-community/eslint-utils": "^4.4.0",
+        "@typescript-eslint/scope-manager": "8.17.0",
+        "@typescript-eslint/types": "8.17.0",
+        "@typescript-eslint/typescript-estree": "8.17.0"
       },
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": {
-      "version": "3.4.3",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-      "dev": true,
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
       },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
+      "peerDependencies": {
+        "eslint": "^8.57.0 || ^9.0.0"
+      },
+      "peerDependenciesMeta": {
+        "typescript": {
+          "optional": true
+        }
       }
     },
-    "node_modules/@typescript-eslint/scope-manager": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.16.0.tgz",
-      "integrity": "sha512-mwsZWubQvBki2t5565uxF0EYvG+FwdFb8bMtDuGQLdCCnGPrDEDvm1gtfynuKlnpzeBRqdFCkMf9jg1fnAK8sg==",
+    "node_modules/@typescript-eslint/visitor-keys": {
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.17.0.tgz",
+      "integrity": "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "8.16.0",
-        "@typescript-eslint/visitor-keys": "8.16.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz",
-      "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/typescript-estree": "7.18.0",
-        "@typescript-eslint/utils": "7.18.0",
-        "debug": "^4.3.4",
-        "ts-api-utils": "^1.3.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^8.56.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
-      "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
-      "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
-      "dev": true,
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
-      "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "minimatch": "^9.0.4",
-        "semver": "^7.6.0",
-        "ts-api-utils": "^1.3.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
-      "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "7.18.0",
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/typescript-estree": "7.18.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^8.56.0"
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
-      "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "eslint-visitor-keys": "^3.4.3"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": {
-      "version": "3.4.3",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
-      "dev": true,
-      "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/types": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.16.0.tgz",
-      "integrity": "sha512-NzrHj6thBAOSE4d9bsuRNMvk+BvaQvmY4dDglgkgGC0EW/tB3Kelnp3tAKH87GEwzoxgeQn9fNGRyFJM/xd+GQ==",
-      "dev": true,
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.16.0.tgz",
-      "integrity": "sha512-E2+9IzzXMc1iaBy9zmo+UYvluE3TW7bCGWSF41hVWUE01o8nzr1rvOQYSxelxr6StUvRcTMe633eY8mXASMaNw==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "8.16.0",
-        "@typescript-eslint/visitor-keys": "8.16.0",
-        "debug": "^4.3.4",
-        "fast-glob": "^3.3.2",
-        "is-glob": "^4.0.3",
-        "minimatch": "^9.0.4",
-        "semver": "^7.6.0",
-        "ts-api-utils": "^1.3.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/utils": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.16.0.tgz",
-      "integrity": "sha512-C1zRy/mOL8Pj157GiX4kaw7iyRLKfJXBR3L82hk5kS/GyHcOFmy4YUq/zfZti72I9wnuQtA/+xzft4wCC8PJdA==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "8.16.0",
-        "@typescript-eslint/types": "8.16.0",
-        "@typescript-eslint/typescript-estree": "8.16.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^8.57.0 || ^9.0.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "8.16.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.16.0.tgz",
-      "integrity": "sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "8.16.0",
-        "eslint-visitor-keys": "^4.2.0"
+        "@typescript-eslint/types": "8.17.0",
+        "eslint-visitor-keys": "^4.2.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -5805,6 +5442,154 @@
       "resolved": "packages/whook",
       "link": true
     },
+    "node_modules/@xhmikosr/archive-type": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/archive-type/-/archive-type-7.0.0.tgz",
+      "integrity": "sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==",
+      "dev": true,
+      "dependencies": {
+        "file-type": "^19.0.0"
+      },
+      "engines": {
+        "node": "^14.14.0 || >=16.0.0"
+      }
+    },
+    "node_modules/@xhmikosr/bin-check": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/bin-check/-/bin-check-7.0.3.tgz",
+      "integrity": "sha512-4UnCLCs8DB+itHJVkqFp9Zjg+w/205/J2j2wNBsCEAm/BuBmtua2hhUOdAMQE47b1c7P9Xmddj0p+X1XVsfHsA==",
+      "dev": true,
+      "dependencies": {
+        "execa": "^5.1.1",
+        "isexe": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/bin-wrapper": {
+      "version": "13.0.5",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/bin-wrapper/-/bin-wrapper-13.0.5.tgz",
+      "integrity": "sha512-DT2SAuHDeOw0G5bs7wZbQTbf4hd8pJ14tO0i4cWhRkIJfgRdKmMfkDilpaJ8uZyPA0NVRwasCNAmMJcWA67osw==",
+      "dev": true,
+      "dependencies": {
+        "@xhmikosr/bin-check": "^7.0.3",
+        "@xhmikosr/downloader": "^15.0.1",
+        "@xhmikosr/os-filter-obj": "^3.0.0",
+        "bin-version-check": "^5.1.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/decompress": {
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/decompress/-/decompress-10.0.1.tgz",
+      "integrity": "sha512-6uHnEEt5jv9ro0CDzqWlFgPycdE+H+kbJnwyxgZregIMLQ7unQSCNVsYG255FoqU8cP46DyggI7F7LohzEl8Ag==",
+      "dev": true,
+      "dependencies": {
+        "@xhmikosr/decompress-tar": "^8.0.1",
+        "@xhmikosr/decompress-tarbz2": "^8.0.1",
+        "@xhmikosr/decompress-targz": "^8.0.1",
+        "@xhmikosr/decompress-unzip": "^7.0.0",
+        "graceful-fs": "^4.2.11",
+        "make-dir": "^4.0.0",
+        "strip-dirs": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/decompress-tar": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tar/-/decompress-tar-8.0.1.tgz",
+      "integrity": "sha512-dpEgs0cQKJ2xpIaGSO0hrzz3Kt8TQHYdizHsgDtLorWajuHJqxzot9Hbi0huRxJuAGG2qiHSQkwyvHHQtlE+fg==",
+      "dev": true,
+      "dependencies": {
+        "file-type": "^19.0.0",
+        "is-stream": "^2.0.1",
+        "tar-stream": "^3.1.7"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/decompress-tarbz2": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-tarbz2/-/decompress-tarbz2-8.0.1.tgz",
+      "integrity": "sha512-OF+6DysDZP5YTDO8uHuGG6fMGZjc+HszFPBkVltjoje2Cf60hjBg/YP5OQndW1hfwVWOdP7f3CnJiPZHJUTtEg==",
+      "dev": true,
+      "dependencies": {
+        "@xhmikosr/decompress-tar": "^8.0.1",
+        "file-type": "^19.0.0",
+        "is-stream": "^2.0.1",
+        "seek-bzip": "^2.0.0",
+        "unbzip2-stream": "^1.4.3"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/decompress-targz": {
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-targz/-/decompress-targz-8.0.1.tgz",
+      "integrity": "sha512-mvy5AIDIZjQ2IagMI/wvauEiSNHhu/g65qpdM4EVoYHUJBAmkQWqcPJa8Xzi1aKVTmOA5xLJeDk7dqSjlHq8Mg==",
+      "dev": true,
+      "dependencies": {
+        "@xhmikosr/decompress-tar": "^8.0.1",
+        "file-type": "^19.0.0",
+        "is-stream": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/decompress-unzip": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/decompress-unzip/-/decompress-unzip-7.0.0.tgz",
+      "integrity": "sha512-GQMpzIpWTsNr6UZbISawsGI0hJ4KA/mz5nFq+cEoPs12UybAqZWKbyIaZZyLbJebKl5FkLpsGBkrplJdjvUoSQ==",
+      "dev": true,
+      "dependencies": {
+        "file-type": "^19.0.0",
+        "get-stream": "^6.0.1",
+        "yauzl": "^3.1.2"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/downloader": {
+      "version": "15.0.1",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/downloader/-/downloader-15.0.1.tgz",
+      "integrity": "sha512-fiuFHf3Dt6pkX8HQrVBsK0uXtkgkVlhrZEh8b7VgoDqFf+zrgFBPyrwCqE/3nDwn3hLeNz+BsrS7q3mu13Lp1g==",
+      "dev": true,
+      "dependencies": {
+        "@xhmikosr/archive-type": "^7.0.0",
+        "@xhmikosr/decompress": "^10.0.1",
+        "content-disposition": "^0.5.4",
+        "defaults": "^3.0.0",
+        "ext-name": "^5.0.0",
+        "file-type": "^19.0.0",
+        "filenamify": "^6.0.0",
+        "get-stream": "^6.0.1",
+        "got": "^13.0.0"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@xhmikosr/os-filter-obj": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/@xhmikosr/os-filter-obj/-/os-filter-obj-3.0.0.tgz",
+      "integrity": "sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==",
+      "dev": true,
+      "dependencies": {
+        "arch": "^3.0.0"
+      },
+      "engines": {
+        "node": "^14.14.0 || >=16.0.0"
+      }
+    },
     "node_modules/@yarnpkg/lockfile": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz",
@@ -5998,27 +5783,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/ansi-escape-sequences": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz",
-      "integrity": "sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==",
-      "dev": true,
-      "dependencies": {
-        "array-back": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      }
-    },
-    "node_modules/ansi-escape-sequences/node_modules/array-back": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
-      "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
     "node_modules/ansi-escapes": {
       "version": "4.3.2",
       "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -6085,13 +5849,13 @@
       "integrity": "sha512-GmkOcb5he2x5gat+TuiTvabnBf1m4jzdecal3XbXBh/Jg+kx4hcvO3TTDFQ9CuTprtzdcVyA11iqG7iOMOt7vA=="
     },
     "node_modules/application-services": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/application-services/-/application-services-6.1.0.tgz",
-      "integrity": "sha512-aMuOwj+Inv6XlsCE5DA/KOk2eDT6X3ODPkROFMynxFXNBfqcUG85zA/6cm1G2z5//T5j89WoDh05pP2NT03Mjw==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/application-services/-/application-services-7.0.0.tgz",
+      "integrity": "sha512-w0Hb7O3TPSYy1dAA/IgZtZ67bXaoQ7Rj2UG8i0XkLosHAmQENOHYWqh7J3ay7/C92CW4qsm8jELBtfeNXydPGg==",
       "dependencies": {
-        "common-services": "^16.0.4",
-        "dotenv": "^16.4.5",
-        "knifecycle": "^17.0.3",
+        "common-services": "^17.0.0",
+        "dotenv": "^16.4.7",
+        "knifecycle": "^18.0.0",
         "pkg-dir": "^8.0.0",
         "yerror": "^8.0.0"
       },
@@ -6106,9 +5870,9 @@
       "dev": true
     },
     "node_modules/arch": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz",
-      "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/arch/-/arch-3.0.0.tgz",
+      "integrity": "sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==",
       "dev": true,
       "funding": [
         {
@@ -6227,15 +5991,21 @@
       }
     },
     "node_modules/axios": {
-      "version": "1.7.8",
-      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.8.tgz",
-      "integrity": "sha512-Uu0wb7KNqK2t5K+YQyVCLM76prD5sRFjKHbJYCP1J7JFGEQ6nN7HWn9+04LAeiJ3ji54lgS/gZCH1oxyrf1SPw==",
+      "version": "1.7.9",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz",
+      "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==",
       "dependencies": {
         "follow-redirects": "^1.15.6",
         "form-data": "^4.0.0",
         "proxy-from-env": "^1.1.0"
       }
     },
+    "node_modules/b4a": {
+      "version": "1.6.7",
+      "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
+      "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
+      "dev": true
+    },
     "node_modules/babel-jest": {
       "version": "29.7.0",
       "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz",
@@ -6360,6 +6130,13 @@
       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
     },
+    "node_modules/bare-events": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz",
+      "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==",
+      "dev": true,
+      "optional": true
+    },
     "node_modules/base64-js": {
       "version": "1.5.1",
       "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -6386,19 +6163,6 @@
       "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
       "dev": true
     },
-    "node_modules/bin-check": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz",
-      "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==",
-      "dev": true,
-      "dependencies": {
-        "execa": "^0.7.0",
-        "executable": "^4.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/bin-links": {
       "version": "4.0.4",
       "resolved": "https://registry.npmjs.org/bin-links/-/bin-links-4.0.4.tgz",
@@ -6423,112 +6187,53 @@
         "node": ">=14"
       },
       "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/bin-links/node_modules/write-file-atomic": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
-      "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
-      "dev": true,
-      "dependencies": {
-        "imurmurhash": "^0.1.4",
-        "signal-exit": "^4.0.1"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
-    "node_modules/bin-version": {
-      "version": "6.0.0",
-      "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz",
-      "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==",
-      "dev": true,
-      "dependencies": {
-        "execa": "^5.0.0",
-        "find-versions": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/bin-version-check": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz",
-      "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==",
-      "dev": true,
-      "dependencies": {
-        "bin-version": "^6.0.0",
-        "semver": "^7.5.3",
-        "semver-truncate": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/bin-version/node_modules/execa": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
-      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^6.0.0",
-        "human-signals": "^2.1.0",
-        "is-stream": "^2.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^4.0.1",
-        "onetime": "^5.1.2",
-        "signal-exit": "^3.0.3",
-        "strip-final-newline": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/execa?sponsor=1"
+        "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/bin-version/node_modules/get-stream": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+    "node_modules/bin-links/node_modules/write-file-atomic": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+      "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
       "dev": true,
-      "engines": {
-        "node": ">=10"
+      "dependencies": {
+        "imurmurhash": "^0.1.4",
+        "signal-exit": "^4.0.1"
       },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+      "engines": {
+        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
-    "node_modules/bin-version/node_modules/is-stream": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+    "node_modules/bin-version": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz",
+      "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==",
       "dev": true,
+      "dependencies": {
+        "execa": "^5.0.0",
+        "find-versions": "^5.0.0"
+      },
       "engines": {
-        "node": ">=8"
+        "node": ">=12"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/bin-version/node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+    "node_modules/bin-version-check": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.1.0.tgz",
+      "integrity": "sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==",
       "dev": true,
       "dependencies": {
-        "path-key": "^3.0.0"
+        "bin-version": "^6.0.0",
+        "semver": "^7.5.3",
+        "semver-truncate": "^3.0.0"
       },
       "engines": {
-        "node": ">=8"
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/binary-extensions": {
@@ -6696,6 +6401,15 @@
         "ieee754": "^1.1.13"
       }
     },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
     "node_modules/buffer-equal-constant-time": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
@@ -6768,68 +6482,50 @@
       }
     },
     "node_modules/cache-point": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz",
-      "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-3.0.0.tgz",
+      "integrity": "sha512-LDGNWYv/tqRWAAZxMy75PIYynaIuhcyoyjJtwA7X5uMZjdzvGm+XmTey/GXUy2EJ+lwc2eBFzFYxjvNYyE/0Iw==",
       "dev": true,
       "dependencies": {
-        "array-back": "^4.0.1",
-        "fs-then-native": "^2.0.0",
-        "mkdirp2": "^1.0.4"
+        "array-back": "^6.2.2"
       },
       "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cache-point/node_modules/array-back": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz",
-      "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
+        "node": ">=12.17"
+      },
+      "peerDependencies": {
+        "@75lb/nature": "^0.1.1"
+      },
+      "peerDependenciesMeta": {
+        "@75lb/nature": {
+          "optional": true
+        }
       }
     },
     "node_modules/cacheable-lookup": {
-      "version": "5.0.4",
-      "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
-      "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz",
+      "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==",
       "dev": true,
       "engines": {
-        "node": ">=10.6.0"
+        "node": ">=14.16"
       }
     },
     "node_modules/cacheable-request": {
-      "version": "7.0.4",
-      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz",
-      "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==",
-      "dev": true,
-      "dependencies": {
-        "clone-response": "^1.0.2",
-        "get-stream": "^5.1.0",
-        "http-cache-semantics": "^4.0.0",
-        "keyv": "^4.0.0",
-        "lowercase-keys": "^2.0.0",
-        "normalize-url": "^6.0.1",
-        "responselike": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/cacheable-request/node_modules/get-stream": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
-      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+      "version": "10.2.14",
+      "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz",
+      "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==",
       "dev": true,
       "dependencies": {
-        "pump": "^3.0.0"
+        "@types/http-cache-semantics": "^4.0.2",
+        "get-stream": "^6.0.1",
+        "http-cache-semantics": "^4.1.1",
+        "keyv": "^4.5.3",
+        "mimic-response": "^4.0.0",
+        "normalize-url": "^8.0.0",
+        "responselike": "^3.0.0"
       },
       "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
+        "node": ">=14.16"
       }
     },
     "node_modules/cachedir": {
@@ -6920,9 +6616,9 @@
       }
     },
     "node_modules/caniuse-lite": {
-      "version": "1.0.30001685",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001685.tgz",
-      "integrity": "sha512-e/kJN1EMyHQzgcMEEgoo+YTCO1NGCmIYHk5Qk8jT6AazWemS5QFKJ5ShCJlH3GZrNIdZofcNCEwZqbMjjKzmnA==",
+      "version": "1.0.30001686",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001686.tgz",
+      "integrity": "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==",
       "dev": true,
       "funding": [
         {
@@ -6967,6 +6663,21 @@
         "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
+    "node_modules/chalk-template": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz",
+      "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==",
+      "dev": true,
+      "dependencies": {
+        "chalk": "^4.1.2"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/chalk/chalk-template?sponsor=1"
+      }
+    },
     "node_modules/char-regex": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
@@ -7185,18 +6896,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/clone-response": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
-      "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
-      "dev": true,
-      "dependencies": {
-        "mimic-response": "^1.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/cmd-shim": {
       "version": "6.0.3",
       "resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-6.0.3.tgz",
@@ -7216,19 +6915,6 @@
         "node": ">= 0.12.0"
       }
     },
-    "node_modules/collect-all": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz",
-      "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==",
-      "dev": true,
-      "dependencies": {
-        "stream-connect": "^1.0.2",
-        "stream-via": "^1.0.4"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/collect-v8-coverage": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz",
@@ -7285,91 +6971,41 @@
       }
     },
     "node_modules/command-line-args": {
-      "version": "5.2.1",
-      "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz",
-      "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==",
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-6.0.1.tgz",
+      "integrity": "sha512-Jr3eByUjqyK0qd8W0SGFW1nZwqCaNCtbXjRo2cRJC1OYxWl3MZ5t1US3jq+cO4sPavqgw4l9BMGX0CBe+trepg==",
       "dev": true,
       "dependencies": {
-        "array-back": "^3.1.0",
-        "find-replace": "^3.0.0",
+        "array-back": "^6.2.2",
+        "find-replace": "^5.0.2",
         "lodash.camelcase": "^4.3.0",
-        "typical": "^4.0.0"
+        "typical": "^7.2.0"
       },
       "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/command-line-args/node_modules/array-back": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
-      "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/command-line-args/node_modules/typical": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz",
-      "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/command-line-tool": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz",
-      "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escape-sequences": "^4.0.0",
-        "array-back": "^2.0.0",
-        "command-line-args": "^5.0.0",
-        "command-line-usage": "^4.1.0",
-        "typical": "^2.6.1"
+        "node": ">=12.20"
       },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/command-line-tool/node_modules/array-back": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
-      "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
-      "dev": true,
-      "dependencies": {
-        "typical": "^2.6.1"
+      "peerDependencies": {
+        "@75lb/nature": "latest"
       },
-      "engines": {
-        "node": ">=4"
+      "peerDependenciesMeta": {
+        "@75lb/nature": {
+          "optional": true
+        }
       }
     },
     "node_modules/command-line-usage": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz",
-      "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==",
-      "dev": true,
-      "dependencies": {
-        "ansi-escape-sequences": "^4.0.0",
-        "array-back": "^2.0.0",
-        "table-layout": "^0.4.2",
-        "typical": "^2.6.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/command-line-usage/node_modules/array-back": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
-      "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz",
+      "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==",
       "dev": true,
       "dependencies": {
-        "typical": "^2.6.1"
+        "array-back": "^6.2.2",
+        "chalk-template": "^0.4.0",
+        "table-layout": "^4.1.0",
+        "typical": "^7.1.1"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">=12.20.0"
       }
     },
     "node_modules/commander": {
@@ -7418,41 +7054,28 @@
       "dev": true
     },
     "node_modules/common-sequence": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz",
-      "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-3.0.0.tgz",
+      "integrity": "sha512-g/CgSYk93y+a1IKm50tKl7kaT/OjjTYVQlEbUlt/49ZLV1mcKpUU7iyDiqTAeLdb4QDtQfq3ako8y8v//fzrWQ==",
       "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": ">=12.17"
       }
     },
     "node_modules/common-services": {
-      "version": "16.0.4",
-      "resolved": "https://registry.npmjs.org/common-services/-/common-services-16.0.4.tgz",
-      "integrity": "sha512-tgMsd87t+Du0b4GyM2DX0rSvQjrHoCmwyN1s68cXfe84iZZha9ySHlvXvYIUXY4o3gLI6c5/LKLg9UbNUlnZFQ==",
+      "version": "17.0.0",
+      "resolved": "https://registry.npmjs.org/common-services/-/common-services-17.0.0.tgz",
+      "integrity": "sha512-vKQvvvvNfrpofrpWDj0/a8+5MMjHvYfg47apcWGsKaPeTItp2O07RN0Dp1wAyVt1GNBwAQtWMCxre8Z1loWxHQ==",
       "dependencies": {
-        "@types/node": "^20.11.20",
-        "knifecycle": "^17.0.3",
-        "type-fest": "^4.21.0",
+        "@types/node": "^22.10.1",
+        "knifecycle": "^18.0.0",
+        "type-fest": "^4.30.0",
         "yerror": "^8.0.0"
       },
       "engines": {
         "node": ">=20.11.1"
       }
     },
-    "node_modules/common-services/node_modules/@types/node": {
-      "version": "20.17.9",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.9.tgz",
-      "integrity": "sha512-0JOXkRyLanfGPE2QRCwgxhzlBAvaRdCNMcvbd7jFfpmD4eEXll7LRwy5ymJmyeZqk7Nh7eD2LeUyQ68BbndmXw==",
-      "dependencies": {
-        "undici-types": "~6.19.2"
-      }
-    },
-    "node_modules/common-services/node_modules/undici-types": {
-      "version": "6.19.8",
-      "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
-      "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
-    },
     "node_modules/compare-func": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
@@ -8218,6 +7841,15 @@
         "node": ">=4"
       }
     },
+    "node_modules/current-module-paths": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/current-module-paths/-/current-module-paths-1.1.2.tgz",
+      "integrity": "sha512-H4s4arcLx/ugbu1XkkgSvcUZax0L6tXUqnppGniQb8l5VjUKGHoayXE5RiriiPhYDd+kjZnaok1Uig13PKtKYQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=12.17"
+      }
+    },
     "node_modules/cz-conventional-changelog": {
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/cz-conventional-changelog/-/cz-conventional-changelog-3.3.0.tgz",
@@ -8467,17 +8099,6 @@
         "url": "https://github.com/sindresorhus/execa?sponsor=1"
       }
     },
-    "node_modules/default-gateway/node_modules/get-stream": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/default-gateway/node_modules/human-signals": {
       "version": "4.3.1",
       "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz",
@@ -8559,12 +8180,12 @@
       }
     },
     "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==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/defaults/-/defaults-3.0.0.tgz",
+      "integrity": "sha512-RsqXDEAALjfRTro+IFNKpcPCt0/Cy2FqHSIlnomiJp9YGadpQnrtbRpSgN2+np21qHcIKiva4fiOQGjS9/qR/A==",
       "dev": true,
-      "dependencies": {
-        "clone": "^1.0.2"
+      "engines": {
+        "node": ">=18"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -8663,9 +8284,9 @@
       }
     },
     "node_modules/diff": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
-      "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz",
+      "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==",
       "dev": true,
       "engines": {
         "node": ">=0.3.1"
@@ -8693,26 +8314,29 @@
       }
     },
     "node_modules/dmd": {
-      "version": "6.2.3",
-      "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.2.3.tgz",
-      "integrity": "sha512-SIEkjrG7cZ9GWZQYk/mH+mWtcRPly/3ibVuXO/tP/MFoWz6KiRK77tSMq6YQBPl7RljPtXPQ/JhxbNuCdi1bNw==",
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/dmd/-/dmd-7.1.1.tgz",
+      "integrity": "sha512-Ap2HP6iuOek7eShReDLr9jluNJm9RMZESlt29H/Xs1qrVMkcS9X6m5h1mBC56WMxNiSo0wvjGICmZlYUSFjwZQ==",
       "dev": true,
       "dependencies": {
         "array-back": "^6.2.2",
-        "cache-point": "^2.0.0",
-        "common-sequence": "^2.0.2",
-        "file-set": "^4.0.2",
+        "cache-point": "^3.0.0",
+        "common-sequence": "^3.0.0",
+        "file-set": "^5.2.2",
         "handlebars": "^4.7.8",
         "marked": "^4.3.0",
-        "object-get": "^2.1.1",
-        "reduce-flatten": "^3.0.1",
-        "reduce-unique": "^2.0.1",
-        "reduce-without": "^1.0.1",
-        "test-value": "^3.0.0",
-        "walk-back": "^5.1.0"
+        "walk-back": "^5.1.1"
       },
       "engines": {
-        "node": ">=12"
+        "node": ">=12.17"
+      },
+      "peerDependencies": {
+        "@75lb/nature": "latest"
+      },
+      "peerDependenciesMeta": {
+        "@75lb/nature": {
+          "optional": true
+        }
       }
     },
     "node_modules/dot-prop": {
@@ -8728,9 +8352,9 @@
       }
     },
     "node_modules/dotenv": {
-      "version": "16.4.5",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
-      "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
+      "version": "16.4.7",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz",
+      "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==",
       "engines": {
         "node": ">=12"
       },
@@ -8811,9 +8435,9 @@
       }
     },
     "node_modules/electron-to-chromium": {
-      "version": "1.5.67",
-      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz",
-      "integrity": "sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==",
+      "version": "1.5.68",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.68.tgz",
+      "integrity": "sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==",
       "dev": true
     },
     "node_modules/emittery": {
@@ -9292,116 +8916,49 @@
       }
     },
     "node_modules/esutils": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
-      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "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/eventemitter3": {
-      "version": "4.0.7",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
-      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
-      "dev": true
-    },
-    "node_modules/execa": {
-      "version": "0.7.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
-      "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^5.0.1",
-        "get-stream": "^3.0.0",
-        "is-stream": "^1.1.0",
-        "npm-run-path": "^2.0.0",
-        "p-finally": "^1.0.0",
-        "signal-exit": "^3.0.0",
-        "strip-eof": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/execa/node_modules/cross-spawn": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
-      "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==",
-      "dev": true,
-      "dependencies": {
-        "lru-cache": "^4.0.1",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      }
-    },
-    "node_modules/execa/node_modules/lru-cache": {
-      "version": "4.1.5",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
-      "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
-      "dev": true,
-      "dependencies": {
-        "pseudomap": "^1.0.2",
-        "yallist": "^2.1.2"
-      }
-    },
-    "node_modules/execa/node_modules/shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
-      "dev": true,
-      "dependencies": {
-        "shebang-regex": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/execa/node_modules/shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
       "dev": true,
       "engines": {
         "node": ">=0.10.0"
       }
     },
-    "node_modules/execa/node_modules/which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
+    "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/execa/node_modules/yallist": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
-      "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
+    "node_modules/eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
       "dev": true
     },
-    "node_modules/executable": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
-      "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
+    "node_modules/execa": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
       "dev": true,
       "dependencies": {
-        "pify": "^2.2.0"
+        "cross-spawn": "^7.0.3",
+        "get-stream": "^6.0.0",
+        "human-signals": "^2.1.0",
+        "is-stream": "^2.0.0",
+        "merge-stream": "^2.0.0",
+        "npm-run-path": "^4.0.1",
+        "onetime": "^5.1.2",
+        "signal-exit": "^3.0.3",
+        "strip-final-newline": "^2.0.0"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/execa?sponsor=1"
       }
     },
     "node_modules/exit": {
@@ -9572,6 +9129,12 @@
       "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==",
       "dev": true
     },
+    "node_modules/fast-fifo": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
+      "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
+      "dev": true
+    },
     "node_modules/fast-glob": {
       "version": "3.3.2",
       "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
@@ -9672,42 +9235,70 @@
       }
     },
     "node_modules/file-set": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz",
-      "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==",
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/file-set/-/file-set-5.2.2.tgz",
+      "integrity": "sha512-/KgJI1V/QaDK4enOk/E2xMFk1cTWJghEr7UmWiRZfZ6upt6gQCfMn4jJ7aOm64OKurj4TaVnSSgSDqv5ZKYA3A==",
       "dev": true,
       "dependencies": {
-        "array-back": "^5.0.0",
-        "glob": "^7.1.6"
+        "array-back": "^6.2.2",
+        "fast-glob": "^3.3.2"
       },
       "engines": {
-        "node": ">=10"
+        "node": ">=12.17"
+      },
+      "peerDependencies": {
+        "@75lb/nature": "latest"
+      },
+      "peerDependenciesMeta": {
+        "@75lb/nature": {
+          "optional": true
+        }
       }
     },
-    "node_modules/file-set/node_modules/array-back": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz",
-      "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==",
+    "node_modules/file-type": {
+      "version": "19.6.0",
+      "resolved": "https://registry.npmjs.org/file-type/-/file-type-19.6.0.tgz",
+      "integrity": "sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==",
       "dev": true,
+      "dependencies": {
+        "get-stream": "^9.0.1",
+        "strtok3": "^9.0.1",
+        "token-types": "^6.0.0",
+        "uint8array-extras": "^1.3.0"
+      },
       "engines": {
-        "node": ">=10"
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/file-type?sponsor=1"
       }
     },
-    "node_modules/file-type": {
-      "version": "17.1.6",
-      "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz",
-      "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==",
+    "node_modules/file-type/node_modules/get-stream": {
+      "version": "9.0.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz",
+      "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==",
       "dev": true,
       "dependencies": {
-        "readable-web-to-node-stream": "^3.0.2",
-        "strtok3": "^7.0.0-alpha.9",
-        "token-types": "^5.0.0-alpha.2"
+        "@sec-ant/readable-stream": "^0.4.1",
+        "is-stream": "^4.0.1"
       },
       "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+        "node": ">=18"
       },
       "funding": {
-        "url": "https://github.com/sindresorhus/file-type?sponsor=1"
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/file-type/node_modules/is-stream": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz",
+      "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==",
+      "dev": true,
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/filelist": {
@@ -9744,17 +9335,15 @@
       }
     },
     "node_modules/filenamify": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz",
-      "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-6.0.0.tgz",
+      "integrity": "sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==",
       "dev": true,
       "dependencies": {
-        "filename-reserved-regex": "^3.0.0",
-        "strip-outer": "^2.0.0",
-        "trim-repeated": "^2.0.0"
+        "filename-reserved-regex": "^3.0.0"
       },
       "engines": {
-        "node": ">=12.20"
+        "node": ">=16"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -9813,24 +9402,20 @@
       }
     },
     "node_modules/find-replace": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz",
-      "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==",
-      "dev": true,
-      "dependencies": {
-        "array-back": "^3.0.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/find-replace/node_modules/array-back": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz",
-      "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==",
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz",
+      "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==",
       "dev": true,
       "engines": {
-        "node": ">=6"
+        "node": ">=14"
+      },
+      "peerDependencies": {
+        "@75lb/nature": "latest"
+      },
+      "peerDependenciesMeta": {
+        "@75lb/nature": {
+          "optional": true
+        }
       }
     },
     "node_modules/find-root": {
@@ -9910,6 +9495,17 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/first-chunk-stream/node_modules/uint8array-extras": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-0.5.1.tgz",
+      "integrity": "sha512-dlgj8+9+Rak3JzT1Rg77nIccp0a5kBKjQ7tworiwKxkXIhqgdd+oZLkK8rcDb+Fq5tq+oUVjPbq4V/dMD6cnlA==",
+      "engines": {
+        "node": ">=18"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/flat": {
       "version": "5.0.2",
       "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
@@ -9998,6 +9594,15 @@
         "node": ">= 6"
       }
     },
+    "node_modules/form-data-encoder": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
+      "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
+      "dev": true,
+      "engines": {
+        "node": ">= 14.17"
+      }
+    },
     "node_modules/forwarded": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@@ -10084,15 +9689,6 @@
         "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
       }
     },
-    "node_modules/fs-then-native": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz",
-      "integrity": "sha512-X712jAOaWXkemQCAmWeg5rOT2i+KOpWz1Z/txk/cW0qlOu2oQ9H61vc5w3X/iyuUEfq/OyaFJ78/cZAQD1/bgA==",
-      "dev": true,
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
     "node_modules/fs.realpath": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -10289,12 +9885,14 @@
       }
     },
     "node_modules/get-stream": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
-      "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==",
-      "dev": true,
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
       "engines": {
-        "node": ">=4"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/get-tsconfig": {
@@ -10338,6 +9936,15 @@
         "node": ">=4"
       }
     },
+    "node_modules/git-remote-origin-url/node_modules/pify": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/git-semver-tags": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-8.0.0.tgz",
@@ -10551,25 +10158,25 @@
       }
     },
     "node_modules/got": {
-      "version": "11.8.6",
-      "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
-      "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
+      "version": "13.0.0",
+      "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz",
+      "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==",
       "dev": true,
       "dependencies": {
-        "@sindresorhus/is": "^4.0.0",
-        "@szmarczak/http-timer": "^4.0.5",
-        "@types/cacheable-request": "^6.0.1",
-        "@types/responselike": "^1.0.0",
-        "cacheable-lookup": "^5.0.3",
-        "cacheable-request": "^7.0.2",
+        "@sindresorhus/is": "^5.2.0",
+        "@szmarczak/http-timer": "^5.0.1",
+        "cacheable-lookup": "^7.0.0",
+        "cacheable-request": "^10.2.8",
         "decompress-response": "^6.0.0",
-        "http2-wrapper": "^1.0.0-beta.5.2",
-        "lowercase-keys": "^2.0.0",
-        "p-cancelable": "^2.0.0",
-        "responselike": "^2.0.0"
+        "form-data-encoder": "^2.1.2",
+        "get-stream": "^6.0.1",
+        "http2-wrapper": "^2.1.10",
+        "lowercase-keys": "^3.0.0",
+        "p-cancelable": "^3.0.0",
+        "responselike": "^3.0.0"
       },
       "engines": {
-        "node": ">=10.19.0"
+        "node": ">=16"
       },
       "funding": {
         "url": "https://github.com/sindresorhus/got?sponsor=1"
@@ -10683,9 +10290,9 @@
       }
     },
     "node_modules/has-symbols": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
-      "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+      "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
       "engines": {
         "node": ">= 0.4"
       },
@@ -10794,13 +10401,13 @@
       }
     },
     "node_modules/http2-wrapper": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz",
-      "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==",
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz",
+      "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==",
       "dev": true,
       "dependencies": {
         "quick-lru": "^5.1.1",
-        "resolve-alpn": "^1.0.0"
+        "resolve-alpn": "^1.2.0"
       },
       "engines": {
         "node": ">=10.19.0"
@@ -11157,6 +10764,15 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/inspect-with-kind": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz",
+      "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==",
+      "dev": true,
+      "dependencies": {
+        "kind-of": "^6.0.2"
+      }
+    },
     "node_modules/internal-ip": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-8.0.0.tgz",
@@ -11404,12 +11020,15 @@
       }
     },
     "node_modules/is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
       "dev": true,
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/is-text-path": {
@@ -11652,65 +11271,6 @@
         "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
       }
     },
-    "node_modules/jest-changed-files/node_modules/execa": {
-      "version": "5.1.1",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
-      "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
-      "dev": true,
-      "dependencies": {
-        "cross-spawn": "^7.0.3",
-        "get-stream": "^6.0.0",
-        "human-signals": "^2.1.0",
-        "is-stream": "^2.0.0",
-        "merge-stream": "^2.0.0",
-        "npm-run-path": "^4.0.1",
-        "onetime": "^5.1.2",
-        "signal-exit": "^3.0.3",
-        "strip-final-newline": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sindresorhus/execa?sponsor=1"
-      }
-    },
-    "node_modules/jest-changed-files/node_modules/get-stream": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-      "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/jest-changed-files/node_modules/is-stream": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
-      "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/jest-changed-files/node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/jest-circus": {
       "version": "29.7.0",
       "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz",
@@ -12278,18 +11838,18 @@
       }
     },
     "node_modules/jsarch": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/jsarch/-/jsarch-6.1.0.tgz",
-      "integrity": "sha512-61L0kBxU+gLyoAH8G62clOUQu726C2hmdq/LAKskUO/ebndgwAMgr4vwBVEHWE0TPmhtF6+LUBBMrqDe8/Flnw==",
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/jsarch/-/jsarch-6.1.2.tgz",
+      "integrity": "sha512-RN9d45OvW3vBeRij/5335dtFXV1HPMrVt7a7nwsC7pFRHKObucabCbTm0cKosAxT0o9qDVvxr7K9+rd/cX4Bkw==",
       "dev": true,
       "dependencies": {
-        "@babel/parser": "^7.26.1",
+        "@babel/parser": "^7.26.2",
         "ast-types": "^0.16.1",
         "commander": "^12.1.0",
         "debug": "^4.3.7",
         "deep-extend": "^0.6.0",
         "glob": "^11.0.0",
-        "knifecycle": "^17.0.3",
+        "knifecycle": "^18.0.0",
         "pkg-dir": "^8.0.0",
         "rc": "^1.2.8",
         "yerror": "^8.0.0"
@@ -12424,76 +11984,74 @@
       }
     },
     "node_modules/jsdoc-api": {
-      "version": "8.1.1",
-      "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-8.1.1.tgz",
-      "integrity": "sha512-yas9E4h8NHp1CTEZiU/DPNAvLoUcip+Hl8Xi1RBYzHqSrgsF+mImAZNtwymrXvgbrgl4bNGBU9syulM0JzFeHQ==",
+      "version": "9.3.4",
+      "resolved": "https://registry.npmjs.org/jsdoc-api/-/jsdoc-api-9.3.4.tgz",
+      "integrity": "sha512-di8lggLACEttpyAZ6WjKKafUP4wC4prAGjt40nMl7quDpp2nD7GmLt6/WxhRu9Q6IYoAAySsNeidBXYVAMwlqg==",
       "dev": true,
       "dependencies": {
         "array-back": "^6.2.2",
-        "cache-point": "^2.0.0",
-        "collect-all": "^1.0.4",
-        "file-set": "^4.0.2",
-        "fs-then-native": "^2.0.0",
-        "jsdoc": "^4.0.3",
+        "cache-point": "^3.0.0",
+        "current-module-paths": "^1.1.2",
+        "file-set": "^5.2.2",
+        "jsdoc": "^4.0.4",
         "object-to-spawn-args": "^2.0.1",
-        "temp-path": "^1.0.0",
-        "walk-back": "^5.1.0"
+        "walk-back": "^5.1.1"
       },
       "engines": {
         "node": ">=12.17"
+      },
+      "peerDependencies": {
+        "@75lb/nature": "latest"
+      },
+      "peerDependenciesMeta": {
+        "@75lb/nature": {
+          "optional": true
+        }
       }
     },
     "node_modules/jsdoc-parse": {
       "version": "6.2.4",
       "resolved": "https://registry.npmjs.org/jsdoc-parse/-/jsdoc-parse-6.2.4.tgz",
-      "integrity": "sha512-MQA+lCe3ioZd0uGbyB3nDCDZcKgKC7m/Ivt0LgKZdUoOlMJxUWJQ3WI6GeyHp9ouznKaCjlp7CU9sw5k46yZTw==",
-      "dev": true,
-      "dependencies": {
-        "array-back": "^6.2.2",
-        "find-replace": "^5.0.1",
-        "lodash.omit": "^4.5.0",
-        "sort-array": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/jsdoc-parse/node_modules/find-replace": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-5.0.2.tgz",
-      "integrity": "sha512-Y45BAiE3mz2QsrN2fb5QEtO4qb44NcS7en/0y9PEVsg351HsLeVclP8QPMH79Le9sH3rs5RSwJu99W0WPZO43Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=14"
-      },
-      "peerDependencies": {
-        "@75lb/nature": "latest"
+      "integrity": "sha512-MQA+lCe3ioZd0uGbyB3nDCDZcKgKC7m/Ivt0LgKZdUoOlMJxUWJQ3WI6GeyHp9ouznKaCjlp7CU9sw5k46yZTw==",
+      "dev": true,
+      "dependencies": {
+        "array-back": "^6.2.2",
+        "find-replace": "^5.0.1",
+        "lodash.omit": "^4.5.0",
+        "sort-array": "^5.0.0"
       },
-      "peerDependenciesMeta": {
-        "@75lb/nature": {
-          "optional": true
-        }
+      "engines": {
+        "node": ">=12"
       }
     },
     "node_modules/jsdoc-to-markdown": {
-      "version": "8.0.3",
-      "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-8.0.3.tgz",
-      "integrity": "sha512-JGYYd5xygnQt1DIxH+HUI+X/ynL8qWihzIF0n15NSCNtM6MplzawURRcaLI2WkiS2hIjRIgsphCOfM7FkaWiNg==",
+      "version": "9.1.1",
+      "resolved": "https://registry.npmjs.org/jsdoc-to-markdown/-/jsdoc-to-markdown-9.1.1.tgz",
+      "integrity": "sha512-QqYVSo58iHXpD5Jwi1u4AFeuMcQp4jfk7SmWzvXKc3frM9Kop17/OHudmi0phzkT/K137Rlroc9Q0y+95XpUsw==",
       "dev": true,
       "dependencies": {
         "array-back": "^6.2.2",
-        "command-line-tool": "^0.8.0",
+        "command-line-args": "^6.0.1",
+        "command-line-usage": "^7.0.3",
         "config-master": "^3.1.0",
-        "dmd": "^6.2.3",
-        "jsdoc-api": "^8.1.1",
-        "jsdoc-parse": "^6.2.1",
-        "walk-back": "^5.1.0"
+        "dmd": "^7.1.1",
+        "jsdoc-api": "^9.3.4",
+        "jsdoc-parse": "^6.2.4",
+        "walk-back": "^5.1.1"
       },
       "bin": {
         "jsdoc2md": "bin/cli.js"
       },
       "engines": {
         "node": ">=12.17"
+      },
+      "peerDependencies": {
+        "@75lb/nature": "latest"
+      },
+      "peerDependenciesMeta": {
+        "@75lb/nature": {
+          "optional": true
+        }
       }
     },
     "node_modules/jsdoc/node_modules/escape-string-regexp": {
@@ -12683,15 +12241,15 @@
       }
     },
     "node_modules/jwt-service": {
-      "version": "10.1.1",
-      "resolved": "https://registry.npmjs.org/jwt-service/-/jwt-service-10.1.1.tgz",
-      "integrity": "sha512-Uy62NQS69Lyzfh06tLdCH9DLzHmgWkQixujEAgB6fZ5qVzA1efQZq0CIBDMM4GRFVD0XhAlXHLDv4QV3CYAIEA==",
+      "version": "11.0.0",
+      "resolved": "https://registry.npmjs.org/jwt-service/-/jwt-service-11.0.0.tgz",
+      "integrity": "sha512-SbxqlJmoGVOpaBHARgjTCs84hJrOWXDCbdZcnGwaD9zmHeTlU9i7H9OMRIfm6FNi+9GKw3bqDw1SQjXD27uClQ==",
       "dependencies": {
-        "@types/jsonwebtoken": "^9.0.6",
+        "@types/jsonwebtoken": "^9.0.7",
         "@types/ms": "^0.7.34",
-        "common-services": "^16.0.4",
+        "common-services": "^17.0.0",
         "jsonwebtoken": "^9.0.2",
-        "knifecycle": "^17.0.3",
+        "knifecycle": "^18.0.0",
         "ms": "^2.1.3",
         "yerror": "^8.0.0"
       },
@@ -12736,9 +12294,9 @@
       }
     },
     "node_modules/knifecycle": {
-      "version": "17.3.0",
-      "resolved": "https://registry.npmjs.org/knifecycle/-/knifecycle-17.3.0.tgz",
-      "integrity": "sha512-C4Q4/fqm553XNNeaJQBxlbe1fgf94LFKHin4f89FgGBMuNZs4k4zfI43Hdh/vkO2xIPyVOUsLJEXoIzF/ncaGA==",
+      "version": "18.0.0",
+      "resolved": "https://registry.npmjs.org/knifecycle/-/knifecycle-18.0.0.tgz",
+      "integrity": "sha512-7DAEhllxcQaMnGzVfvtQYhNFuIuh6Rv5/qt4RENPF1GVFLUbgW/G48ucQkeUu2Tto+AFgqgUtnelpDcLHW23yA==",
       "dependencies": {
         "debug": "^4.3.5",
         "yerror": "^8.0.0"
@@ -13322,18 +12880,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/lerna/node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/lerna/node_modules/p-limit": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
@@ -13382,18 +12928,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/lerna/node_modules/pify": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz",
-      "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==",
-      "dev": true,
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/lerna/node_modules/pkg-dir": {
       "version": "4.2.0",
       "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
@@ -13751,12 +13285,6 @@
       "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
       "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg=="
     },
-    "node_modules/lodash.padend": {
-      "version": "4.6.1",
-      "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
-      "integrity": "sha512-sOQs2aqGpbl27tmCS1QNZA09Uqp01ZzWfDUoD+xzTii0E7dSQfRKcRetFwa+uXaxaqL+TKm7CgD2JdKP7aZBSw==",
-      "dev": true
-    },
     "node_modules/lodash.sortby": {
       "version": "4.7.0",
       "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
@@ -13833,12 +13361,15 @@
       }
     },
     "node_modules/lowercase-keys": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
-      "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
+      "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==",
       "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/lru-cache": {
@@ -14000,23 +13531,23 @@
       }
     },
     "node_modules/metapak": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/metapak/-/metapak-6.0.1.tgz",
-      "integrity": "sha512-QKgdlu2kIJaWpvw8lQNpZsF1GEHYHj0TqIsxJ8oggH+Z6xZ+Z6+G2jzfrjCzTygfSadi6Cjyz/rp48QJp/Y+og==",
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/metapak/-/metapak-6.0.2.tgz",
+      "integrity": "sha512-vw5OrFlLY1MXi7I12+KgSSaq5+a15/1F0Lo44LuaaLjd1qdv5sLtvUdw1g2sCWgliEltX6BLdj/X8xcBy2gzDw==",
       "dev": true,
       "dependencies": {
-        "application-services": "^6.1.0",
+        "application-services": "^7.0.0",
         "chalk": "^5.3.0",
-        "commander": "^12.0.0",
-        "common-services": "^16.0.4",
-        "debug": "^4.3.5",
-        "diff": "^5.2.0",
+        "commander": "^12.1.0",
+        "common-services": "^17.0.0",
+        "debug": "^4.3.7",
+        "diff": "^7.0.0",
         "glob": "^11.0.0",
-        "knifecycle": "^17.0.3",
+        "knifecycle": "^18.0.0",
         "mkdirp": "^3.0.1",
         "pkg-dir": "^8.0.0",
-        "sort-keys": "^5.0.0",
-        "type-fest": "^4.21.0",
+        "sort-keys": "^5.1.0",
+        "type-fest": "^4.30.0",
         "yerror": "^8.0.0"
       },
       "bin": {
@@ -14027,9 +13558,9 @@
       }
     },
     "node_modules/metapak-nfroidure": {
-      "version": "18.2.0",
-      "resolved": "https://registry.npmjs.org/metapak-nfroidure/-/metapak-nfroidure-18.2.0.tgz",
-      "integrity": "sha512-6KNRD+dO4LSCtaxl1A/ibyEDlSxezc6MZ8wuGUle50tIx4TLpzp80FceerOlYPNfdkNQcXcjuVcTiTt664AgXg==",
+      "version": "19.0.1",
+      "resolved": "https://registry.npmjs.org/metapak-nfroidure/-/metapak-nfroidure-19.0.1.tgz",
+      "integrity": "sha512-WWGpvKbumkz6xkd4z2t8VCxd5JZ1y8jhLT6QrfI3bEXFNsBHpvbxd04O0xms8SPvDtZx7lHqVJcBGZS/l+juuw==",
       "dev": true,
       "dependencies": {
         "escape-string-regexp": "^5.0.0",
@@ -14234,12 +13765,15 @@
       }
     },
     "node_modules/mimic-response": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
-      "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz",
+      "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==",
       "dev": true,
       "engines": {
-        "node": ">=4"
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/min-indent": {
@@ -14471,12 +14005,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/mkdirp2": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz",
-      "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==",
-      "dev": true
-    },
     "node_modules/modify-values": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
@@ -14583,9 +14111,9 @@
       }
     },
     "node_modules/node-gyp": {
-      "version": "10.2.0",
-      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz",
-      "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==",
+      "version": "10.3.1",
+      "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz",
+      "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==",
       "dev": true,
       "dependencies": {
         "env-paths": "^2.2.0",
@@ -14707,12 +14235,12 @@
       }
     },
     "node_modules/normalize-url": {
-      "version": "6.1.0",
-      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
-      "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
+      "version": "8.0.1",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz",
+      "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==",
       "dev": true,
       "engines": {
-        "node": ">=10"
+        "node": ">=14.16"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -14813,24 +14341,15 @@
       }
     },
     "node_modules/npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
       "dev": true,
       "dependencies": {
-        "path-key": "^2.0.0"
+        "path-key": "^3.0.0"
       },
       "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/npm-run-path/node_modules/path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
-      "dev": true,
-      "engines": {
-        "node": ">=4"
+        "node": ">=8"
       }
     },
     "node_modules/nx": {
@@ -14960,18 +14479,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/nx/node_modules/npm-run-path": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-      "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-      "dev": true,
-      "dependencies": {
-        "path-key": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/nx/node_modules/ora": {
       "version": "5.3.0",
       "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz",
@@ -14994,6 +14501,22 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/nx/node_modules/tar-stream": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+      "dev": true,
+      "dependencies": {
+        "bl": "^4.0.3",
+        "end-of-stream": "^1.4.1",
+        "fs-constants": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^3.1.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
     "node_modules/nx/node_modules/tmp": {
       "version": "0.2.3",
       "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz",
@@ -15011,12 +14534,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/object-get": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz",
-      "integrity": "sha512-7n4IpLMzGGcLEMiQKsNR7vCe+N5E9LORFrtNUVy4sO3dj9a3HedZCxEL2T7QuLhcHN1NBuBsMOKaOsAYI9IIvg==",
-      "dev": true
-    },
     "node_modules/object-inspect": {
       "version": "1.13.3",
       "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz",
@@ -15254,18 +14771,6 @@
         "url": "https://github.com/chalk/strip-ansi?sponsor=1"
       }
     },
-    "node_modules/os-filter-obj": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz",
-      "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==",
-      "dev": true,
-      "dependencies": {
-        "arch": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/os-tmpdir": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
@@ -15275,12 +14780,12 @@
       }
     },
     "node_modules/p-cancelable": {
-      "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz",
-      "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
+      "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==",
       "dev": true,
       "engines": {
-        "node": ">=8"
+        "node": ">=12.20"
       }
     },
     "node_modules/p-event": {
@@ -15646,6 +15151,12 @@
         "url": "https://github.com/sponsors/Borewit"
       }
     },
+    "node_modules/pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+      "dev": true
+    },
     "node_modules/picocolors": {
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -15665,12 +15176,15 @@
       }
     },
     "node_modules/pify": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
-      "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-5.0.0.tgz",
+      "integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==",
       "dev": true,
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
       }
     },
     "node_modules/pirates": {
@@ -15683,9 +15197,9 @@
       }
     },
     "node_modules/piscina": {
-      "version": "4.7.0",
-      "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.7.0.tgz",
-      "integrity": "sha512-b8hvkpp9zS0zsfa939b/jXbe64Z2gZv0Ha7FYPNUiDIB1y2AtxcOZdfP8xN8HFjUaqQiT9gRlfjAsoL8vdJ1Iw==",
+      "version": "4.8.0",
+      "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.8.0.tgz",
+      "integrity": "sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==",
       "dev": true,
       "optionalDependencies": {
         "@napi-rs/nice": "^1.0.1"
@@ -15768,9 +15282,9 @@
       }
     },
     "node_modules/prettier": {
-      "version": "3.4.1",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.1.tgz",
-      "integrity": "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==",
+      "version": "3.4.2",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz",
+      "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
       "dev": true,
       "bin": {
         "prettier": "bin/prettier.cjs"
@@ -15929,22 +15443,6 @@
       "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
       "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="
     },
-    "node_modules/pseudomap": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
-      "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
-      "dev": true
-    },
-    "node_modules/pump": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
-      "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==",
-      "dev": true,
-      "dependencies": {
-        "end-of-stream": "^1.1.0",
-        "once": "^1.3.1"
-      }
-    },
     "node_modules/punycode": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
@@ -16013,6 +15511,12 @@
         }
       ]
     },
+    "node_modules/queue-tick": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz",
+      "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==",
+      "dev": true
+    },
     "node_modules/quick-lru": {
       "version": "5.1.1",
       "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
@@ -16372,22 +15876,6 @@
         "node": ">= 6"
       }
     },
-    "node_modules/readable-web-to-node-stream": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz",
-      "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==",
-      "dev": true,
-      "dependencies": {
-        "readable-stream": "^3.6.0"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "type": "github",
-        "url": "https://github.com/sponsors/Borewit"
-      }
-    },
     "node_modules/readdirp": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -16413,61 +15901,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/reduce-flatten": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-3.0.1.tgz",
-      "integrity": "sha512-bYo+97BmUUOzg09XwfkwALt4PQH1M5L0wzKerBt6WLm3Fhdd43mMS89HiT1B9pJIqko/6lWx3OnV4J9f2Kqp5Q==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/reduce-unique": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/reduce-unique/-/reduce-unique-2.0.1.tgz",
-      "integrity": "sha512-x4jH/8L1eyZGR785WY+ePtyMNhycl1N2XOLxhCbzZFaqF4AXjLzqSxa2UHgJ2ZVR/HHyPOvl1L7xRnW8ye5MdA==",
-      "dev": true,
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/reduce-without": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/reduce-without/-/reduce-without-1.0.1.tgz",
-      "integrity": "sha512-zQv5y/cf85sxvdrKPlfcRzlDn/OqKFThNimYmsS3flmkioKvkUGn2Qg9cJVoQiEvdxFGLE0MQER/9fZ9sUqdxg==",
-      "dev": true,
-      "dependencies": {
-        "test-value": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/reduce-without/node_modules/array-back": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
-      "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==",
-      "dev": true,
-      "dependencies": {
-        "typical": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/reduce-without/node_modules/test-value": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz",
-      "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==",
-      "dev": true,
-      "dependencies": {
-        "array-back": "^1.0.3",
-        "typical": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/regexp-tpl": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/regexp-tpl/-/regexp-tpl-2.0.1.tgz",
@@ -16582,21 +16015,24 @@
       }
     },
     "node_modules/resolve.exports": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz",
-      "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==",
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz",
+      "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==",
       "dev": true,
       "engines": {
         "node": ">=10"
       }
     },
     "node_modules/responselike": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz",
-      "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==",
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
+      "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==",
       "dev": true,
       "dependencies": {
-        "lowercase-keys": "^2.0.0"
+        "lowercase-keys": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=14.16"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -16810,6 +16246,28 @@
         "node": ">=20.11.1"
       }
     },
+    "node_modules/seek-bzip": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-2.0.0.tgz",
+      "integrity": "sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==",
+      "dev": true,
+      "dependencies": {
+        "commander": "^6.0.0"
+      },
+      "bin": {
+        "seek-bunzip": "bin/seek-bunzip",
+        "seek-table": "bin/seek-bzip-table"
+      }
+    },
+    "node_modules/seek-bzip/node_modules/commander": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+      "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
+      "dev": true,
+      "engines": {
+        "node": ">= 6"
+      }
+    },
     "node_modules/semver": {
       "version": "7.6.3",
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
@@ -17113,15 +16571,6 @@
         }
       }
     },
-    "node_modules/sort-array/node_modules/typical": {
-      "version": "7.3.0",
-      "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
-      "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
-      "dev": true,
-      "engines": {
-        "node": ">=12.17"
-      }
-    },
     "node_modules/sort-keys": {
       "version": "5.1.0",
       "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-5.1.0.tgz",
@@ -17309,40 +16758,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/stream-connect": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/stream-connect/-/stream-connect-1.0.2.tgz",
-      "integrity": "sha512-68Kl+79cE0RGKemKkhxTSg8+6AGrqBt+cbZAXevg2iJ6Y3zX4JhA/sZeGzLpxW9cXhmqAcE7KnJCisUmIUfnFQ==",
-      "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
-      "dev": true,
-      "dependencies": {
-        "array-back": "^1.0.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/stream-connect/node_modules/array-back": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz",
-      "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==",
-      "dev": true,
-      "dependencies": {
-        "typical": "^2.6.0"
-      },
-      "engines": {
-        "node": ">=0.12.0"
-      }
-    },
-    "node_modules/stream-via": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/stream-via/-/stream-via-1.0.4.tgz",
-      "integrity": "sha512-DBp0lSvX5G9KGRDTkR/R+a29H+Wk2xItOF+MpZLLNDWbEV9tGPnqLPxHEYjmiz8xGtJHRIqmI+hCjmNzqoA4nQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/streamtest": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/streamtest/-/streamtest-2.0.0.tgz",
@@ -17355,6 +16770,20 @@
         "node": ">=10.19.0"
       }
     },
+    "node_modules/streamx": {
+      "version": "2.21.0",
+      "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.21.0.tgz",
+      "integrity": "sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==",
+      "dev": true,
+      "dependencies": {
+        "fast-fifo": "^1.3.2",
+        "queue-tick": "^1.0.1",
+        "text-decoder": "^1.1.0"
+      },
+      "optionalDependencies": {
+        "bare-events": "^2.2.0"
+      }
+    },
     "node_modules/strict-qs": {
       "version": "8.0.3",
       "resolved": "https://registry.npmjs.org/strict-qs/-/strict-qs-8.0.3.tgz",
@@ -17455,10 +16884,20 @@
         "node": ">=8"
       }
     },
-    "node_modules/strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
+    "node_modules/strip-dirs": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-3.0.0.tgz",
+      "integrity": "sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==",
+      "dev": true,
+      "dependencies": {
+        "inspect-with-kind": "^1.0.5",
+        "is-plain-obj": "^1.1.0"
+      }
+    },
+    "node_modules/strip-dirs/node_modules/is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
       "dev": true,
       "engines": {
         "node": ">=0.10.0"
@@ -17497,18 +16936,6 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
-    "node_modules/strip-outer": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz",
-      "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==",
-      "dev": true,
-      "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/strong-log-transformer": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz",
@@ -17527,13 +16954,13 @@
       }
     },
     "node_modules/strtok3": {
-      "version": "7.1.1",
-      "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.1.1.tgz",
-      "integrity": "sha512-mKX8HA/cdBqMKUr0MMZAFssCkIGoZeSCMXgnt79yKxNFguMLVFgRe6wB+fsL0NmoHDbeyZXczy7vEPSoo3rkzg==",
+      "version": "9.1.1",
+      "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-9.1.1.tgz",
+      "integrity": "sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==",
       "dev": true,
       "dependencies": {
         "@tokenizer/token": "^0.3.0",
-        "peek-readable": "^5.1.3"
+        "peek-readable": "^5.3.1"
       },
       "engines": {
         "node": ">=16"
@@ -17608,31 +17035,16 @@
       }
     },
     "node_modules/table-layout": {
-      "version": "0.4.5",
-      "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz",
-      "integrity": "sha512-zTvf0mcggrGeTe/2jJ6ECkJHAQPIYEwDoqsiqBjI24mvRmQbInK5jq33fyypaCBxX08hMkfmdOqj6haT33EqWw==",
-      "dev": true,
-      "dependencies": {
-        "array-back": "^2.0.0",
-        "deep-extend": "~0.6.0",
-        "lodash.padend": "^4.6.1",
-        "typical": "^2.6.1",
-        "wordwrapjs": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/table-layout/node_modules/array-back": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
-      "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz",
+      "integrity": "sha512-iK5/YhZxq5GO5z8wb0bY1317uDF3Zjpha0QFFLA8/trAoiLbQD0HUbMesEaxyzUgDxi2QlcbM8IvqOlEjgoXBA==",
       "dev": true,
       "dependencies": {
-        "typical": "^2.6.1"
+        "array-back": "^6.2.2",
+        "wordwrapjs": "^5.1.0"
       },
       "engines": {
-        "node": ">=4"
+        "node": ">=12.17"
       }
     },
     "node_modules/tar": {
@@ -17653,19 +17065,14 @@
       }
     },
     "node_modules/tar-stream": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
-      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+      "version": "3.1.7",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
+      "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
       "dev": true,
       "dependencies": {
-        "bl": "^4.0.3",
-        "end-of-stream": "^1.4.1",
-        "fs-constants": "^1.0.0",
-        "inherits": "^2.0.3",
-        "readable-stream": "^3.1.1"
-      },
-      "engines": {
-        "node": ">=6"
+        "b4a": "^1.6.4",
+        "fast-fifo": "^1.2.0",
+        "streamx": "^2.15.0"
       }
     },
     "node_modules/tar/node_modules/fs-minipass": {
@@ -17722,12 +17129,6 @@
         "node": ">=4"
       }
     },
-    "node_modules/temp-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz",
-      "integrity": "sha512-TvmyH7kC6ZVTYkqCODjJIbgvu0FKiwQpZ4D1aknE7xpcDf/qEOB8KZEK5ef2pfbVoiBhNWs3yx4y+ESMtNYmlg==",
-      "dev": true
-    },
     "node_modules/tempfile": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-5.0.0.tgz",
@@ -17788,30 +17189,11 @@
         "node": "*"
       }
     },
-    "node_modules/test-value": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz",
-      "integrity": "sha512-sVACdAWcZkSU9x7AOmJo5TqE+GyNJknHaHsMrR6ZnhjVlVN9Yx6FjHrsKZ3BjIpPCT68zYesPWkakrNupwfOTQ==",
-      "dev": true,
-      "dependencies": {
-        "array-back": "^2.0.0",
-        "typical": "^2.6.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/test-value/node_modules/array-back": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz",
-      "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==",
-      "dev": true,
-      "dependencies": {
-        "typical": "^2.6.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
+    "node_modules/text-decoder": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz",
+      "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==",
+      "dev": true
     },
     "node_modules/text-extensions": {
       "version": "1.9.0",
@@ -17920,9 +17302,9 @@
       }
     },
     "node_modules/token-types": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz",
-      "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==",
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/token-types/-/token-types-6.0.0.tgz",
+      "integrity": "sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==",
       "dev": true,
       "dependencies": {
         "@tokenizer/token": "^0.3.0",
@@ -17959,30 +17341,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/trim-repeated": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz",
-      "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==",
-      "dev": true,
-      "dependencies": {
-        "escape-string-regexp": "^5.0.0"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
-    "node_modules/trim-repeated/node_modules/escape-string-regexp": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
-      "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/ts-api-utils": {
       "version": "1.4.3",
       "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz",
@@ -18501,9 +17859,9 @@
       }
     },
     "node_modules/type-fest": {
-      "version": "4.29.1",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.29.1.tgz",
-      "integrity": "sha512-Y1zUveI92UYM/vo1EFlQSsNf74+hfKH+7saZJslF0Fw92FRaiTAnHPIvo9d7SLxXt/gAYqA4RXyDTioMQCCp0A==",
+      "version": "4.30.0",
+      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.30.0.tgz",
+      "integrity": "sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==",
       "engines": {
         "node": ">=16"
       },
@@ -18542,82 +17900,24 @@
       }
     },
     "node_modules/typescript-eslint": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-7.18.0.tgz",
-      "integrity": "sha512-PonBkP603E3tt05lDkbOMyaxJjvKqQrXsnow72sVeOFINDE/qNmnnd+f9b4N+U7W6MXnnYyrhtmF2t08QWwUbA==",
+      "version": "8.17.0",
+      "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.17.0.tgz",
+      "integrity": "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/eslint-plugin": "7.18.0",
-        "@typescript-eslint/parser": "7.18.0",
-        "@typescript-eslint/utils": "7.18.0"
+        "@typescript-eslint/eslint-plugin": "8.17.0",
+        "@typescript-eslint/parser": "8.17.0",
+        "@typescript-eslint/utils": "8.17.0"
       },
       "engines": {
-        "node": "^18.18.0 || >=20.0.0"
+        "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       },
       "funding": {
         "type": "opencollective",
         "url": "https://opencollective.com/typescript-eslint"
       },
       "peerDependencies": {
-        "eslint": "^8.56.0"
-      },
-      "peerDependenciesMeta": {
-        "typescript": {
-          "optional": true
-        }
-      }
-    },
-    "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz",
-      "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz",
-      "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==",
-      "dev": true,
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz",
-      "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/visitor-keys": "7.18.0",
-        "debug": "^4.3.4",
-        "globby": "^11.1.0",
-        "is-glob": "^4.0.3",
-        "minimatch": "^9.0.4",
-        "semver": "^7.6.0",
-        "ts-api-utils": "^1.3.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
+        "eslint": "^8.57.0 || ^9.0.0"
       },
       "peerDependenciesMeta": {
         "typescript": {
@@ -18625,63 +17925,15 @@
         }
       }
     },
-    "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz",
-      "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==",
-      "dev": true,
-      "dependencies": {
-        "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "7.18.0",
-        "@typescript-eslint/types": "7.18.0",
-        "@typescript-eslint/typescript-estree": "7.18.0"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      },
-      "peerDependencies": {
-        "eslint": "^8.56.0"
-      }
-    },
-    "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "7.18.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz",
-      "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==",
-      "dev": true,
-      "dependencies": {
-        "@typescript-eslint/types": "7.18.0",
-        "eslint-visitor-keys": "^3.4.3"
-      },
-      "engines": {
-        "node": "^18.18.0 || >=20.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/typescript-eslint"
-      }
-    },
-    "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": {
-      "version": "3.4.3",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
-      "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+    "node_modules/typical": {
+      "version": "7.3.0",
+      "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz",
+      "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==",
       "dev": true,
       "engines": {
-        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://opencollective.com/eslint"
+        "node": ">=12.17"
       }
     },
-    "node_modules/typical": {
-      "version": "2.6.1",
-      "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz",
-      "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==",
-      "dev": true
-    },
     "node_modules/uc.micro": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
@@ -18702,9 +17954,10 @@
       }
     },
     "node_modules/uint8array-extras": {
-      "version": "0.5.1",
-      "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-0.5.1.tgz",
-      "integrity": "sha512-dlgj8+9+Rak3JzT1Rg77nIccp0a5kBKjQ7tworiwKxkXIhqgdd+oZLkK8rcDb+Fq5tq+oUVjPbq4V/dMD6cnlA==",
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/uint8array-extras/-/uint8array-extras-1.4.0.tgz",
+      "integrity": "sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==",
+      "dev": true,
       "engines": {
         "node": ">=18"
       },
@@ -18712,6 +17965,16 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/unbzip2-stream": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+      "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+      "dev": true,
+      "dependencies": {
+        "buffer": "^5.2.1",
+        "through": "^2.3.8"
+      }
+    },
     "node_modules/underscore": {
       "version": "1.13.7",
       "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz",
@@ -18853,6 +18116,7 @@
       "version": "10.0.0",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz",
       "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==",
+      "dev": true,
       "funding": [
         "https://github.com/sponsors/broofa",
         "https://github.com/sponsors/ctavan"
@@ -18943,6 +18207,18 @@
         "defaults": "^1.0.3"
       }
     },
+    "node_modules/wcwidth/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==",
+      "dev": true,
+      "dependencies": {
+        "clone": "^1.0.2"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/webidl-conversions": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
@@ -19004,25 +18280,12 @@
       "dev": true
     },
     "node_modules/wordwrapjs": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-3.0.0.tgz",
-      "integrity": "sha512-mO8XtqyPvykVCsrwj5MlOVWvSnCdT+C+QVbm6blradR7JExAhbkZ7hZ9A+9NUtwzSqrlUo9a67ws0EiILrvRpw==",
-      "dev": true,
-      "dependencies": {
-        "reduce-flatten": "^1.0.1",
-        "typical": "^2.6.1"
-      },
-      "engines": {
-        "node": ">=4.0.0"
-      }
-    },
-    "node_modules/wordwrapjs/node_modules/reduce-flatten": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-1.0.1.tgz",
-      "integrity": "sha512-j5WfFJfc9CoXv/WbwVLHq74i/hdTUpy+iNC534LxczMRP67vJeK3V9JOdnL0N1cIRbn9mYhE2yVjvvKXDxvNXQ==",
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz",
+      "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==",
       "dev": true,
       "engines": {
-        "node": ">=0.10.0"
+        "node": ">=12.17"
       }
     },
     "node_modules/wrap-ansi": {
@@ -19267,6 +18530,19 @@
         "node": ">=12"
       }
     },
+    "node_modules/yauzl": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz",
+      "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==",
+      "dev": true,
+      "dependencies": {
+        "buffer-crc32": "~0.2.3",
+        "pend": "~1.2.0"
+      },
+      "engines": {
+        "node": ">=12"
+      }
+    },
     "node_modules/yerror": {
       "version": "8.0.0",
       "resolved": "https://registry.npmjs.org/yerror/-/yerror-8.0.0.tgz",
@@ -19319,22 +18595,22 @@
         "@whook/http-transaction": "^17.0.2",
         "ajv": "^8.17.1",
         "ajv-formats": "^3.0.1",
-        "application-services": "^6.1.0",
+        "application-services": "^7.0.0",
         "camelcase": "^8.0.0",
-        "common-services": "^16.0.4",
+        "common-services": "^17.0.0",
         "debug": "^4.3.7",
         "fs-extra": "^11.2.0",
         "ignore": "^5.3.1",
-        "inquirer": "^11.1.0",
+        "inquirer": "^12.1.0",
         "internal-ip": "^8.0.0",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "miniquery": "^1.1.2",
         "mkdirp": "^3.0.1",
         "openapi-types": "^12.1.3",
         "pkg-dir": "^8.0.0",
         "portfinder": "^1.0.32",
         "schema2dts": "^7.0.2",
-        "type-fest": "^4.26.1",
+        "type-fest": "^4.30.0",
         "yargs-parser": "^21.1.1",
         "yerror": "^8.0.0"
       },
@@ -19342,37 +18618,37 @@
         "whook": "bin/whook.js"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
         "@types/fs-extra": "^11.0.4",
         "@types/inquirer": "^9.0.7",
         "@types/streamtest": "^1.2.2",
         "@types/yargs-parser": "^21.0.3",
-        "esbuild-node-externals": "^1.14.0",
-        "eslint": "^9.7.0",
+        "esbuild-node-externals": "^1.15.0",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsarch": "^6.0.3",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsarch": "^6.1.2",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
         "streamtest": "^2.0.0",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
       },
       "peerDependencies": {
-        "esbuild": ">=0.23.0",
-        "esbuild-node-externals": ">=1.14.0"
+        "esbuild": ">=0.24.0",
+        "esbuild-node-externals": ">=1.15.0"
       }
     },
     "packages/whook-authorization": {
@@ -19381,30 +18657,30 @@
       "license": "MIT",
       "dependencies": {
         "@whook/whook": "^17.0.2",
-        "common-services": "^16.0.4",
+        "common-services": "^17.0.0",
         "http-auth-utils": "^6.0.1",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "yerror": "^8.0.0",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19415,7 +18691,7 @@
       "version": "17.1.1",
       "license": "MIT",
       "dependencies": {
-        "@types/aws-lambda": "^8.10.145",
+        "@types/aws-lambda": "^8.10.146",
         "@types/bytes": "^3.1.4",
         "@whook/cors": "^17.0.2",
         "@whook/http-router": "^17.0.2",
@@ -19423,44 +18699,56 @@
         "@whook/whook": "^17.0.2",
         "ajv": "^8.17.1",
         "ajv-formats": "^3.0.1",
-        "application-services": "^6.1.0",
+        "application-services": "^7.0.0",
         "bytes": "^3.1.2",
         "camelcase": "^8.0.0",
-        "common-services": "^16.0.4",
+        "common-services": "^17.0.0",
         "cpr": "3.0.1",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "mkdirp": "^3.0.1",
         "openapi-types": "^12.1.3",
-        "qs": "^6.13.0",
+        "qs": "^6.13.1",
         "strict-qs": "^8.0.3",
-        "type-fest": "^4.26.1",
-        "uuid": "^10.0.0",
+        "type-fest": "^4.30.0",
+        "uuid": "^11.0.3",
         "yerror": "^8.0.0",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
       }
     },
+    "packages/whook-aws-lambda/node_modules/uuid": {
+      "version": "11.0.3",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.0.3.tgz",
+      "integrity": "sha512-d0z310fCWv5dJwnX1Y/MncBAqGMKEzlBb1AOf7z9K8ALnd0utBX/msg/fA0+sbyN1ihbMsLhrBlnl1ak7Wa0rg==",
+      "funding": [
+        "https://github.com/sponsors/broofa",
+        "https://github.com/sponsors/ctavan"
+      ],
+      "bin": {
+        "uuid": "dist/esm/bin/uuid"
+      }
+    },
     "packages/whook-cors": {
       "name": "@whook/cors",
       "version": "17.0.2",
@@ -19469,28 +18757,28 @@
         "@apidevtools/swagger-parser": "^10.1.0",
         "@whook/http-router": "^17.0.2",
         "@whook/whook": "^17.0.2",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19502,12 +18790,12 @@
       "license": "MIT",
       "dependencies": {
         "@whook/example": "^17.0.2",
-        "axios": "^1.7.7",
-        "common-services": "^16.0.4",
+        "axios": "^1.7.9",
+        "common-services": "^17.0.0",
         "debug": "^4.3.7",
         "fs-extra": "^11.2.0",
-        "inquirer": "^11.1.0",
-        "knifecycle": "^17.3.0",
+        "inquirer": "^12.1.0",
+        "knifecycle": "^18.0.0",
         "ora": "^8.1.0",
         "yerror": "^8.0.0"
       },
@@ -19515,22 +18803,23 @@
         "create": "bin/create.js"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "@types/node": "22.10.1",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19550,29 +18839,31 @@
       }
     },
     "packages/whook-create/node_modules/inquirer": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz",
-      "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==",
+      "version": "12.1.0",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.1.0.tgz",
+      "integrity": "sha512-3/iexk64jn3EF0tjWYfOJi/DNWtcSSwg4ER67cnopO2xlCTUQjFCTMH9NBNQAMO/+dC3sEvKJtGJsqXnCkSsFg==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/prompts": "^6.0.1",
-        "@inquirer/type": "^2.0.0",
-        "@types/mute-stream": "^0.0.4",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/prompts": "^7.1.0",
+        "@inquirer/type": "^3.0.1",
         "ansi-escapes": "^4.3.2",
-        "mute-stream": "^1.0.0",
+        "mute-stream": "^2.0.0",
         "run-async": "^3.0.0",
         "rxjs": "^7.8.1"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "packages/whook-create/node_modules/mute-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
-      "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
+      "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
       "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+        "node": "^18.17.0 || >=20.5.0"
       }
     },
     "packages/whook-create/node_modules/run-async": {
@@ -19596,41 +18887,41 @@
         "@whook/http-transaction": "^17.0.2",
         "@whook/swagger-ui": "^17.0.2",
         "@whook/whook": "^17.0.2",
-        "application-services": "^6.1.0",
-        "common-services": "^16.0.4",
+        "application-services": "^7.0.0",
+        "common-services": "^17.0.0",
         "http-auth-utils": "^6.0.1",
-        "jwt-service": "^10.1.1",
-        "knifecycle": "^17.3.0",
+        "jwt-service": "^11.0.0",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3",
         "pkg-dir": "^8.0.0",
         "strict-qs": "^8.0.3",
-        "type-fest": "^4.26.1",
+        "type-fest": "^4.30.0",
         "yerror": "^8.0.0",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "axios": "^1.7.7",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "axios": "^1.7.9",
         "chokidar": "^3.5.3",
-        "esbuild-node-externals": "^1.13.1",
-        "eslint": "^9.7.0",
+        "esbuild-node-externals": "^1.15.0",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsarch": "^6.0.3",
+        "jsarch": "^6.1.2",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
         "schema2dts": "^7.0.2",
         "tsx": "^4.7.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19646,35 +18937,35 @@
         "@whook/whook": "^17.0.2",
         "ajv": "^8.17.1",
         "ajv-formats": "^3.0.1",
-        "application-services": "^6.1.0",
+        "application-services": "^7.0.0",
         "camelcase": "^8.0.0",
-        "common-services": "^16.0.4",
+        "common-services": "^17.0.0",
         "cpr": "3.0.1",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "mkdirp": "^3.0.1",
         "openapi-types": "^12.1.3",
-        "qs": "^6.13.0",
+        "qs": "^6.13.1",
         "strict-qs": "^8.0.3",
         "yerror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19687,30 +18978,30 @@
       "dependencies": {
         "@whook/whook": "^17.0.2",
         "apollo-server-module-graphiql": "^1.4.0",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3",
         "yerror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
         "@whook/http-router": "^17.0.2",
-        "axios": "^1.7.7",
-        "eslint": "^9.7.0",
+        "axios": "^1.7.9",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19724,34 +19015,34 @@
         "@apollo/server": "^4.11.2",
         "@whook/http-transaction": "^17.0.2",
         "@whook/whook": "^17.0.2",
-        "common-services": "^16.0.4",
-        "knifecycle": "^17.3.0",
+        "common-services": "^17.0.0",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3",
-        "type-fest": "^4.26.1",
+        "type-fest": "^4.30.0",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
         "@whook/authorization": "^17.0.2",
-        "axios": "^1.7.7",
-        "eslint": "^9.7.0",
+        "axios": "^1.7.9",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "graphql": "^16.9.0",
         "graphql-tag": "^2.12.6",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19765,81 +19056,89 @@
         "@apidevtools/swagger-parser": "^10.1.0",
         "@types/content-type": "^1.1.8",
         "@types/negotiator": "^0.6.3",
-        "@types/qs": "^6.9.16",
+        "@types/qs": "^6.9.17",
         "@whook/http-transaction": "^17.0.2",
         "ajv": "^8.17.1",
         "ajv-formats": "^3.0.1",
-        "application-services": "^6.1.0",
+        "application-services": "^7.0.0",
         "bytes": "^3.1.2",
         "camelcase": "^8.0.0",
         "content-type": "^1.0.5",
         "first-chunk-stream": "^6.0.0",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "miniquery": "^1.1.2",
         "ms": "^2.1.3",
-        "negotiator": "^0.6.3",
+        "negotiator": "^1.0.0",
         "openapi-types": "^12.1.3",
-        "qs": "^6.13.0",
+        "qs": "^6.13.1",
         "siso": "^6.0.2",
         "strict-qs": "^8.0.3",
-        "type-fest": "^4.26.1",
+        "type-fest": "^4.30.0",
         "yerror": "^8.0.0",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "axios": "^1.7.7",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "axios": "^1.7.9",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
         "streamtest": "^2.0.0",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
       }
     },
+    "packages/whook-http-router/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"
+      }
+    },
     "packages/whook-http-server": {
       "name": "@whook/http-server",
       "version": "17.0.2",
       "license": "MIT",
       "dependencies": {
         "@whook/http-router": "^17.0.2",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "ms": "^2.1.3",
         "yerror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "axios": "^1.7.7",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "axios": "^1.7.9",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19850,36 +19149,36 @@
       "version": "17.0.2",
       "license": "MIT",
       "dependencies": {
-        "common-services": "^16.0.4",
-        "knifecycle": "^17.3.0",
+        "common-services": "^17.0.0",
+        "knifecycle": "^18.0.0",
         "ms": "^2.1.3",
         "openapi-types": "^12.1.3",
         "statuses": "^2.0.1",
-        "type-fest": "^4.26.1",
+        "type-fest": "^4.30.0",
         "yerror": "^8.0.0",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
         "@types/streamtest": "^1.2.0",
-        "eslint": "^9.7.0",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsarch": "^6.0.3",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsarch": "^6.1.2",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
         "streamtest": "^2.0.0",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19892,28 +19191,28 @@
       "dependencies": {
         "@whook/http-transaction": "^17.0.2",
         "@whook/whook": "^17.0.2",
-        "common-services": "^16.0.4",
-        "knifecycle": "^17.3.0",
+        "common-services": "^17.0.0",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19927,33 +19226,33 @@
         "@whook/authorization": "^17.0.2",
         "@whook/whook": "^17.0.2",
         "camelcase": "^8.0.0",
-        "common-services": "^16.0.4",
-        "cookie": "^1.0.1",
-        "knifecycle": "^17.3.0",
+        "common-services": "^17.0.0",
+        "cookie": "^1.0.2",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3",
-        "type-fest": "^4.26.1",
+        "type-fest": "^4.30.0",
         "yerror": "^8.0.0",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "http-auth-utils": "^6.0.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -19968,31 +19267,31 @@
         "@types/swagger-ui": "3.52.4",
         "@whook/http-router": "^17.0.2",
         "@whook/whook": "^17.0.2",
-        "axios": "^1.7.7",
+        "axios": "^1.7.9",
         "ecstatic": "^4.1.4",
-        "knifecycle": "^17.3.0",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3",
-        "swagger-ui-dist": "^5.17.14",
-        "type-fest": "^4.26.1"
+        "swagger-ui-dist": "^5.18.2",
+        "type-fest": "^4.30.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -20004,30 +19303,30 @@
       "license": "MIT",
       "dependencies": {
         "@whook/whook": "^17.0.2",
-        "application-services": "^6.1.0",
-        "knifecycle": "^17.3.0",
+        "application-services": "^7.0.0",
+        "knifecycle": "^18.0.0",
         "openapi-types": "^12.1.3",
         "semver": "^7.6.3",
         "yhttperror": "^8.0.0"
       },
       "devDependencies": {
-        "@eslint/js": "^9.7.0",
-        "@swc/cli": "^0.4.0",
-        "@swc/core": "^1.6.13",
-        "@swc/helpers": "^0.5.12",
-        "@swc/jest": "^0.2.36",
-        "eslint": "^9.7.0",
+        "@eslint/js": "^9.16.0",
+        "@swc/cli": "^0.5.2",
+        "@swc/core": "^1.10.0",
+        "@swc/helpers": "^0.5.15",
+        "@swc/jest": "^0.2.37",
+        "eslint": "^9.16.0",
         "eslint-config-prettier": "^9.1.0",
-        "eslint-plugin-jest": "^28.6.0",
-        "eslint-plugin-prettier": "^5.1.3",
+        "eslint-plugin-jest": "^28.9.0",
+        "eslint-plugin-prettier": "^5.2.1",
         "jest": "^29.7.0",
-        "jsdoc-to-markdown": "^8.0.0",
+        "jsdoc-to-markdown": "^9.1.1",
         "metapak": "^6.0.1",
-        "metapak-nfroidure": "18.2.0",
-        "prettier": "^3.3.3",
+        "metapak-nfroidure": "19.0.1",
+        "prettier": "^3.4.2",
         "rimraf": "^6.0.1",
-        "typescript": "^5.5.3",
-        "typescript-eslint": "^7.16.0"
+        "typescript": "^5.7.2",
+        "typescript-eslint": "^8.17.0"
       },
       "engines": {
         "node": ">=20.11.1"
@@ -20047,29 +19346,31 @@
       }
     },
     "packages/whook/node_modules/inquirer": {
-      "version": "11.1.0",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz",
-      "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==",
+      "version": "12.1.0",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.1.0.tgz",
+      "integrity": "sha512-3/iexk64jn3EF0tjWYfOJi/DNWtcSSwg4ER67cnopO2xlCTUQjFCTMH9NBNQAMO/+dC3sEvKJtGJsqXnCkSsFg==",
       "dependencies": {
-        "@inquirer/core": "^9.2.1",
-        "@inquirer/prompts": "^6.0.1",
-        "@inquirer/type": "^2.0.0",
-        "@types/mute-stream": "^0.0.4",
+        "@inquirer/core": "^10.1.0",
+        "@inquirer/prompts": "^7.1.0",
+        "@inquirer/type": "^3.0.1",
         "ansi-escapes": "^4.3.2",
-        "mute-stream": "^1.0.0",
+        "mute-stream": "^2.0.0",
         "run-async": "^3.0.0",
         "rxjs": "^7.8.1"
       },
       "engines": {
         "node": ">=18"
+      },
+      "peerDependencies": {
+        "@types/node": ">=18"
       }
     },
     "packages/whook/node_modules/mute-stream": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz",
-      "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==",
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
+      "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
       "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+        "node": "^18.17.0 || >=20.5.0"
       }
     },
     "packages/whook/node_modules/run-async": {
diff --git a/package.json b/package.json
index 3c66b15c..708ef88b 100644
--- a/package.json
+++ b/package.json
@@ -58,12 +58,12 @@
   },
   "homepage": "https://github.com/nfroidure/whook",
   "devDependencies": {
-    "commitizen": "^4.3.0",
+    "commitizen": "^4.3.1",
     "conventional-changelog-cli": "^5.0.0",
     "cz-conventional-changelog": "^3.3.0",
     "lerna": "^8.1.6",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0"
+    "metapak-nfroidure": "19.0.1"
   },
   "contributors": [
     {
diff --git a/packages/whook-authorization/eslint.config.js b/packages/whook-authorization/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-authorization/eslint.config.js
+++ b/packages/whook-authorization/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-authorization/package.json b/packages/whook-authorization/package.json
index 72d74c09..43ab65f3 100644
--- a/packages/whook-authorization/package.json
+++ b/packages/whook-authorization/package.json
@@ -54,30 +54,30 @@
   "homepage": "https://github.com/nfroidure/whook",
   "dependencies": {
     "@whook/whook": "^17.0.2",
-    "common-services": "^16.0.4",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -139,6 +139,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-aws-lambda/eslint.config.js b/packages/whook-aws-lambda/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-aws-lambda/eslint.config.js
+++ b/packages/whook-aws-lambda/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-aws-lambda/package.json b/packages/whook-aws-lambda/package.json
index 2bfc7d68..dde90cc4 100644
--- a/packages/whook-aws-lambda/package.json
+++ b/packages/whook-aws-lambda/package.json
@@ -43,7 +43,7 @@
   },
   "homepage": "https://github.com/nfroidure/whook",
   "dependencies": {
-    "@types/aws-lambda": "^8.10.145",
+    "@types/aws-lambda": "^8.10.146",
     "@types/bytes": "^3.1.4",
     "@whook/cors": "^17.0.2",
     "@whook/http-router": "^17.0.2",
@@ -51,39 +51,39 @@
     "@whook/whook": "^17.0.2",
     "ajv": "^8.17.1",
     "ajv-formats": "^3.0.1",
-    "application-services": "^6.1.0",
+    "application-services": "^7.0.0",
     "bytes": "^3.1.2",
     "camelcase": "^8.0.0",
-    "common-services": "^16.0.4",
+    "common-services": "^17.0.0",
     "cpr": "3.0.1",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "mkdirp": "^3.0.1",
     "openapi-types": "^12.1.3",
-    "qs": "^6.13.0",
+    "qs": "^6.13.1",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
-    "uuid": "^10.0.0",
+    "type-fest": "^4.30.0",
+    "uuid": "^11.0.3",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -145,6 +145,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-aws-lambda/src/index.ts b/packages/whook-aws-lambda/src/index.ts
index 572edb0d..6399d2db 100644
--- a/packages/whook-aws-lambda/src/index.ts
+++ b/packages/whook-aws-lambda/src/index.ts
@@ -449,7 +449,11 @@ async function ensureFile(
       return;
     }
   } catch (err) {
-    log('debug', `🗀 - Write new file: "${path}".`);
+    log(
+      'debug',
+      `🗀 - Write new file: "${path}".`,
+      printStackTrace(err as YError),
+    );
     return await writeFile(path, content);
   }
   log('debug', `🗀 - Write changed file: "${path}".`);
diff --git a/packages/whook-aws-lambda/src/services/HANDLER.ts b/packages/whook-aws-lambda/src/services/HANDLER.ts
index bce4e53a..11c91108 100644
--- a/packages/whook-aws-lambda/src/services/HANDLER.ts
+++ b/packages/whook-aws-lambda/src/services/HANDLER.ts
@@ -1,8 +1,7 @@
-import { autoService, name } from 'knifecycle';
-import { noop, applyWrappers } from '@whook/whook';
-import type { WhookWrapper } from '@whook/whook';
-import type { WhookHandler } from '@whook/http-transaction';
-import type { LogService } from 'common-services';
+import { autoService, name, location } from 'knifecycle';
+import { noop, applyWrappers, type WhookWrapper } from '@whook/whook';
+import { type WhookHandler } from '@whook/http-transaction';
+import { type LogService } from 'common-services';
 
 export type WhookHandlerDependencies<T extends WhookHandler> = {
   WRAPPERS: WhookWrapper<T>[];
@@ -13,7 +12,10 @@ export type WhookHandlerDependencies<T extends WhookHandler> = {
 
 export const DEFAULT_WRAPPERS = [];
 
-export default name('HANDLER', autoService(initHandler));
+export default location(
+  name('HANDLER', autoService(initHandler)),
+  import.meta.url,
+);
 
 /**
  * Initialize one Whook handler
diff --git a/packages/whook-aws-lambda/src/services/_autoload.ts b/packages/whook-aws-lambda/src/services/_autoload.ts
index 8eda8fd4..da3553fa 100644
--- a/packages/whook-aws-lambda/src/services/_autoload.ts
+++ b/packages/whook-aws-lambda/src/services/_autoload.ts
@@ -7,6 +7,7 @@ import {
   wrapInitializer,
   constant,
   alsoInject,
+  location,
 } from 'knifecycle';
 import { printStackTrace, YError } from 'yerror';
 import {
@@ -94,10 +95,7 @@ const initializerWrapper: ServiceInitializerWrapper<
   }: WhookAWSLambdaAutoloadDependencies,
   $autoload: Autoloader<Initializer<Dependencies, Service>>,
 ): Promise<
-  (serviceName: string) => Promise<{
-    initializer: Initializer<Dependencies, Service>;
-    path: string;
-  }>
+  (serviceName: string) => Promise<Initializer<Dependencies, Service>>
 > => {
   let API: OpenAPIV3_1.Document;
   let OPERATION_APIS: WhookRawOperation<WhookAPIOperationAWSLambdaConfig>[];
@@ -108,10 +106,9 @@ const initializerWrapper: ServiceInitializerWrapper<
   > = (() => {
     return async (serviceName) => {
       const cleanedName = serviceName.split('_').pop();
-      // eslint-disable-next-line
+
       API = API || (await $injector(['API'])).API;
 
-      // eslint-disable-next-line
       OPERATION_APIS =
         OPERATION_APIS ||
         getOpenAPIOperations<WhookAPIOperationAWSLambdaConfig>(API);
@@ -130,7 +127,6 @@ const initializerWrapper: ServiceInitializerWrapper<
         throw new YError('E_OPERATION_NOT_FOUND', serviceName, cleanedName);
       }
 
-      // eslint-disable-next-line
       const OPERATION_API: OpenAPIV3_1.Document = cleanupOpenAPI({
         ...API,
         paths: {
@@ -176,10 +172,7 @@ const initializerWrapper: ServiceInitializerWrapper<
           ', ',
         )}) can give unpredictable results!`,
       );
-      return {
-        initializer: constant(serviceName, undefined),
-        path: `constant://${serviceName}`,
-      };
+      return constant(serviceName, undefined);
     }
 
     try {
@@ -200,26 +193,20 @@ const initializerWrapper: ServiceInitializerWrapper<
           'debug',
           `🤖 - Reusing a constant initializer directly from the Knifecycle instance: "${serviceName}".`,
         );
-        return {
-          initializer,
-          path: `instance://${serviceName}`,
-        };
+        return initializer;
       }
 
       if (serviceName.startsWith('OPERATION_API_')) {
         const [, , OPERATION_API] = await getAPIOperation(serviceName);
 
-        return {
-          initializer: constant(serviceName, OPERATION_API),
-          path: `api://${serviceName}`,
-        };
+        return constant(serviceName, OPERATION_API);
       }
 
       if (serviceName.startsWith('OPERATION_WRAPPER_')) {
         const [type] = await getAPIOperation(serviceName);
 
-        return {
-          initializer: alsoInject(
+        return location(
+          alsoInject(
             [
               `OPERATION_API>${serviceName.replace(
                 'OPERATION_WRAPPER_',
@@ -228,17 +215,15 @@ const initializerWrapper: ServiceInitializerWrapper<
             ],
             AWS_WRAPPERS[type].initializer as any,
           ) as any,
-          path: `@whook/aws-lambda/dist/wrappers/${AWS_WRAPPERS[type].name}.js`,
-        };
+          `@whook/aws-lambda/dist/wrappers/${AWS_WRAPPERS[type].name}.js`,
+        );
       }
 
       if (serviceName.startsWith('OPERATION_HANDLER_')) {
         const [type, operationId] = await getAPIOperation(serviceName);
 
-        return {
-          name: serviceName,
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
-          initializer: alsoInject(
+        return location(
+          alsoInject(
             [
               `mainWrapper>OPERATION_WRAPPER_${serviceName.replace(
                 'OPERATION_HANDLER_',
@@ -253,15 +238,12 @@ const initializerWrapper: ServiceInitializerWrapper<
             ],
             initHandler,
           ) as any,
-          path: '@whook/aws-lambda/dist/services/HANDLER.js',
-        };
+          '@whook/aws-lambda/dist/services/HANDLER.js',
+        );
       }
 
       if (BUILD_CONSTANTS[serviceName]) {
-        return {
-          initializer: constant(serviceName, BUILD_CONSTANTS[serviceName]),
-          path: `constant://${serviceName}`,
-        };
+        return constant(serviceName, BUILD_CONSTANTS[serviceName]);
       }
 
       return $autoload(serviceName);
diff --git a/packages/whook-aws-lambda/src/services/log.ts b/packages/whook-aws-lambda/src/services/log.ts
index 6c2153c6..2c4ab45d 100644
--- a/packages/whook-aws-lambda/src/services/log.ts
+++ b/packages/whook-aws-lambda/src/services/log.ts
@@ -1,4 +1,7 @@
-import { service } from 'knifecycle';
+import { service, location } from 'knifecycle';
 import { log } from 'node:console';
 
-export default service(async () => log, 'log');
+export default location(
+  service(async () => log, 'log'),
+  import.meta.url,
+);
diff --git a/packages/whook-aws-lambda/src/wrappers/awsHTTPLambda.ts b/packages/whook-aws-lambda/src/wrappers/awsHTTPLambda.ts
index 0f0dfad6..ec1918c3 100644
--- a/packages/whook-aws-lambda/src/wrappers/awsHTTPLambda.ts
+++ b/packages/whook-aws-lambda/src/wrappers/awsHTTPLambda.ts
@@ -260,7 +260,8 @@ async function handleForAWSHTTPLambda(
   event: APIGatewayProxyEvent,
 ) {
   const startTime = time();
-  const bufferLimit = bytes.parse(BUFFER_LIMIT);
+  const bufferLimit =
+    bytes.parse(BUFFER_LIMIT) || (bytes.parse(DEFAULT_BUFFER_LIMIT) as number);
   const operationParameters = (operation.parameters || []).concat(
     ammendedParameters,
   );
diff --git a/packages/whook-cors/eslint.config.js b/packages/whook-cors/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-cors/eslint.config.js
+++ b/packages/whook-cors/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-cors/package.json b/packages/whook-cors/package.json
index 95e85fd9..e6c2af6f 100644
--- a/packages/whook-cors/package.json
+++ b/packages/whook-cors/package.json
@@ -55,28 +55,28 @@
     "@apidevtools/swagger-parser": "^10.1.0",
     "@whook/http-router": "^17.0.2",
     "@whook/whook": "^17.0.2",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -138,6 +138,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-cors/src/handlers/optionsWithCORS.ts b/packages/whook-cors/src/handlers/optionsWithCORS.ts
index dec74b72..e2f3ea80 100644
--- a/packages/whook-cors/src/handlers/optionsWithCORS.ts
+++ b/packages/whook-cors/src/handlers/optionsWithCORS.ts
@@ -1,11 +1,14 @@
-import { handler } from 'knifecycle';
+import { handler, location } from 'knifecycle';
 
 /**
  * A simple Whook handler that just returns a 200 OK
  *  HTTP response
  * @returns {Promise<Object>} The HTTP response object
  */
-export default handler(optionsWithCORS, 'optionsWithCORS', []);
+export default location(
+  handler(optionsWithCORS, 'optionsWithCORS', []),
+  import.meta.url,
+);
 
 async function optionsWithCORS() {
   return {
diff --git a/packages/whook-cors/src/services/errorHandler.ts b/packages/whook-cors/src/services/errorHandler.ts
index fa4a190e..e623ed61 100644
--- a/packages/whook-cors/src/services/errorHandler.ts
+++ b/packages/whook-cors/src/services/errorHandler.ts
@@ -1,5 +1,10 @@
 import { initErrorHandler } from '@whook/http-router';
-import { wrapInitializer, alsoInject, ServiceInitializer } from 'knifecycle';
+import {
+  wrapInitializer,
+  alsoInject,
+  location,
+  type ServiceInitializer,
+} from 'knifecycle';
 import { noop } from '@whook/whook';
 import { YHTTPError } from 'yhttperror';
 import { printStackTrace } from 'yerror';
@@ -14,19 +19,22 @@ import type { WhookCORSConfig } from '../wrappers/wrapHandlerWithCORS.js';
 
 type ErrorHandlerWrapperDependencies = WhookCORSConfig & { log?: LogService };
 
-export default alsoInject<
-  ErrorHandlerWrapperDependencies,
-  WhookErrorHandlerDependencies,
-  WhookErrorHandler
->(
-  ['?log', 'CORS'],
-  wrapInitializer(
-    wrapErrorHandlerForCORS as ServiceInitializer<
-      WhookErrorHandlerDependencies,
-      WhookErrorHandler
-    >,
-    initErrorHandler,
+export default location(
+  alsoInject<
+    ErrorHandlerWrapperDependencies,
+    WhookErrorHandlerDependencies,
+    WhookErrorHandler
+  >(
+    ['?log', 'CORS'],
+    wrapInitializer(
+      wrapErrorHandlerForCORS as ServiceInitializer<
+        WhookErrorHandlerDependencies,
+        WhookErrorHandler
+      >,
+      initErrorHandler,
+    ),
   ),
+  import.meta.url,
 );
 
 /**
diff --git a/packages/whook-create/eslint.config.js b/packages/whook-create/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-create/eslint.config.js
+++ b/packages/whook-create/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-create/package.json b/packages/whook-create/package.json
index 80b86e68..bdf2c07b 100644
--- a/packages/whook-create/package.json
+++ b/packages/whook-create/package.json
@@ -69,32 +69,33 @@
   "homepage": "https://github.com/nfroidure/whook",
   "dependencies": {
     "@whook/example": "^17.0.2",
-    "axios": "^1.7.7",
-    "common-services": "^16.0.4",
+    "axios": "^1.7.9",
+    "common-services": "^17.0.0",
     "debug": "^4.3.7",
     "fs-extra": "^11.2.0",
-    "inquirer": "^11.1.0",
-    "knifecycle": "^17.3.0",
+    "inquirer": "^12.1.0",
+    "knifecycle": "^18.0.0",
     "ora": "^8.1.0",
     "yerror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "@types/node": "22.10.1",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -142,6 +143,6 @@
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-create/src/services/__snapshots__/createWhook.test.ts.snap b/packages/whook-create/src/services/__snapshots__/createWhook.test.ts.snap
index b08bd9e1..b5b0d547 100644
--- a/packages/whook-create/src/services/__snapshots__/createWhook.test.ts.snap
+++ b/packages/whook-create/src/services/__snapshots__/createWhook.test.ts.snap
@@ -137,39 +137,39 @@ DEV_MODE=1
     "@whook/http-transaction": "<current_version>",
     "@whook/swagger-ui": "<current_version>",
     "@whook/whook": "<current_version>",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "prettier": "^3.3.3",
+    "jsarch": "^6.1.2",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "prettier": {
     "semi": true,
@@ -206,7 +206,7 @@ DEV_MODE=1
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
 }",
     ],
@@ -447,39 +447,39 @@ DEV_MODE=1
     "@whook/http-transaction": "<current_version>",
     "@whook/swagger-ui": "<current_version>",
     "@whook/whook": "<current_version>",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "prettier": "^3.3.3",
+    "jsarch": "^6.1.2",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "prettier": {
     "semi": true,
@@ -516,7 +516,7 @@ DEV_MODE=1
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
 }",
     ],
@@ -795,39 +795,39 @@ DEV_MODE=1
     "@whook/http-transaction": "<current_version>",
     "@whook/swagger-ui": "<current_version>",
     "@whook/whook": "<current_version>",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "prettier": "^3.3.3",
+    "jsarch": "^6.1.2",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "prettier": {
     "semi": true,
@@ -864,7 +864,7 @@ DEV_MODE=1
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
 }",
     ],
@@ -1126,39 +1126,39 @@ DEV_MODE=1
     "@whook/http-transaction": "<current_version>",
     "@whook/swagger-ui": "<current_version>",
     "@whook/whook": "<current_version>",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "prettier": "^3.3.3",
+    "jsarch": "^6.1.2",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "prettier": {
     "semi": true,
@@ -1195,7 +1195,7 @@ DEV_MODE=1
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
 }",
     ],
diff --git a/packages/whook-create/src/services/createWhook.test.ts b/packages/whook-create/src/services/createWhook.test.ts
index cfaba9d3..2b32220e 100644
--- a/packages/whook-create/src/services/createWhook.test.ts
+++ b/packages/whook-create/src/services/createWhook.test.ts
@@ -146,12 +146,12 @@ describe('initCreateWhook', () => {
     await createWhook();
 
     expect(
-      JSON.parse(
-        outputFile.mock.calls
-          .find((call) => call[0].toString().endsWith('package.json'))?.[1]
-          ?.toString() || '',
-      ),
-    ).toMatchInlineSnapshot(`
+  JSON.parse(
+    outputFile.mock.calls.
+    find((call) => call[0].toString().endsWith('package.json'))?.[1]?.
+    toString() || ''
+  )
+).toMatchInlineSnapshot(`
 {
   "author": {
     "email": "wayne@warner.com",
@@ -166,40 +166,40 @@ describe('initCreateWhook', () => {
     "@whook/http-transaction": "<current_version>",
     "@whook/swagger-ui": "<current_version>",
     "@whook/whook": "<current_version>",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0",
   },
   "description": "A new Whook project",
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "prettier": "^3.3.3",
+    "jsarch": "^6.1.2",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0",
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0",
   },
   "engines": {
     "node": ">=20.11.1",
@@ -246,7 +246,7 @@ describe('initCreateWhook', () => {
   "main": "dist/index.js",
   "name": "super-project",
   "overrides": {
-    "eslint": "^9.7.0",
+    "eslint": "^9.16.0",
   },
   "prettier": {
     "printWidth": 80,
@@ -344,12 +344,12 @@ describe('initCreateWhook', () => {
     await createWhook();
 
     expect(
-      JSON.parse(
-        outputFile.mock.calls
-          .find((call) => call[0].toString().endsWith('package.json'))?.[1]
-          ?.toString() || '',
-      ),
-    ).toMatchInlineSnapshot(`
+  JSON.parse(
+    outputFile.mock.calls.
+    find((call) => call[0].toString().endsWith('package.json'))?.[1]?.
+    toString() || ''
+  )
+).toMatchInlineSnapshot(`
 {
   "author": {
     "email": "wayne@warner.com",
@@ -364,40 +364,40 @@ describe('initCreateWhook', () => {
     "@whook/http-transaction": "<current_version>",
     "@whook/swagger-ui": "<current_version>",
     "@whook/whook": "<current_version>",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0",
   },
   "description": "A new Whook project",
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "prettier": "^3.3.3",
+    "jsarch": "^6.1.2",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0",
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0",
   },
   "engines": {
     "node": ">=20.11.1",
@@ -444,7 +444,7 @@ describe('initCreateWhook', () => {
   "main": "dist/index.js",
   "name": "super-project",
   "overrides": {
-    "eslint": "^9.7.0",
+    "eslint": "^9.16.0",
   },
   "prettier": {
     "printWidth": 80,
@@ -527,12 +527,12 @@ describe('initCreateWhook', () => {
     await createWhook();
 
     expect(
-      JSON.parse(
-        outputFile.mock.calls
-          .find((call) => call[0].toString().endsWith('package.json'))?.[1]
-          ?.toString() || '',
-      ),
-    ).toMatchInlineSnapshot(`
+  JSON.parse(
+    outputFile.mock.calls.
+    find((call) => call[0].toString().endsWith('package.json'))?.[1]?.
+    toString() || ''
+  )
+).toMatchInlineSnapshot(`
 {
   "author": {
     "email": "wayne@warner.com",
@@ -547,40 +547,40 @@ describe('initCreateWhook', () => {
     "@whook/http-transaction": "<current_version>",
     "@whook/swagger-ui": "<current_version>",
     "@whook/whook": "<current_version>",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0",
   },
   "description": "A new Whook project",
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "prettier": "^3.3.3",
+    "jsarch": "^6.1.2",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0",
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0",
   },
   "engines": {
     "node": ">=20.11.1",
@@ -627,7 +627,7 @@ describe('initCreateWhook', () => {
   "main": "dist/index.js",
   "name": "super-project",
   "overrides": {
-    "eslint": "^9.7.0",
+    "eslint": "^9.16.0",
   },
   "prettier": {
     "printWidth": 80,
diff --git a/packages/whook-example/eslint.config.js b/packages/whook-example/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-example/eslint.config.js
+++ b/packages/whook-example/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-example/package.json b/packages/whook-example/package.json
index b0ab0d99..018f30ac 100644
--- a/packages/whook-example/package.json
+++ b/packages/whook-example/package.json
@@ -89,41 +89,41 @@
     "@whook/http-transaction": "^17.0.2",
     "@whook/swagger-ui": "^17.0.2",
     "@whook/whook": "^17.0.2",
-    "application-services": "^6.1.0",
-    "common-services": "^16.0.4",
+    "application-services": "^7.0.0",
+    "common-services": "^17.0.0",
     "http-auth-utils": "^6.0.1",
-    "jwt-service": "^10.1.1",
-    "knifecycle": "^17.3.0",
+    "jwt-service": "^11.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
     "chokidar": "^3.5.3",
-    "esbuild-node-externals": "^1.13.1",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
+    "jsarch": "^6.1.2",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "schema2dts": "^7.0.2",
     "tsx": "^4.7.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -179,6 +179,6 @@
     }
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-example/src/services/API.ts b/packages/whook-example/src/services/API.ts
index c65b3638..0f4fb916 100644
--- a/packages/whook-example/src/services/API.ts
+++ b/packages/whook-example/src/services/API.ts
@@ -1,4 +1,4 @@
-import { name, autoService } from 'knifecycle';
+import { name, autoService, location } from 'knifecycle';
 import { augmentAPIWithCORS } from '@whook/cors';
 import { noop } from '@whook/whook';
 import type { WhookConfig, WhookAPIDefinitions } from '@whook/whook';
@@ -22,7 +22,7 @@ export type APIDependencies = APIConfig & {
   log?: LogService;
 };
 
-export default name('API', autoService(initAPI));
+export default location(name('API', autoService(initAPI)), import.meta.url);
 
 /* Architecture Note #3: API
 Whook is all about APIs.
diff --git a/packages/whook-example/src/services/FILTER_API_DEFINITION.ts b/packages/whook-example/src/services/FILTER_API_DEFINITION.ts
index 7a1ff68f..6328a011 100644
--- a/packages/whook-example/src/services/FILTER_API_DEFINITION.ts
+++ b/packages/whook-example/src/services/FILTER_API_DEFINITION.ts
@@ -1,4 +1,4 @@
-import { name, autoService } from 'knifecycle';
+import { name, autoService, location } from 'knifecycle';
 import { noop, identity } from '@whook/whook';
 import type { LogService } from 'common-services';
 import type {
@@ -6,9 +6,9 @@ import type {
   WhookAPIDefinitionFilter,
 } from '@whook/whook';
 
-export default name(
-  'FILTER_API_DEFINITION',
-  autoService(initFilterAPIDefinition),
+export default location(
+  name('FILTER_API_DEFINITION', autoService(initFilterAPIDefinition)),
+  import.meta.url,
 );
 
 export type FilterAPIDefinitionEnvVars = {
diff --git a/packages/whook-example/src/services/MECHANISMS.ts b/packages/whook-example/src/services/MECHANISMS.ts
index 6e12c7f3..ac2375f5 100644
--- a/packages/whook-example/src/services/MECHANISMS.ts
+++ b/packages/whook-example/src/services/MECHANISMS.ts
@@ -1,5 +1,5 @@
 import { YHTTPError } from 'yhttperror';
-import { name, autoService } from 'knifecycle';
+import { name, autoService, location } from 'knifecycle';
 import { BEARER as BEARER_MECHANISM } from 'http-auth-utils';
 
 export const FAKE_MECHANISM = {
@@ -42,7 +42,10 @@ export const FAKE_MECHANISM = {
 A service aimed to provide implementations for the
  various supported auth mechanisms.
 */
-export default name('MECHANISMS', autoService(initMechanisms));
+export default location(
+  name('MECHANISMS', autoService(initMechanisms)),
+  import.meta.url,
+);
 
 async function initMechanisms({ ENV, log }) {
   log('debug', '🔧 - Initializing auth mechanisms');
diff --git a/packages/whook-example/src/services/QUERY_PARSER.ts b/packages/whook-example/src/services/QUERY_PARSER.ts
index c24b75b1..78a064fd 100644
--- a/packages/whook-example/src/services/QUERY_PARSER.ts
+++ b/packages/whook-example/src/services/QUERY_PARSER.ts
@@ -1,7 +1,10 @@
-import { service } from 'knifecycle';
+import { service, location } from 'knifecycle';
 import { qsStrict as strictQs } from 'strict-qs';
 
-export default service(initQueryParser, 'QUERY_PARSER');
+export default location(
+  service(initQueryParser, 'QUERY_PARSER'),
+  import.meta.url,
+);
 
 /* Architecture Note #4.5: QUERY_PARSER
 
diff --git a/packages/whook-example/src/services/authentication.ts b/packages/whook-example/src/services/authentication.ts
index 9b8da303..9bd13360 100644
--- a/packages/whook-example/src/services/authentication.ts
+++ b/packages/whook-example/src/services/authentication.ts
@@ -1,4 +1,4 @@
-import { autoService } from 'knifecycle';
+import { autoService, location } from 'knifecycle';
 import { YError } from 'yerror';
 import type { JWTService } from 'jwt-service';
 import type {
@@ -6,7 +6,7 @@ import type {
   BaseAuthenticationData,
 } from '@whook/authorization';
 
-export default autoService(initAuthentication);
+export default location(autoService(initAuthentication), import.meta.url);
 
 export type AuthenticationDependencies = {
   jwtToken: JWTService<AuthenticationData>;
diff --git a/packages/whook-example/src/services/jwtToken.ts b/packages/whook-example/src/services/jwtToken.ts
index 505c46b1..783632d9 100644
--- a/packages/whook-example/src/services/jwtToken.ts
+++ b/packages/whook-example/src/services/jwtToken.ts
@@ -1,13 +1,21 @@
 import initJWT from 'jwt-service';
-import { name } from 'knifecycle';
-import type { ServiceInitializer, Dependencies, Service } from 'knifecycle';
+import {
+  name,
+  location,
+  type ServiceInitializer,
+  type Dependencies,
+  type Service,
+} from 'knifecycle';
 
 /* Architecture Note #4.3: jwtToken
 
 A JWT token issuer service. Here, we simply reuse
  an external project and rename it by the way.
 */
-export default name(
-  'jwtToken',
-  initJWT as unknown as ServiceInitializer<Dependencies, Service>,
+export default location(
+  name(
+    'jwtToken',
+    initJWT as unknown as ServiceInitializer<Dependencies, Service>,
+  ),
+  import.meta.url,
 ) as unknown as typeof initJWT;
diff --git a/packages/whook-gcp-functions/eslint.config.js b/packages/whook-gcp-functions/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-gcp-functions/eslint.config.js
+++ b/packages/whook-gcp-functions/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-gcp-functions/package.json b/packages/whook-gcp-functions/package.json
index fa48702d..43f0eda3 100644
--- a/packages/whook-gcp-functions/package.json
+++ b/packages/whook-gcp-functions/package.json
@@ -54,35 +54,35 @@
     "@whook/whook": "^17.0.2",
     "ajv": "^8.17.1",
     "ajv-formats": "^3.0.1",
-    "application-services": "^6.1.0",
+    "application-services": "^7.0.0",
     "camelcase": "^8.0.0",
-    "common-services": "^16.0.4",
+    "common-services": "^17.0.0",
     "cpr": "3.0.1",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "mkdirp": "^3.0.1",
     "openapi-types": "^12.1.3",
-    "qs": "^6.13.0",
+    "qs": "^6.13.1",
     "strict-qs": "^8.0.3",
     "yerror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -144,6 +144,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-gcp-functions/src/index.ts b/packages/whook-gcp-functions/src/index.ts
index 72944680..4ad2e92f 100644
--- a/packages/whook-gcp-functions/src/index.ts
+++ b/packages/whook-gcp-functions/src/index.ts
@@ -358,6 +358,7 @@ async function ensureFile(
     }
   } catch (err) {
     log('debug', `🗀 - Write new file: "${path}".`);
+    log('debug-stack', printStackTrace(err as Error));
     return await writeFile(path, content);
   }
   log('debug', `🗀 - Write changed file: "${path}".`);
diff --git a/packages/whook-gcp-functions/src/services/HANDLER.ts b/packages/whook-gcp-functions/src/services/HANDLER.ts
index d57749a6..742fd764 100644
--- a/packages/whook-gcp-functions/src/services/HANDLER.ts
+++ b/packages/whook-gcp-functions/src/services/HANDLER.ts
@@ -1,8 +1,7 @@
-import { autoService, name } from 'knifecycle';
-import { noop, applyWrappers } from '@whook/whook';
-import type { WhookWrapper } from '@whook/whook';
-import type { WhookHandler } from '@whook/http-transaction';
-import type { LogService } from 'common-services';
+import { autoService, name, location } from 'knifecycle';
+import { noop, applyWrappers, type WhookWrapper } from '@whook/whook';
+import { type WhookHandler } from '@whook/http-transaction';
+import { type LogService } from 'common-services';
 
 export type WhookHandlerDependencies<T extends WhookHandler> = {
   WRAPPERS: WhookWrapper<T>[];
@@ -11,7 +10,10 @@ export type WhookHandlerDependencies<T extends WhookHandler> = {
   log?: LogService;
 };
 
-export default name('HANDLER', autoService(initHandler));
+export default location(
+  name('HANDLER', autoService(initHandler)),
+  import.meta.url,
+);
 
 /**
  * Initialize one Whook handler
diff --git a/packages/whook-gcp-functions/src/services/_autoload.ts b/packages/whook-gcp-functions/src/services/_autoload.ts
index 29c6bee3..49f3a2af 100644
--- a/packages/whook-gcp-functions/src/services/_autoload.ts
+++ b/packages/whook-gcp-functions/src/services/_autoload.ts
@@ -7,6 +7,7 @@ import {
   wrapInitializer,
   constant,
   alsoInject,
+  location,
 } from 'knifecycle';
 import { printStackTrace, YError } from 'yerror';
 import {
@@ -61,10 +62,7 @@ const initializerWrapper: ServiceInitializerWrapper<
   }: WhookGoogleFunctionsAutoloadDependencies,
   $autoload: Autoloader<Initializer<Dependencies, Service>>,
 ): Promise<
-  (serviceName: string) => Promise<{
-    initializer: Initializer<Dependencies, Service>;
-    path: string;
-  }>
+  (serviceName: string) => Promise<Initializer<Dependencies, Service>>
 > => {
   let API: OpenAPIV3_1.Document;
   let OPERATION_APIS: WhookRawOperation<WhookAPIOperationGCPFunctionConfig>[];
@@ -79,9 +77,8 @@ const initializerWrapper: ServiceInitializerWrapper<
   > = (() => {
     return async (serviceName) => {
       const cleanedName = serviceName.split('_').pop();
-      // eslint-disable-next-line
+
       API = API || (await $injector(['API'])).API;
-      // eslint-disable-next-line
       OPERATION_APIS =
         OPERATION_APIS ||
         getOpenAPIOperations<WhookAPIOperationGCPFunctionConfig>(API);
@@ -100,7 +97,6 @@ const initializerWrapper: ServiceInitializerWrapper<
         throw new YError('E_OPERATION_NOT_FOUND', serviceName);
       }
 
-      // eslint-disable-next-line
       const OPERATION_API: OpenAPIV3_1.Document = cleanupOpenAPI({
         ...API,
         paths: {
@@ -146,10 +142,7 @@ const initializerWrapper: ServiceInitializerWrapper<
           ', ',
         )}) can give unpredictable results!`,
       );
-      return {
-        initializer: constant(serviceName, undefined),
-        path: `constant://${serviceName}`,
-      };
+      return constant(serviceName, undefined);
     }
 
     try {
@@ -170,26 +163,20 @@ const initializerWrapper: ServiceInitializerWrapper<
           'debug',
           `🤖 - Reusing a constant initializer directly from the Knifecycle instance: "${serviceName}".`,
         );
-        return {
-          initializer,
-          path: `instance://${serviceName}`,
-        };
+        return initializer;
       }
 
       if (serviceName.startsWith('OPERATION_API_')) {
         const [, , OPERATION_API] = await getAPIOperation(serviceName);
 
-        return {
-          initializer: constant(serviceName, OPERATION_API),
-          path: `api://${serviceName}`,
-        };
+        return constant(serviceName, OPERATION_API);
       }
 
       if (serviceName.startsWith('OPERATION_WRAPPER_')) {
         const [type] = await getAPIOperation(serviceName);
 
-        return {
-          initializer: alsoInject(
+        return location(
+          alsoInject(
             [
               `OPERATION_API>${serviceName.replace(
                 'OPERATION_WRAPPER_',
@@ -197,18 +184,16 @@ const initializerWrapper: ServiceInitializerWrapper<
               )}`,
             ],
             GCP_WRAPPERS[type].initializer as any,
-          ) as any,
-          path: `@whook/gcp-functions/dist/wrappers/${GCP_WRAPPERS[type].name}.js`,
-        };
+          ),
+          `@whook/gcp-functions/dist/wrappers/${GCP_WRAPPERS[type].name}.js`,
+        );
       }
 
       if (serviceName.startsWith('OPERATION_HANDLER_')) {
         const [, operationId] = await getAPIOperation(serviceName);
 
-        return {
-          name: serviceName,
-          // eslint-disable-next-line @typescript-eslint/no-explicit-any
-          initializer: alsoInject(
+        return location(
+          alsoInject(
             [
               `mainWrapper>OPERATION_WRAPPER_${serviceName.replace(
                 'OPERATION_HANDLER_',
@@ -217,16 +202,13 @@ const initializerWrapper: ServiceInitializerWrapper<
               `baseHandler>${operationId}`,
             ],
             initHandler,
-          ) as any,
-          path: '@whook/gcp-functions/dist/services/HANDLER.js',
-        };
+          ),
+          '@whook/gcp-functions/dist/services/HANDLER.js',
+        );
       }
 
       if (BUILD_CONSTANTS[serviceName]) {
-        return {
-          initializer: constant(serviceName, BUILD_CONSTANTS[serviceName]),
-          path: `constant://${serviceName}`,
-        };
+        return constant(serviceName, BUILD_CONSTANTS[serviceName]);
       }
 
       return $autoload(serviceName);
diff --git a/packages/whook-gcp-functions/src/services/log.ts b/packages/whook-gcp-functions/src/services/log.ts
index 6c2153c6..2c4ab45d 100644
--- a/packages/whook-gcp-functions/src/services/log.ts
+++ b/packages/whook-gcp-functions/src/services/log.ts
@@ -1,4 +1,7 @@
-import { service } from 'knifecycle';
+import { service, location } from 'knifecycle';
 import { log } from 'node:console';
 
-export default service(async () => log, 'log');
+export default location(
+  service(async () => log, 'log'),
+  import.meta.url,
+);
diff --git a/packages/whook-gcp-functions/src/wrappers/wrapHandlerForGoogleHTTPFunction.ts b/packages/whook-gcp-functions/src/wrappers/wrapHandlerForGoogleHTTPFunction.ts
index beb5f3df..d7881841 100644
--- a/packages/whook-gcp-functions/src/wrappers/wrapHandlerForGoogleHTTPFunction.ts
+++ b/packages/whook-gcp-functions/src/wrappers/wrapHandlerForGoogleHTTPFunction.ts
@@ -233,7 +233,8 @@ async function handleForAWSHTTPFunction(
   req,
   res,
 ) {
-  const bufferLimit = bytes.parse(BUFFER_LIMIT);
+  const bufferLimit =
+    bytes.parse(BUFFER_LIMIT) || (bytes.parse(DEFAULT_BUFFER_LIMIT) as number);
 
   log?.(
     'info',
diff --git a/packages/whook-graphiql/eslint.config.js b/packages/whook-graphiql/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-graphiql/eslint.config.js
+++ b/packages/whook-graphiql/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-graphiql/package.json b/packages/whook-graphiql/package.json
index 40d89e6e..2676f645 100644
--- a/packages/whook-graphiql/package.json
+++ b/packages/whook-graphiql/package.json
@@ -69,30 +69,30 @@
   "dependencies": {
     "@whook/whook": "^17.0.2",
     "apollo-server-module-graphiql": "^1.4.0",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "yerror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
     "@whook/http-router": "^17.0.2",
-    "axios": "^1.7.7",
-    "eslint": "^9.7.0",
+    "axios": "^1.7.9",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -140,6 +140,6 @@
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-graphql/eslint.config.js b/packages/whook-graphql/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-graphql/eslint.config.js
+++ b/packages/whook-graphql/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-graphql/package.json b/packages/whook-graphql/package.json
index 90bda5d6..3b7b5121 100644
--- a/packages/whook-graphql/package.json
+++ b/packages/whook-graphql/package.json
@@ -70,34 +70,34 @@
     "@apollo/server": "^4.11.2",
     "@whook/http-transaction": "^17.0.2",
     "@whook/whook": "^17.0.2",
-    "common-services": "^16.0.4",
-    "knifecycle": "^17.3.0",
+    "common-services": "^17.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
     "@whook/authorization": "^17.0.2",
-    "axios": "^1.7.7",
-    "eslint": "^9.7.0",
+    "axios": "^1.7.9",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "graphql": "^16.9.0",
     "graphql-tag": "^2.12.6",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -145,6 +145,6 @@
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-graphql/src/handlers/getGraphQL.ts b/packages/whook-graphql/src/handlers/getGraphQL.ts
index d68fb4b5..e025352e 100644
--- a/packages/whook-graphql/src/handlers/getGraphQL.ts
+++ b/packages/whook-graphql/src/handlers/getGraphQL.ts
@@ -1,9 +1,9 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import initPostGraphQL, {
   definition as postGraphQLDefinition,
 } from './postGraphQL.js';
 import { YHTTPError } from 'yhttperror';
-import type { WhookAPIHandlerDefinition, WhookOperation } from '@whook/whook';
+import { type WhookAPIHandlerDefinition, type WhookOperation } from '@whook/whook';
 
 export const definition: WhookAPIHandlerDefinition = {
   path: postGraphQLDefinition.path,
@@ -57,7 +57,7 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(getGraphQL);
+export default location(autoHandler(getGraphQL), import.meta.url);
 
 async function getGraphQL<T extends Record<string, unknown>>(
   { postGraphQL }: { postGraphQL: Awaited<ReturnType<typeof initPostGraphQL>> },
diff --git a/packages/whook-graphql/src/handlers/postGraphQL.ts b/packages/whook-graphql/src/handlers/postGraphQL.ts
index fbf1ab9a..b2fb059c 100644
--- a/packages/whook-graphql/src/handlers/postGraphQL.ts
+++ b/packages/whook-graphql/src/handlers/postGraphQL.ts
@@ -1,8 +1,8 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { YHTTPError } from 'yhttperror';
 import { printStackTrace } from 'yerror';
 import { noop } from '@whook/whook';
-import { HTTPGraphQLRequest, HeaderMap } from '@apollo/server';
+import { type HTTPGraphQLRequest, HeaderMap } from '@apollo/server';
 import type {
   WhookAPIHandlerDefinition,
   WhookOperation,
@@ -68,9 +68,10 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(postGraphQL) as unknown as <
-  T extends Record<string, unknown>,
->(services: {
+export default location(
+  autoHandler(postGraphQL),
+  import.meta.url,
+) as unknown as <T extends Record<string, unknown>>(services: {
   GRAPHQL_SERVER_CONTEXT_FUNCTION?: WhookGraphQLContext;
   graphQL: WhookGraphQLService;
   log: LogService;
diff --git a/packages/whook-graphql/src/services/graphQL.ts b/packages/whook-graphql/src/services/graphQL.ts
index 1b58b2a5..7133ec81 100644
--- a/packages/whook-graphql/src/services/graphQL.ts
+++ b/packages/whook-graphql/src/services/graphQL.ts
@@ -1,11 +1,9 @@
-import { autoProvider } from 'knifecycle';
+import { autoProvider, location, type Provider } from 'knifecycle';
 import { noop, WhookOperation } from '@whook/whook';
-import { ApolloServer } from '@apollo/server';
+import { ApolloServer, type ApolloServerOptions } from '@apollo/server';
 import { makeExecutableSchema } from '@graphql-tools/schema';
-import type { Provider } from 'knifecycle';
-import type { LogService } from 'common-services';
-import type { ApolloServerOptions } from '@apollo/server';
-import type { GraphQLSchema, DocumentNode } from 'graphql';
+import { type LogService } from 'common-services';
+import { type GraphQLSchema, type DocumentNode } from 'graphql';
 
 type ElementOf<A> = A extends (infer T)[] ? T : never;
 type IResolvers = ElementOf<
@@ -43,7 +41,7 @@ export type WhookGraphQLDependencies = WhookGraphQLConfig & {
   log: LogService;
 };
 
-export default autoProvider(initGraphQL);
+export default location(autoProvider(initGraphQL), import.meta.url);
 
 /**
  * Initialize the GraphQL service
diff --git a/packages/whook-http-router/eslint.config.js b/packages/whook-http-router/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-http-router/eslint.config.js
+++ b/packages/whook-http-router/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-http-router/package.json b/packages/whook-http-router/package.json
index f7c13c22..7e3ded8d 100644
--- a/packages/whook-http-router/package.json
+++ b/packages/whook-http-router/package.json
@@ -56,47 +56,47 @@
     "@apidevtools/swagger-parser": "^10.1.0",
     "@types/content-type": "^1.1.8",
     "@types/negotiator": "^0.6.3",
-    "@types/qs": "^6.9.16",
+    "@types/qs": "^6.9.17",
     "@whook/http-transaction": "^17.0.2",
     "ajv": "^8.17.1",
     "ajv-formats": "^3.0.1",
-    "application-services": "^6.1.0",
+    "application-services": "^7.0.0",
     "bytes": "^3.1.2",
     "camelcase": "^8.0.0",
     "content-type": "^1.0.5",
     "first-chunk-stream": "^6.0.0",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "miniquery": "^1.1.2",
     "ms": "^2.1.3",
-    "negotiator": "^0.6.3",
+    "negotiator": "^1.0.0",
     "openapi-types": "^12.1.3",
-    "qs": "^6.13.0",
+    "qs": "^6.13.1",
     "siso": "^6.0.2",
     "strict-qs": "^8.0.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "streamtest": "^2.0.0",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -158,6 +158,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-http-router/src/index.ts b/packages/whook-http-router/src/index.ts
index 67207927..2c9417c6 100644
--- a/packages/whook-http-router/src/index.ts
+++ b/packages/whook-http-router/src/index.ts
@@ -1,6 +1,6 @@
 import bytes from 'bytes';
 import Stream from 'stream';
-import { initializer } from 'knifecycle';
+import { initializer, location } from 'knifecycle';
 import { YHTTPError } from 'yhttperror';
 import { printStackTrace, YError } from 'yerror';
 import { Siso } from 'siso';
@@ -210,28 +210,31 @@ Here, the single source of truth is your API
  definition. No documentation, no route.
 */
 
-export default initializer(
-  {
-    name: 'httpRouter',
-    type: 'provider',
-    inject: [
-      'ENV',
-      '?DEBUG_NODE_ENVS',
-      '?BUFFER_LIMIT',
-      '?BASE_PATH',
-      'HANDLERS',
-      'API',
-      '?PARSERS',
-      '?STRINGIFYERS',
-      '?DECODERS',
-      '?ENCODERS',
-      '?QUERY_PARSER',
-      '?log',
-      'httpTransaction',
-      'errorHandler',
-    ],
-  },
-  initHTTPRouter,
+export default location(
+  initializer(
+    {
+      name: 'httpRouter',
+      type: 'provider',
+      inject: [
+        'ENV',
+        '?DEBUG_NODE_ENVS',
+        '?BUFFER_LIMIT',
+        '?BASE_PATH',
+        'HANDLERS',
+        'API',
+        '?PARSERS',
+        '?STRINGIFYERS',
+        '?DECODERS',
+        '?ENCODERS',
+        '?QUERY_PARSER',
+        '?log',
+        'httpTransaction',
+        'errorHandler',
+      ],
+    },
+    initHTTPRouter,
+  ),
+  import.meta.url,
 );
 
 /**
@@ -289,7 +292,8 @@ async function initHTTPRouter<T extends WhookHandler>({
   httpTransaction,
   errorHandler,
 }: WhookHTTPRouterDependencies<T>): Promise<WhookHTTPRouterProvider> {
-  const bufferLimit = bytes.parse(BUFFER_LIMIT);
+  const bufferLimit =
+    bytes.parse(BUFFER_LIMIT) || (bytes.parse(DEFAULT_BUFFER_LIMIT) as number);
   const consumableCharsets = Object.keys(DECODERS);
   const produceableCharsets = Object.keys(ENCODERS);
   const defaultResponseSpec = {
diff --git a/packages/whook-http-router/src/services/errorHandler.ts b/packages/whook-http-router/src/services/errorHandler.ts
index 9b2a5c97..4a885fc3 100644
--- a/packages/whook-http-router/src/services/errorHandler.ts
+++ b/packages/whook-http-router/src/services/errorHandler.ts
@@ -1,16 +1,16 @@
-import { initializer } from 'knifecycle';
+import { initializer, location } from 'knifecycle';
 import {
   DEFAULT_DEBUG_NODE_ENVS,
   DEFAULT_STRINGIFYERS,
 } from '../libs/constants.js';
 import miniquery from 'miniquery';
 import { printStackTrace, YError } from 'yerror';
-import type { WhookStringifyers } from '../index.js';
-import type { WhookResponseSpec } from '../libs/utils.js';
-import type { WhookResponse } from '@whook/http-transaction';
-import type { YHTTPError } from 'yhttperror';
-import type { OpenAPIV3_1 } from 'openapi-types';
-import type { AppEnvVars } from 'application-services';
+import { type WhookStringifyers } from '../index.js';
+import { type WhookResponseSpec } from '../libs/utils.js';
+import { type WhookResponse } from '@whook/http-transaction';
+import { type YHTTPError } from 'yhttperror';
+import { type OpenAPIV3_1 } from 'openapi-types';
+import { type AppEnvVars } from 'application-services';
 
 /* Architecture Note #2: Error handler
 
@@ -360,19 +360,22 @@ export const WhookErrorSchema: OpenAPIV3_1.SchemaObject = {
   },
 };
 
-export default initializer(
-  {
-    name: 'errorHandler',
-    type: 'service',
-    inject: [
-      'ENV',
-      '?DEBUG_NODE_ENVS',
-      '?STRINGIFYERS',
-      '?ERRORS_DESCRIPTORS',
-      '?DEFAULT_ERROR_CODE',
-    ],
-  },
-  initErrorHandler,
+export default location(
+  initializer(
+    {
+      name: 'errorHandler',
+      type: 'service',
+      inject: [
+        'ENV',
+        '?DEBUG_NODE_ENVS',
+        '?STRINGIFYERS',
+        '?ERRORS_DESCRIPTORS',
+        '?DEFAULT_ERROR_CODE',
+      ],
+    },
+    initErrorHandler,
+  ),
+  import.meta.url,
 );
 
 /**
diff --git a/packages/whook-http-server/eslint.config.js b/packages/whook-http-server/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-http-server/eslint.config.js
+++ b/packages/whook-http-server/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-http-server/package.json b/packages/whook-http-server/package.json
index ace04ca9..c6e31172 100644
--- a/packages/whook-http-server/package.json
+++ b/packages/whook-http-server/package.json
@@ -54,29 +54,29 @@
   "homepage": "https://github.com/nfroidure/whook",
   "dependencies": {
     "@whook/http-router": "^17.0.2",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "ms": "^2.1.3",
     "yerror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "axios": "^1.7.7",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "axios": "^1.7.9",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -138,6 +138,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-http-server/src/index.test.ts b/packages/whook-http-server/src/index.test.ts
index 09713054..b2a7c4a8 100644
--- a/packages/whook-http-server/src/index.test.ts
+++ b/packages/whook-http-server/src/index.test.ts
@@ -25,7 +25,9 @@ describe('initHTTPServer', () => {
       httpRouter,
     });
 
-    httpServer.dispose && (await httpServer.dispose());
+    if (httpServer.dispose) {
+      await httpServer.dispose();
+    }
 
     expect({
       logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
@@ -43,7 +45,9 @@ describe('initHTTPServer', () => {
       httpRouter,
     });
 
-    httpServer.dispose && (await httpServer.dispose());
+    if (httpServer.dispose) {
+      await httpServer.dispose();
+    }
 
     expect({
       logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
@@ -70,7 +74,9 @@ describe('initHTTPServer', () => {
       await httpServer.fatalErrorPromise;
       throw new YError('E_UNEXPECTED_SUCCESS');
     } catch (err) {
-      httpServer.dispose && (await httpServer.dispose());
+      if (httpServer.dispose) {
+        await httpServer.dispose();
+      }
 
       expect({
         errorCode: (err as YError).code,
@@ -111,7 +117,10 @@ describe('initHTTPServer', () => {
         httpServer.service.close.bind(httpServer.service),
       ) as unknown as typeof httpServer.service.close;
 
-      httpServer.dispose && (await httpServer.dispose());
+      if (httpServer.dispose) {
+        await httpServer.dispose();
+      }
+
       throw new YError('E_UNEXPECTED_SUCCESS');
     } catch (err) {
       expect({
@@ -144,7 +153,9 @@ describe('initHTTPServer', () => {
       client.write('GET / HTTP/1.1\r\n\r\n');
     });
 
-    httpServer.dispose && (await httpServer.dispose());
+    if (httpServer.dispose) {
+      await httpServer.dispose();
+    }
 
     expect({
       logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
@@ -175,7 +186,9 @@ describe('initHTTPServer', () => {
       validateStatus: () => true,
     });
 
-    httpServer.dispose && (await httpServer.dispose());
+    if (httpServer.dispose) {
+      await httpServer.dispose();
+    }
 
     expect({
       status,
diff --git a/packages/whook-http-server/src/index.ts b/packages/whook-http-server/src/index.ts
index 3f4739c2..8f33f6ff 100644
--- a/packages/whook-http-server/src/index.ts
+++ b/packages/whook-http-server/src/index.ts
@@ -1,11 +1,11 @@
-import { name, autoProvider } from 'knifecycle';
+import { name, autoProvider, location } from 'knifecycle';
 import http from 'node:http';
 import ms from 'ms';
 import { YError } from 'yerror';
-import type { Provider } from 'knifecycle';
-import type { LogService } from 'common-services';
-import type { WhookHTTPRouterService } from '@whook/http-router';
-import type { Socket } from 'net';
+import { type Provider } from 'knifecycle';
+import { type LogService } from 'common-services';
+import { type WhookHTTPRouterService } from '@whook/http-router';
+import { type Socket } from 'net';
 
 export type WhookHTTPServerEnv = {
   DESTROY_SOCKETS?: string;
@@ -50,7 +50,10 @@ const DEFAULT_HTTP_SERVER_OPTIONS: WhookHTTPServerOptions = {
   maxConnections: 0,
 };
 
-export default name('httpServer', autoProvider(initHTTPServer));
+export default location(
+  name('httpServer', autoProvider(initHTTPServer)),
+  import.meta.url,
+);
 
 /**
  * Initialize an HTTP server
diff --git a/packages/whook-http-transaction/eslint.config.js b/packages/whook-http-transaction/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-http-transaction/eslint.config.js
+++ b/packages/whook-http-transaction/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-http-transaction/package.json b/packages/whook-http-transaction/package.json
index 9a1e4ed4..67d02ae5 100644
--- a/packages/whook-http-transaction/package.json
+++ b/packages/whook-http-transaction/package.json
@@ -54,36 +54,36 @@
   },
   "homepage": "https://github.com/nfroidure/whook",
   "dependencies": {
-    "common-services": "^16.0.4",
-    "knifecycle": "^17.3.0",
+    "common-services": "^17.0.0",
+    "knifecycle": "^18.0.0",
     "ms": "^2.1.3",
     "openapi-types": "^12.1.3",
     "statuses": "^2.0.1",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
     "@types/streamtest": "^1.2.0",
-    "eslint": "^9.7.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsarch": "^6.1.2",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "streamtest": "^2.0.0",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -152,6 +152,6 @@
     }
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-http-transaction/src/index.ts b/packages/whook-http-transaction/src/index.ts
index 1274d32c..977269fe 100644
--- a/packages/whook-http-transaction/src/index.ts
+++ b/packages/whook-http-transaction/src/index.ts
@@ -1,4 +1,4 @@
-import { service } from 'knifecycle';
+import { service, location } from 'knifecycle';
 import { YHTTPError } from 'yhttperror';
 import statuses from 'statuses';
 import ms from 'ms';
@@ -101,7 +101,6 @@ export declare type WhookResponse<
         body: B;
       });
 
-// eslint-disable-next-line
 export type WhookHandlerFunction<
   D extends Dependencies,
   P extends Parameters,
@@ -178,16 +177,19 @@ You can simply do this by wrapping this service. See
  [`@whook/method-override`](../whook-method-override/README.md)
  for a working example.
  */
-export default service(initHTTPTransaction, 'httpTransaction', [
-  '?TIMEOUT',
-  '?TRANSACTIONS',
-  'delay',
-  'obfuscator',
-  '?log',
-  '?apm',
-  '?time',
-  '?uniqueId',
-]);
+export default location(
+  service(initHTTPTransaction, 'httpTransaction', [
+    '?TIMEOUT',
+    '?TRANSACTIONS',
+    'delay',
+    'obfuscator',
+    '?log',
+    '?apm',
+    '?time',
+    '?uniqueId',
+  ]),
+  import.meta.url,
+);
 
 /**
  * Instantiate the httpTransaction service
diff --git a/packages/whook-http-transaction/src/services/apm.ts b/packages/whook-http-transaction/src/services/apm.ts
index 996dbb85..52221ea7 100644
--- a/packages/whook-http-transaction/src/services/apm.ts
+++ b/packages/whook-http-transaction/src/services/apm.ts
@@ -1,6 +1,6 @@
-import { name, autoService } from 'knifecycle';
-import type { LogService } from 'common-services';
-import type { JsonValue } from 'type-fest';
+import { name, autoService, location } from 'knifecycle';
+import { type LogService } from 'common-services';
+import { type JsonValue } from 'type-fest';
 
 export type WhookAPMDependencies = {
   log: LogService;
@@ -10,7 +10,7 @@ export type WhookAPMService<T extends string = string> = (
   data: JsonValue,
 ) => void;
 
-export default name('apm', autoService(initAPM));
+export default location(name('apm', autoService(initAPM)), import.meta.url);
 
 const noop = () => undefined;
 
diff --git a/packages/whook-http-transaction/src/services/obfuscator.ts b/packages/whook-http-transaction/src/services/obfuscator.ts
index 066cae93..b808ef07 100644
--- a/packages/whook-http-transaction/src/services/obfuscator.ts
+++ b/packages/whook-http-transaction/src/services/obfuscator.ts
@@ -1,7 +1,7 @@
-import { autoService } from 'knifecycle';
-import type { LogService } from 'common-services';
-import type { JsonValue } from 'type-fest';
-import type { WhookHeaders } from '../index.js';
+import { autoService, location } from 'knifecycle';
+import { type LogService } from 'common-services';
+import { type JsonValue } from 'type-fest';
+import { type WhookHeaders } from '../index.js';
 
 export type WhookSensibleValueDescriptor = {
   name: string;
@@ -27,7 +27,7 @@ export type WhookObfuscatorService = {
   obfuscateSensibleHeaders: (headers: WhookHeaders) => WhookHeaders;
 };
 
-export default autoService(initObfuscator);
+export default location(autoService(initObfuscator), import.meta.url);
 
 const noop = () => undefined;
 
diff --git a/packages/whook-method-override/eslint.config.js b/packages/whook-method-override/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-method-override/eslint.config.js
+++ b/packages/whook-method-override/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-method-override/package.json b/packages/whook-method-override/package.json
index cb3f00a5..7927229e 100644
--- a/packages/whook-method-override/package.json
+++ b/packages/whook-method-override/package.json
@@ -54,28 +54,28 @@
   "dependencies": {
     "@whook/http-transaction": "^17.0.2",
     "@whook/whook": "^17.0.2",
-    "common-services": "^16.0.4",
-    "knifecycle": "^17.3.0",
+    "common-services": "^17.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -137,6 +137,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-oauth2/eslint.config.js b/packages/whook-oauth2/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-oauth2/eslint.config.js
+++ b/packages/whook-oauth2/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-oauth2/package.json b/packages/whook-oauth2/package.json
index d6e57c47..cd0aed2f 100644
--- a/packages/whook-oauth2/package.json
+++ b/packages/whook-oauth2/package.json
@@ -46,33 +46,33 @@
     "@whook/authorization": "^17.0.2",
     "@whook/whook": "^17.0.2",
     "camelcase": "^8.0.0",
-    "common-services": "^16.0.4",
-    "cookie": "^1.0.1",
-    "knifecycle": "^17.3.0",
+    "common-services": "^17.0.0",
+    "cookie": "^1.0.2",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yerror": "^8.0.0",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "http-auth-utils": "^6.0.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -134,6 +134,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-oauth2/src/handlers/getOAuth2Authorize.ts b/packages/whook-oauth2/src/handlers/getOAuth2Authorize.ts
index 3e88310d..151ca7c0 100644
--- a/packages/whook-oauth2/src/handlers/getOAuth2Authorize.ts
+++ b/packages/whook-oauth2/src/handlers/getOAuth2Authorize.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import camelCase from 'camelcase';
 import { YError, printStackTrace } from 'yerror';
 import { refersTo } from '@whook/whook';
@@ -104,7 +104,7 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(getOAuth2Authorize);
+export default location(autoHandler(getOAuth2Authorize), import.meta.url);
 
 async function getOAuth2Authorize(
   {
diff --git a/packages/whook-oauth2/src/handlers/postAuthLogin.ts b/packages/whook-oauth2/src/handlers/postAuthLogin.ts
index 675dae4f..bd346c22 100644
--- a/packages/whook-oauth2/src/handlers/postAuthLogin.ts
+++ b/packages/whook-oauth2/src/handlers/postAuthLogin.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { YHTTPError } from 'yhttperror';
 import initPostOauth2Token from './postOAuth2Token.js';
 import { AUTH_API_PREFIX } from '../services/authCookies.js';
@@ -58,7 +58,7 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(postAuthLogin);
+export default location(autoHandler(postAuthLogin), import.meta.url);
 
 async function postAuthLogin<
   AUTHENTICATION_DATA extends BaseAuthenticationData = BaseAuthenticationData,
diff --git a/packages/whook-oauth2/src/handlers/postAuthLogout.ts b/packages/whook-oauth2/src/handlers/postAuthLogout.ts
index 4527bffe..6167788b 100644
--- a/packages/whook-oauth2/src/handlers/postAuthLogout.ts
+++ b/packages/whook-oauth2/src/handlers/postAuthLogout.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { AUTH_API_PREFIX } from '../services/authCookies.js';
 import type { WhookAPIHandlerDefinition } from '@whook/whook';
 import type { AuthCookiesService } from '../services/authCookies.js';
@@ -22,7 +22,7 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(postAuthLogout);
+export default location(autoHandler(postAuthLogout), import.meta.url);
 
 async function postAuthLogout({
   authCookies,
diff --git a/packages/whook-oauth2/src/handlers/postAuthRefresh.ts b/packages/whook-oauth2/src/handlers/postAuthRefresh.ts
index 6d73f9fd..ed829ce4 100644
--- a/packages/whook-oauth2/src/handlers/postAuthRefresh.ts
+++ b/packages/whook-oauth2/src/handlers/postAuthRefresh.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { YHTTPError } from 'yhttperror';
 import { refersTo } from '@whook/whook';
 import initPostOauth2Token from './postOAuth2Token.js';
@@ -73,7 +73,7 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(postAuthRefresh);
+export default location(autoHandler(postAuthRefresh), import.meta.url);
 
 async function postAuthRefresh<
   AUTHENTICATION_DATA extends BaseAuthenticationData = BaseAuthenticationData,
diff --git a/packages/whook-oauth2/src/handlers/postOAuth2Acknowledge.ts b/packages/whook-oauth2/src/handlers/postOAuth2Acknowledge.ts
index 2cb87447..2d388b3e 100644
--- a/packages/whook-oauth2/src/handlers/postOAuth2Acknowledge.ts
+++ b/packages/whook-oauth2/src/handlers/postOAuth2Acknowledge.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { printStackTrace, YError } from 'yerror';
 import { setURLError } from './getOAuth2Authorize.js';
 import type {
@@ -121,7 +121,10 @@ type HandlerParameters<AUTHENTICATION_DATA> = {
   };
 };
 
-export default autoHandler(postOAuth2Acknowledge) as unknown as <
+export default location(
+  autoHandler(postOAuth2Acknowledge),
+  import.meta.url,
+) as unknown as <
   AUTHENTICATION_DATA extends BaseAuthenticationData = BaseAuthenticationData,
 >(
   dependencies: HandlerDependencies<AUTHENTICATION_DATA>,
diff --git a/packages/whook-oauth2/src/handlers/postOAuth2Token.ts b/packages/whook-oauth2/src/handlers/postOAuth2Token.ts
index 5c68fab3..bf5294ee 100644
--- a/packages/whook-oauth2/src/handlers/postOAuth2Token.ts
+++ b/packages/whook-oauth2/src/handlers/postOAuth2Token.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { camelCaseObjectProperties } from './getOAuth2Authorize.js';
 import { noop } from '@whook/whook';
 import { YError, printStackTrace } from 'yerror';
@@ -212,7 +212,7 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(postOAuth2Token);
+export default location(autoHandler(postOAuth2Token), import.meta.url);
 
 async function postOAuth2Token<
   AUTHENTICATION_DATA extends BaseAuthenticationData = BaseAuthenticationData,
diff --git a/packages/whook-oauth2/src/services/authCookies.ts b/packages/whook-oauth2/src/services/authCookies.ts
index dc21cb9b..dc57f801 100644
--- a/packages/whook-oauth2/src/services/authCookies.ts
+++ b/packages/whook-oauth2/src/services/authCookies.ts
@@ -1,6 +1,6 @@
 import ms from 'ms';
 import cookie, { type SerializeOptions } from 'cookie';
-import { autoService } from 'knifecycle';
+import { autoService, location } from 'knifecycle';
 import { type BaseAuthenticationData } from '@whook/authorization';
 import { type Jsonify } from 'type-fest';
 
@@ -32,7 +32,7 @@ export type AuthCookiesService = {
   parse: (content: string) => Partial<AuthCookiesData>;
 };
 
-export default autoService(initAuthCookies);
+export default location(autoService(initAuthCookies), import.meta.url);
 
 async function initAuthCookies({
   COOKIES,
diff --git a/packages/whook-oauth2/src/services/oAuth2ClientCredentialsGranter.ts b/packages/whook-oauth2/src/services/oAuth2ClientCredentialsGranter.ts
index fb83b6bc..e3518c6b 100644
--- a/packages/whook-oauth2/src/services/oAuth2ClientCredentialsGranter.ts
+++ b/packages/whook-oauth2/src/services/oAuth2ClientCredentialsGranter.ts
@@ -1,4 +1,4 @@
-import { autoService } from 'knifecycle';
+import { autoService, location } from 'knifecycle';
 import { noop } from '@whook/whook';
 import { YError } from 'yerror';
 import type { LogService } from 'common-services';
@@ -30,7 +30,10 @@ export type OAuth2ClientCredentialsGranterService<
   AUTHENTICATION_DATA
 >;
 
-export default autoService(initOAuth2ClientCredentialsGranter);
+export default location(
+  autoService(initOAuth2ClientCredentialsGranter),
+  import.meta.url,
+);
 
 // Client Credentials Grant
 // https://tools.ietf.org/html/rfc6749#section-4.4
diff --git a/packages/whook-oauth2/src/services/oAuth2CodeGranter.ts b/packages/whook-oauth2/src/services/oAuth2CodeGranter.ts
index 9dd10e22..d19bb303 100644
--- a/packages/whook-oauth2/src/services/oAuth2CodeGranter.ts
+++ b/packages/whook-oauth2/src/services/oAuth2CodeGranter.ts
@@ -1,4 +1,4 @@
-import { autoService } from 'knifecycle';
+import { autoService, location } from 'knifecycle';
 import { noop } from '@whook/whook';
 import { YError } from 'yerror';
 import type { LogService } from 'common-services';
@@ -30,7 +30,7 @@ export type OAuth2CodeGranterService<
   AUTHENTICATION_DATA
 >;
 
-export default autoService(initOAuth2CodeGranter);
+export default location(autoService(initOAuth2CodeGranter), import.meta.url);
 
 // Authorization Code Grant
 // https://tools.ietf.org/html/rfc6749#section-4.1
diff --git a/packages/whook-oauth2/src/services/oAuth2Granters.ts b/packages/whook-oauth2/src/services/oAuth2Granters.ts
index 38bfeebc..72649e0e 100644
--- a/packages/whook-oauth2/src/services/oAuth2Granters.ts
+++ b/packages/whook-oauth2/src/services/oAuth2Granters.ts
@@ -1,4 +1,4 @@
-import { initializer } from 'knifecycle';
+import { initializer, location } from 'knifecycle';
 import { DEFAULT_ERROR_URI, DEFAULT_HELP_URI } from '@whook/whook';
 import type { WhookErrorsDescriptors } from '@whook/whook';
 import type { BaseAuthenticationData } from '@whook/authorization';
@@ -287,17 +287,20 @@ export type OAuth2Config = {
   ERRORS_DESCRIPTORS: WhookErrorsDescriptors;
 };
 
-export default initializer(
-  {
-    name: 'oAuth2Granters',
-    type: 'service',
-    inject: [
-      'oAuth2ClientCredentialsGranter',
-      'oAuth2CodeGranter',
-      'oAuth2PasswordGranter',
-      'oAuth2RefreshTokenGranter',
-      'oAuth2TokenGranter',
-    ],
-  },
-  async (services) => Object.keys(services).map((key) => services[key]),
+export default location(
+  initializer(
+    {
+      name: 'oAuth2Granters',
+      type: 'service',
+      inject: [
+        'oAuth2ClientCredentialsGranter',
+        'oAuth2CodeGranter',
+        'oAuth2PasswordGranter',
+        'oAuth2RefreshTokenGranter',
+        'oAuth2TokenGranter',
+      ],
+    },
+    async (services) => Object.keys(services).map((key) => services[key]),
+  ),
+  import.meta.url,
 );
diff --git a/packages/whook-oauth2/src/services/oAuth2PasswordGranter.ts b/packages/whook-oauth2/src/services/oAuth2PasswordGranter.ts
index 4b0e7b1c..d5392598 100644
--- a/packages/whook-oauth2/src/services/oAuth2PasswordGranter.ts
+++ b/packages/whook-oauth2/src/services/oAuth2PasswordGranter.ts
@@ -1,4 +1,4 @@
-import { autoService } from 'knifecycle';
+import { autoService, location } from 'knifecycle';
 import { noop } from '@whook/whook';
 import { YError } from 'yerror';
 import type { LogService } from 'common-services';
@@ -28,7 +28,10 @@ export type OAuth2PasswordGranterService<
   AUTHENTICATION_DATA
 >;
 
-export default autoService(initOAuth2PasswordGranter);
+export default location(
+  autoService(initOAuth2PasswordGranter),
+  import.meta.url,
+);
 
 // Resource Owner Password Credentials Grant
 // https://tools.ietf.org/html/rfc6749#section-4.3
diff --git a/packages/whook-oauth2/src/services/oAuth2RefreshTokenGranter.ts b/packages/whook-oauth2/src/services/oAuth2RefreshTokenGranter.ts
index 5c15c201..06df67a0 100644
--- a/packages/whook-oauth2/src/services/oAuth2RefreshTokenGranter.ts
+++ b/packages/whook-oauth2/src/services/oAuth2RefreshTokenGranter.ts
@@ -1,4 +1,4 @@
-import { autoService } from 'knifecycle';
+import { autoService, location } from 'knifecycle';
 import { noop } from '@whook/whook';
 import { YError } from 'yerror';
 import type { LogService } from 'common-services';
@@ -27,7 +27,10 @@ export type OAuth2RefreshTokenGranterService<
   AUTHENTICATION_DATA
 >;
 
-export default autoService(initOAuth2RefreshTokenGranter);
+export default location(
+  autoService(initOAuth2RefreshTokenGranter),
+  import.meta.url,
+);
 
 // Refresh Token Grant
 // https://tools.ietf.org/html/rfc6749#page-47
diff --git a/packages/whook-oauth2/src/services/oAuth2TokenGranter.ts b/packages/whook-oauth2/src/services/oAuth2TokenGranter.ts
index 23c828d4..56519ac0 100644
--- a/packages/whook-oauth2/src/services/oAuth2TokenGranter.ts
+++ b/packages/whook-oauth2/src/services/oAuth2TokenGranter.ts
@@ -1,4 +1,4 @@
-import { autoService } from 'knifecycle';
+import { autoService, location } from 'knifecycle';
 import { noop } from '@whook/whook';
 import type { LogService, TimeService } from 'common-services';
 import type {
@@ -28,7 +28,7 @@ export type OAuth2TokenGranterService<
   AUTHENTICATION_DATA
 >;
 
-export default autoService(initOAuth2TokenGranter);
+export default location(autoService(initOAuth2TokenGranter), import.meta.url);
 
 // Implicit Grant
 // https://tools.ietf.org/html/rfc6749#section-4.2
diff --git a/packages/whook-swagger-ui/eslint.config.js b/packages/whook-swagger-ui/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-swagger-ui/eslint.config.js
+++ b/packages/whook-swagger-ui/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-swagger-ui/package.json b/packages/whook-swagger-ui/package.json
index 1385a125..a4ffd2ec 100644
--- a/packages/whook-swagger-ui/package.json
+++ b/packages/whook-swagger-ui/package.json
@@ -71,31 +71,31 @@
     "@types/swagger-ui": "3.52.4",
     "@whook/http-router": "^17.0.2",
     "@whook/whook": "^17.0.2",
-    "axios": "^1.7.7",
+    "axios": "^1.7.9",
     "ecstatic": "^4.1.4",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
-    "swagger-ui-dist": "^5.17.14",
-    "type-fest": "^4.26.1"
+    "swagger-ui-dist": "^5.18.2",
+    "type-fest": "^4.30.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -143,6 +143,6 @@
     "prettierPath": null
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook-swagger-ui/src/handlers/getOpenAPI.ts b/packages/whook-swagger-ui/src/handlers/getOpenAPI.ts
index c0dfed8a..d3c994e6 100644
--- a/packages/whook-swagger-ui/src/handlers/getOpenAPI.ts
+++ b/packages/whook-swagger-ui/src/handlers/getOpenAPI.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { getOpenAPIOperations } from '@whook/http-router';
 import SwaggerParser from '@apidevtools/swagger-parser';
 import type { WhookAPIHandlerDefinition, WhookResponse } from '@whook/whook';
@@ -8,7 +8,7 @@ export type WhookAPIOperationSwaggerConfig = {
   private?: boolean;
 };
 
-export default autoHandler(getOpenAPI);
+export default location(autoHandler(getOpenAPI), import.meta.url);
 
 export const definition: WhookAPIHandlerDefinition = {
   path: '/openAPI',
diff --git a/packages/whook-versions/eslint.config.js b/packages/whook-versions/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook-versions/eslint.config.js
+++ b/packages/whook-versions/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook-versions/package.json b/packages/whook-versions/package.json
index aa28ebce..7f9a71fe 100644
--- a/packages/whook-versions/package.json
+++ b/packages/whook-versions/package.json
@@ -54,30 +54,30 @@
   "homepage": "https://github.com/nfroidure/whook",
   "dependencies": {
     "@whook/whook": "^17.0.2",
-    "application-services": "^6.1.0",
-    "knifecycle": "^17.3.0",
+    "application-services": "^7.0.0",
+    "knifecycle": "^18.0.0",
     "openapi-types": "^12.1.3",
     "semver": "^7.6.3",
     "yhttperror": "^8.0.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
-    "eslint": "^9.7.0",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "contributors": [],
   "engines": {
@@ -139,6 +139,6 @@
     "type-check": "tsc --pretty --noEmit"
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook/eslint.config.js b/packages/whook/eslint.config.js
index 628979f2..1a2ee197 100644
--- a/packages/whook/eslint.config.js
+++ b/packages/whook/eslint.config.js
@@ -9,8 +9,14 @@ import eslintConfigPrettier from 'eslint-config-prettier';
 import eslintPluginJest from 'eslint-plugin-jest';
 
 export default tseslint.config(
-  eslint.configs.recommended,
-  ...tseslint.configs.recommended,
+  {
+    files: ['**/*.ts'],
+    ignores: ['**/*.d.ts'],
+    extends: [
+      eslint.configs.recommended,
+      ...tseslint.configs.recommended,
+    ],
+  },
   {
     files: ['*.test.ts'],
     ...eslintPluginJest.configs['flat/recommended'],
diff --git a/packages/whook/package.json b/packages/whook/package.json
index e284409e..bc5def76 100644
--- a/packages/whook/package.json
+++ b/packages/whook/package.json
@@ -76,34 +76,34 @@
   },
   "homepage": "https://github.com/nfroidure/whook",
   "peerDependencies": {
-    "esbuild": ">=0.23.0",
-    "esbuild-node-externals": ">=1.14.0"
+    "esbuild": ">=0.24.0",
+    "esbuild-node-externals": ">=1.15.0"
   },
   "devDependencies": {
-    "@eslint/js": "^9.7.0",
-    "@swc/cli": "^0.4.0",
-    "@swc/core": "^1.6.13",
-    "@swc/helpers": "^0.5.12",
-    "@swc/jest": "^0.2.36",
+    "@eslint/js": "^9.16.0",
+    "@swc/cli": "^0.5.2",
+    "@swc/core": "^1.10.0",
+    "@swc/helpers": "^0.5.15",
+    "@swc/jest": "^0.2.37",
     "@types/fs-extra": "^11.0.4",
     "@types/inquirer": "^9.0.7",
     "@types/streamtest": "^1.2.2",
     "@types/yargs-parser": "^21.0.3",
-    "esbuild-node-externals": "^1.14.0",
-    "eslint": "^9.7.0",
+    "esbuild-node-externals": "^1.15.0",
+    "eslint": "^9.16.0",
     "eslint-config-prettier": "^9.1.0",
-    "eslint-plugin-jest": "^28.6.0",
-    "eslint-plugin-prettier": "^5.1.3",
+    "eslint-plugin-jest": "^28.9.0",
+    "eslint-plugin-prettier": "^5.2.1",
     "jest": "^29.7.0",
-    "jsarch": "^6.0.3",
-    "jsdoc-to-markdown": "^8.0.0",
+    "jsarch": "^6.1.2",
+    "jsdoc-to-markdown": "^9.1.1",
     "metapak": "^6.0.1",
-    "metapak-nfroidure": "18.2.0",
-    "prettier": "^3.3.3",
+    "metapak-nfroidure": "19.0.1",
+    "prettier": "^3.4.2",
     "rimraf": "^6.0.1",
     "streamtest": "^2.0.0",
-    "typescript": "^5.5.3",
-    "typescript-eslint": "^7.16.0"
+    "typescript": "^5.7.2",
+    "typescript-eslint": "^8.17.0"
   },
   "dependencies": {
     "@whook/http-router": "^17.0.2",
@@ -111,22 +111,22 @@
     "@whook/http-transaction": "^17.0.2",
     "ajv": "^8.17.1",
     "ajv-formats": "^3.0.1",
-    "application-services": "^6.1.0",
+    "application-services": "^7.0.0",
     "camelcase": "^8.0.0",
-    "common-services": "^16.0.4",
+    "common-services": "^17.0.0",
     "debug": "^4.3.7",
     "fs-extra": "^11.2.0",
     "ignore": "^5.3.1",
-    "inquirer": "^11.1.0",
+    "inquirer": "^12.1.0",
     "internal-ip": "^8.0.0",
-    "knifecycle": "^17.3.0",
+    "knifecycle": "^18.0.0",
     "miniquery": "^1.1.2",
     "mkdirp": "^3.0.1",
     "openapi-types": "^12.1.3",
     "pkg-dir": "^8.0.0",
     "portfinder": "^1.0.32",
     "schema2dts": "^7.0.2",
-    "type-fest": "^4.26.1",
+    "type-fest": "^4.30.0",
     "yargs-parser": "^21.1.1",
     "yerror": "^8.0.0"
   },
@@ -183,6 +183,6 @@
     }
   },
   "overrides": {
-    "eslint": "^9.7.0"
+    "eslint": "^9.16.0"
   }
-}
+}
\ No newline at end of file
diff --git a/packages/whook/src/build.ts b/packages/whook/src/build.ts
index c3cfd677..232e1065 100644
--- a/packages/whook/src/build.ts
+++ b/packages/whook/src/build.ts
@@ -123,7 +123,6 @@ export async function runBuild(
         : Promise.resolve(),
     ]);
   } catch (err) {
-    // eslint-disable-next-line
     stderr.write(
       `💀 - Cannot launch the build: ${printStackTrace(err as Error)}`,
     );
@@ -145,6 +144,7 @@ async function ensureFile(
     }
   } catch (err) {
     log('debug', `🗀 - Write new file: "${path}".`);
+    log('debug-stack', printStackTrace(err as Error));
     return await writeFile(path, content);
   }
   log('debug', `🗀 - Write changed file: "${path}".`);
diff --git a/packages/whook/src/commands/config.ts b/packages/whook/src/commands/config.ts
index 16b79167..e03843d6 100644
--- a/packages/whook/src/commands/config.ts
+++ b/packages/whook/src/commands/config.ts
@@ -2,13 +2,12 @@ import { extra, autoService } from 'knifecycle';
 import { readArgs } from '../libs/args.js';
 import { YError } from 'yerror';
 import miniquery from 'miniquery';
-import { noop } from '../libs/utils.js';
-import type { AppConfig } from 'application-services';
-import type { LogService } from 'common-services';
-import type {
-  WhookPromptArgs,
-  WhookCommandDefinition,
-  WhookCommandHandler,
+import { type AppConfig } from 'application-services';
+import { noop, type LogService } from 'common-services';
+import {
+  type WhookPromptArgs,
+  type WhookCommandDefinition,
+  type WhookCommandHandler,
 } from '../services/promptArgs.js';
 
 export const definition: WhookCommandDefinition = {
diff --git a/packages/whook/src/commands/inspect.test.ts b/packages/whook/src/commands/inspect.test.ts
index 6a0a35a2..81193fb5 100644
--- a/packages/whook/src/commands/inspect.test.ts
+++ b/packages/whook/src/commands/inspect.test.ts
@@ -360,7 +360,7 @@ describe('inspectCommand', () => {
       expect({
         promptArgsCalls: promptArgs.mock.calls,
         injectorCalls: $injector.mock.calls,
-        logCalls: log.mock.calls.filter((args) => 'debug-stack' !== args[0]),
+        logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
       }).toMatchInlineSnapshot(`
         {
           "injectorCalls": [
@@ -424,7 +424,7 @@ describe('inspectCommand', () => {
       expect({
         promptArgsCalls: promptArgs.mock.calls,
         injectorCalls: $injector.mock.calls,
-        logCalls: log.mock.calls.filter((args) => 'debug-stack' !== args[0]),
+        logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
       }).toMatchInlineSnapshot(`
         {
           "injectorCalls": [
diff --git a/packages/whook/src/commands/inspect.ts b/packages/whook/src/commands/inspect.ts
index a49095be..9faba686 100644
--- a/packages/whook/src/commands/inspect.ts
+++ b/packages/whook/src/commands/inspect.ts
@@ -1,6 +1,6 @@
 import { extra, autoService } from 'knifecycle';
 import { readArgs } from '../libs/args.js';
-import { YError } from 'yerror';
+import { printStackTrace, YError } from 'yerror';
 import miniquery from 'miniquery';
 import { noop } from '../libs/utils.js';
 import type { Injector, Service } from 'knifecycle';
@@ -69,6 +69,7 @@ async function initInspectCommand({
       service = injectionResult[name];
     } catch (err) {
       log('error', `No service found for "${name}".`);
+      log('error-stack', printStackTrace(err as Error));
       log('error', `Try debugging with the "DEBUG=whook" env.`);
       if ('undefined' === typeof defaultValue) {
         throw new YError('E_NO_SERVICE_FOUND', name);
diff --git a/packages/whook/src/handlers/getOpenAPI.ts b/packages/whook/src/handlers/getOpenAPI.ts
index 032386f1..81457008 100644
--- a/packages/whook/src/handlers/getOpenAPI.ts
+++ b/packages/whook/src/handlers/getOpenAPI.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import { getOpenAPIOperations } from '@whook/http-router';
 import SwaggerParser from '@apidevtools/swagger-parser';
 import type {
@@ -8,7 +8,7 @@ import type {
 import type { WhookResponse } from '@whook/http-transaction';
 import type { OpenAPIV3_1 } from 'openapi-types';
 
-export default autoHandler(getOpenAPI);
+export default location(autoHandler(getOpenAPI), import.meta.url);
 
 /* Architecture Note #3: the handlers
 Handlers are services that provide a definition and implements
diff --git a/packages/whook/src/handlers/getPing.ts b/packages/whook/src/handlers/getPing.ts
index ab89fe00..fc5bfb05 100644
--- a/packages/whook/src/handlers/getPing.ts
+++ b/packages/whook/src/handlers/getPing.ts
@@ -1,4 +1,4 @@
-import { autoHandler } from 'knifecycle';
+import { autoHandler, location } from 'knifecycle';
 import type { WhookAPIHandlerDefinition } from '../services/API_DEFINITIONS.js';
 import type { WhookResponse } from '@whook/http-transaction';
 import type { AppEnvVars } from 'application-services';
@@ -32,7 +32,7 @@ export const definition: WhookAPIHandlerDefinition = {
   },
 };
 
-export default autoHandler(getPing);
+export default location(autoHandler(getPing), import.meta.url);
 
 async function getPing({
   ENV,
diff --git a/packages/whook/src/libs/utils.ts b/packages/whook/src/libs/utils.ts
index 21a4a6bf..8d089429 100644
--- a/packages/whook/src/libs/utils.ts
+++ b/packages/whook/src/libs/utils.ts
@@ -1,7 +1,4 @@
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-export function noop(..._args: unknown[]): void {
-  return undefined;
-}
+export { noop } from 'common-services';
 
 export function identity<T>(id: T): T {
   return id;
diff --git a/packages/whook/src/services/API_DEFINITIONS.ts b/packages/whook/src/services/API_DEFINITIONS.ts
index 08149a26..1d69e20c 100644
--- a/packages/whook/src/services/API_DEFINITIONS.ts
+++ b/packages/whook/src/services/API_DEFINITIONS.ts
@@ -1,4 +1,4 @@
-import { autoService, name } from 'knifecycle';
+import { autoService, location, name } from 'knifecycle';
 import { readdir as _readDir } from 'node:fs/promises';
 import { extname, join as pathJoin } from 'node:path';
 import { noop } from '../libs/utils.js';
@@ -78,7 +78,7 @@ export interface WhookBaseAPIHandlerDefinition<
   operation: WhookAPIOperation<T> & U;
 }
 
-// eslint-disable-next-line @typescript-eslint/no-empty-interface
+// eslint-disable-next-line @typescript-eslint/no-empty-object-type
 export interface WhookAPIHandlerDefinition<
   T extends Record<string, unknown> = Record<string, unknown>,
   U extends {
@@ -148,7 +148,10 @@ export interface WhookAPIHandlerModule {
 
 export const DEFAULT_API_DEFINITION_FILTER = () => false;
 
-export default name('API_DEFINITIONS', autoService(initAPIDefinitions));
+export default location(
+  name('API_DEFINITIONS', autoService(initAPIDefinitions)),
+  import.meta.url,
+);
 
 /**
  * Initialize the API_DEFINITIONS service according to the porject handlers.
diff --git a/packages/whook/src/services/BASE_URL.ts b/packages/whook/src/services/BASE_URL.ts
index 6516bbb4..3e6aa2ce 100644
--- a/packages/whook/src/services/BASE_URL.ts
+++ b/packages/whook/src/services/BASE_URL.ts
@@ -1,6 +1,6 @@
-import { autoService, name } from 'knifecycle';
+import { autoService, location, name } from 'knifecycle';
 import { noop } from '../libs/utils.js';
-import type { LogService } from 'common-services';
+import { type LogService } from 'common-services';
 
 /* Architecture Note #2.1: Base URL
 The `BASE_URL` service is intended to provide a base URL where
@@ -32,7 +32,10 @@ export type WhookBaseURLDependencies = WhookBaseURLConfig & {
   log?: LogService;
 };
 
-export default name('BASE_URL', autoService(initBaseURL));
+export default location(
+  name('BASE_URL', autoService(initBaseURL)),
+  import.meta.url,
+);
 
 /**
  * Initialize the BASE_URL service according to the HOST/PORT
diff --git a/packages/whook/src/services/BUILD_CONSTANTS.ts b/packages/whook/src/services/BUILD_CONSTANTS.ts
index e0e738ec..7c9cd8a4 100644
--- a/packages/whook/src/services/BUILD_CONSTANTS.ts
+++ b/packages/whook/src/services/BUILD_CONSTANTS.ts
@@ -1,7 +1,10 @@
-import { service } from 'knifecycle';
-import type { JsonValue } from 'type-fest';
+import { service, location } from 'knifecycle';
+import { type JsonValue } from 'type-fest';
 
-export default service(initBuildConstants, 'BUILD_CONSTANTS', [], true);
+export default location(
+  service(initBuildConstants, 'BUILD_CONSTANTS', [], true),
+  import.meta.url,
+);
 
 export type WhookBuildConstantsService = Record<string, JsonValue>;
 
diff --git a/packages/whook/src/services/HANDLERS.ts b/packages/whook/src/services/HANDLERS.ts
index 41fd8641..0c6479dd 100644
--- a/packages/whook/src/services/HANDLERS.ts
+++ b/packages/whook/src/services/HANDLERS.ts
@@ -1,9 +1,9 @@
-import { service } from 'knifecycle';
+import { service, location } from 'knifecycle';
 import { noop } from '../libs/utils.js';
-import type { WhookWrapper } from '../services/WRAPPERS.js';
-import type { WhookHandler } from '@whook/http-transaction';
-import type { WhookHandlersService } from '@whook/http-router';
-import type { LogService } from 'common-services';
+import { type WhookWrapper } from '../services/WRAPPERS.js';
+import { type WhookHandler } from '@whook/http-transaction';
+import { type WhookHandlersService } from '@whook/http-router';
+import { type LogService } from 'common-services';
 
 export const HANDLER_REG_EXP =
   /^(head|get|put|post|delete|options|handle)[A-Z][a-zA-Z0-9]+/;
@@ -13,7 +13,10 @@ export type WhookHandlersDependencies<T extends WhookHandler> = {
   log?: LogService;
 } & WhookHandlersService<T>;
 
-export default service(initHandlers, 'HANDLERS', ['WRAPPERS', 'log']);
+export default location(
+  service(initHandlers, 'HANDLERS', ['WRAPPERS', 'log']),
+  import.meta.url,
+);
 
 /**
  * Initialize the Whook handlers used byt the router
diff --git a/packages/whook/src/services/HOST.ts b/packages/whook/src/services/HOST.ts
index 7970dd69..eb7796eb 100644
--- a/packages/whook/src/services/HOST.ts
+++ b/packages/whook/src/services/HOST.ts
@@ -1,6 +1,6 @@
-import { autoService, name } from 'knifecycle';
+import { autoService, name, location } from 'knifecycle';
 import { noop } from '../libs/utils.js';
-import type { ImporterService, LogService } from 'common-services';
+import { type ImporterService, type LogService } from 'common-services';
 
 const DEFAULT_ENV = {};
 
@@ -9,7 +9,7 @@ If no `HOST` configuration is specified in dependencies nor in ENV,
  this service detects the machine host automagically.
 */
 
-export default name('HOST', autoService(initHost));
+export default location(name('HOST', autoService(initHost)), import.meta.url);
 
 export type WhookHost = string;
 export type WhookHostEnv = {
diff --git a/packages/whook/src/services/PORT.ts b/packages/whook/src/services/PORT.ts
index a30096cf..b70ced23 100644
--- a/packages/whook/src/services/PORT.ts
+++ b/packages/whook/src/services/PORT.ts
@@ -1,6 +1,6 @@
-import { autoService, name } from 'knifecycle';
+import { autoService, name, location } from 'knifecycle';
 import { noop } from '../libs/utils.js';
-import type { LogService, ImporterService } from 'common-services';
+import { type LogService, type ImporterService } from 'common-services';
 
 const DEFAULT_ENV = {};
 
@@ -16,7 +16,7 @@ export type WhookPortEnv = {
   PORT?: string;
 };
 
-export default name('PORT', autoService(initPort));
+export default location(name('PORT', autoService(initPort)), import.meta.url);
 
 /**
  * Initialize the PORT service from ENV or auto-detection if
diff --git a/packages/whook/src/services/PROXYED_ENV.ts b/packages/whook/src/services/PROXYED_ENV.ts
index 3cf9979e..832f9e76 100644
--- a/packages/whook/src/services/PROXYED_ENV.ts
+++ b/packages/whook/src/services/PROXYED_ENV.ts
@@ -1,9 +1,12 @@
 import { initEnv } from 'application-services';
-import { wrapInitializer, alsoInject } from 'knifecycle';
-import { noop } from '../libs/utils.js';
-import type { LogService } from 'common-services';
+import {
+  wrapInitializer,
+  alsoInject,
+  location,
+  type ServiceInitializer,
+} from 'knifecycle';
+import { noop, type LogService } from 'common-services';
 import type { AppEnvVars, ProcessEnvDependencies } from 'application-services';
-import type { ServiceInitializer } from 'knifecycle';
 
 export type WhookProxyedENVConfig = {
   PROXYED_ENV_VARS?: string[];
@@ -12,17 +15,20 @@ export type WhookProxyedENVDependencies = WhookProxyedENVConfig & {
   log?: LogService;
 };
 
-export default alsoInject<
-  WhookProxyedENVDependencies,
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  ProcessEnvDependencies<any>,
-  AppEnvVars
->(
-  ['?log', '?PROXYED_ENV_VARS'],
-  wrapInitializer(
-    wrapEnvForBuild,
-    initEnv as ServiceInitializer<WhookProxyedENVDependencies, AppEnvVars>,
+export default location(
+  alsoInject<
+    WhookProxyedENVDependencies,
+    // eslint-disable-next-line @typescript-eslint/no-explicit-any
+    ProcessEnvDependencies<any>,
+    AppEnvVars
+  >(
+    ['?log', '?PROXYED_ENV_VARS'],
+    wrapInitializer(
+      wrapEnvForBuild,
+      initEnv as ServiceInitializer<WhookProxyedENVDependencies, AppEnvVars>,
+    ),
   ),
+  import.meta.url,
 );
 
 /**
diff --git a/packages/whook/src/services/WHOOK_RESOLVED_PLUGINS.ts b/packages/whook/src/services/WHOOK_RESOLVED_PLUGINS.ts
index 7722b49d..f287b4f9 100644
--- a/packages/whook/src/services/WHOOK_RESOLVED_PLUGINS.ts
+++ b/packages/whook/src/services/WHOOK_RESOLVED_PLUGINS.ts
@@ -1,6 +1,6 @@
 import { dirname } from 'node:path';
 import { readdir as _readDir } from 'node:fs/promises';
-import { name, singleton, autoService } from 'knifecycle';
+import { name, singleton, autoService, location } from 'knifecycle';
 import { YError, printStackTrace } from 'yerror';
 import type { ResolveService, LogService } from 'common-services';
 
@@ -47,8 +47,11 @@ export type WhookResolvedPluginsDependencies = WhookResolvedPluginsConfig & {
   log: LogService;
 };
 
-export default singleton(
-  name('WHOOK_RESOLVED_PLUGINS', autoService(initWhookResolvedPlugins)),
+export default location(
+  singleton(
+    name('WHOOK_RESOLVED_PLUGINS', autoService(initWhookResolvedPlugins)),
+  ),
+  import.meta.url,
 );
 
 /**
diff --git a/packages/whook/src/services/WRAPPERS.ts b/packages/whook/src/services/WRAPPERS.ts
index 820981ee..28c5c71d 100644
--- a/packages/whook/src/services/WRAPPERS.ts
+++ b/packages/whook/src/services/WRAPPERS.ts
@@ -1,12 +1,12 @@
-import { service } from 'knifecycle';
+import { service, location } from 'knifecycle';
 import { noop } from '../libs/utils.js';
-import type { WhookHandler } from '@whook/http-transaction';
-import type { LogService } from 'common-services';
+import { type WhookHandler } from '@whook/http-transaction';
+import { type LogService } from 'common-services';
 
-export default service(initWrappers, 'WRAPPERS', [
-  '?HANDLERS_WRAPPERS',
-  '?log',
-]);
+export default location(
+  service(initWrappers, 'WRAPPERS', ['?HANDLERS_WRAPPERS', '?log']),
+  import.meta.url,
+);
 
 export const WRAPPER_REG_EXP = /^(wrap)[A-Z][a-zA-Z0-9]+/;
 
diff --git a/packages/whook/src/services/_autoload.test.ts b/packages/whook/src/services/_autoload.test.ts
index 4f3e4aa5..e2dfef74 100644
--- a/packages/whook/src/services/_autoload.test.ts
+++ b/packages/whook/src/services/_autoload.test.ts
@@ -1,22 +1,23 @@
 /* eslint-disable @typescript-eslint/no-explicit-any */
 import { describe, it, beforeEach, jest, expect } from '@jest/globals';
-import initAutoload, { WhookAutoloadDependencies } from './_autoload.js';
-import { service } from 'knifecycle';
+import initAutoload, { type WhookAutoloadDependencies } from './_autoload.js';
 import { YError } from 'yerror';
-import type {
-  ImporterService,
-  LogService,
-  ResolveService,
+import {
+  type ImporterService,
+  type LogService,
+  type ResolveService,
 } from 'common-services';
-import type {
-  ServiceInitializer,
-  Dependencies,
-  Service,
-  Injector,
+import {
+  service,
+  type ServiceInitializer,
+  type Dependencies,
+  type Service,
+  type Injector,
+  SPECIAL_PROPS,
 } from 'knifecycle';
 import {
   WHOOK_PROJECT_PLUGIN_NAME,
-  WhookResolvedPluginsService,
+  type WhookResolvedPluginsService,
 } from './WHOOK_RESOLVED_PLUGINS.js';
 
 describe('$autoload', () => {
@@ -64,6 +65,7 @@ describe('$autoload', () => {
 
       expect({
         result,
+        location: result[SPECIAL_PROPS.LOCATION],
         logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
         injectorCalls: $injector.mock.calls,
         importerCalls: importer.mock.calls,
@@ -72,6 +74,7 @@ describe('$autoload', () => {
 {
   "importerCalls": [],
   "injectorCalls": [],
+  "location": undefined,
   "logCalls": [
     [
       "debug",
@@ -84,16 +87,12 @@ describe('$autoload', () => {
   ],
   "resolveCalls": [],
   "result": {
-    "initializer": {
-      "$name": "CONFIG",
-      "$singleton": true,
-      "$type": "constant",
-      "$value": {
-        "testConfig": "test",
-      },
+    "$name": "CONFIG",
+    "$singleton": true,
+    "$type": "constant",
+    "$value": {
+      "testConfig": "test",
     },
-    "name": "CONFIG",
-    "path": "internal://CONFIG",
   },
 }
 `);
@@ -123,6 +122,7 @@ describe('$autoload', () => {
 
       expect({
         result,
+        location: result[SPECIAL_PROPS.LOCATION],
         logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
         injectorCalls: $injector.mock.calls,
         importerCalls: importer.mock.calls,
@@ -135,6 +135,10 @@ describe('$autoload', () => {
     ],
   ],
   "injectorCalls": [],
+  "location": {
+    "exportName": "default",
+    "url": "file:///home/whoami/my-whook-project/src/services/API.ts",
+  },
   "logCalls": [
     [
       "debug",
@@ -158,16 +162,12 @@ describe('$autoload', () => {
     ],
   ],
   "resolveCalls": [],
-  "result": {
-    "initializer": [Function],
-    "name": "API",
-    "path": "file:///home/whoami/my-whook-project/src/services/API.ts",
-  },
+  "result": [Function],
 }
 `);
     });
 
-    it('for handlers hash', async () => {
+    it.only('for handlers hash', async () => {
       $injector.mockResolvedValueOnce({
         API: {
           openapi: '3.1.0',
@@ -214,9 +214,8 @@ describe('$autoload', () => {
 
       expect({
         result,
-        HANDLERS: await (
-          result.initializer as ServiceInitializer<Dependencies, Service>
-        )({
+        location: result[SPECIAL_PROPS.LOCATION],
+        HANDLERS: await (result as ServiceInitializer<Dependencies, Service>)({
           WRAPPERS: [],
           log,
           getPing: () => undefined,
@@ -238,6 +237,10 @@ describe('$autoload', () => {
       ],
     ],
   ],
+  "location": {
+    "exportName": "default",
+    "url": "@whook/whook/dist/services/HANDLERS.js",
+  },
   "logCalls": [
     [
       "debug",
@@ -249,11 +252,7 @@ describe('$autoload', () => {
     ],
   ],
   "resolveCalls": [],
-  "result": {
-    "initializer": [Function],
-    "name": "HANDLERS",
-    "path": "@whook/whook/dist/services/HANDLERS.js",
-  },
+  "result": [Function],
 }
 `);
     });
@@ -305,9 +304,8 @@ describe('$autoload', () => {
 
       expect({
         result,
-        WRAPPERS: await (
-          result.initializer as ServiceInitializer<Dependencies, Service>
-        )({
+        location: result[SPECIAL_PROPS.LOCATION],
+        WRAPPERS: await (result as ServiceInitializer<Dependencies, Service>)({
           getPing: () => undefined,
           log,
         }),
@@ -320,6 +318,10 @@ describe('$autoload', () => {
   "WRAPPERS": [],
   "importerCalls": [],
   "injectorCalls": [],
+  "location": {
+    "exportName": "default",
+    "url": "@whook/whook/dist/services/WRAPPERS.js",
+  },
   "logCalls": [
     [
       "debug",
@@ -335,11 +337,7 @@ describe('$autoload', () => {
     ],
   ],
   "resolveCalls": [],
-  "result": {
-    "initializer": [Function],
-    "name": "WRAPPERS",
-    "path": "@whook/whook/dist/services/WRAPPERS.js",
-  },
+  "result": [Function],
 }
 `);
     });
@@ -371,6 +369,7 @@ describe('$autoload', () => {
 
       expect({
         result,
+        location: result[SPECIAL_PROPS.LOCATION],
         logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
         injectorCalls: $injector.mock.calls,
         importerCalls: importer.mock.calls,
@@ -383,6 +382,10 @@ describe('$autoload', () => {
     ],
   ],
   "injectorCalls": [],
+  "location": {
+    "exportName": "default",
+    "url": "file:///home/whoami/my-whook-project/src/handlers/getPing.ts",
+  },
   "logCalls": [
     [
       "debug",
@@ -406,11 +409,7 @@ describe('$autoload', () => {
     ],
   ],
   "resolveCalls": [],
-  "result": {
-    "initializer": [Function],
-    "name": "getPing",
-    "path": "file:///home/whoami/my-whook-project/src/handlers/getPing.ts",
-  },
+  "result": [Function],
 }
 `);
     });
@@ -441,6 +440,7 @@ describe('$autoload', () => {
 
       expect({
         result,
+        location: result[SPECIAL_PROPS.LOCATION],
         logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
         injectorCalls: $injector.mock.calls,
         importerCalls: importer.mock.calls,
@@ -453,6 +453,10 @@ describe('$autoload', () => {
     ],
   ],
   "injectorCalls": [],
+  "location": {
+    "exportName": "default",
+    "url": "@whook/plugin/dist/handlers/getPing.js",
+  },
   "logCalls": [
     [
       "debug",
@@ -476,11 +480,7 @@ describe('$autoload', () => {
     ],
   ],
   "resolveCalls": [],
-  "result": {
-    "initializer": [Function],
-    "name": "getPing",
-    "path": "@whook/plugin/dist/handlers/getPing.js",
-  },
+  "result": [Function],
 }
 `);
     });
@@ -514,6 +514,7 @@ describe('$autoload', () => {
 
       expect({
         result,
+        location: result[SPECIAL_PROPS.LOCATION],
         logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
         injectorCalls: $injector.mock.calls,
         importerCalls: importer.mock.calls,
@@ -526,6 +527,10 @@ describe('$autoload', () => {
     ],
   ],
   "injectorCalls": [],
+  "location": {
+    "exportName": "default",
+    "url": "file:///home/whoami/my-whook-project/src/handlers/getPing.js",
+  },
   "logCalls": [
     [
       "debug",
@@ -553,11 +558,7 @@ describe('$autoload', () => {
       "./handlers/getPing.js",
     ],
   ],
-  "result": {
-    "initializer": [Function],
-    "name": "getPing",
-    "path": "file:///home/whoami/my-whook-project/src/handlers/getPing.js",
-  },
+  "result": [Function],
 }
 `);
     });
@@ -604,6 +605,7 @@ describe('$autoload', () => {
 
       expect({
         result,
+        location: result[SPECIAL_PROPS.LOCATION],
         logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
         injectorCalls: $injector.mock.calls,
         importerCalls: importer.mock.calls,
@@ -616,6 +618,10 @@ describe('$autoload', () => {
     ],
   ],
   "injectorCalls": [],
+  "location": {
+    "exportName": "default",
+    "url": "@whook/whook/dist/handlers/getPing.js",
+  },
   "logCalls": [
     [
       "debug",
@@ -647,11 +653,7 @@ describe('$autoload', () => {
     ],
   ],
   "resolveCalls": [],
-  "result": {
-    "initializer": [Function],
-    "name": "getPing",
-    "path": "@whook/whook/dist/handlers/getPing.js",
-  },
+  "result": [Function],
 }
 `);
     });
@@ -683,6 +685,7 @@ describe('$autoload', () => {
 
       expect({
         result,
+        location: result[SPECIAL_PROPS.LOCATION],
         logCalls: log.mock.calls.filter(([type]) => !type.endsWith('stack')),
         injectorCalls: $injector.mock.calls,
         importerCalls: importer.mock.calls,
@@ -695,6 +698,10 @@ describe('$autoload', () => {
     ],
   ],
   "injectorCalls": [],
+  "location": {
+    "exportName": "default",
+    "url": "file:///home/whoami/my-whook-project/src/wrappers/wrapHandler.ts",
+  },
   "logCalls": [
     [
       "debug",
@@ -718,11 +725,7 @@ describe('$autoload', () => {
     ],
   ],
   "resolveCalls": [],
-  "result": {
-    "initializer": [Function],
-    "name": "wrapHandler",
-    "path": "file:///home/whoami/my-whook-project/src/wrappers/wrapHandler.ts",
-  },
+  "result": [Function],
 }
 `);
     });
diff --git a/packages/whook/src/services/_autoload.ts b/packages/whook/src/services/_autoload.ts
index dabfefa7..702262cb 100644
--- a/packages/whook/src/services/_autoload.ts
+++ b/packages/whook/src/services/_autoload.ts
@@ -1,6 +1,7 @@
 import {
   constant,
   name,
+  location,
   autoService,
   singleton,
   alsoInject,
@@ -33,7 +34,7 @@ import {
   type WhookPluginName,
   type WhookResolvedPluginsService,
 } from './WHOOK_RESOLVED_PLUGINS.js';
-import { WhookCommandArgs } from '../libs/args.js';
+import { type WhookCommandArgs } from '../libs/args.js';
 
 const DEFAULT_INITIALIZER_PATH_MAP = {};
 
@@ -185,11 +186,9 @@ async function initAutoload({
    *  An Object containing the `path`, `name` and the `initializer`
    *  in its properties.
    */
-  async function $autoload(injectedName: string): Promise<{
-    name: string;
-    path: string;
-    initializer: Initializer<Service, Dependencies>;
-  }> {
+  async function $autoload(
+    injectedName: string,
+  ): Promise<Initializer<Service, Dependencies>> {
     /* Architecture Note #2.9.1: the `APP_CONFIG` mapper
     First of all the autoloader looks for constants in the
      previously loaded `APP_CONFIG` configurations hash.
@@ -199,14 +198,7 @@ async function initAutoload({
         'debug',
         `📖 - Picking the "${injectedName}" constant in the "APP_CONFIG" service properties.`,
       );
-      return {
-        name: injectedName,
-        path: 'internal://' + injectedName,
-        initializer: constant(
-          injectedName,
-          APP_CONFIG[injectedName],
-        ) as Initializer<Service, Dependencies>,
-      };
+      return constant(injectedName, APP_CONFIG[injectedName]);
     }
 
     const isHandler = HANDLER_REG_EXP.test(injectedName);
@@ -223,14 +215,12 @@ async function initAutoload({
             (operation) => operation.operationId,
           ),
         ),
-      ];
-
-      return {
-        name: injectedName,
-        // eslint-disable-next-line @typescript-eslint/no-explicit-any
-        initializer: alsoInject(handlerNames as any, initHandlers) as any,
-        path: '@whook/whook/dist/services/HANDLERS.js',
-      };
+      ] as string[];
+
+      return location(
+        alsoInject(handlerNames, initHandlers),
+        '@whook/whook/dist/services/HANDLERS.js',
+      ) as Initializer<Dependencies, Service>;
     }
 
     /* Architecture Note #2.9.5: the `WRAPPERS` auto loading
@@ -238,30 +228,17 @@ async function initAutoload({
      service so that they can be dynamically applied.
     */
     if ('WRAPPERS' === injectedName) {
-      return {
-        name: injectedName,
-        // eslint-disable-next-line @typescript-eslint/no-explicit-any
-        initializer: alsoInject(HANDLERS_WRAPPERS, initWrappers) as any,
-        path: '@whook/whook/dist/services/WRAPPERS.js',
-      };
+      return location(
+        alsoInject(HANDLERS_WRAPPERS, initWrappers),
+        '@whook/whook/dist/services/WRAPPERS.js',
+      );
     }
 
     if (injectedName === 'COMMAND_DEFINITION') {
-      return {
-        name: injectedName,
-        initializer: constant(
-          injectedName,
-          (await getCommandModule()).definition,
-        ),
-        path: `definition://${args.rest[0]}`,
-      };
+      return constant(injectedName, (await getCommandModule()).definition);
     }
     if (injectedName === 'commandHandler') {
-      return {
-        name: injectedName,
-        initializer: name('commandHandler', (await getCommandModule()).default),
-        path: `command://${args.rest[0]}`,
-      };
+      return name('commandHandler', (await getCommandModule()).default);
     }
 
     /* Architecture Note #2.9.6: Service/handler/wrapper loading
@@ -336,24 +313,20 @@ async function initAutoload({
 
     log('debug', `💿 - Service "${injectedName}" found in "${modulePath}".`);
 
-    const resolvedInitializer = (await importer(modulePath)).default;
+    const resolvedInitializer = (await importer(modulePath))
+      .default as ProviderInitializer<Dependencies, Service>;
 
     log(
       'debug',
       `💿 - Loading "${injectedName}" initializer from "${modulePath}".`,
     );
 
-    return {
-      name: injectedName,
-      path: modulePath,
-      initializer:
-        injectedName !== injectedName
-          ? name(
-              injectedName,
-              resolvedInitializer as ProviderInitializer<Dependencies, Service>,
-            )
-          : resolvedInitializer,
-    };
+    const renamedInitializer =
+      injectedName !== injectedName
+        ? name(injectedName, resolvedInitializer)
+        : resolvedInitializer;
+
+    return location(renamedInitializer, modulePath, 'default');
   }
 }
 
@@ -376,19 +349,3 @@ export async function checkAccess(
     return '';
   }
 }
-
-// function createPluginFolder(pluginName: string) {
-//   const matches = pluginName.match(/(@[^/]+\/|)([a-z-_]+)/);
-
-//   if (matches == null) {
-//     throw new YError('E_BAD_PLUGIN_NAME', pluginName);
-//   }
-
-//   if (matches[1]) {
-//     if (matches[1] === matches[2]) {
-//       return matches[1];
-//     }
-//     return `${matches[1]}/${matches[2]}`;
-//   }
-//   return pluginName;
-// }
diff --git a/packages/whook/src/services/_buildAutoload.ts b/packages/whook/src/services/_buildAutoload.ts
index f1a3273e..8f5255d4 100644
--- a/packages/whook/src/services/_buildAutoload.ts
+++ b/packages/whook/src/services/_buildAutoload.ts
@@ -50,10 +50,7 @@ const initializerWrapper: ServiceInitializerWrapper<
           ', ',
         )}) can give unpredictable results!`,
       );
-      return {
-        initializer: constant(serviceName, undefined),
-        path: `constant://${serviceName}`,
-      };
+      return constant(serviceName, undefined);
     }
 
     try {
@@ -74,17 +71,11 @@ const initializerWrapper: ServiceInitializerWrapper<
           'debug',
           `🤖 - Reusing a constant initializer directly from the Knifecycle instance: "${serviceName}".`,
         );
-        return {
-          initializer,
-          path: `instance://${serviceName}`,
-        };
+        return initializer;
       }
 
       if (BUILD_CONSTANTS[serviceName]) {
-        return {
-          initializer: constant(serviceName, BUILD_CONSTANTS[serviceName]),
-          path: `constant://${serviceName}`,
-        };
+        return constant(serviceName, BUILD_CONSTANTS[serviceName]);
       }
 
       return $autoload(serviceName);
diff --git a/packages/whook/src/services/_cliAutoload.test.ts b/packages/whook/src/services/_cliAutoload.test.ts
index e3a45d0c..27c19e59 100644
--- a/packages/whook/src/services/_cliAutoload.test.ts
+++ b/packages/whook/src/services/_cliAutoload.test.ts
@@ -7,7 +7,7 @@ import type {
   ImporterService,
   LogService,
 } from 'common-services';
-import type { Injector } from 'knifecycle';
+import { SPECIAL_PROPS, type Injector } from 'knifecycle';
 import type { WhookAutoloadDependencies } from './_autoload.js';
 import {
   WHOOK_PROJECT_PLUGIN_NAME,
@@ -160,12 +160,13 @@ describe('$autoload', () => {
       access,
       log,
     } as WhookAutoloadDependencies);
-    const { path, initializer } = await $autoload('commandHandler');
+    const initializer = await $autoload('commandHandler');
     const command = await (initializer as any)();
     const result = await command();
 
     expect({
-      path,
+      initializer,
+      location: initializer[SPECIAL_PROPS.LOCATION],
       result,
       importerCalls: importer.mock.calls,
       injectorCalls: $injector.mock.calls,
@@ -178,7 +179,9 @@ describe('$autoload', () => {
       "file:///home/whoiam/project/src/commands/myCommand.ts",
     ],
   ],
+  "initializer": [Function],
   "injectorCalls": [],
+  "location": undefined,
   "logCalls": [
     [
       "debug",
@@ -189,7 +192,6 @@ describe('$autoload', () => {
       "Command called!",
     ],
   ],
-  "path": "command://myCommand",
   "resolveCalls": [],
   "result": undefined,
 }
@@ -223,12 +225,13 @@ describe('$autoload', () => {
       access,
       log,
     } as WhookAutoloadDependencies);
-    const { path, initializer } = await $autoload('commandHandler');
+    const initializer = await $autoload('commandHandler');
     const command = await (initializer as any)();
     const result = await command();
 
     expect({
-      path,
+      initializer,
+      location: initializer[SPECIAL_PROPS.LOCATION],
       result,
       importerCalls: importer.mock.calls,
       injectorCalls: $injector.mock.calls,
@@ -244,7 +247,9 @@ describe('$autoload', () => {
       "file://var/lib/node/node_modules/@whook/cli/dist/commands/myCommand.js",
     ],
   ],
+  "initializer": [Function],
   "injectorCalls": [],
+  "location": undefined,
   "logCalls": [
     [
       "debug",
@@ -259,7 +264,6 @@ describe('$autoload', () => {
       "Command called!",
     ],
   ],
-  "path": "command://myCommand",
   "resolveCalls": [],
   "result": undefined,
 }
diff --git a/packages/whook/src/services/command.ts b/packages/whook/src/services/command.ts
index c629751a..e94be82f 100644
--- a/packages/whook/src/services/command.ts
+++ b/packages/whook/src/services/command.ts
@@ -1,12 +1,13 @@
 import { type LogService } from 'common-services';
 import {
   autoService,
+  location,
   type FatalErrorService,
   type Knifecycle,
 } from 'knifecycle';
 import { printStackTrace, YError } from 'yerror';
 
-export default autoService(initCommand);
+export default location(autoService(initCommand), import.meta.url);
 
 async function initCommand({
   commandHandler,
diff --git a/packages/whook/src/services/compiler.test.ts b/packages/whook/src/services/compiler.test.ts
index f6d087f3..5838669e 100644
--- a/packages/whook/src/services/compiler.test.ts
+++ b/packages/whook/src/services/compiler.test.ts
@@ -36,13 +36,13 @@ describe('Compiler', () => {
     const result = await compiler(path.join('src', 'services', 'compiler.ts'));
 
     expect({
-      extension: result.extension,
-      contentsLength: result?.contents?.length,
-      mappingsLength: result?.mappings?.length,
-      logCalls: log.mock.calls,
-    }).toMatchInlineSnapshot(`
+  extension: result.extension,
+  contentsLength: result?.contents?.length,
+  mappingsLength: result?.mappings?.length,
+  logCalls: log.mock.calls
+}).toMatchInlineSnapshot(`
 {
-  "contentsLength": 50123,
+  "contentsLength": 65048,
   "extension": ".mjs",
   "logCalls": [],
   "mappingsLength": 0,
@@ -66,13 +66,13 @@ describe('Compiler', () => {
     const result = await compiler(path.join('src', 'services', 'compiler.ts'));
 
     expect({
-      extension: result.extension,
-      contentsLength: result?.contents?.length,
-      mappingsLength: result?.mappings?.length,
-      logCalls: log.mock.calls,
-    }).toMatchInlineSnapshot(`
+  extension: result.extension,
+  contentsLength: result?.contents?.length,
+  mappingsLength: result?.mappings?.length,
+  logCalls: log.mock.calls
+}).toMatchInlineSnapshot(`
 {
-  "contentsLength": 3608,
+  "contentsLength": 3618,
   "extension": ".mjs",
   "logCalls": [],
   "mappingsLength": 0,
@@ -100,13 +100,13 @@ describe('Compiler', () => {
     const result = await compiler(path.join('src', 'services', 'compiler.ts'));
 
     expect({
-      extension: result.extension,
-      contentsLength: result?.contents?.length,
-      mappingsLength: result?.mappings?.length,
-      logCalls: log.mock.calls,
-    }).toMatchInlineSnapshot(`
+  extension: result.extension,
+  contentsLength: result?.contents?.length,
+  mappingsLength: result?.mappings?.length,
+  logCalls: log.mock.calls
+}).toMatchInlineSnapshot(`
 {
-  "contentsLength": 5206,
+  "contentsLength": 5291,
   "extension": ".cjs",
   "logCalls": [],
   "mappingsLength": 0,
diff --git a/packages/whook/src/services/compiler.ts b/packages/whook/src/services/compiler.ts
index c640f1dd..11172bd4 100644
--- a/packages/whook/src/services/compiler.ts
+++ b/packages/whook/src/services/compiler.ts
@@ -1,9 +1,8 @@
 import path from 'path';
 import { noop } from '../libs/utils.js';
-import { autoService } from 'knifecycle';
-import type { Service } from 'knifecycle';
-import type { ImporterService, LogService } from 'common-services';
-import type { AppEnvVars } from 'application-services';
+import { autoService, location, type Service } from 'knifecycle';
+import { type ImporterService, type LogService } from 'common-services';
+import { type AppEnvVars } from 'application-services';
 
 export const DEFAULT_COMPILER_OPTIONS: FullWhookCompilerOptions = {
   externalModules: [],
@@ -12,7 +11,7 @@ export const DEFAULT_COMPILER_OPTIONS: FullWhookCompilerOptions = {
   format: 'esm',
 };
 
-export default autoService(initCompiler);
+export default location(autoService(initCompiler), import.meta.url);
 
 export type FullWhookCompilerOptions = {
   externalModules: string[];
diff --git a/packages/whook/src/services/dryRun.ts b/packages/whook/src/services/dryRun.ts
index 5b36715c..6f359b10 100644
--- a/packages/whook/src/services/dryRun.ts
+++ b/packages/whook/src/services/dryRun.ts
@@ -1,4 +1,4 @@
-import { type Knifecycle, autoService } from 'knifecycle';
+import { type Knifecycle, autoService, location } from 'knifecycle';
 import { type LogService } from 'common-services';
 
 async function initDryRun({
@@ -18,4 +18,4 @@ async function initDryRun({
   doDryRun();
 }
 
-export default autoService(initDryRun);
+export default location(autoService(initDryRun), import.meta.url);
diff --git a/packages/whook/src/services/exit.ts b/packages/whook/src/services/exit.ts
index 4eaa12b9..55ae1ab7 100644
--- a/packages/whook/src/services/exit.ts
+++ b/packages/whook/src/services/exit.ts
@@ -1,4 +1,7 @@
-import { service } from 'knifecycle';
+import { location, service } from 'knifecycle';
 import { exit } from 'node:process';
 
-export default service(async () => exit, 'exit', [], true);
+export default location(
+  service(async () => exit, 'exit', [], true),
+  import.meta.url,
+);
diff --git a/packages/whook/src/services/logger.ts b/packages/whook/src/services/logger.ts
index 73b83604..07e5d785 100644
--- a/packages/whook/src/services/logger.ts
+++ b/packages/whook/src/services/logger.ts
@@ -1,5 +1,5 @@
-import { Logger } from 'common-services';
-import { service } from 'knifecycle';
+import { type Logger } from 'common-services';
+import { service, location } from 'knifecycle';
 import debug from 'debug';
 import { info, error } from 'node:console';
 
@@ -13,14 +13,17 @@ import { info, error } from 'node:console';
   DEBUG=whook npx whook
   ```
    */
-export default service(
-  async () =>
-    ({
-      output: info,
-      error: error,
-      debug: debug('whook'),
-    }) as Logger,
-  'logger',
-  [],
-  true,
+export default location(
+  service(
+    async () =>
+      ({
+        output: info,
+        error: error,
+        debug: debug('whook'),
+      }) as Logger,
+    'logger',
+    [],
+    true,
+  ),
+  import.meta.url,
 );
diff --git a/packages/whook/src/services/mermaid.ts b/packages/whook/src/services/mermaid.ts
index 25d7b608..a885272a 100644
--- a/packages/whook/src/services/mermaid.ts
+++ b/packages/whook/src/services/mermaid.ts
@@ -1,5 +1,5 @@
 import { stdout as _stdout } from 'node:process';
-import { type Knifecycle, autoService } from 'knifecycle';
+import { type Knifecycle, autoService, location } from 'knifecycle';
 import { WRAPPER_REG_EXP } from './WRAPPERS.js';
 import { HANDLER_REG_EXP } from './HANDLERS.js';
 import { type LogService } from 'common-services';
@@ -66,4 +66,4 @@ async function initMermaid({
   printGraph();
 }
 
-export default autoService(initMermaid);
+export default location(autoService(initMermaid), import.meta.url);
diff --git a/packages/whook/src/services/promptArgs.ts b/packages/whook/src/services/promptArgs.ts
index 1ddff239..0ac192ea 100644
--- a/packages/whook/src/services/promptArgs.ts
+++ b/packages/whook/src/services/promptArgs.ts
@@ -1,15 +1,17 @@
 /* eslint-disable @typescript-eslint/no-explicit-any */
-import { autoService, singleton } from 'knifecycle';
+import { autoService, location, singleton } from 'knifecycle';
 import _inquirer from 'inquirer';
-import { noop } from '../libs/utils.js';
-import { type LogService } from 'common-services';
+import { noop, type LogService } from 'common-services';
 import {
   type WhookArgsTypes,
   type WhookCommandArgs,
   type WhookCommandDefinitionArguments,
 } from '../libs/args.js';
 
-export default singleton(autoService(initPromptArgs));
+export default location(
+  singleton(autoService(initPromptArgs)),
+  import.meta.url,
+);
 
 export type WhookCommandHandler = () => Promise<void>;
 export type WhookCommandDefinition = {
diff --git a/packages/whook/src/services/repl.test.ts b/packages/whook/src/services/repl.test.ts
index 8b60a65b..659b144d 100644
--- a/packages/whook/src/services/repl.test.ts
+++ b/packages/whook/src/services/repl.test.ts
@@ -51,7 +51,9 @@ describe('initREPL', () => {
 
     stdin.write('time();\n\n');
 
-    dispose && (await dispose());
+    if (dispose) {
+      await dispose();
+    }
 
     stdout.end();
 
diff --git a/packages/whook/src/services/repl.ts b/packages/whook/src/services/repl.ts
index 7d9a28be..2f2c0273 100644
--- a/packages/whook/src/services/repl.ts
+++ b/packages/whook/src/services/repl.ts
@@ -1,10 +1,16 @@
-import { autoProvider, name } from 'knifecycle';
+import {
+  autoProvider,
+  name,
+  location,
+  type Provider,
+  type Disposer,
+  type Injector,
+} from 'knifecycle';
 import { identity, noop } from '../libs/utils.js';
 import repl from 'node:repl';
 import { type LogService } from 'common-services';
-import { type Provider, type Disposer, type Injector } from 'knifecycle';
 
-export default name('repl', autoProvider(initREPL));
+export default location(name('repl', autoProvider(initREPL)), import.meta.url);
 
 export type REPLService = void;
 export type REPLDependencies<S> = {
diff --git a/packages/whook/src/services/watchResolve.ts b/packages/whook/src/services/watchResolve.ts
index a19bc5e1..fff2241d 100644
--- a/packages/whook/src/services/watchResolve.ts
+++ b/packages/whook/src/services/watchResolve.ts
@@ -3,10 +3,13 @@ import {
   type LogService,
   type ResolveService,
 } from 'common-services';
-import { name, autoService, singleton } from 'knifecycle';
+import { name, autoService, singleton, location } from 'knifecycle';
 import { WhookURL } from './WHOOK_RESOLVED_PLUGINS.js';
 
-export default singleton(name('resolve', autoService(initWatchResolve)));
+export default location(
+  singleton(name('resolve', autoService(initWatchResolve))),
+  import.meta.url,
+);
 
 export type WatchResolveDependencies = {
   MAIN_FILE_URL: WhookURL;