Radish alpha
r
Radicle web interface
Radicle
Git (anonymous pull)
Log in to clone via SSH
Upgrade typescript 4.7.4 -> 4.8.3
Rūdolfs Ošiņš committed 3 years ago
commit e8f372fb81f368be36c5286b85cfb18c9e94c792
parent a6dd423c99d76a4641c2ab35540b2b775cdbd29f
3 files changed +94 -94
modified package-lock.json
@@ -51,8 +51,8 @@
        "@types/express-serve-static-core": "^4.17.30",
        "@types/lodash": "^4.14.184",
        "@types/sanitize-html": "^2.6.2",
-
        "@typescript-eslint/eslint-plugin": "^5.25.0",
-
        "@typescript-eslint/parser": "^5.25.0",
+
        "@typescript-eslint/eslint-plugin": "^5.38.1",
+
        "@typescript-eslint/parser": "^5.38.1",
        "cypress": "^10.8.0",
        "eslint": "^7.28.0",
        "eslint-plugin-radicle": "^0.2.0",
@@ -61,7 +61,7 @@
        "prettier": "^2.7.1",
        "prettier-plugin-svelte": "^2.7.0",
        "svelte-check": "^2.8.0",
-
        "typescript": "^4.7.4",
+
        "typescript": "^4.8.3",
        "vite": "^3.0.3",
        "vite-plugin-istanbul": "^2.9.0",
        "vitest": "^0.19.1"
@@ -3542,16 +3542,15 @@
      }
    },
    "node_modules/@typescript-eslint/eslint-plugin": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz",
-
      "integrity": "sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz",
+
      "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/scope-manager": "5.25.0",
-
        "@typescript-eslint/type-utils": "5.25.0",
-
        "@typescript-eslint/utils": "5.25.0",
+
        "@typescript-eslint/scope-manager": "5.38.1",
+
        "@typescript-eslint/type-utils": "5.38.1",
+
        "@typescript-eslint/utils": "5.38.1",
        "debug": "^4.3.4",
-
        "functional-red-black-tree": "^1.0.1",
        "ignore": "^5.2.0",
        "regexpp": "^3.2.0",
        "semver": "^7.3.7",
@@ -3602,14 +3601,14 @@
      }
    },
    "node_modules/@typescript-eslint/parser": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz",
-
      "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz",
+
      "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/scope-manager": "5.25.0",
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/typescript-estree": "5.25.0",
+
        "@typescript-eslint/scope-manager": "5.38.1",
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/typescript-estree": "5.38.1",
        "debug": "^4.3.4"
      },
      "engines": {
@@ -3629,13 +3628,13 @@
      }
    },
    "node_modules/@typescript-eslint/scope-manager": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz",
-
      "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz",
+
      "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/visitor-keys": "5.25.0"
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/visitor-keys": "5.38.1"
      },
      "engines": {
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3646,12 +3645,13 @@
      }
    },
    "node_modules/@typescript-eslint/type-utils": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz",
-
      "integrity": "sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz",
+
      "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/utils": "5.25.0",
+
        "@typescript-eslint/typescript-estree": "5.38.1",
+
        "@typescript-eslint/utils": "5.38.1",
        "debug": "^4.3.4",
        "tsutils": "^3.21.0"
      },
@@ -3672,9 +3672,9 @@
      }
    },
    "node_modules/@typescript-eslint/types": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz",
-
      "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz",
+
      "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==",
      "dev": true,
      "engines": {
        "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -3685,13 +3685,13 @@
      }
    },
    "node_modules/@typescript-eslint/typescript-estree": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz",
-
      "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz",
+
      "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/visitor-keys": "5.25.0",
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/visitor-keys": "5.38.1",
        "debug": "^4.3.4",
        "globby": "^11.1.0",
        "is-glob": "^4.0.3",
@@ -3759,15 +3759,15 @@
      }
    },
    "node_modules/@typescript-eslint/utils": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.25.0.tgz",
-
      "integrity": "sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz",
+
      "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==",
      "dev": true,
      "dependencies": {
        "@types/json-schema": "^7.0.9",
-
        "@typescript-eslint/scope-manager": "5.25.0",
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/typescript-estree": "5.25.0",
+
        "@typescript-eslint/scope-manager": "5.38.1",
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/typescript-estree": "5.38.1",
        "eslint-scope": "^5.1.1",
        "eslint-utils": "^3.0.0"
      },
@@ -3783,12 +3783,12 @@
      }
    },
    "node_modules/@typescript-eslint/visitor-keys": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz",
-
      "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz",
+
      "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==",
      "dev": true,
      "dependencies": {
-
        "@typescript-eslint/types": "5.25.0",
+
        "@typescript-eslint/types": "5.38.1",
        "eslint-visitor-keys": "^3.3.0"
      },
      "engines": {
@@ -11043,9 +11043,9 @@
      }
    },
    "node_modules/typescript": {
-
      "version": "4.7.4",
-
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
-
      "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==",
+
      "version": "4.8.3",
+
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
+
      "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig==",
      "bin": {
        "tsc": "bin/tsc",
        "tsserver": "bin/tsserver"
@@ -14256,16 +14256,15 @@
      }
    },
    "@typescript-eslint/eslint-plugin": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz",
-
      "integrity": "sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.1.tgz",
+
      "integrity": "sha512-ky7EFzPhqz3XlhS7vPOoMDaQnQMn+9o5ICR9CPr/6bw8HrFkzhMSxuA3gRfiJVvs7geYrSeawGJjZoZQKCOglQ==",
      "dev": true,
      "requires": {
-
        "@typescript-eslint/scope-manager": "5.25.0",
-
        "@typescript-eslint/type-utils": "5.25.0",
-
        "@typescript-eslint/utils": "5.25.0",
+
        "@typescript-eslint/scope-manager": "5.38.1",
+
        "@typescript-eslint/type-utils": "5.38.1",
+
        "@typescript-eslint/utils": "5.38.1",
        "debug": "^4.3.4",
-
        "functional-red-black-tree": "^1.0.1",
        "ignore": "^5.2.0",
        "regexpp": "^3.2.0",
        "semver": "^7.3.7",
@@ -14293,52 +14292,53 @@
      }
    },
    "@typescript-eslint/parser": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz",
-
      "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.1.tgz",
+
      "integrity": "sha512-LDqxZBVFFQnQRz9rUZJhLmox+Ep5kdUmLatLQnCRR6523YV+XhRjfYzStQ4MheFA8kMAfUlclHSbu+RKdRwQKw==",
      "dev": true,
      "requires": {
-
        "@typescript-eslint/scope-manager": "5.25.0",
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/typescript-estree": "5.25.0",
+
        "@typescript-eslint/scope-manager": "5.38.1",
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/typescript-estree": "5.38.1",
        "debug": "^4.3.4"
      }
    },
    "@typescript-eslint/scope-manager": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz",
-
      "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.1.tgz",
+
      "integrity": "sha512-BfRDq5RidVU3RbqApKmS7RFMtkyWMM50qWnDAkKgQiezRtLKsoyRKIvz1Ok5ilRWeD9IuHvaidaLxvGx/2eqTQ==",
      "dev": true,
      "requires": {
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/visitor-keys": "5.25.0"
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/visitor-keys": "5.38.1"
      }
    },
    "@typescript-eslint/type-utils": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz",
-
      "integrity": "sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.1.tgz",
+
      "integrity": "sha512-UU3j43TM66gYtzo15ivK2ZFoDFKKP0k03MItzLdq0zV92CeGCXRfXlfQX5ILdd4/DSpHkSjIgLLLh1NtkOJOAw==",
      "dev": true,
      "requires": {
-
        "@typescript-eslint/utils": "5.25.0",
+
        "@typescript-eslint/typescript-estree": "5.38.1",
+
        "@typescript-eslint/utils": "5.38.1",
        "debug": "^4.3.4",
        "tsutils": "^3.21.0"
      }
    },
    "@typescript-eslint/types": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz",
-
      "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.1.tgz",
+
      "integrity": "sha512-QTW1iHq1Tffp9lNfbfPm4WJabbvpyaehQ0SrvVK2yfV79SytD9XDVxqiPvdrv2LK7DGSFo91TB2FgWanbJAZXg==",
      "dev": true
    },
    "@typescript-eslint/typescript-estree": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz",
-
      "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.1.tgz",
+
      "integrity": "sha512-99b5e/Enoe8fKMLdSuwrfH/C0EIbpUWmeEKHmQlGZb8msY33qn1KlkFww0z26o5Omx7EVjzVDCWEfrfCDHfE7g==",
      "dev": true,
      "requires": {
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/visitor-keys": "5.25.0",
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/visitor-keys": "5.38.1",
        "debug": "^4.3.4",
        "globby": "^11.1.0",
        "is-glob": "^4.0.3",
@@ -14381,26 +14381,26 @@
      }
    },
    "@typescript-eslint/utils": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.25.0.tgz",
-
      "integrity": "sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.1.tgz",
+
      "integrity": "sha512-oIuUiVxPBsndrN81oP8tXnFa/+EcZ03qLqPDfSZ5xIJVm7A9V0rlkQwwBOAGtrdN70ZKDlKv+l1BeT4eSFxwXA==",
      "dev": true,
      "requires": {
        "@types/json-schema": "^7.0.9",
-
        "@typescript-eslint/scope-manager": "5.25.0",
-
        "@typescript-eslint/types": "5.25.0",
-
        "@typescript-eslint/typescript-estree": "5.25.0",
+
        "@typescript-eslint/scope-manager": "5.38.1",
+
        "@typescript-eslint/types": "5.38.1",
+
        "@typescript-eslint/typescript-estree": "5.38.1",
        "eslint-scope": "^5.1.1",
        "eslint-utils": "^3.0.0"
      }
    },
    "@typescript-eslint/visitor-keys": {
-
      "version": "5.25.0",
-
      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz",
-
      "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==",
+
      "version": "5.38.1",
+
      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.1.tgz",
+
      "integrity": "sha512-bSHr1rRxXt54+j2n4k54p4fj8AHJ49VDWtjpImOpzQj4qjAiOpPni+V1Tyajh19Api1i844F757cur8wH3YvOA==",
      "dev": true,
      "requires": {
-
        "@typescript-eslint/types": "5.25.0",
+
        "@typescript-eslint/types": "5.38.1",
        "eslint-visitor-keys": "^3.3.0"
      },
      "dependencies": {
@@ -19889,9 +19889,9 @@
      }
    },
    "typescript": {
-
      "version": "4.7.4",
-
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz",
-
      "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ=="
+
      "version": "4.8.3",
+
      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.8.3.tgz",
+
      "integrity": "sha512-goMHfm00nWPa8UvR/CPSvykqf6dVV8x/dp0c5mFTMTIu0u0FlGWRioyy7Nn0PGAdHxpJZnuO/ut+PpQ8UiHAig=="
    },
    "typescript-memoize": {
      "version": "1.1.0",
modified package.json
@@ -25,8 +25,8 @@
    "@types/express-serve-static-core": "^4.17.30",
    "@types/lodash": "^4.14.184",
    "@types/sanitize-html": "^2.6.2",
-
    "@typescript-eslint/eslint-plugin": "^5.25.0",
-
    "@typescript-eslint/parser": "^5.25.0",
+
    "@typescript-eslint/eslint-plugin": "^5.38.1",
+
    "@typescript-eslint/parser": "^5.38.1",
    "cypress": "^10.8.0",
    "eslint": "^7.28.0",
    "eslint-plugin-radicle": "^0.2.0",
@@ -35,7 +35,7 @@
    "prettier": "^2.7.1",
    "prettier-plugin-svelte": "^2.7.0",
    "svelte-check": "^2.8.0",
-
    "typescript": "^4.7.4",
+
    "typescript": "^4.8.3",
    "vite": "^3.0.3",
    "vite-plugin-istanbul": "^2.9.0",
    "vitest": "^0.19.1"
modified src/base/seeds/Seed.ts
@@ -5,7 +5,7 @@ import { isDomain, isLocal } from "@app/utils";
import { assert } from "@app/error";

export class InvalidSeed {
-
  valid: false = false;
+
  valid = false as const;

  host?: string;
  id?: string;
@@ -17,7 +17,7 @@ export class InvalidSeed {
}

export class Seed {
-
  valid: true = true;
+
  valid = true as const;

  api: { host: string; port: number | null };
  git: { host: string; port: number | null };