diff --git a/package-lock.json b/package-lock.json
index 962ce7d..8e196a6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,15 +9,15 @@
 			"version": "2.0.0",
 			"license": "MIT",
 			"devDependencies": {
-				"@types/node": "^20.14.9",
-				"@typescript-eslint/eslint-plugin": "^7.14.1",
-				"@typescript-eslint/parser": "^7.14.1",
+				"@types/node": "^22.1.0",
+				"@typescript-eslint/eslint-plugin": "^8.0.1",
+				"@typescript-eslint/parser": "^8.0.1",
 				"eslint": "^8.57.0",
 				"eslint-config-prettier": "^9.1.0",
 				"eslint-plugin-no-autofix": "^2.0.0",
-				"eslint-plugin-prettier": "^5.1.3",
-				"eslint-plugin-simple-import-sort": "^12.1.0",
-				"prettier": "^3.3.2",
+				"eslint-plugin-prettier": "^5.2.1",
+				"eslint-plugin-simple-import-sort": "^12.1.1",
+				"prettier": "^3.3.3",
 				"ts-patch": "^3.2.1",
 				"typescript": "5.2.2",
 				"typescript-transform-paths": "^3.4.7"
@@ -169,40 +169,40 @@
 			}
 		},
 		"node_modules/@types/node": {
-			"version": "20.14.9",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
-			"integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
+			"version": "22.1.0",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz",
+			"integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==",
 			"dev": true,
 			"dependencies": {
-				"undici-types": "~5.26.4"
+				"undici-types": "~6.13.0"
 			}
 		},
 		"node_modules/@typescript-eslint/eslint-plugin": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz",
-			"integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz",
+			"integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "7.14.1",
-				"@typescript-eslint/type-utils": "7.14.1",
-				"@typescript-eslint/utils": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1",
+				"@typescript-eslint/scope-manager": "8.0.1",
+				"@typescript-eslint/type-utils": "8.0.1",
+				"@typescript-eslint/utils": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1",
 				"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": {
@@ -211,26 +211,26 @@
 			}
 		},
 		"node_modules/@typescript-eslint/parser": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz",
-			"integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz",
+			"integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/scope-manager": "7.14.1",
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/typescript-estree": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1",
+				"@typescript-eslint/scope-manager": "8.0.1",
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/typescript-estree": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1",
 				"debug": "^4.3.4"
 			},
 			"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": {
@@ -239,16 +239,16 @@
 			}
 		},
 		"node_modules/@typescript-eslint/scope-manager": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz",
-			"integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz",
+			"integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1"
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1"
 			},
 			"engines": {
-				"node": "^18.18.0 || >=20.0.0"
+				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
 			},
 			"funding": {
 				"type": "opencollective",
@@ -256,26 +256,23 @@
 			}
 		},
 		"node_modules/@typescript-eslint/type-utils": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz",
-			"integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz",
+			"integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/typescript-estree": "7.14.1",
-				"@typescript-eslint/utils": "7.14.1",
+				"@typescript-eslint/typescript-estree": "8.0.1",
+				"@typescript-eslint/utils": "8.0.1",
 				"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"
-			},
 			"peerDependenciesMeta": {
 				"typescript": {
 					"optional": true
@@ -283,12 +280,12 @@
 			}
 		},
 		"node_modules/@typescript-eslint/types": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz",
-			"integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz",
+			"integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==",
 			"dev": true,
 			"engines": {
-				"node": "^18.18.0 || >=20.0.0"
+				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
 			},
 			"funding": {
 				"type": "opencollective",
@@ -296,13 +293,13 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz",
-			"integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz",
+			"integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1",
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1",
 				"debug": "^4.3.4",
 				"globby": "^11.1.0",
 				"is-glob": "^4.0.3",
@@ -311,7 +308,7 @@
 				"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",
@@ -333,9 +330,9 @@
 			}
 		},
 		"node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": {
-			"version": "9.0.4",
-			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
-			"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+			"version": "9.0.5",
+			"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+			"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
 			"dev": true,
 			"dependencies": {
 				"brace-expansion": "^2.0.1"
@@ -348,38 +345,38 @@
 			}
 		},
 		"node_modules/@typescript-eslint/utils": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz",
-			"integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz",
+			"integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==",
 			"dev": true,
 			"dependencies": {
 				"@eslint-community/eslint-utils": "^4.4.0",
-				"@typescript-eslint/scope-manager": "7.14.1",
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/typescript-estree": "7.14.1"
+				"@typescript-eslint/scope-manager": "8.0.1",
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/typescript-estree": "8.0.1"
 			},
 			"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"
 			}
 		},
 		"node_modules/@typescript-eslint/visitor-keys": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz",
-			"integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz",
+			"integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==",
 			"dev": true,
 			"dependencies": {
-				"@typescript-eslint/types": "7.14.1",
+				"@typescript-eslint/types": "8.0.1",
 				"eslint-visitor-keys": "^3.4.3"
 			},
 			"engines": {
-				"node": "^18.18.0 || >=20.0.0"
+				"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
 			},
 			"funding": {
 				"type": "opencollective",
@@ -702,13 +699,13 @@
 			}
 		},
 		"node_modules/eslint-plugin-prettier": {
-			"version": "5.1.3",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz",
-			"integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==",
+			"version": "5.2.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
+			"integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
 			"dev": true,
 			"dependencies": {
 				"prettier-linter-helpers": "^1.0.0",
-				"synckit": "^0.8.6"
+				"synckit": "^0.9.1"
 			},
 			"engines": {
 				"node": "^14.18.0 || >=16.0.0"
@@ -732,9 +729,9 @@
 			}
 		},
 		"node_modules/eslint-plugin-simple-import-sort": {
-			"version": "12.1.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.0.tgz",
-			"integrity": "sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==",
+			"version": "12.1.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz",
+			"integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==",
 			"dev": true,
 			"peerDependencies": {
 				"eslint": ">=5.0.0"
@@ -1455,9 +1452,9 @@
 			}
 		},
 		"node_modules/prettier": {
-			"version": "3.3.2",
-			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
-			"integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
+			"version": "3.3.3",
+			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+			"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
 			"dev": true,
 			"bin": {
 				"prettier": "bin/prettier.cjs"
@@ -1675,9 +1672,9 @@
 			}
 		},
 		"node_modules/synckit": {
-			"version": "0.8.8",
-			"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
-			"integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==",
+			"version": "0.9.1",
+			"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz",
+			"integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==",
 			"dev": true,
 			"dependencies": {
 				"@pkgr/core": "^0.1.0",
@@ -1739,9 +1736,9 @@
 			}
 		},
 		"node_modules/tslib": {
-			"version": "2.6.2",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
-			"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+			"version": "2.6.3",
+			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+			"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
 			"dev": true
 		},
 		"node_modules/type-check": {
@@ -1794,9 +1791,9 @@
 			}
 		},
 		"node_modules/undici-types": {
-			"version": "5.26.5",
-			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-			"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+			"version": "6.13.0",
+			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
+			"integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==",
 			"dev": true
 		},
 		"node_modules/uri-js": {
@@ -1943,25 +1940,25 @@
 			"dev": true
 		},
 		"@types/node": {
-			"version": "20.14.9",
-			"resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz",
-			"integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==",
+			"version": "22.1.0",
+			"resolved": "https://registry.npmjs.org/@types/node/-/node-22.1.0.tgz",
+			"integrity": "sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==",
 			"dev": true,
 			"requires": {
-				"undici-types": "~5.26.4"
+				"undici-types": "~6.13.0"
 			}
 		},
 		"@typescript-eslint/eslint-plugin": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz",
-			"integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.0.1.tgz",
+			"integrity": "sha512-5g3Y7GDFsJAnY4Yhvk8sZtFfV6YNF2caLzjrRPUBzewjPCaj0yokePB4LJSobyCzGMzjZZYFbwuzbfDHlimXbQ==",
 			"dev": true,
 			"requires": {
 				"@eslint-community/regexpp": "^4.10.0",
-				"@typescript-eslint/scope-manager": "7.14.1",
-				"@typescript-eslint/type-utils": "7.14.1",
-				"@typescript-eslint/utils": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1",
+				"@typescript-eslint/scope-manager": "8.0.1",
+				"@typescript-eslint/type-utils": "8.0.1",
+				"@typescript-eslint/utils": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1",
 				"graphemer": "^1.4.0",
 				"ignore": "^5.3.1",
 				"natural-compare": "^1.4.0",
@@ -1969,54 +1966,54 @@
 			}
 		},
 		"@typescript-eslint/parser": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz",
-			"integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.0.1.tgz",
+			"integrity": "sha512-5IgYJ9EO/12pOUwiBKFkpU7rS3IU21mtXzB81TNwq2xEybcmAZrE9qwDtsb5uQd9aVO9o0fdabFyAmKveXyujg==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/scope-manager": "7.14.1",
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/typescript-estree": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1",
+				"@typescript-eslint/scope-manager": "8.0.1",
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/typescript-estree": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1",
 				"debug": "^4.3.4"
 			}
 		},
 		"@typescript-eslint/scope-manager": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz",
-			"integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.0.1.tgz",
+			"integrity": "sha512-NpixInP5dm7uukMiRyiHjRKkom5RIFA4dfiHvalanD2cF0CLUuQqxfg8PtEUo9yqJI2bBhF+pcSafqnG3UBnRQ==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1"
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1"
 			}
 		},
 		"@typescript-eslint/type-utils": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz",
-			"integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.0.1.tgz",
+			"integrity": "sha512-+/UT25MWvXeDX9YaHv1IS6KI1fiuTto43WprE7pgSMswHbn1Jm9GEM4Txp+X74ifOWV8emu2AWcbLhpJAvD5Ng==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/typescript-estree": "7.14.1",
-				"@typescript-eslint/utils": "7.14.1",
+				"@typescript-eslint/typescript-estree": "8.0.1",
+				"@typescript-eslint/utils": "8.0.1",
 				"debug": "^4.3.4",
 				"ts-api-utils": "^1.3.0"
 			}
 		},
 		"@typescript-eslint/types": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz",
-			"integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.0.1.tgz",
+			"integrity": "sha512-PpqTVT3yCA/bIgJ12czBuE3iBlM3g4inRSC5J0QOdQFAn07TYrYEQBBKgXH1lQpglup+Zy6c1fxuwTk4MTNKIw==",
 			"dev": true
 		},
 		"@typescript-eslint/typescript-estree": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz",
-			"integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.0.1.tgz",
+			"integrity": "sha512-8V9hriRvZQXPWU3bbiUV4Epo7EvgM6RTs+sUmxp5G//dBGy402S7Fx0W0QkB2fb4obCF8SInoUzvTYtc3bkb5w==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/visitor-keys": "7.14.1",
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/visitor-keys": "8.0.1",
 				"debug": "^4.3.4",
 				"globby": "^11.1.0",
 				"is-glob": "^4.0.3",
@@ -2035,9 +2032,9 @@
 					}
 				},
 				"minimatch": {
-					"version": "9.0.4",
-					"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz",
-					"integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==",
+					"version": "9.0.5",
+					"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+					"integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
 					"dev": true,
 					"requires": {
 						"brace-expansion": "^2.0.1"
@@ -2046,24 +2043,24 @@
 			}
 		},
 		"@typescript-eslint/utils": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz",
-			"integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.0.1.tgz",
+			"integrity": "sha512-CBFR0G0sCt0+fzfnKaciu9IBsKvEKYwN9UZ+eeogK1fYHg4Qxk1yf/wLQkLXlq8wbU2dFlgAesxt8Gi76E8RTA==",
 			"dev": true,
 			"requires": {
 				"@eslint-community/eslint-utils": "^4.4.0",
-				"@typescript-eslint/scope-manager": "7.14.1",
-				"@typescript-eslint/types": "7.14.1",
-				"@typescript-eslint/typescript-estree": "7.14.1"
+				"@typescript-eslint/scope-manager": "8.0.1",
+				"@typescript-eslint/types": "8.0.1",
+				"@typescript-eslint/typescript-estree": "8.0.1"
 			}
 		},
 		"@typescript-eslint/visitor-keys": {
-			"version": "7.14.1",
-			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz",
-			"integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==",
+			"version": "8.0.1",
+			"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.0.1.tgz",
+			"integrity": "sha512-W5E+o0UfUcK5EgchLZsyVWqARmsM7v54/qEq6PY3YI5arkgmCzHiuk0zKSJJbm71V0xdRna4BGomkCTXz2/LkQ==",
 			"dev": true,
 			"requires": {
-				"@typescript-eslint/types": "7.14.1",
+				"@typescript-eslint/types": "8.0.1",
 				"eslint-visitor-keys": "^3.4.3"
 			}
 		},
@@ -2301,19 +2298,19 @@
 			}
 		},
 		"eslint-plugin-prettier": {
-			"version": "5.1.3",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.1.3.tgz",
-			"integrity": "sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==",
+			"version": "5.2.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz",
+			"integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==",
 			"dev": true,
 			"requires": {
 				"prettier-linter-helpers": "^1.0.0",
-				"synckit": "^0.8.6"
+				"synckit": "^0.9.1"
 			}
 		},
 		"eslint-plugin-simple-import-sort": {
-			"version": "12.1.0",
-			"resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.0.tgz",
-			"integrity": "sha512-Y2fqAfC11TcG/WP3TrI1Gi3p3nc8XJyEOJYHyEPEGI/UAgNx6akxxlX74p7SbAQdLcgASKhj8M0GKvH3vq/+ig==",
+			"version": "12.1.1",
+			"resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-12.1.1.tgz",
+			"integrity": "sha512-6nuzu4xwQtE3332Uz0to+TxDQYRLTKRESSc2hefVT48Zc8JthmN23Gx9lnYhu0FtkRSL1oxny3kJ2aveVhmOVA==",
 			"dev": true,
 			"requires": {}
 		},
@@ -2856,9 +2853,9 @@
 			"dev": true
 		},
 		"prettier": {
-			"version": "3.3.2",
-			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz",
-			"integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==",
+			"version": "3.3.3",
+			"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+			"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
 			"dev": true
 		},
 		"prettier-linter-helpers": {
@@ -2981,9 +2978,9 @@
 			"dev": true
 		},
 		"synckit": {
-			"version": "0.8.8",
-			"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.8.tgz",
-			"integrity": "sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==",
+			"version": "0.9.1",
+			"resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz",
+			"integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==",
 			"dev": true,
 			"requires": {
 				"@pkgr/core": "^0.1.0",
@@ -3027,9 +3024,9 @@
 			}
 		},
 		"tslib": {
-			"version": "2.6.2",
-			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
-			"integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
+			"version": "2.6.3",
+			"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+			"integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
 			"dev": true
 		},
 		"type-check": {
@@ -3063,9 +3060,9 @@
 			}
 		},
 		"undici-types": {
-			"version": "5.26.5",
-			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
-			"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+			"version": "6.13.0",
+			"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
+			"integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==",
 			"dev": true
 		},
 		"uri-js": {
diff --git a/package.json b/package.json
index 0c41987..d18846c 100644
--- a/package.json
+++ b/package.json
@@ -16,15 +16,15 @@
 	"author": "",
 	"license": "MIT",
 	"devDependencies": {
-		"@types/node": "^20.14.9",
-		"@typescript-eslint/eslint-plugin": "^7.14.1",
-		"@typescript-eslint/parser": "^7.14.1",
+		"@types/node": "^22.1.0",
+		"@typescript-eslint/eslint-plugin": "^8.0.1",
+		"@typescript-eslint/parser": "^8.0.1",
 		"eslint": "^8.57.0",
 		"eslint-config-prettier": "^9.1.0",
 		"eslint-plugin-no-autofix": "^2.0.0",
-		"eslint-plugin-prettier": "^5.1.3",
-		"eslint-plugin-simple-import-sort": "^12.1.0",
-		"prettier": "^3.3.2",
+		"eslint-plugin-prettier": "^5.2.1",
+		"eslint-plugin-simple-import-sort": "^12.1.1",
+		"prettier": "^3.3.3",
 		"ts-patch": "^3.2.1",
 		"typescript": "5.2.2",
 		"typescript-transform-paths": "^3.4.7"