Repository: kubernetes-client/javascript
Pull request #1143 (2023-06-27 21:54:44)

Remove execa and shelljs
Similar to #946 but for the 1.x branch.

cc @mstruebing 


Patch:
diff --git a/package-lock.json b/package-lock.json
index 3b4740ed..165bbc4a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -17,7 +17,6 @@
                 "@types/underscore": "^1.8.9",
                 "@types/ws": "^8.5.4",
                 "byline": "^5.0.0",
-                "execa": "5.0.0",
                 "form-data": "^4.0.0",
                 "isomorphic-ws": "^5.0.0",
                 "js-yaml": "^4.1.0",
@@ -25,7 +24,6 @@
                 "node-fetch": "^2.6.9",
                 "openid-client": "^5.4.2",
                 "rfc4648": "^1.3.0",
-                "shelljs": "^0.8.5",
                 "stream-buffers": "^3.0.2",
                 "tar": "^6.1.11",
                 "tmp-promise": "^3.0.2",
@@ -627,14 +625,14 @@
             }
         },
         "node_modules/@types/underscore": {
-            "version": "1.11.5",
-            "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.5.tgz",
-            "integrity": "sha512-b8e//LrIlhoXaaBcMC0J/s2/lIF9y5VJYKqbW4nA+tW/nqqDk1Dacd1ULLT7zgGsKs7PGbSnqCPzqEniZ0RxYg=="
+            "version": "1.11.4",
+            "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz",
+            "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg=="
         },
         "node_modules/@types/ws": {
-            "version": "8.5.5",
-            "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
-            "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
+            "version": "8.5.4",
+            "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
+            "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
             "dependencies": {
                 "@types/node": "*"
             }
@@ -1012,6 +1010,7 @@
             "version": "7.0.3",
             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
             "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+            "dev": true,
             "dependencies": {
                 "path-key": "^3.1.0",
                 "shebang-command": "^2.0.0",
@@ -1025,6 +1024,7 @@
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
             "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+            "dev": true,
             "dependencies": {
                 "isexe": "^2.0.0"
             },
@@ -1166,28 +1166,6 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/execa": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
-            "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
-            "dependencies": {
-                "cross-spawn": "^7.0.3",
-                "get-stream": "^6.0.0",
-                "human-signals": "^2.1.0",
-                "is-stream": "^2.0.0",
-                "merge-stream": "^2.0.0",
-                "npm-run-path": "^4.0.1",
-                "onetime": "^5.1.2",
-                "signal-exit": "^3.0.3",
-                "strip-final-newline": "^2.0.0"
-            },
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "url": "https://github.com/sindresorhus/execa?sponsor=1"
-            }
-        },
         "node_modules/fill-range": {
             "version": "7.0.1",
             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -1354,17 +1332,6 @@
                 "node": ">=8.0.0"
             }
         },
-        "node_modules/get-stream": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-            "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
-            "engines": {
-                "node": ">=10"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
-            }
-        },
         "node_modules/glob": {
             "version": "7.2.0",
             "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
@@ -1460,14 +1427,6 @@
             "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
             "dev": true
         },
-        "node_modules/human-signals": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
-            "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
-            "engines": {
-                "node": ">=10.17.0"
-            }
-        },
         "node_modules/husky": {
             "version": "8.0.3",
             "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
@@ -1515,11 +1474,6 @@
             "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
             "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
         },
-        "node_modules/interpret": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
-            "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ="
-        },
         "node_modules/is-binary-path": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -1584,6 +1538,7 @@
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
             "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+            "dev": true,
             "engines": {
                 "node": ">=8"
             }
@@ -1618,7 +1573,8 @@
         "node_modules/isexe": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+            "dev": true
         },
         "node_modules/isomorphic-ws": {
             "version": "5.0.0",
@@ -1791,22 +1747,22 @@
             }
         },
         "node_modules/jasmine": {
-            "version": "5.0.2",
-            "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.0.2.tgz",
-            "integrity": "sha512-fXgPcWfDhENJJVktFZc/JJ+TpdOQIMJTbn6BgSOIneBagrHtKvnyA8Ag6uD8eF2m7cSESG7K/Hfj/Hk5asAwNg==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.0.0.tgz",
+            "integrity": "sha512-wrigegsVTke3gt65LmLhIVqDZVcsYZwj9Oyai0pc04NlmgxIhfgbX0Af9CC3+S9lk0KZlttqjr2EBO8j2OCovA==",
             "dev": true,
             "dependencies": {
                 "glob": "^10.2.2",
-                "jasmine-core": "~5.0.1"
+                "jasmine-core": "~5.0.0"
             },
             "bin": {
                 "jasmine": "bin/jasmine.js"
             }
         },
         "node_modules/jasmine-core": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.0.1.tgz",
-            "integrity": "sha512-D4bRej8CplwNtNGyTPD++cafJlZUphzZNV+MSAnbD3er4D0NjL4x9V+mu/SI+5129utnCBen23JwEuBZA9vlpQ==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.0.0.tgz",
+            "integrity": "sha512-BJLxZlSVyWPN/oyaS1IIvIjChghI9/xWsLAIJqL9J5Fz47CN3JNr8Lmik3S2S7QS2RxclYjvSVSXP7IR35PAmg==",
             "dev": true
         },
         "node_modules/jasmine/node_modules/brace-expansion": {
@@ -2139,11 +2095,6 @@
                 "node": ">= 12"
             }
         },
-        "node_modules/merge-stream": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-            "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
-        },
         "node_modules/mime-db": {
             "version": "1.52.0",
             "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -2163,14 +2114,6 @@
                 "node": ">= 0.6"
             }
         },
-        "node_modules/mimic-fn": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
-            "engines": {
-                "node": ">=6"
-            }
-        },
         "node_modules/minimatch": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -2491,17 +2434,6 @@
                 "node": ">=0.10.0"
             }
         },
-        "node_modules/npm-run-path": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-            "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-            "dependencies": {
-                "path-key": "^3.0.0"
-            },
-            "engines": {
-                "node": ">=8"
-            }
-        },
         "node_modules/nyc": {
             "version": "15.1.0",
             "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
@@ -2613,20 +2545,6 @@
                 "wrappy": "1"
             }
         },
-        "node_modules/onetime": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-            "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-            "dependencies": {
-                "mimic-fn": "^2.1.0"
-            },
-            "engines": {
-                "node": ">=6"
-            },
-            "funding": {
-                "url": "https://github.com/sponsors/sindresorhus"
-            }
-        },
         "node_modules/openid-client": {
             "version": "5.4.2",
             "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.4.2.tgz",
@@ -2756,6 +2674,7 @@
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
             "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+            "dev": true,
             "engines": {
                 "node": ">=8"
             }
@@ -2763,7 +2682,8 @@
         "node_modules/path-parse": {
             "version": "1.0.7",
             "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+            "dev": true
         },
         "node_modules/path-scurry": {
             "version": "1.9.0",
@@ -2921,17 +2841,6 @@
                 "node": ">=8.10.0"
             }
         },
-        "node_modules/rechoir": {
-            "version": "0.6.2",
-            "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-            "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
-            "dependencies": {
-                "resolve": "^1.1.6"
-            },
-            "engines": {
-                "node": ">= 0.10"
-            }
-        },
         "node_modules/release-zalgo": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
@@ -2968,6 +2877,7 @@
             "version": "1.7.1",
             "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
             "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+            "dev": true,
             "dependencies": {
                 "path-parse": "^1.0.5"
             }
@@ -3025,6 +2935,7 @@
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
             "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+            "dev": true,
             "dependencies": {
                 "shebang-regex": "^3.0.0"
             },
@@ -3036,26 +2947,11 @@
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
             "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+            "dev": true,
             "engines": {
                 "node": ">=8"
             }
         },
-        "node_modules/shelljs": {
-            "version": "0.8.5",
-            "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
-            "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
-            "dependencies": {
-                "glob": "^7.0.0",
-                "interpret": "^1.0.0",
-                "rechoir": "^0.6.2"
-            },
-            "bin": {
-                "shjs": "bin/shjs"
-            },
-            "engines": {
-                "node": ">=4"
-            }
-        },
         "node_modules/shiki": {
             "version": "0.14.1",
             "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.1.tgz",
@@ -3071,7 +2967,8 @@
         "node_modules/signal-exit": {
             "version": "3.0.3",
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-            "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+            "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+            "dev": true
         },
         "node_modules/source-map": {
             "version": "0.5.7",
@@ -3083,9 +2980,9 @@
             }
         },
         "node_modules/source-map-support": {
-            "version": "0.5.21",
-            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-            "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+            "version": "0.5.9",
+            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
+            "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
             "dev": true,
             "dependencies": {
                 "buffer-from": "^1.0.0",
@@ -3210,14 +3107,6 @@
                 "node": ">=8"
             }
         },
-        "node_modules/strip-final-newline": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
-            "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
-            "engines": {
-                "node": ">=6"
-            }
-        },
         "node_modules/strip-json-comments": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -3385,9 +3274,9 @@
             }
         },
         "node_modules/tslib": {
-            "version": "2.5.3",
-            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
-            "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w=="
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
+            "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
         },
         "node_modules/tslint": {
             "version": "6.1.3",
@@ -4356,14 +4245,14 @@
             }
         },
         "@types/underscore": {
-            "version": "1.11.5",
-            "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.5.tgz",
-            "integrity": "sha512-b8e//LrIlhoXaaBcMC0J/s2/lIF9y5VJYKqbW4nA+tW/nqqDk1Dacd1ULLT7zgGsKs7PGbSnqCPzqEniZ0RxYg=="
+            "version": "1.11.4",
+            "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz",
+            "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg=="
         },
         "@types/ws": {
-            "version": "8.5.5",
-            "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.5.tgz",
-            "integrity": "sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==",
+            "version": "8.5.4",
+            "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
+            "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
             "requires": {
                 "@types/node": "*"
             }
@@ -4669,6 +4558,7 @@
             "version": "7.0.3",
             "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
             "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+            "dev": true,
             "requires": {
                 "path-key": "^3.1.0",
                 "shebang-command": "^2.0.0",
@@ -4679,6 +4569,7 @@
                     "version": "2.0.2",
                     "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
                     "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+                    "dev": true,
                     "requires": {
                         "isexe": "^2.0.0"
                     }
@@ -4779,22 +4670,6 @@
             "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=",
             "dev": true
         },
-        "execa": {
-            "version": "5.0.0",
-            "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz",
-            "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==",
-            "requires": {
-                "cross-spawn": "^7.0.3",
-                "get-stream": "^6.0.0",
-                "human-signals": "^2.1.0",
-                "is-stream": "^2.0.0",
-                "merge-stream": "^2.0.0",
-                "npm-run-path": "^4.0.1",
-                "onetime": "^5.1.2",
-                "signal-exit": "^3.0.3",
-                "strip-final-newline": "^2.0.0"
-            }
-        },
         "fill-range": {
             "version": "7.0.1",
             "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -4901,11 +4776,6 @@
             "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
             "dev": true
         },
-        "get-stream": {
-            "version": "6.0.1",
-            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
-            "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="
-        },
         "glob": {
             "version": "7.2.0",
             "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
@@ -4976,11 +4846,6 @@
             "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
             "dev": true
         },
-        "human-signals": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
-            "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="
-        },
         "husky": {
             "version": "8.0.3",
             "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz",
@@ -5013,11 +4878,6 @@
             "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
             "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
         },
-        "interpret": {
-            "version": "1.1.0",
-            "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
-            "integrity": "sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ="
-        },
         "is-binary-path": {
             "version": "2.1.0",
             "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -5063,7 +4923,8 @@
         "is-stream": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
-            "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw=="
+            "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+            "dev": true
         },
         "is-typedarray": {
             "version": "1.0.0",
@@ -5086,7 +4947,8 @@
         "isexe": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
-            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
+            "dev": true
         },
         "isomorphic-ws": {
             "version": "5.0.0",
@@ -5220,13 +5082,13 @@
             }
         },
         "jasmine": {
-            "version": "5.0.2",
-            "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.0.2.tgz",
-            "integrity": "sha512-fXgPcWfDhENJJVktFZc/JJ+TpdOQIMJTbn6BgSOIneBagrHtKvnyA8Ag6uD8eF2m7cSESG7K/Hfj/Hk5asAwNg==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-5.0.0.tgz",
+            "integrity": "sha512-wrigegsVTke3gt65LmLhIVqDZVcsYZwj9Oyai0pc04NlmgxIhfgbX0Af9CC3+S9lk0KZlttqjr2EBO8j2OCovA==",
             "dev": true,
             "requires": {
                 "glob": "^10.2.2",
-                "jasmine-core": "~5.0.1"
+                "jasmine-core": "~5.0.0"
             },
             "dependencies": {
                 "brace-expansion": {
@@ -5285,9 +5147,9 @@
             }
         },
         "jasmine-core": {
-            "version": "5.0.1",
-            "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.0.1.tgz",
-            "integrity": "sha512-D4bRej8CplwNtNGyTPD++cafJlZUphzZNV+MSAnbD3er4D0NjL4x9V+mu/SI+5129utnCBen23JwEuBZA9vlpQ==",
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.0.0.tgz",
+            "integrity": "sha512-BJLxZlSVyWPN/oyaS1IIvIjChghI9/xWsLAIJqL9J5Fz47CN3JNr8Lmik3S2S7QS2RxclYjvSVSXP7IR35PAmg==",
             "dev": true
         },
         "jose": {
@@ -5471,11 +5333,6 @@
             "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
             "dev": true
         },
-        "merge-stream": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
-            "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="
-        },
         "mime-db": {
             "version": "1.52.0",
             "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
@@ -5489,11 +5346,6 @@
                 "mime-db": "1.52.0"
             }
         },
-        "mimic-fn": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
-            "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
-        },
         "minimatch": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@@ -5729,14 +5581,6 @@
             "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
             "dev": true
         },
-        "npm-run-path": {
-            "version": "4.0.1",
-            "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
-            "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
-            "requires": {
-                "path-key": "^3.0.0"
-            }
-        },
         "nyc": {
             "version": "15.1.0",
             "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
@@ -5826,14 +5670,6 @@
                 "wrappy": "1"
             }
         },
-        "onetime": {
-            "version": "5.1.2",
-            "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
-            "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
-            "requires": {
-                "mimic-fn": "^2.1.0"
-            }
-        },
         "openid-client": {
             "version": "5.4.2",
             "resolved": "https://registry.npmjs.org/openid-client/-/openid-client-5.4.2.tgz",
@@ -5930,12 +5766,14 @@
         "path-key": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
-            "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="
+            "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+            "dev": true
         },
         "path-parse": {
             "version": "1.0.7",
             "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
+            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+            "dev": true
         },
         "path-scurry": {
             "version": "1.9.0",
@@ -6049,14 +5887,6 @@
                 "picomatch": "^2.2.1"
             }
         },
-        "rechoir": {
-            "version": "0.6.2",
-            "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
-            "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
-            "requires": {
-                "resolve": "^1.1.6"
-            }
-        },
         "release-zalgo": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz",
@@ -6087,6 +5917,7 @@
             "version": "1.7.1",
             "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.7.1.tgz",
             "integrity": "sha512-c7rwLofp8g1U+h1KNyHL/jicrKg1Ek4q+Lr33AL65uZTinUZHe30D5HlyN5V9NW0JX1D5dXQ4jqW5l7Sy/kGfw==",
+            "dev": true,
             "requires": {
                 "path-parse": "^1.0.5"
             }
@@ -6135,6 +5966,7 @@
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
             "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+            "dev": true,
             "requires": {
                 "shebang-regex": "^3.0.0"
             }
@@ -6142,17 +5974,8 @@
         "shebang-regex": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
-            "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="
-        },
-        "shelljs": {
-            "version": "0.8.5",
-            "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
-            "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
-            "requires": {
-                "glob": "^7.0.0",
-                "interpret": "^1.0.0",
-                "rechoir": "^0.6.2"
-            }
+            "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+            "dev": true
         },
         "shiki": {
             "version": "0.14.1",
@@ -6169,7 +5992,8 @@
         "signal-exit": {
             "version": "3.0.3",
             "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
-            "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
+            "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==",
+            "dev": true
         },
         "source-map": {
             "version": "0.5.7",
@@ -6178,9 +6002,9 @@
             "dev": true
         },
         "source-map-support": {
-            "version": "0.5.21",
-            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
-            "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+            "version": "0.5.9",
+            "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz",
+            "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==",
             "dev": true,
             "requires": {
                 "buffer-from": "^1.0.0",
@@ -6277,11 +6101,6 @@
             "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
             "dev": true
         },
-        "strip-final-newline": {
-            "version": "2.0.0",
-            "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
-            "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="
-        },
         "strip-json-comments": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
@@ -6405,9 +6224,9 @@
             }
         },
         "tslib": {
-            "version": "2.5.3",
-            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
-            "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w=="
+            "version": "2.5.2",
+            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz",
+            "integrity": "sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA=="
         },
         "tslint": {
             "version": "6.1.3",
diff --git a/package.json b/package.json
index 28e4d547..0c1708d0 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,6 @@
         "@types/underscore": "^1.8.9",
         "@types/ws": "^8.5.4",
         "byline": "^5.0.0",
-        "execa": "5.0.0",
         "form-data": "^4.0.0",
         "isomorphic-ws": "^5.0.0",
         "js-yaml": "^4.1.0",
@@ -70,7 +69,6 @@
         "node-fetch": "^2.6.9",
         "openid-client": "^5.4.2",
         "rfc4648": "^1.3.0",
-        "shelljs": "^0.8.5",
         "stream-buffers": "^3.0.2",
         "tar": "^6.1.11",
         "tmp-promise": "^3.0.2",
diff --git a/src/config.ts b/src/config.ts
index 23b32e89..2ec81d36 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -1,12 +1,9 @@
-import execa = require('execa');
 import fs = require('fs');
 import https = require('https');
 import yaml = require('js-yaml');
 import net = require('net');
 import path = require('path');
 
-import shelljs = require('shelljs');
-
 import { Headers, RequestInit } from 'node-fetch';
 import * as api from './api';
 import { Authenticator } from './auth';
@@ -35,6 +32,7 @@ import {
 } from './gen';
 import { OpenIDConnectAuth } from './oidc_auth';
 import WebSocket = require('isomorphic-ws');
+import child_process = require('child_process');
 
 const SERVICEACCOUNT_ROOT: string = '/var/run/secrets/kubernetes.io/serviceaccount';
 const SERVICEACCOUNT_CA_PATH: string = SERVICEACCOUNT_ROOT + '/ca.crt';
@@ -408,17 +406,20 @@ export class KubeConfig implements SecurityAuthentication {
                 return;
             }
         }
-        if (process.platform === 'win32' && shelljs.which('wsl.exe')) {
+        if (process.platform === 'win32') {
             try {
-                const envKubeconfigPathResult = execa.sync('wsl.exe', ['bash', '-ic', 'printenv KUBECONFIG']);
-                if (envKubeconfigPathResult.exitCode === 0 && envKubeconfigPathResult.stdout.length > 0) {
-                    const result = execa.sync('wsl.exe', ['cat', envKubeconfigPathResult.stdout]);
-                    if (result.exitCode === 0) {
-                        this.loadFromString(result.stdout, opts);
-                        return;
-                    }
-                    if (result.exitCode === 0) {
-                        this.loadFromString(result.stdout, opts);
+                const envKubeconfigPathResult = child_process.spawnSync('wsl.exe', [
+                    'bash',
+                    '-c',
+                    'printenv KUBECONFIG',
+                ]);
+                if (envKubeconfigPathResult.status === 0 && envKubeconfigPathResult.stdout.length > 0) {
+                    const result = child_process.spawnSync('wsl.exe', [
+                        'cat',
+                        envKubeconfigPathResult.stdout.toString('utf8'),
+                    ]);
+                    if (result.status === 0) {
+                        this.loadFromString(result.stdout.toString('utf8'), opts);
                         return;
                     }
                 }
@@ -426,9 +427,13 @@ export class KubeConfig implements SecurityAuthentication {
                 // Falling back to default kubeconfig
             }
             try {
-                const result = execa.sync('wsl.exe', ['cat', '~/.kube/config']);
-                if (result.exitCode === 0) {
-                    this.loadFromString(result.stdout, opts);
+                const configResult = child_process.spawnSync('wsl.exe', ['cat', '~/.kube/config']);
+                if (configResult.status === 0) {
+                    this.loadFromString(configResult.stdout.toString('utf8'), opts);
+                    const result = child_process.spawnSync('wsl.exe', ['wslpath', '-w', '~/.kube']);
+                    if (result.status === 0) {
+                        this.makePathsAbsolute(result.stdout.toString('utf8'));
+                    }
                     return;
                 }
             } catch (err) {
diff --git a/src/exec_auth.ts b/src/exec_auth.ts
index efb0ac4b..468b0070 100644
--- a/src/exec_auth.ts
+++ b/src/exec_auth.ts
@@ -1,10 +1,11 @@
-import execa = require('execa');
 import { OutgoingHttpHeaders } from 'http';
 import https = require('https');
 
 import { Authenticator } from './auth';
 import { User } from './config_types';
 
+import child_process = require('child_process');
+
 export interface CredentialStatus {
     readonly token: string;
     readonly clientCertificateData: string;
@@ -18,8 +19,11 @@ export interface Credential {
 
 export class ExecAuth implements Authenticator {
     private readonly tokenCache: { [key: string]: Credential | null } = {};
-    private execFn: (cmd: string, args: string[], opts: execa.SyncOptions) => execa.ExecaSyncReturnValue =
-        execa.sync;
+    private execFn: (
+        cmd: string,
+        args: string[],
+        opts: child_process.SpawnOptions,
+    ) => child_process.SpawnSyncReturns<Buffer> = child_process.spawnSync;
 
     public isAuthProvider(user: User): boolean {
         if (!user) {
@@ -96,11 +100,11 @@ export class ExecAuth implements Authenticator {
             opts = { ...opts, env };
         }
         const result = this.execFn(exec.command, exec.args, opts);
-        if (result.exitCode === 0) {
-            const obj = JSON.parse(result.stdout) as Credential;
+        if (result.status === 0) {
+            const obj = JSON.parse(result.stdout.toString('utf8')) as Credential;
             this.tokenCache[user.name] = obj;
             return obj;
         }
-        throw new Error(result.stderr);
+        throw new Error(result.stderr.toString('utf8'));
     }
 }


Test patch:
diff --git a/src/exec_auth_test.ts b/src/exec_auth_test.ts
index 82b88881..5417cbae 100644
--- a/src/exec_auth_test.ts
+++ b/src/exec_auth_test.ts
@@ -2,9 +2,6 @@ import { expect, use } from 'chai';
 import chaiAsPromised from 'chai-as-promised';
 use(chaiAsPromised);
 
-import * as shell from 'shelljs';
-
-import execa from 'execa';
 import https from 'https';
 import { OutgoingHttpHeaders } from 'http';
 
@@ -12,6 +9,8 @@ import { ExecAuth } from './exec_auth';
 import { User } from './config_types';
 import { fail } from 'assert';
 
+import child_process = require('child_process');
+
 describe('ExecAuth', () => {
     it('should claim correctly', () => {
         const auth = new ExecAuth();
@@ -63,12 +62,12 @@ describe('ExecAuth', () => {
         (auth as any).execFn = (
             command: string,
             args: string[],
-            opts: execa.SyncOptions,
-        ): execa.ExecaSyncReturnValue => {
+            opts: child_process.SpawnOptions,
+        ): child_process.SpawnSyncReturns<Buffer> => {
             return {
-                exitCode: 0,
-                stdout: JSON.stringify({ status: { token: 'foo' } }),
-            } as execa.ExecaSyncReturnValue;
+                status: 0,
+                stdout: Buffer.from(JSON.stringify({ status: { token: 'foo' } })),
+            } as child_process.SpawnSyncReturns<Buffer>;
         };
         const opts = {} as https.RequestOptions;
         opts.headers = {} as OutgoingHttpHeaders;
@@ -97,12 +96,14 @@ describe('ExecAuth', () => {
         (auth as any).execFn = (
             command: string,
             args: string[],
-            opts: execa.SyncOptions,
-        ): execa.ExecaSyncReturnValue => {
+            opts: child_process.SpawnOptions,
+        ): child_process.SpawnSyncReturns<Buffer> => {
             return {
-                exitCode: 0,
-                stdout: JSON.stringify({ status: { clientCertificateData: 'foo', clientKeyData: 'bar' } }),
-            } as execa.ExecaSyncReturnValue;
+                status: 0,
+                stdout: Buffer.from(
+                    JSON.stringify({ status: { clientCertificateData: 'foo', clientKeyData: 'bar' } }),
+                ),
+            } as child_process.SpawnSyncReturns<Buffer>;
         };
 
         const user = {
@@ -137,15 +138,17 @@ describe('ExecAuth', () => {
         (auth as any).execFn = (
             command: string,
             args: string[],
-            opts: execa.SyncOptions,
-        ): execa.ExecaSyncReturnValue => {
+            opts: child_process.SpawnOptions,
+        ): child_process.SpawnSyncReturns<Buffer> => {
             execCount++;
             return {
-                exitCode: 0,
-                stdout: JSON.stringify({
-                    status: { token: tokenValue, expirationTimestamp: expire },
-                }),
-            } as execa.ExecaSyncReturnValue;
+                status: 0,
+                stdout: Buffer.from(
+                    JSON.stringify({
+                        status: { token: tokenValue, expirationTimestamp: expire },
+                    }),
+                ),
+            } as child_process.SpawnSyncReturns<Buffer>;
         };
 
         const user = {
@@ -198,13 +201,13 @@ describe('ExecAuth', () => {
         (auth as any).execFn = (
             command: string,
             args: string[],
-            opts: execa.SyncOptions,
-        ): execa.ExecaSyncReturnValue => {
+            opts: child_process.SpawnOptions,
+        ): child_process.SpawnSyncReturns<Buffer> => {
             return {
-                exitCode: 100,
-                stdout: JSON.stringify({ status: { token: 'foo' } }),
-                stderr: 'Some error!',
-            } as execa.ExecaSyncReturnValue;
+                status: 100,
+                stdout: Buffer.from(JSON.stringify({ status: { token: 'foo' } })),
+                stderr: Buffer.from('Some error!'),
+            } as child_process.SpawnSyncReturns<Buffer>;
         };
 
         const user = {
@@ -230,17 +233,17 @@ describe('ExecAuth', () => {
             return;
         }
         const auth = new ExecAuth();
-        let optsOut: shell.ExecOpts = {};
+        let optsOut: child_process.SpawnOptions = {};
         (auth as any).execFn = (
             command: string,
             args: string[],
-            opts: execa.SyncOptions,
-        ): execa.ExecaSyncReturnValue => {
+            opts: child_process.SpawnOptions,
+        ): child_process.SpawnSyncReturns<Buffer> => {
             optsOut = opts;
             return {
-                exitCode: 0,
-                stdout: JSON.stringify({ status: { token: 'foo' } }),
-            } as execa.ExecaSyncReturnValue;
+                status: 0,
+                stdout: Buffer.from(JSON.stringify({ status: { token: 'foo' } })),
+            } as child_process.SpawnSyncReturns<Buffer>;
         };
         process.env.BLABBLE = 'flubble';
         const opts = {} as https.RequestOptions;
@@ -265,9 +268,9 @@ describe('ExecAuth', () => {
             },
             opts,
         );
-        expect(optsOut.env.foo).to.equal('bar');
-        expect(optsOut.env.PATH).to.equal(process.env.PATH);
-        expect(optsOut.env.BLABBLE).to.equal(process.env.BLABBLE);
+        expect(optsOut.env!.foo).to.equal('bar');
+        expect(optsOut.env!.PATH).to.equal(process.env.PATH);
+        expect(optsOut.env!.BLABBLE).to.equal(process.env.BLABBLE);
     });
 
     it('should handle empty headers array correctly', async () => {
@@ -279,12 +282,12 @@ describe('ExecAuth', () => {
         (auth as any).execFn = (
             command: string,
             args: string[],
-            opts: execa.SyncOptions,
-        ): execa.ExecaSyncReturnValue => {
+            opts: child_process.SpawnOptions,
+        ): child_process.SpawnSyncReturns<Buffer> => {
             return {
-                exitCode: 0,
-                stdout: JSON.stringify({ status: { token: 'foo' } }),
-            } as execa.ExecaSyncReturnValue;
+                status: 0,
+                stdout: Buffer.from(JSON.stringify({ status: { token: 'foo' } })),
+            } as child_process.SpawnSyncReturns<Buffer>;
         };
         const opts = {} as https.RequestOptions;
         auth.applyAuthentication(