Repository: typescript-eslint/tslint-to-eslint-config (ts)

Issue:
Conversion of TSLint semicolon rule seems incorrect?
### 🐛 Bug Report

-   `tslint-to-eslint-config` version: 2.9.2 (latest)
-   ESLint version: Not installed
-   Node version: 14.17.5

#### Actual Behavior

Migration of the TSLint `semicolon` rule enables ESLint's `semi` rule as well as `@typescript-eslint/semi`.  This seems to be [contrary to the docs for @typescript-eslint/semi](https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/semi.md), and leads to two errors reported for one missing semicolon when we lint with ESLint.

#### Expected Behavior

ESLint's `semi` rule should be `off`?  I'm a little unsure if it is being set to `error` deliberately for some reason?

#### Reproduction

- Create tslint.json in a folder as below:
```
{
  "rules": {
    "semicolon": [ true, "always" ]
  }
}
```
- In the folder, install and run the converter: `npm i tslint-to-eslint-config`, `npx tslint-to-eslint-config`
- Resulting .eslintrc.js is below.  
```
module.exports = {
    "env": {
        "browser": true,
        "es6": true,
        "node": true
    },
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "project": "tsconfig.json",
        "sourceType": "module"
    },
    "plugins": [
        "@typescript-eslint"
    ],
    "rules": {
        "@typescript-eslint/member-delimiter-style": [
            "error",
            {
                "multiline": {
                    "delimiter": "semi",
                    "requireLast": true
                },
                "singleline": {
                    "delimiter": "semi",
                    "requireLast": false
                }
            }
        ],
        "@typescript-eslint/semi": [
            "error",
            "always"
        ],
        "semi": "error"
    }
};
```

Pull request:
Properly use `ruleSeverity` properties of rule converters during conversion
<!--
👋 Hi, thanks for sending a PR to tslint-to-eslint-config! 💖
Please fill out all fields below to ensure your PR is reviewed quickly.
-->

## PR Checklist

-   [x] Addresses an existing issue: fixes #1207
-   [x] That issue was marked as [`status: accepting prs`](https://github.com/typescript-eslint/tslint-to-eslint-config/labels/status%3A%20accepting%20prs)

## Overview

It seems that if `ruleSeverity` is specified within a rule of a converter, it is not properly applied when converting to the ESLint rules. The linked page mentions it specifically for `semicolon`, but it seems to be more general
 
For example, the following TSLint rules will both have a `ruleSeverity` of `error` since `true` is the first array element

```json
{
    "rules": {
        "semicolon": [true, "always"],
        "no-variable-usage-before-declaration": [true]
    }
}
```

This translates directly to the following ESLint, even though we do `{ ruleName: "semi", ruleSeverity: "off" }`, etc. in the converters

```json
{
    "rules": {
        "no-use-before-define": "error",
        "semi": "error"
    }
}
```

The patches fix this by setting the converted `ruleSeverity` with the explicitly specified `rule.ruleSeverity` if it is truthy

The following show the full resulting ESLint configs before and after the code changes (using the aforementioned TSLint config)

**Before:**

<details>
<summary>.eslintrc.json</summary>

```json
{
    "env": {
        "browser": true,
        "es6": true
    },
    "extends": [
        "prettier"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "project": "tsconfig.json",
        "sourceType": "module"
    },
    "plugins": [
        "@typescript-eslint"
    ],
    "root": true,
    "rules": {
        "@typescript-eslint/member-delimiter-style": [
            "error",
            {
                "multiline": {
                    "delimiter": "semi",
                    "requireLast": true
                },
                "singleline": {
                    "delimiter": "semi",
                    "requireLast": false
                }
            }
        ],
        "@typescript-eslint/no-use-before-define": [
            "error",
            {
                "variables": true
            }
        ],
        "@typescript-eslint/semi": [
            "error",
            "always"
        ],
        "no-use-before-define": "error",
        "semi": "error"
    }
}
```



</details>

**After:**

<details>
<summary>.eslintrc.json</summary>

```json
{
    "env": {
        "browser": true,
        "es6": true
    },
    "extends": [
        "prettier"
    ],
    "parser": "@typescript-eslint/parser",
    "parserOptions": {
        "project": "tsconfig.json",
        "sourceType": "module"
    },
    "plugins": [
        "@typescript-eslint"
    ],
    "root": true,
    "rules": {
        "@typescript-eslint/member-delimiter-style": [
            "error",
            {
                "multiline": {
                    "delimiter": "semi",
                    "requireLast": true
                },
                "singleline": {
                    "delimiter": "semi",
                    "requireLast": false
                }
            }
        ],
        "@typescript-eslint/no-use-before-define": [
            "error",
            {
                "variables": true
            }
        ],
        "@typescript-eslint/semi": [
            "error",
            "always"
        ],
        "no-use-before-define": "off",
        "semi": "off"
    }
}
```


</details>

Patch:
diff --git a/package-lock.json b/package-lock.json
index 9e077b4..e873a90 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,7 +24,7 @@
                 "tslint-to-eslint-config": "bin/tslint-to-eslint-config"
             },
             "devDependencies": {
-                "@swc/core": "1.2.174",
+                "@swc/core": "1.2.175",
                 "@swc/jest": "0.2.20",
                 "@types/eslint-config-prettier": "6.11.0",
                 "@types/glob": "7.2.0",
@@ -1205,9 +1205,9 @@
             }
         },
         "node_modules/@swc/core": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.174.tgz",
-            "integrity": "sha512-PbBwwaqrBCyOae+hZV9QK+QeR1azqb+MGKvuk6SVxsk3Rvh1HSX4CieMnuhcmX+Sm4L58eQv9l37ZLCu2hBZcA==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.175.tgz",
+            "integrity": "sha512-CCLr8qV0sGsiWnN7xqmmNwqnGlBg3CKZc5+EKIxSWjRAExRV1rFLejW2aesBn2RRyKZRpnwEyOk/GFxjsKBxzw==",
             "dev": true,
             "bin": {
                 "swcx": "run_swcx.js"
@@ -1220,25 +1220,25 @@
                 "url": "https://opencollective.com/swc"
             },
             "optionalDependencies": {
-                "@swc/core-android-arm-eabi": "1.2.174",
-                "@swc/core-android-arm64": "1.2.174",
-                "@swc/core-darwin-arm64": "1.2.174",
-                "@swc/core-darwin-x64": "1.2.174",
-                "@swc/core-freebsd-x64": "1.2.174",
-                "@swc/core-linux-arm-gnueabihf": "1.2.174",
-                "@swc/core-linux-arm64-gnu": "1.2.174",
-                "@swc/core-linux-arm64-musl": "1.2.174",
-                "@swc/core-linux-x64-gnu": "1.2.174",
-                "@swc/core-linux-x64-musl": "1.2.174",
-                "@swc/core-win32-arm64-msvc": "1.2.174",
-                "@swc/core-win32-ia32-msvc": "1.2.174",
-                "@swc/core-win32-x64-msvc": "1.2.174"
+                "@swc/core-android-arm-eabi": "1.2.175",
+                "@swc/core-android-arm64": "1.2.175",
+                "@swc/core-darwin-arm64": "1.2.175",
+                "@swc/core-darwin-x64": "1.2.175",
+                "@swc/core-freebsd-x64": "1.2.175",
+                "@swc/core-linux-arm-gnueabihf": "1.2.175",
+                "@swc/core-linux-arm64-gnu": "1.2.175",
+                "@swc/core-linux-arm64-musl": "1.2.175",
+                "@swc/core-linux-x64-gnu": "1.2.175",
+                "@swc/core-linux-x64-musl": "1.2.175",
+                "@swc/core-win32-arm64-msvc": "1.2.175",
+                "@swc/core-win32-ia32-msvc": "1.2.175",
+                "@swc/core-win32-x64-msvc": "1.2.175"
             }
         },
         "node_modules/@swc/core-android-arm-eabi": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.174.tgz",
-            "integrity": "sha512-sxH6jIq57wnZ8LyLKN8SXM4DhMo4aTq0mClo+zBMPTyHzNO5AEAwh5nqs+d51Dycs3epur/8iv/J6xDv+cKkfw==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.175.tgz",
+            "integrity": "sha512-Uyg19XdczD1IrZe4IZO4qzZ3HCp8MynSCBvtkbyeM2ok7UGse/KjeP+giYEHvock3cvVVkPVaOKoU2gVGhkm7A==",
             "cpu": [
                 "arm"
             ],
@@ -1252,9 +1252,9 @@
             }
         },
         "node_modules/@swc/core-android-arm64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.174.tgz",
-            "integrity": "sha512-gGXBuY8Zs93eNduyrhm+rB+K/smF535uwmamHB1+7BrkuUtt/Lrk3vDTc4D61GMA/vBOqus9IXKHBc+EFmBbog==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.175.tgz",
+            "integrity": "sha512-fov7p47Eq2fAj/zZOfNicTkOO3ILblxJMMUPeTHEMsQ4DTFr3SgjZjWKxHiMwiWxitLGR2YoTdCUs1qWcGALcQ==",
             "cpu": [
                 "arm64"
             ],
@@ -1268,9 +1268,9 @@
             }
         },
         "node_modules/@swc/core-darwin-arm64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.174.tgz",
-            "integrity": "sha512-dFxu2o8dR55A+d0Qf/Ai0yKnGjon/UT1hWnBY9tcyvgo7XsiFRB/P83tlbVohqq9N+SDVxdBg9bMAR2i8rDTHg==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.175.tgz",
+            "integrity": "sha512-Rht5U9gDBiVoF3nTOySv2as5TJ+rkBB0ZtY4kG57wJGPet9dQtm3yZsxUSz6EYlo4pRTtXmd+PvMnfmgFwddUA==",
             "cpu": [
                 "arm64"
             ],
@@ -1284,9 +1284,9 @@
             }
         },
         "node_modules/@swc/core-darwin-x64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.174.tgz",
-            "integrity": "sha512-LsANlfBkqfJobPvfojTbUY9xw0ZwTxTicdwaK6BC5TLmYXVfvxvMpmhsvIe3bNlx4jV1z0IrFaJ0YxDSc1s6vw==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.175.tgz",
+            "integrity": "sha512-W+EMt9Cwusl8bmEwrR3WO6XO3OEXp6D1pTUzPCS5aoESEAmuKtTiTuhUQYhz2KZpJOdWYm4HxPn/UewRxi6cjA==",
             "cpu": [
                 "x64"
             ],
@@ -1300,9 +1300,9 @@
             }
         },
         "node_modules/@swc/core-freebsd-x64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.174.tgz",
-            "integrity": "sha512-IG0qc9/qUHmiqC6fqT3yq4iBwNRHN1zYbGpzQm4DU/d7DTwsV7D2A+1McFUKmnUOvBG7zdgg5ee91QxUVOCZTQ==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.175.tgz",
+            "integrity": "sha512-fK0HFGYBLInelyKu2Ze/jv3wzaUw6gq5xRL1zf2ZpwEBy92MkuxFixplSxnO7J9gEL7tR8JCpRYm9ir60Wtfgw==",
             "cpu": [
                 "x64"
             ],
@@ -1316,9 +1316,9 @@
             }
         },
         "node_modules/@swc/core-linux-arm-gnueabihf": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.174.tgz",
-            "integrity": "sha512-nK4U8s9++e5AVEhWz3W6V0tUsPPjYJlMsb4ZzZR2qhYe53YBURCznFIhUDwe0ib/f6T773Tn7sr52uemcQBu8A==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.175.tgz",
+            "integrity": "sha512-voAk62+IRz+tEdL1xsxgwxfNxAmYPCqbgIh1YDFHhWhAnPjJIX0RGEatqCTLwM1lOObLtPs1JPLpvm6sa5JfEg==",
             "cpu": [
                 "arm"
             ],
@@ -1332,9 +1332,9 @@
             }
         },
         "node_modules/@swc/core-linux-arm64-gnu": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.174.tgz",
-            "integrity": "sha512-Tf6Ths472ul9Z4p8uFP7vMJXLmBS2h4PQL/zDj3g3N+9D8hs6+tnnBNrkEm6jXs09gO4bvaN+706QxmZUEgyPg==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.175.tgz",
+            "integrity": "sha512-TjJDnycH0rTY9DIowLVEP+X8Ll6P60LbUzd+yGq9UV9uGv7kB65Kf7LSLteYXDLHP34JPqyqh6O7GeGB4jiEEw==",
             "cpu": [
                 "arm64"
             ],
@@ -1348,9 +1348,9 @@
             }
         },
         "node_modules/@swc/core-linux-arm64-musl": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.174.tgz",
-            "integrity": "sha512-vsQjxyCe3+qRMQSuDlYwmFxbRILIycRC8OB/tBhTJXYuwIh4zvpxc+zvSuERbd4cmMWwM/JtXIlP5grSNjgH6A==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.175.tgz",
+            "integrity": "sha512-FH/yetoJPKBJHGYsu5iBMU382TEXZWhCToJA5iYqXcjye9WqR5Ss2qA2bQtikWGxFNKeNv8yCfGfesUpg7Edzg==",
             "cpu": [
                 "arm64"
             ],
@@ -1364,9 +1364,9 @@
             }
         },
         "node_modules/@swc/core-linux-x64-gnu": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.174.tgz",
-            "integrity": "sha512-CFEL2WMIQ1mZvvDguaVGgwan9X7Ah7ctHG8SOa+mFaWXdAyVXOWp8sdNMJbqvwYAv980CENfYioI8yL0z1heWA==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.175.tgz",
+            "integrity": "sha512-vdFFRpayifouqu9T+UPuWrxfERABaBDkB+CxUNrWgxE+iOJZCCPl6eFyWEqkVhjPnlmD2aHaVtzeyweIewEh4w==",
             "cpu": [
                 "x64"
             ],
@@ -1380,9 +1380,9 @@
             }
         },
         "node_modules/@swc/core-linux-x64-musl": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.174.tgz",
-            "integrity": "sha512-qulTJ3GYE8gUR0yfIOJVfo8SSl/AgLKAplskIHJu/cP0JtRpHL8B598mfny6SuD+ZabBjUvAz6d8ACL9JdhYTw==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.175.tgz",
+            "integrity": "sha512-eNgC//N7IJ40HQjSKhi7xPh7mMmK9ks9KAXzVbs+BTXvEXZV/L8753uC6B19FY9UEs27e6sXUG60kEoqtCfH5w==",
             "cpu": [
                 "x64"
             ],
@@ -1396,9 +1396,9 @@
             }
         },
         "node_modules/@swc/core-win32-arm64-msvc": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.174.tgz",
-            "integrity": "sha512-ZogvH4sOVk3pLguYLlc+3lBlGwJ4WOi375VUqDSb92TirBFPjhX98xDn/Xus1fyRKofSGp1zoAs4w80F6hkX6g==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.175.tgz",
+            "integrity": "sha512-eOrRfB7eRFMmXBqQ4J50hN4Xu8PsaV4G51oUuhnYZFR5hVnzEjVYHWPCCNxq5DEwBIXDGUa5JbJ0y1e05wLQyw==",
             "cpu": [
                 "arm64"
             ],
@@ -1412,9 +1412,9 @@
             }
         },
         "node_modules/@swc/core-win32-ia32-msvc": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.174.tgz",
-            "integrity": "sha512-QcnXBs2L0O5BiV61orDxJqZsmk2wPUscTTY4upfW5++eCI6IpDYVyfQmtQ9OdVCXWfVEPrhQKuUxLZEjoKxdNQ==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.175.tgz",
+            "integrity": "sha512-Zr7mdjGiJLWv0a4eczfb8gPSLjrAy/MZWwWUY1gDnA8GeWP9dE/tiqnrMNg4bqXuuZmqLBPEC3hybRuQuWtzBA==",
             "cpu": [
                 "ia32"
             ],
@@ -1428,9 +1428,9 @@
             }
         },
         "node_modules/@swc/core-win32-x64-msvc": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.174.tgz",
-            "integrity": "sha512-9aFcbPTFA5jtiTQbOsq+/QN29F/YNpOrhcwsUa2Haqq0+2h71rMiBn7oluUERFQ+/se9J0C00iSC0QXif4pfuQ==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.175.tgz",
+            "integrity": "sha512-Vx1AwLcbqjEkEhtRmCIdU3SoDp9Mi+fJv0mLgQ33SsZG1QPkTfn4bq4Vu9wJE+D0Em7lPmRiZpdsvx0G7oBH5A==",
             "cpu": [
                 "x64"
             ],
@@ -7420,114 +7420,114 @@
             }
         },
         "@swc/core": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.174.tgz",
-            "integrity": "sha512-PbBwwaqrBCyOae+hZV9QK+QeR1azqb+MGKvuk6SVxsk3Rvh1HSX4CieMnuhcmX+Sm4L58eQv9l37ZLCu2hBZcA==",
-            "dev": true,
-            "requires": {
-                "@swc/core-android-arm-eabi": "1.2.174",
-                "@swc/core-android-arm64": "1.2.174",
-                "@swc/core-darwin-arm64": "1.2.174",
-                "@swc/core-darwin-x64": "1.2.174",
-                "@swc/core-freebsd-x64": "1.2.174",
-                "@swc/core-linux-arm-gnueabihf": "1.2.174",
-                "@swc/core-linux-arm64-gnu": "1.2.174",
-                "@swc/core-linux-arm64-musl": "1.2.174",
-                "@swc/core-linux-x64-gnu": "1.2.174",
-                "@swc/core-linux-x64-musl": "1.2.174",
-                "@swc/core-win32-arm64-msvc": "1.2.174",
-                "@swc/core-win32-ia32-msvc": "1.2.174",
-                "@swc/core-win32-x64-msvc": "1.2.174"
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.2.175.tgz",
+            "integrity": "sha512-CCLr8qV0sGsiWnN7xqmmNwqnGlBg3CKZc5+EKIxSWjRAExRV1rFLejW2aesBn2RRyKZRpnwEyOk/GFxjsKBxzw==",
+            "dev": true,
+            "requires": {
+                "@swc/core-android-arm-eabi": "1.2.175",
+                "@swc/core-android-arm64": "1.2.175",
+                "@swc/core-darwin-arm64": "1.2.175",
+                "@swc/core-darwin-x64": "1.2.175",
+                "@swc/core-freebsd-x64": "1.2.175",
+                "@swc/core-linux-arm-gnueabihf": "1.2.175",
+                "@swc/core-linux-arm64-gnu": "1.2.175",
+                "@swc/core-linux-arm64-musl": "1.2.175",
+                "@swc/core-linux-x64-gnu": "1.2.175",
+                "@swc/core-linux-x64-musl": "1.2.175",
+                "@swc/core-win32-arm64-msvc": "1.2.175",
+                "@swc/core-win32-ia32-msvc": "1.2.175",
+                "@swc/core-win32-x64-msvc": "1.2.175"
             }
         },
         "@swc/core-android-arm-eabi": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.174.tgz",
-            "integrity": "sha512-sxH6jIq57wnZ8LyLKN8SXM4DhMo4aTq0mClo+zBMPTyHzNO5AEAwh5nqs+d51Dycs3epur/8iv/J6xDv+cKkfw==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.175.tgz",
+            "integrity": "sha512-Uyg19XdczD1IrZe4IZO4qzZ3HCp8MynSCBvtkbyeM2ok7UGse/KjeP+giYEHvock3cvVVkPVaOKoU2gVGhkm7A==",
             "dev": true,
             "optional": true
         },
         "@swc/core-android-arm64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.174.tgz",
-            "integrity": "sha512-gGXBuY8Zs93eNduyrhm+rB+K/smF535uwmamHB1+7BrkuUtt/Lrk3vDTc4D61GMA/vBOqus9IXKHBc+EFmBbog==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-android-arm64/-/core-android-arm64-1.2.175.tgz",
+            "integrity": "sha512-fov7p47Eq2fAj/zZOfNicTkOO3ILblxJMMUPeTHEMsQ4DTFr3SgjZjWKxHiMwiWxitLGR2YoTdCUs1qWcGALcQ==",
             "dev": true,
             "optional": true
         },
         "@swc/core-darwin-arm64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.174.tgz",
-            "integrity": "sha512-dFxu2o8dR55A+d0Qf/Ai0yKnGjon/UT1hWnBY9tcyvgo7XsiFRB/P83tlbVohqq9N+SDVxdBg9bMAR2i8rDTHg==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.175.tgz",
+            "integrity": "sha512-Rht5U9gDBiVoF3nTOySv2as5TJ+rkBB0ZtY4kG57wJGPet9dQtm3yZsxUSz6EYlo4pRTtXmd+PvMnfmgFwddUA==",
             "dev": true,
             "optional": true
         },
         "@swc/core-darwin-x64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.174.tgz",
-            "integrity": "sha512-LsANlfBkqfJobPvfojTbUY9xw0ZwTxTicdwaK6BC5TLmYXVfvxvMpmhsvIe3bNlx4jV1z0IrFaJ0YxDSc1s6vw==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.2.175.tgz",
+            "integrity": "sha512-W+EMt9Cwusl8bmEwrR3WO6XO3OEXp6D1pTUzPCS5aoESEAmuKtTiTuhUQYhz2KZpJOdWYm4HxPn/UewRxi6cjA==",
             "dev": true,
             "optional": true
         },
         "@swc/core-freebsd-x64": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.174.tgz",
-            "integrity": "sha512-IG0qc9/qUHmiqC6fqT3yq4iBwNRHN1zYbGpzQm4DU/d7DTwsV7D2A+1McFUKmnUOvBG7zdgg5ee91QxUVOCZTQ==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.175.tgz",
+            "integrity": "sha512-fK0HFGYBLInelyKu2Ze/jv3wzaUw6gq5xRL1zf2ZpwEBy92MkuxFixplSxnO7J9gEL7tR8JCpRYm9ir60Wtfgw==",
             "dev": true,
             "optional": true
         },
         "@swc/core-linux-arm-gnueabihf": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.174.tgz",
-            "integrity": "sha512-nK4U8s9++e5AVEhWz3W6V0tUsPPjYJlMsb4ZzZR2qhYe53YBURCznFIhUDwe0ib/f6T773Tn7sr52uemcQBu8A==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.175.tgz",
+            "integrity": "sha512-voAk62+IRz+tEdL1xsxgwxfNxAmYPCqbgIh1YDFHhWhAnPjJIX0RGEatqCTLwM1lOObLtPs1JPLpvm6sa5JfEg==",
             "dev": true,
             "optional": true
         },
         "@swc/core-linux-arm64-gnu": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.174.tgz",
-            "integrity": "sha512-Tf6Ths472ul9Z4p8uFP7vMJXLmBS2h4PQL/zDj3g3N+9D8hs6+tnnBNrkEm6jXs09gO4bvaN+706QxmZUEgyPg==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.175.tgz",
+            "integrity": "sha512-TjJDnycH0rTY9DIowLVEP+X8Ll6P60LbUzd+yGq9UV9uGv7kB65Kf7LSLteYXDLHP34JPqyqh6O7GeGB4jiEEw==",
             "dev": true,
             "optional": true
         },
         "@swc/core-linux-arm64-musl": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.174.tgz",
-            "integrity": "sha512-vsQjxyCe3+qRMQSuDlYwmFxbRILIycRC8OB/tBhTJXYuwIh4zvpxc+zvSuERbd4cmMWwM/JtXIlP5grSNjgH6A==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.175.tgz",
+            "integrity": "sha512-FH/yetoJPKBJHGYsu5iBMU382TEXZWhCToJA5iYqXcjye9WqR5Ss2qA2bQtikWGxFNKeNv8yCfGfesUpg7Edzg==",
             "dev": true,
             "optional": true
         },
         "@swc/core-linux-x64-gnu": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.174.tgz",
-            "integrity": "sha512-CFEL2WMIQ1mZvvDguaVGgwan9X7Ah7ctHG8SOa+mFaWXdAyVXOWp8sdNMJbqvwYAv980CENfYioI8yL0z1heWA==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.175.tgz",
+            "integrity": "sha512-vdFFRpayifouqu9T+UPuWrxfERABaBDkB+CxUNrWgxE+iOJZCCPl6eFyWEqkVhjPnlmD2aHaVtzeyweIewEh4w==",
             "dev": true,
             "optional": true
         },
         "@swc/core-linux-x64-musl": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.174.tgz",
-            "integrity": "sha512-qulTJ3GYE8gUR0yfIOJVfo8SSl/AgLKAplskIHJu/cP0JtRpHL8B598mfny6SuD+ZabBjUvAz6d8ACL9JdhYTw==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.175.tgz",
+            "integrity": "sha512-eNgC//N7IJ40HQjSKhi7xPh7mMmK9ks9KAXzVbs+BTXvEXZV/L8753uC6B19FY9UEs27e6sXUG60kEoqtCfH5w==",
             "dev": true,
             "optional": true
         },
         "@swc/core-win32-arm64-msvc": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.174.tgz",
-            "integrity": "sha512-ZogvH4sOVk3pLguYLlc+3lBlGwJ4WOi375VUqDSb92TirBFPjhX98xDn/Xus1fyRKofSGp1zoAs4w80F6hkX6g==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.175.tgz",
+            "integrity": "sha512-eOrRfB7eRFMmXBqQ4J50hN4Xu8PsaV4G51oUuhnYZFR5hVnzEjVYHWPCCNxq5DEwBIXDGUa5JbJ0y1e05wLQyw==",
             "dev": true,
             "optional": true
         },
         "@swc/core-win32-ia32-msvc": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.174.tgz",
-            "integrity": "sha512-QcnXBs2L0O5BiV61orDxJqZsmk2wPUscTTY4upfW5++eCI6IpDYVyfQmtQ9OdVCXWfVEPrhQKuUxLZEjoKxdNQ==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.175.tgz",
+            "integrity": "sha512-Zr7mdjGiJLWv0a4eczfb8gPSLjrAy/MZWwWUY1gDnA8GeWP9dE/tiqnrMNg4bqXuuZmqLBPEC3hybRuQuWtzBA==",
             "dev": true,
             "optional": true
         },
         "@swc/core-win32-x64-msvc": {
-            "version": "1.2.174",
-            "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.174.tgz",
-            "integrity": "sha512-9aFcbPTFA5jtiTQbOsq+/QN29F/YNpOrhcwsUa2Haqq0+2h71rMiBn7oluUERFQ+/se9J0C00iSC0QXif4pfuQ==",
+            "version": "1.2.175",
+            "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.175.tgz",
+            "integrity": "sha512-Vx1AwLcbqjEkEhtRmCIdU3SoDp9Mi+fJv0mLgQ33SsZG1QPkTfn4bq4Vu9wJE+D0Em7lPmRiZpdsvx0G7oBH5A==",
             "dev": true,
             "optional": true
         },
diff --git a/package.json b/package.json
index 49501ce..b2cf60c 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,7 @@
         "typescript": "4.6.4"
     },
     "devDependencies": {
-        "@swc/core": "1.2.174",
+        "@swc/core": "1.2.175",
         "@swc/jest": "0.2.20",
         "@types/eslint-config-prettier": "6.11.0",
         "@types/glob": "7.2.0",
diff --git a/src/converters/lintConfigs/rules/convertRules.ts b/src/converters/lintConfigs/rules/convertRules.ts
index bbfe0b4..ae9be00 100644
--- a/src/converters/lintConfigs/rules/convertRules.ts
+++ b/src/converters/lintConfigs/rules/convertRules.ts
@@ -80,7 +80,8 @@ export const convertRules = (
                 const existingConversion = converted.get(changes.ruleName);
                 const newConversion = {
                     ...changes,
-                    ruleSeverity: convertTSLintRuleSeverity(tslintRule.ruleSeverity),
+                    ruleSeverity:
+                        changes.ruleSeverity ?? convertTSLintRuleSeverity(tslintRule.ruleSeverity),
                 };
 
                 // 4c. If this is the first time the output ESLint rule is seen, it's directly marked as converted.


Test patch:
diff --git a/src/converters/lintConfigs/rules/convertRules.test.ts b/src/converters/lintConfigs/rules/convertRules.test.ts
index cac4885..879a29a 100644
--- a/src/converters/lintConfigs/rules/convertRules.test.ts
+++ b/src/converters/lintConfigs/rules/convertRules.test.ts
@@ -2,7 +2,7 @@ import { describe, expect, it, test } from "@jest/globals";
 
 import { ConversionError } from "../../../errors/conversionError";
 import { convertRules } from "./convertRules";
-import { ConversionResult, RuleConverter } from "./ruleConverter";
+import { ConversionResult, ConvertedRuleChanges, RuleConverter } from "./ruleConverter";
 import { RuleMerger } from "./ruleMerger";
 import { TSLintRuleOptions, TSLintRuleSeverity } from "./types";
 
@@ -353,6 +353,86 @@ describe("convertRules", () => {
         ]).toContainEqual(converted);
     });
 
+    it("merges when a rule severity differs from its TSLint equivalent", () => {
+        // Arrange
+        const rules: ConvertedRuleChanges[] = [
+            {
+                ruleName: "eslint-rule-a",
+                ruleSeverity: "off",
+            },
+        ];
+        const { tslintRule, converters, mergers } = setupConversionEnvironment({
+            ruleSeverity: "error",
+            conversionResult: { rules },
+            ruleToMerge: rules[0].ruleName,
+        });
+
+        // Act
+        const { converted } = convertRules(
+            { ruleConverters: converters, ruleMergers: mergers },
+            { [tslintRule.ruleName]: tslintRule },
+            new Map(),
+        );
+
+        // Assert
+        expect([
+            new Map([
+                [
+                    "eslint-rule-a",
+                    {
+                        ruleName: "eslint-rule-a",
+                        ruleSeverity: "off",
+                    },
+                ],
+            ]),
+        ]).toContainEqual(converted);
+    });
+
+    it("merges when rule severities inconsistently differ from their TSLint equivalent", () => {
+        // Arrange
+        const rules: ConvertedRuleChanges[] = [
+            {
+                ruleName: "eslint-rule-a",
+                ruleSeverity: "off",
+            },
+            {
+                ruleName: "eslint-rule-b",
+            },
+        ];
+        const { tslintRule, converters, mergers } = setupConversionEnvironment({
+            ruleSeverity: "error",
+            conversionResult: { rules },
+            ruleToMerge: rules[0].ruleName,
+        });
+
+        // Act
+        const { converted } = convertRules(
+            { ruleConverters: converters, ruleMergers: mergers },
+            { [tslintRule.ruleName]: tslintRule },
+            new Map(),
+        );
+
+        // Assert
+        expect([
+            new Map([
+                [
+                    "eslint-rule-a",
+                    {
+                        ruleName: "eslint-rule-a",
+                        ruleSeverity: "off",
+                    },
+                ],
+                [
+                    "eslint-rule-b",
+                    {
+                        ruleName: "eslint-rule-b",
+                        ruleSeverity: "error",
+                    },
+                ],
+            ]),
+        ]).toContainEqual(converted);
+    });
+
     it("marks a new plugin when a conversion has a new plugin", () => {
         // Arrange
         const conversionResult = {