diff --git a/package.json b/package.json
index 2f9820a..ab51a56 100644
--- a/package.json
+++ b/package.json
@@ -139,7 +139,7 @@
     "stylus": "^0.60.0",
     "sucrase": "^3.34.0",
     "tsup": "^8.0.0",
-    "typescript": "5.3.2",
+    "typescript": "5.8.3",
     "vite": "^4.4.9",
     "vitest": "^0.34.3",
     "webpack": "^5.88.2"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 935f88b..70d2f69 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -47,7 +47,7 @@ importers:
         version: 7.22.11
       '@baiwusanyu/eslint-config':
         specifier: ^1.0.15
-        version: 1.0.16(eslint@8.48.0)(typescript@5.3.2)
+        version: 1.0.16(eslint@8.48.0)(typescript@5.8.3)
       '@rollup/pluginutils':
         specifier: ^5.0.4
         version: 5.0.4(rollup@4.0.0)
@@ -161,10 +161,10 @@ importers:
         version: 3.34.0
       tsup:
         specifier: ^8.0.0
-        version: 8.0.1(typescript@5.3.2)
+        version: 8.0.1(typescript@5.8.3)
       typescript:
-        specifier: 5.3.2
-        version: 5.3.2
+        specifier: 5.8.3
+        version: 5.8.3
       vite:
         specifier: ^4.4.9
         version: 4.4.9(@types/node@20.5.7)(less@4.2.0)(sass@1.66.1)(stylus@0.60.0)
@@ -218,7 +218,7 @@ importers:
         version: 5.0.8(@vue/cli-service@5.0.8)(core-js@3.32.1)(esbuild@0.19.7)(vue@3.4.19)
       '@vue/cli-plugin-typescript':
         specifier: ~5.0.8
-        version: 5.0.8(@vue/cli-service@5.0.8)(esbuild@0.19.7)(eslint@8.48.0)(typescript@5.3.3)(vue@3.4.19)
+        version: 5.0.8(@vue/cli-service@5.0.8)(esbuild@0.19.7)(eslint@8.48.0)(typescript@5.8.3)(vue@3.4.19)
       '@vue/cli-service':
         specifier: ~5.0.8
         version: 5.0.8(@babel/core@7.22.11)(@vue/compiler-sfc@3.3.4)(esbuild@0.19.7)(vue@3.4.19)
@@ -1725,12 +1725,12 @@ packages:
       to-fast-properties: 2.0.0
     dev: true
 
-  /@baiwusanyu/eslint-config@1.0.16(eslint@8.48.0)(typescript@5.3.2):
+  /@baiwusanyu/eslint-config@1.0.16(eslint@8.48.0)(typescript@5.8.3):
     resolution: {integrity: sha512-ICPLbNYp/knhYfV4XD5TF4j0ZqH6dltfeoe2w9d7G2NRlijUUcLQTmhN0TigFvRgcXkmQeA3BW99oUgwbg4w+g==}
     peerDependencies:
       eslint: ^8.38.0
     dependencies:
-      '@baiwusanyu/eslint-plugin': 1.0.16(eslint@8.48.0)(typescript@5.3.2)
+      '@baiwusanyu/eslint-plugin': 1.0.16(eslint@8.48.0)(typescript@5.8.3)
       eslint: 8.48.0
     transitivePeerDependencies:
       - eslint-import-resolver-node
@@ -1739,14 +1739,14 @@ packages:
       - typescript
     dev: true
 
-  /@baiwusanyu/eslint-plugin@1.0.16(eslint@8.48.0)(typescript@5.3.2):
+  /@baiwusanyu/eslint-plugin@1.0.16(eslint@8.48.0)(typescript@5.8.3):
     resolution: {integrity: sha512-sFIHHJ3jbj6YY4UR9EEtinQiQ01QSXlzroGB87xUHRDAFn9I08HSsjn6Vzw1yTJcAbyvc+jIhfvRR4b+cmZ3EA==}
     peerDependencies:
       eslint: ^8.0.0
     dependencies:
       '@next/eslint-plugin-next': 14.1.0
-      '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.48.0)(typescript@5.3.2)
-      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.3.2)
+      '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.48.0)(typescript@5.8.3)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.8.3)
       eslint: 8.48.0
       eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.48.0)
       eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0)(eslint-plugin-import@2.29.1)(eslint@8.48.0)
@@ -3179,7 +3179,7 @@ packages:
       '@types/node': 20.5.7
     dev: true
 
-  /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.48.0)(typescript@5.3.2):
+  /@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0)(eslint@8.48.0)(typescript@5.8.3):
     resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==}
     engines: {node: ^16.0.0 || >=18.0.0}
     peerDependencies:
@@ -3191,10 +3191,10 @@ packages:
         optional: true
     dependencies:
       '@eslint-community/regexpp': 4.10.0
-      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.3.2)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.8.3)
       '@typescript-eslint/scope-manager': 6.21.0
-      '@typescript-eslint/type-utils': 6.21.0(eslint@8.48.0)(typescript@5.3.2)
-      '@typescript-eslint/utils': 6.21.0(eslint@8.48.0)(typescript@5.3.2)
+      '@typescript-eslint/type-utils': 6.21.0(eslint@8.48.0)(typescript@5.8.3)
+      '@typescript-eslint/utils': 6.21.0(eslint@8.48.0)(typescript@5.8.3)
       '@typescript-eslint/visitor-keys': 6.21.0
       debug: 4.3.4
       eslint: 8.48.0
@@ -3202,13 +3202,13 @@ packages:
       ignore: 5.3.1
       natural-compare: 1.4.0
       semver: 7.6.0
-      ts-api-utils: 1.2.1(typescript@5.3.2)
-      typescript: 5.3.2
+      ts-api-utils: 1.2.1(typescript@5.8.3)
+      typescript: 5.8.3
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/parser@6.21.0(eslint@8.48.0)(typescript@5.3.2):
+  /@typescript-eslint/parser@6.21.0(eslint@8.48.0)(typescript@5.8.3):
     resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==}
     engines: {node: ^16.0.0 || >=18.0.0}
     peerDependencies:
@@ -3220,11 +3220,11 @@ packages:
     dependencies:
       '@typescript-eslint/scope-manager': 6.21.0
       '@typescript-eslint/types': 6.21.0
-      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.2)
+      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3)
       '@typescript-eslint/visitor-keys': 6.21.0
       debug: 4.3.4
       eslint: 8.48.0
-      typescript: 5.3.2
+      typescript: 5.8.3
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3237,7 +3237,7 @@ packages:
       '@typescript-eslint/visitor-keys': 6.21.0
     dev: true
 
-  /@typescript-eslint/type-utils@6.21.0(eslint@8.48.0)(typescript@5.3.2):
+  /@typescript-eslint/type-utils@6.21.0(eslint@8.48.0)(typescript@5.8.3):
     resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==}
     engines: {node: ^16.0.0 || >=18.0.0}
     peerDependencies:
@@ -3247,12 +3247,12 @@ packages:
       typescript:
         optional: true
     dependencies:
-      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.2)
-      '@typescript-eslint/utils': 6.21.0(eslint@8.48.0)(typescript@5.3.2)
+      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3)
+      '@typescript-eslint/utils': 6.21.0(eslint@8.48.0)(typescript@5.8.3)
       debug: 4.3.4
       eslint: 8.48.0
-      ts-api-utils: 1.2.1(typescript@5.3.2)
-      typescript: 5.3.2
+      ts-api-utils: 1.2.1(typescript@5.8.3)
+      typescript: 5.8.3
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3262,7 +3262,7 @@ packages:
     engines: {node: ^16.0.0 || >=18.0.0}
     dev: true
 
-  /@typescript-eslint/typescript-estree@6.21.0(typescript@5.3.2):
+  /@typescript-eslint/typescript-estree@6.21.0(typescript@5.8.3):
     resolution: {integrity: sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==}
     engines: {node: ^16.0.0 || >=18.0.0}
     peerDependencies:
@@ -3278,13 +3278,13 @@ packages:
       is-glob: 4.0.3
       minimatch: 9.0.3
       semver: 7.6.0
-      ts-api-utils: 1.2.1(typescript@5.3.2)
-      typescript: 5.3.2
+      ts-api-utils: 1.2.1(typescript@5.8.3)
+      typescript: 5.8.3
     transitivePeerDependencies:
       - supports-color
     dev: true
 
-  /@typescript-eslint/utils@6.21.0(eslint@8.48.0)(typescript@5.3.2):
+  /@typescript-eslint/utils@6.21.0(eslint@8.48.0)(typescript@5.8.3):
     resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==}
     engines: {node: ^16.0.0 || >=18.0.0}
     peerDependencies:
@@ -3295,7 +3295,7 @@ packages:
       '@types/semver': 7.5.8
       '@typescript-eslint/scope-manager': 6.21.0
       '@typescript-eslint/types': 6.21.0
-      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.3.2)
+      '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.8.3)
       eslint: 8.48.0
       semver: 7.6.0
     transitivePeerDependencies:
@@ -3471,7 +3471,7 @@ packages:
       core-js: 3.32.1
       core-js-compat: 3.31.0
       semver: 7.5.3
-      vue: 3.4.19(typescript@5.3.3)
+      vue: 3.4.19(typescript@5.8.3)
     transitivePeerDependencies:
       - supports-color
     dev: true
@@ -3494,7 +3494,7 @@ packages:
       '@vue/babel-sugar-inject-h': 1.4.0(@babel/core@7.22.11)
       '@vue/babel-sugar-v-model': 1.4.0(@babel/core@7.22.11)
       '@vue/babel-sugar-v-on': 1.4.0(@babel/core@7.22.11)
-      vue: 3.4.19(typescript@5.3.3)
+      vue: 3.4.19(typescript@5.8.3)
     dev: true
 
   /@vue/babel-sugar-composition-api-inject-h@1.4.0(@babel/core@7.22.11):
@@ -3596,7 +3596,7 @@ packages:
       - encoding
     dev: true
 
-  /@vue/cli-plugin-typescript@5.0.8(@vue/cli-service@5.0.8)(esbuild@0.19.7)(eslint@8.48.0)(typescript@5.3.3)(vue@3.4.19):
+  /@vue/cli-plugin-typescript@5.0.8(@vue/cli-service@5.0.8)(esbuild@0.19.7)(eslint@8.48.0)(typescript@5.8.3)(vue@3.4.19):
     resolution: {integrity: sha512-JKJOwzJshBqsmp4yLBexwVMebOZ4VGJgbnYvmHVxasJOStF2RxwyW28ZF+zIvASGdat4sAUuo/3mAQyVhm7JHg==}
     peerDependencies:
       '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0
@@ -3615,12 +3615,12 @@ packages:
       '@vue/cli-service': 5.0.8(@babel/core@7.22.11)(@vue/compiler-sfc@3.3.4)(esbuild@0.19.7)(vue@3.4.19)
       '@vue/cli-shared-utils': 5.0.8
       babel-loader: 8.3.0(@babel/core@7.22.11)(webpack@5.88.2)
-      fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.88.2)
+      fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.48.0)(typescript@5.8.3)(webpack@5.88.2)
       globby: 11.1.0
       thread-loader: 3.0.4(webpack@5.88.2)
-      ts-loader: 9.4.3(typescript@5.3.3)(webpack@5.88.2)
-      typescript: 5.3.3
-      vue: 3.4.19(typescript@5.3.3)
+      ts-loader: 9.4.3(typescript@5.8.3)(webpack@5.88.2)
+      typescript: 5.8.3
+      vue: 3.4.19(typescript@5.8.3)
       webpack: 5.88.2(esbuild@0.19.7)
     transitivePeerDependencies:
       - '@swc/core'
@@ -4021,7 +4021,7 @@ packages:
     dependencies:
       '@vue/compiler-ssr': 3.4.19
       '@vue/shared': 3.4.19
-      vue: 3.4.19(typescript@5.3.3)
+      vue: 3.4.19(typescript@5.8.3)
     dev: true
 
   /@vue/shared@3.3.4:
@@ -6746,7 +6746,7 @@ packages:
       eslint-import-resolver-webpack:
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.3.2)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.8.3)
       debug: 3.2.7
       eslint: 8.48.0
       eslint-import-resolver-node: 0.3.9
@@ -6794,7 +6794,7 @@ packages:
       '@typescript-eslint/parser':
         optional: true
     dependencies:
-      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.3.2)
+      '@typescript-eslint/parser': 6.21.0(eslint@8.48.0)(typescript@5.8.3)
       array-includes: 3.1.7
       array.prototype.findlastindex: 1.2.4
       array.prototype.flat: 1.3.2
@@ -7525,7 +7525,7 @@ packages:
       signal-exit: 4.0.2
     dev: true
 
-  /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.3.3)(webpack@5.88.2):
+  /fork-ts-checker-webpack-plugin@6.5.3(eslint@8.48.0)(typescript@5.8.3)(webpack@5.88.2):
     resolution: {integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==}
     engines: {node: '>=10', yarn: '>=1.0.0'}
     peerDependencies:
@@ -7553,7 +7553,7 @@ packages:
       schema-utils: 2.7.0
       semver: 7.5.3
       tapable: 1.1.3
-      typescript: 5.3.3
+      typescript: 5.8.3
       webpack: 5.88.2(esbuild@0.19.7)
     dev: true
 
@@ -7633,7 +7633,7 @@ packages:
     resolution: {integrity: sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==}
     engines: {node: '>= 4.0'}
     os: [darwin]
-    deprecated: The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2
+    deprecated: Upgrade to fsevents v2 to mitigate potential security issues
     requiresBuild: true
     dependencies:
       bindings: 1.5.0
@@ -12762,20 +12762,20 @@ packages:
     hasBin: true
     dev: true
 
-  /ts-api-utils@1.2.1(typescript@5.3.2):
+  /ts-api-utils@1.2.1(typescript@5.8.3):
     resolution: {integrity: sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==}
     engines: {node: '>=16'}
     peerDependencies:
       typescript: '>=4.2.0'
     dependencies:
-      typescript: 5.3.2
+      typescript: 5.8.3
     dev: true
 
   /ts-interface-checker@0.1.13:
     resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
     dev: true
 
-  /ts-loader@9.4.3(typescript@5.3.3)(webpack@5.88.2):
+  /ts-loader@9.4.3(typescript@5.8.3)(webpack@5.88.2):
     resolution: {integrity: sha512-n3hBnm6ozJYzwiwt5YRiJZkzktftRpMiBApHaJPoWLA+qetQBAXkHqCLM6nwSdRDimqVtA5ocIkcTRLMTt7yzA==}
     engines: {node: '>=12.0.0'}
     peerDependencies:
@@ -12786,7 +12786,7 @@ packages:
       enhanced-resolve: 5.15.0
       micromatch: 4.0.5
       semver: 7.5.3
-      typescript: 5.3.3
+      typescript: 5.8.3
       webpack: 5.88.2(esbuild@0.19.7)
     dev: true
 
@@ -12807,7 +12807,7 @@ packages:
     resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==}
     dev: true
 
-  /tsup@8.0.1(typescript@5.3.2):
+  /tsup@8.0.1(typescript@5.8.3):
     resolution: {integrity: sha512-hvW7gUSG96j53ZTSlT4j/KL0q1Q2l6TqGBFc6/mu/L46IoNWqLLUzLRLP1R8Q7xrJTmkDxxDoojV5uCVs1sVOg==}
     engines: {node: '>=18'}
     hasBin: true
@@ -12840,7 +12840,7 @@ packages:
       source-map: 0.8.0-beta.0
       sucrase: 3.34.0
       tree-kill: 1.2.2
-      typescript: 5.3.2
+      typescript: 5.8.3
     transitivePeerDependencies:
       - supports-color
       - ts-node
@@ -12962,14 +12962,8 @@ packages:
     resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
     dev: true
 
-  /typescript@5.3.2:
-    resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==}
-    engines: {node: '>=14.17'}
-    hasBin: true
-    dev: true
-
-  /typescript@5.3.3:
-    resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==}
+  /typescript@5.8.3:
+    resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
     engines: {node: '>=14.17'}
     hasBin: true
     dev: true
@@ -13486,7 +13480,7 @@ packages:
       '@vue/compiler-sfc': 3.3.4
       chalk: 4.1.2
       hash-sum: 2.0.0
-      vue: 3.4.19(typescript@5.3.3)
+      vue: 3.4.19(typescript@5.8.3)
       watchpack: 2.4.0
       webpack: 5.88.2(esbuild@0.19.7)
     dev: true
@@ -13511,7 +13505,7 @@ packages:
       '@vue/server-renderer': 3.3.4(vue@3.3.4)
       '@vue/shared': 3.3.4
 
-  /vue@3.4.19(typescript@5.3.3):
+  /vue@3.4.19(typescript@5.8.3):
     resolution: {integrity: sha512-W/7Fc9KUkajFU8dBeDluM4sRGc/aa4YJnOYck8dkjgZoXtVsn3OeTGni66FV1l3+nvPA7VBFYtPioaGKUmEADw==}
     peerDependencies:
       typescript: '*'
@@ -13524,7 +13518,7 @@ packages:
       '@vue/runtime-dom': 3.4.19
       '@vue/server-renderer': 3.4.19(vue@3.4.19)
       '@vue/shared': 3.4.19
-      typescript: 5.3.3
+      typescript: 5.8.3
     dev: true
 
   /w3c-xmlserializer@4.0.0: