diff --git a/common/config/rush/nonbrowser-approved-packages.json b/common/config/rush/nonbrowser-approved-packages.json index 4eb4bb89b8d..0d77dc8b9fe 100644 --- a/common/config/rush/nonbrowser-approved-packages.json +++ b/common/config/rush/nonbrowser-approved-packages.json @@ -26,6 +26,26 @@ "name": "@eslint/eslintrc", "allowedCategories": [ "libraries" ] }, + { + "name": "@inquirer/checkbox", + "allowedCategories": [ "libraries" ] + }, + { + "name": "@inquirer/confirm", + "allowedCategories": [ "libraries" ] + }, + { + "name": "@inquirer/input", + "allowedCategories": [ "libraries" ] + }, + { + "name": "@inquirer/search", + "allowedCategories": [ "libraries" ] + }, + { + "name": "@inquirer/select", + "allowedCategories": [ "libraries" ] + }, { "name": "@jest/core", "allowedCategories": [ "libraries" ] @@ -794,10 +814,6 @@ "name": "import-lazy", "allowedCategories": [ "libraries" ] }, - { - "name": "inquirer", - "allowedCategories": [ "libraries" ] - }, { "name": "jest", "allowedCategories": [ "libraries", "tests" ] diff --git a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml index b1a8a9c1246..f34991e39ed 100644 --- a/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml +++ b/common/config/subspaces/build-tests-subspace/pnpm-lock.yaml @@ -423,9 +423,71 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} + '@inquirer/ansi@2.0.5': + resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + + '@inquirer/checkbox@5.1.3': + resolution: {integrity: sha512-+G7I8CT+EHv/hasNfUl3P37DVoMoZfpA+2FXmM54dA8MxYle1YqucxbacxHalw1iAFSdKNEDTGNV7F+j1Ldqcg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@6.0.11': + resolution: {integrity: sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@11.1.8': + resolution: {integrity: sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@2.0.5': + resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + + '@inquirer/input@5.0.11': + resolution: {integrity: sha512-twUWidn4ocPO8qi6fRM7tNWt7W1FOnOZqQ+/+PsfLUacMR5rFLDPK9ql0nBPwxi0oELbo8T5NhRs8B2+qQEqFQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@4.1.7': + resolution: {integrity: sha512-1y7+0N65AWk5RdlXH/Kn13txf3IjIQ7OEfhCEkDTU+h5wKMLq8DUF3P6z+/kLSxDGDtQT1dRBWEUC3o/VvImsQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@5.1.3': + resolution: {integrity: sha512-zYyqWgGQi3NhBcNq4Isc5rB3oEdQEh1Q/EcAnOW0FK4MpnXWkvSBYgA4cYrTM4A9UB573omouZbnL9JJ74Mq3A==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@4.0.5': + resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -1448,9 +1510,6 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.13: resolution: {integrity: sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==} engines: {node: '>=6.0.0'} @@ -1460,9 +1519,6 @@ packages: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - bole@5.0.28: resolution: {integrity: sha512-l+yybyZLV7zTD6EuGxoXsilpER1ctMCpdOqjSYNigJJma39ha85fzCtYccPx06oR1u7uCQLOcUAFFzvfXVBmuQ==} @@ -1494,9 +1550,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - builtin-modules@1.1.1: resolution: {integrity: sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==} engines: {node: '>=0.10.0'} @@ -1550,9 +1603,6 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} - chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - chownr@3.0.0: resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} engines: {node: '>=18'} @@ -1572,25 +1622,13 @@ packages: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - cli-table@0.3.11: resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} engines: {node: '>= 0.2.0'} - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} - - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} cmd-extension@1.0.2: resolution: {integrity: sha512-iWDjmP8kvsMdBmLTHxFaqXikO8EdFRDfim7k6vUHglY/2xJ5jLrPsnQGijdfp4U+sr/BeecG0wKm02dSIAeQ1g==} @@ -1700,9 +1738,6 @@ packages: resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} engines: {node: '>=0.10.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2003,9 +2038,18 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-wrap-ansi@0.2.0: + resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -2021,10 +2065,6 @@ packages: picomatch: optional: true - figures@3.0.0: - resolution: {integrity: sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==} - engines: {node: '>=8'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -2232,13 +2272,6 @@ packages: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} - iconv-lite@0.7.2: - resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} - engines: {node: '>=0.10.0'} - - ieee754@1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-walk@5.0.1: resolution: {integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==} engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} @@ -2280,10 +2313,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - inquirer@8.2.7: - resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} - engines: {node: '>=12.0.0'} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -2347,10 +2376,6 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -2406,10 +2431,6 @@ packages: is-typedarray@1.0.0: resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} - is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -2695,10 +2716,6 @@ packages: lodash@4.18.1: resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} - loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -2808,8 +2825,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -2927,10 +2945,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - os-homedir@1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} engines: {node: '>=0.10.0'} @@ -3145,10 +3159,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - reusify@1.1.0: resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3161,10 +3171,6 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -3172,9 +3178,6 @@ packages: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} engines: {npm: '>=2.0.0'} - rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -3197,9 +3200,6 @@ packages: resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} engines: {node: '>= 0.4'} - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - schema-utils@4.3.3: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} @@ -3472,9 +3472,6 @@ packages: through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -3620,9 +3617,6 @@ packages: resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - webpack-sources@3.3.4: resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} engines: {node: '>=10.13.0'} @@ -3662,10 +3656,6 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -4010,10 +4000,63 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/external-editor@1.0.3(@types/node@20.17.19)': + '@inquirer/ansi@2.0.5': {} + + '@inquirer/checkbox@5.1.3(@types/node@20.17.19)': dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.2 + '@inquirer/ansi': 2.0.5 + '@inquirer/core': 11.1.8(@types/node@20.17.19) + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@20.17.19) + optionalDependencies: + '@types/node': 20.17.19 + + '@inquirer/confirm@6.0.11(@types/node@20.17.19)': + dependencies: + '@inquirer/core': 11.1.8(@types/node@20.17.19) + '@inquirer/type': 4.0.5(@types/node@20.17.19) + optionalDependencies: + '@types/node': 20.17.19 + + '@inquirer/core@11.1.8(@types/node@20.17.19)': + dependencies: + '@inquirer/ansi': 2.0.5 + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@20.17.19) + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + optionalDependencies: + '@types/node': 20.17.19 + + '@inquirer/figures@2.0.5': {} + + '@inquirer/input@5.0.11(@types/node@20.17.19)': + dependencies: + '@inquirer/core': 11.1.8(@types/node@20.17.19) + '@inquirer/type': 4.0.5(@types/node@20.17.19) + optionalDependencies: + '@types/node': 20.17.19 + + '@inquirer/search@4.1.7(@types/node@20.17.19)': + dependencies: + '@inquirer/core': 11.1.8(@types/node@20.17.19) + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@20.17.19) + optionalDependencies: + '@types/node': 20.17.19 + + '@inquirer/select@5.1.3(@types/node@20.17.19)': + dependencies: + '@inquirer/ansi': 2.0.5 + '@inquirer/core': 11.1.8(@types/node@20.17.19) + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@20.17.19) + optionalDependencies: + '@types/node': 20.17.19 + + '@inquirer/type@4.0.5(@types/node@20.17.19)': optionalDependencies: '@types/node': 20.17.19 @@ -4285,6 +4328,11 @@ snapshots: '@microsoft/rush-lib@file:../../../libraries/rush-lib(@types/node@20.17.19)': dependencies: + '@inquirer/checkbox': 5.1.3(@types/node@20.17.19) + '@inquirer/confirm': 6.0.11(@types/node@20.17.19) + '@inquirer/input': 5.0.11(@types/node@20.17.19) + '@inquirer/search': 4.1.7(@types/node@20.17.19) + '@inquirer/select': 5.1.3(@types/node@20.17.19) '@pnpm/link-bins': 5.3.25 '@rushstack/credential-cache': file:../../../libraries/credential-cache(@types/node@20.17.19) '@rushstack/heft-config-file': file:../../../libraries/heft-config-file(@types/node@20.17.19) @@ -4306,12 +4354,10 @@ snapshots: dependency-path: 9.2.8 dotenv: 16.4.7 fast-glob: 3.3.3 - figures: 3.0.0 git-repo-info: 2.1.1 glob-escape: 0.0.2 https-proxy-agent: 5.0.1 ignore: 5.1.9 - inquirer: 8.2.7(@types/node@20.17.19) js-yaml: 4.1.1 npm-package-arg: 6.1.1 object-hash: 3.0.0 @@ -5620,20 +5666,12 @@ snapshots: balanced-match@4.0.4: {} - base64-js@1.5.1: {} - baseline-browser-mapping@2.10.13: {} better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - bole@5.0.28: dependencies: fast-safe-stringify: 2.1.1 @@ -5672,11 +5710,6 @@ snapshots: buffer-from@1.1.2: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - builtin-modules@1.1.1: {} builtin-modules@3.1.0: {} @@ -5726,8 +5759,6 @@ snapshots: char-regex@1.0.2: {} - chardet@2.1.1: {} - chownr@3.0.0: {} chrome-trace-event@1.0.4: {} @@ -5740,19 +5771,11 @@ snapshots: dependencies: source-map: 0.6.1 - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-spinners@2.9.2: {} - cli-table@0.3.11: dependencies: colors: 1.0.3 - cli-width@3.0.0: {} - - clone@1.0.4: {} + cli-width@4.1.0: {} cmd-extension@1.0.2: {} @@ -5840,10 +5863,6 @@ snapshots: deepmerge@4.3.1: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -6348,8 +6367,18 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + fast-uri@3.1.0: {} + fast-wrap-ansi@0.2.0: + dependencies: + fast-string-width: 3.0.2 + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -6362,10 +6391,6 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - figures@3.0.0: - dependencies: - escape-string-regexp: 1.0.5 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -6582,12 +6607,6 @@ snapshots: human-signals@2.1.0: {} - iconv-lite@0.7.2: - dependencies: - safer-buffer: 2.1.2 - - ieee754@1.2.1: {} - ignore-walk@5.0.1: dependencies: minimatch: 5.1.9 @@ -6618,26 +6637,6 @@ snapshots: inherits@2.0.4: {} - inquirer@8.2.7(@types/node@20.17.19): - dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@20.17.19) - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - figures: 3.0.0 - lodash: 4.18.1 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - transitivePeerDependencies: - - '@types/node' - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -6708,8 +6707,6 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-interactive@1.0.0: {} - is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -6759,8 +6756,6 @@ snapshots: is-typedarray@1.0.0: {} - is-unicode-supported@0.1.0: {} - is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -7257,11 +7252,6 @@ snapshots: lodash@4.18.1: {} - log-symbols@4.1.0: - dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 - loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -7358,7 +7348,7 @@ snapshots: ms@2.1.3: {} - mute-stream@0.0.8: {} + mute-stream@3.0.0: {} mz@2.7.0: dependencies: @@ -7503,18 +7493,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - os-homedir@1.0.2: {} os-tmpdir@1.0.2: {} @@ -7749,11 +7727,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - reusify@1.1.0: {} rfc4648@1.5.4: {} @@ -7762,8 +7735,6 @@ snapshots: dependencies: glob: 7.2.3 - run-async@2.4.1: {} - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -7772,10 +7743,6 @@ snapshots: dependencies: tslib: 1.14.1 - rxjs@7.8.2: - dependencies: - tslib: 2.8.1 - safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -7805,8 +7772,6 @@ snapshots: es-errors: 1.3.0 is-regex: 1.2.1 - safer-buffer@2.1.2: {} - schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 @@ -8106,8 +8071,6 @@ snapshots: dependencies: readable-stream: 3.6.2 - through@2.3.8: {} - tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.4) @@ -8295,10 +8258,6 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - webpack-sources@3.3.4: {} webpack@5.105.4: @@ -8380,12 +8339,6 @@ snapshots: word-wrap@1.2.5: {} - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 diff --git a/common/config/subspaces/build-tests-subspace/repo-state.json b/common/config/subspaces/build-tests-subspace/repo-state.json index 279de1294a7..56b13700d35 100644 --- a/common/config/subspaces/build-tests-subspace/repo-state.json +++ b/common/config/subspaces/build-tests-subspace/repo-state.json @@ -1,6 +1,6 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "b1f311ce3022b7da1f29ddfd0c9f36fc9369eb6a", + "pnpmShrinkwrapHash": "1ded19a2033fa7b23c21223431015a3179be3511", "preferredVersionsHash": "550b4cee0bef4e97db6c6aad726df5149d20e7d9", - "packageJsonInjectedDependenciesHash": "48841cb23712490653a7ff8357aa7c54d613c112" + "packageJsonInjectedDependenciesHash": "4926a8bfd5a32853df0e9a80bafa5ba5e038a008" } diff --git a/common/config/subspaces/default/pnpm-lock.yaml b/common/config/subspaces/default/pnpm-lock.yaml index ac4c4a2799a..51a1ace5381 100644 --- a/common/config/subspaces/default/pnpm-lock.yaml +++ b/common/config/subspaces/default/pnpm-lock.yaml @@ -4070,6 +4070,21 @@ importers: ../../../libraries/rush-lib: dependencies: + '@inquirer/checkbox': + specifier: ~5.1.3 + version: 5.1.3(@types/node@22.9.3) + '@inquirer/confirm': + specifier: ~6.0.11 + version: 6.0.11(@types/node@22.9.3) + '@inquirer/input': + specifier: ~5.0.11 + version: 5.0.11(@types/node@22.9.3) + '@inquirer/search': + specifier: ~4.1.7 + version: 4.1.7(@types/node@22.9.3) + '@inquirer/select': + specifier: ~5.1.3 + version: 5.1.3(@types/node@22.9.3) '@pnpm/link-bins': specifier: ~5.3.7 version: 5.3.25 @@ -4133,9 +4148,6 @@ importers: fast-glob: specifier: ~3.3.1 version: 3.3.3 - figures: - specifier: 3.0.0 - version: 3.0.0 git-repo-info: specifier: ~2.1.0 version: 2.1.1 @@ -4148,9 +4160,6 @@ importers: ignore: specifier: ~5.1.6 version: 5.1.9 - inquirer: - specifier: ~8.2.7 - version: 8.2.7(@types/node@22.9.3) js-yaml: specifier: ~4.1.0 version: 4.1.1 @@ -4209,9 +4218,6 @@ importers: '@types/cli-table': specifier: 0.3.0 version: 0.3.0 - '@types/inquirer': - specifier: 7.3.1 - version: 7.3.1 '@types/js-yaml': specifier: 4.0.9 version: 4.0.9 @@ -6063,6 +6069,10 @@ packages: resolution: {integrity: sha512-D/sdlJBMJfx7gqoj66PKVmhDDaU6TKA49ptcolxdas29X7AfvLTmfAGLjAcIMBK7UZ2o4lygHIqVckOlQU3xWw==} engines: {node: '>=20.0.0'} + '@azure/identity@4.13.1': + resolution: {integrity: sha512-5C/2WD5Vb1lHnZS16dNQRPMjN6oV/Upba+C9nBIs15PmOi6A3ZGs4Lr2u60zw4S04gi+u3cEXiqTVP7M4Pz3kw==} + engines: {node: '>=20.0.0'} + '@azure/identity@4.5.0': resolution: {integrity: sha512-EknvVmtBuSIic47xkOqyNabAme0RYTw52BTMz8eBgU1ysTyMrD1uOoM+JdS0J/4Yfp98IBT3osqq3BfwSaNaGQ==} engines: {node: '>=18.0.0'} @@ -6075,14 +6085,26 @@ packages: resolution: {integrity: sha512-I0XlIGVdM4E9kYP5eTjgW8fgATdzwxJvQ6bm2PNiHaZhEuUz47NYw1xHthC9R+lXz4i9zbShS0VdLyxd7n0GGA==} engines: {node: '>=0.8.0'} + '@azure/msal-browser@5.6.3': + resolution: {integrity: sha512-sTjMtUm+bJpENU/1WlRzHEsgEHppZDZ1EtNyaOODg/sQBtMxxJzGB+MOCM+T2Q5Qe1fKBrdxUmjyRxm0r7Ez9w==} + engines: {node: '>=0.8.0'} + '@azure/msal-common@14.16.1': resolution: {integrity: sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==} engines: {node: '>=0.8.0'} + '@azure/msal-common@16.4.1': + resolution: {integrity: sha512-Bl8f+w37xkXsYh7QRkAKCFGYtWMYuOVO7Lv+BxILrvGz3HbIEF22Pt0ugyj0QPOl6NLrHcnNUQ9yeew98P/5iw==} + engines: {node: '>=0.8.0'} + '@azure/msal-node@2.16.3': resolution: {integrity: sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==} engines: {node: '>=16'} + '@azure/msal-node@5.1.2': + resolution: {integrity: sha512-DoeSJ9U5KPAIZoHsPywvfEj2MhBniQe0+FSpjLUTdWoIkI999GB5USkW6nNEHnIaLVxROHXvprWA1KzdS1VQ4A==} + engines: {node: '>=20'} + '@azure/storage-blob@12.26.0': resolution: {integrity: sha512-SriLPKezypIsiZ+TtlFfE46uuBIap2HeaQVS78e1P7rz5OSbq0rsd52WE1mC5f7vAeLiXqv7I7oRhL3WFZEw3Q==} engines: {node: '>=18.0.0'} @@ -8036,9 +8058,71 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@inquirer/external-editor@1.0.3': - resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} - engines: {node: '>=18'} + '@inquirer/ansi@2.0.5': + resolution: {integrity: sha512-doc2sWgJpbFQ64UflSVd17ibMGDuxO1yKgOgLMwavzESnXjFWJqUeG8saYosqKpHp4kWiM5x1nXvEjbpx90gzw==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + + '@inquirer/checkbox@5.1.3': + resolution: {integrity: sha512-+G7I8CT+EHv/hasNfUl3P37DVoMoZfpA+2FXmM54dA8MxYle1YqucxbacxHalw1iAFSdKNEDTGNV7F+j1Ldqcg==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@6.0.11': + resolution: {integrity: sha512-pTpHjg0iEIRMYV/7oCZUMf27/383E6Wyhfc/MY+AVQGEoUobffIYWOK9YLP2XFRGz/9i6WlTQh1CkFVIo2Y7XA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@11.1.8': + resolution: {integrity: sha512-/u+yJk2pOKNDOh1ZgdUH2RQaRx6OOH4I0uwL95qPvTFTIL38YBsuSC4r1yXBB3Q6JvNqFFc202gk0Ew79rrcjA==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@2.0.5': + resolution: {integrity: sha512-NsSs4kzfm12lNetHwAn3GEuH317IzpwrMCbOuMIVytpjnJ90YYHNwdRgYGuKmVxwuIqSgqk3M5qqQt1cDk0tGQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + + '@inquirer/input@5.0.11': + resolution: {integrity: sha512-twUWidn4ocPO8qi6fRM7tNWt7W1FOnOZqQ+/+PsfLUacMR5rFLDPK9ql0nBPwxi0oELbo8T5NhRs8B2+qQEqFQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@4.1.7': + resolution: {integrity: sha512-1y7+0N65AWk5RdlXH/Kn13txf3IjIQ7OEfhCEkDTU+h5wKMLq8DUF3P6z+/kLSxDGDtQT1dRBWEUC3o/VvImsQ==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@5.1.3': + resolution: {integrity: sha512-zYyqWgGQi3NhBcNq4Isc5rB3oEdQEh1Q/EcAnOW0FK4MpnXWkvSBYgA4cYrTM4A9UB573omouZbnL9JJ74Mq3A==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@4.0.5': + resolution: {integrity: sha512-aetVUNeKNc/VriqXlw1NRSW0zhMBB0W4bNbWRJgzRl/3d0QNDQFfk0GO5SDdtjMZVg6o8ZKEiadd7SCCzoOn5Q==} + engines: {node: '>=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0'} peerDependencies: '@types/node': '>=18' peerDependenciesMeta: @@ -10175,9 +10259,6 @@ packages: '@types/http-proxy@1.17.17': resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} - '@types/inquirer@7.3.1': - resolution: {integrity: sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g==} - '@types/is-function@1.0.3': resolution: {integrity: sha512-/CLhCW79JUeLKznI6mbVieGbl4QU5Hfn+6udw1YHZoofASjbQ5zaP5LzAUZYDpRYEjS4/P+DhEgyJ/PQmGGTWw==} @@ -10394,9 +10475,6 @@ packages: '@types/tapable@1.0.6': resolution: {integrity: sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==} - '@types/through@0.0.33': - resolution: {integrity: sha512-HsJ+z3QuETzP3cswwtzt2vEIiHBk/dCcHGhbmG5X3ecnwFD/lPrMpliGXxSCg03L9AhrdwA4Oz/qfspkDW+xGQ==} - '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} @@ -11797,9 +11875,6 @@ packages: character-reference-invalid@1.1.4: resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} - chardet@2.1.1: - resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} - check-error@2.1.3: resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} @@ -11881,14 +11956,6 @@ packages: resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} engines: {node: '>=10'} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} - cli-table3@0.6.5: resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} @@ -11897,9 +11964,9 @@ packages: resolution: {integrity: sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==} engines: {node: '>= 0.2.0'} - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} @@ -11918,10 +11985,6 @@ packages: clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -12443,9 +12506,6 @@ packages: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -13371,9 +13431,18 @@ packages: fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fast-string-truncated-width@3.0.3: + resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} + + fast-string-width@3.0.2: + resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-wrap-ansi@0.2.0: + resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} + fast-xml-parser@5.3.5: resolution: {integrity: sha512-JeaA2Vm9ffQKp9VjvfzObuMCjUYAp5WDYhRYL5LrBPY/jUDlUtOvDfot0vKSkB9tuX885BDHjtw4fZadD95wnA==} hasBin: true @@ -13418,10 +13487,6 @@ packages: resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==} deprecated: This module is no longer supported. - figures@3.0.0: - resolution: {integrity: sha512-HKri+WoWoUgr83pehn/SIgLOMZ9nAWC6dcGj26RY2R4F50u4+RTUz0RCrUlOV3nKRAICW1UGzyb+kcX2qK1S/g==} - engines: {node: '>=8'} - file-entry-cache@5.0.1: resolution: {integrity: sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==} engines: {node: '>=4'} @@ -14255,10 +14320,6 @@ packages: inline-style-parser@0.1.1: resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} - inquirer@8.2.7: - resolution: {integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==} - engines: {node: '>=12.0.0'} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -14448,10 +14509,6 @@ packages: resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} engines: {node: '>=10'} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} @@ -15647,6 +15704,10 @@ packages: mute-stream@0.0.8: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@3.0.0: + resolution: {integrity: sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==} + engines: {node: ^20.17.0 || >=22.9.0} + mz@2.7.0: resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} @@ -15939,10 +16000,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - os-browserify@0.3.0: resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==} @@ -17128,10 +17185,6 @@ packages: responselike@2.0.1: resolution: {integrity: sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - ret@0.1.15: resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} engines: {node: '>=0.12'} @@ -17195,10 +17248,6 @@ packages: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -18156,9 +18205,6 @@ packages: through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} @@ -18724,9 +18770,6 @@ packages: wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - web-namespaces@1.1.4: resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==} @@ -19698,6 +19741,22 @@ snapshots: fast-xml-parser: 5.3.5 tslib: 2.8.1 + '@azure/identity@4.13.1': + dependencies: + '@azure/abort-controller': 2.1.2 + '@azure/core-auth': 1.10.1 + '@azure/core-client': 1.10.1 + '@azure/core-rest-pipeline': 1.23.0 + '@azure/core-tracing': 1.3.1 + '@azure/core-util': 1.13.1 + '@azure/logger': 1.3.0 + '@azure/msal-browser': 5.6.3 + '@azure/msal-node': 5.1.2 + open: 10.2.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + '@azure/identity@4.5.0': dependencies: '@azure/abort-controller': 2.1.2 @@ -19728,14 +19787,26 @@ snapshots: dependencies: '@azure/msal-common': 14.16.1 + '@azure/msal-browser@5.6.3': + dependencies: + '@azure/msal-common': 16.4.1 + '@azure/msal-common@14.16.1': {} + '@azure/msal-common@16.4.1': {} + '@azure/msal-node@2.16.3': dependencies: '@azure/msal-common': 14.16.1 jsonwebtoken: 9.0.3 uuid: 8.3.2 + '@azure/msal-node@5.1.2': + dependencies: + '@azure/msal-common': 16.4.1 + jsonwebtoken: 9.0.3 + uuid: 8.3.2 + '@azure/storage-blob@12.26.0': dependencies: '@azure/abort-controller': 2.1.2 @@ -22791,10 +22862,63 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@inquirer/external-editor@1.0.3(@types/node@22.9.3)': + '@inquirer/ansi@2.0.5': {} + + '@inquirer/checkbox@5.1.3(@types/node@22.9.3)': dependencies: - chardet: 2.1.1 - iconv-lite: 0.7.2 + '@inquirer/ansi': 2.0.5 + '@inquirer/core': 11.1.8(@types/node@22.9.3) + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@22.9.3) + optionalDependencies: + '@types/node': 22.9.3 + + '@inquirer/confirm@6.0.11(@types/node@22.9.3)': + dependencies: + '@inquirer/core': 11.1.8(@types/node@22.9.3) + '@inquirer/type': 4.0.5(@types/node@22.9.3) + optionalDependencies: + '@types/node': 22.9.3 + + '@inquirer/core@11.1.8(@types/node@22.9.3)': + dependencies: + '@inquirer/ansi': 2.0.5 + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@22.9.3) + cli-width: 4.1.0 + fast-wrap-ansi: 0.2.0 + mute-stream: 3.0.0 + signal-exit: 4.1.0 + optionalDependencies: + '@types/node': 22.9.3 + + '@inquirer/figures@2.0.5': {} + + '@inquirer/input@5.0.11(@types/node@22.9.3)': + dependencies: + '@inquirer/core': 11.1.8(@types/node@22.9.3) + '@inquirer/type': 4.0.5(@types/node@22.9.3) + optionalDependencies: + '@types/node': 22.9.3 + + '@inquirer/search@4.1.7(@types/node@22.9.3)': + dependencies: + '@inquirer/core': 11.1.8(@types/node@22.9.3) + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@22.9.3) + optionalDependencies: + '@types/node': 22.9.3 + + '@inquirer/select@5.1.3(@types/node@22.9.3)': + dependencies: + '@inquirer/ansi': 2.0.5 + '@inquirer/core': 11.1.8(@types/node@22.9.3) + '@inquirer/figures': 2.0.5 + '@inquirer/type': 4.0.5(@types/node@22.9.3) + optionalDependencies: + '@types/node': 22.9.3 + + '@inquirer/type@4.0.5(@types/node@22.9.3)': optionalDependencies: '@types/node': 22.9.3 @@ -26754,11 +26878,6 @@ snapshots: dependencies: '@types/node': 22.9.3 - '@types/inquirer@7.3.1': - dependencies: - '@types/through': 0.0.33 - rxjs: 6.6.7 - '@types/is-function@1.0.3': {} '@types/istanbul-lib-coverage@2.0.4': {} @@ -26978,10 +27097,6 @@ snapshots: '@types/tapable@1.0.6': {} - '@types/through@0.0.33': - dependencies: - '@types/node': 22.9.3 - '@types/tough-cookie@4.0.5': {} '@types/uglify-js@3.17.5': @@ -27680,7 +27795,7 @@ snapshots: '@vscode/vsce@3.2.1': dependencies: - '@azure/identity': 4.5.0 + '@azure/identity': 4.13.1 '@vscode/vsce-sign': 2.0.9 azure-devops-node-api: 12.5.0 chalk: 2.4.2 @@ -29056,8 +29171,6 @@ snapshots: character-reference-invalid@1.1.4: {} - chardet@2.1.1: {} - check-error@2.1.3: {} cheerio-select@2.1.0: @@ -29157,12 +29270,6 @@ snapshots: cli-boxes@3.0.0: {} - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - - cli-spinners@2.9.2: {} - cli-table3@0.6.5: dependencies: string-width: 4.2.3 @@ -29173,7 +29280,7 @@ snapshots: dependencies: colors: 1.0.3 - cli-width@3.0.0: {} + cli-width@4.1.0: {} cliui@6.0.0: dependencies: @@ -29203,8 +29310,6 @@ snapshots: dependencies: mimic-response: 1.0.1 - clone@1.0.4: {} - clsx@2.1.1: {} cluster-key-slot@1.1.2: {} @@ -29788,10 +29893,6 @@ snapshots: dependencies: execa: 5.1.1 - defaults@1.0.4: - dependencies: - clone: 1.0.4 - defer-to-connect@2.0.1: {} define-data-property@1.1.4: @@ -31389,8 +31490,18 @@ snapshots: fast-safe-stringify@2.1.1: {} + fast-string-truncated-width@3.0.3: {} + + fast-string-width@3.0.2: + dependencies: + fast-string-truncated-width: 3.0.3 + fast-uri@3.1.0: {} + fast-wrap-ansi@0.2.0: + dependencies: + fast-string-width: 3.0.2 + fast-xml-parser@5.3.5: dependencies: strnum: 2.2.2 @@ -31446,10 +31557,6 @@ snapshots: figgy-pudding@3.5.2: {} - figures@3.0.0: - dependencies: - escape-string-regexp: 1.0.5 - file-entry-cache@5.0.1: dependencies: flat-cache: 2.0.1 @@ -32454,26 +32561,6 @@ snapshots: inline-style-parser@0.1.1: {} - inquirer@8.2.7(@types/node@22.9.3): - dependencies: - '@inquirer/external-editor': 1.0.3(@types/node@22.9.3) - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - figures: 3.0.0 - lodash: 4.18.1 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - transitivePeerDependencies: - - '@types/node' - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -32649,8 +32736,6 @@ snapshots: global-dirs: 3.0.1 is-path-inside: 3.0.3 - is-interactive@1.0.0: {} - is-lambda@1.0.1: {} is-map@2.0.3: {} @@ -34381,6 +34466,8 @@ snapshots: mute-stream@0.0.8: {} + mute-stream@3.0.0: {} + mz@2.7.0: dependencies: any-promise: 1.3.0 @@ -34734,18 +34821,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - os-browserify@0.3.0: {} os-homedir@1.0.2: {} @@ -36068,11 +36143,6 @@ snapshots: dependencies: lowercase-keys: 2.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - ret@0.1.15: {} ret@0.2.2: {} @@ -36124,8 +36194,6 @@ snapshots: run-applescript@7.1.0: {} - run-async@2.4.1: {} - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -37297,8 +37365,6 @@ snapshots: dependencies: readable-stream: 3.6.2 - through@2.3.8: {} - thunky@1.1.0: {} timers-browserify@2.0.12: @@ -37964,10 +38030,6 @@ snapshots: dependencies: minimalistic-assert: 1.0.1 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - web-namespaces@1.1.4: {} webidl-conversions@3.0.1: {} @@ -38443,7 +38505,7 @@ snapshots: xml2js@0.6.2: dependencies: - sax: 1.2.1 + sax: 1.6.0 xmlbuilder: 11.0.1 xml@1.0.1: {} diff --git a/common/config/subspaces/default/repo-state.json b/common/config/subspaces/default/repo-state.json index 4e162cf9ca9..2f3e2f819a4 100644 --- a/common/config/subspaces/default/repo-state.json +++ b/common/config/subspaces/default/repo-state.json @@ -1,5 +1,5 @@ // DO NOT MODIFY THIS FILE MANUALLY BUT DO COMMIT IT. It is generated and used by Rush. { - "pnpmShrinkwrapHash": "f6f8745e4dfb26c1fb57dc44ddd7e8f633c53c43", + "pnpmShrinkwrapHash": "7752e9ca475a5aae6a21af2392a27bb2f28e880a", "preferredVersionsHash": "029c99bd6e65c5e1f25e2848340509811ff9753c" } diff --git a/libraries/rush-lib/package.json b/libraries/rush-lib/package.json index b76e3100631..276323a7c9b 100644 --- a/libraries/rush-lib/package.json +++ b/libraries/rush-lib/package.json @@ -62,12 +62,15 @@ "dependency-path": "~9.2.8", "dotenv": "~16.4.7", "fast-glob": "~3.3.1", - "figures": "3.0.0", "git-repo-info": "~2.1.0", "glob-escape": "~0.0.2", "https-proxy-agent": "~5.0.0", "ignore": "~5.1.6", - "inquirer": "~8.2.7", + "@inquirer/checkbox": "~5.1.3", + "@inquirer/confirm": "~6.0.11", + "@inquirer/input": "~5.0.11", + "@inquirer/search": "~4.1.7", + "@inquirer/select": "~5.1.3", "js-yaml": "~4.1.0", "npm-package-arg": "~6.1.0", "object-hash": "3.0.0", @@ -89,7 +92,6 @@ "@rushstack/webpack-deep-imports-plugin": "workspace:*", "@rushstack/webpack-preserve-dynamic-require-plugin": "workspace:*", "@types/cli-table": "0.3.0", - "@types/inquirer": "7.3.1", "@types/js-yaml": "4.0.9", "@types/npm-package-arg": "6.1.0", "@types/object-hash": "~3.0.6", diff --git a/libraries/rush-lib/src/cli/actions/ChangeAction.ts b/libraries/rush-lib/src/cli/actions/ChangeAction.ts index 9167d5bca15..592529f6c54 100644 --- a/libraries/rush-lib/src/cli/actions/ChangeAction.ts +++ b/libraries/rush-lib/src/cli/actions/ChangeAction.ts @@ -4,7 +4,6 @@ import * as path from 'node:path'; import * as child_process from 'node:child_process'; -import type * as InquirerType from 'inquirer'; import type { CommandLineFlagParameter, @@ -202,8 +201,6 @@ export class ChangeAction extends BaseRushAction { await this._warnUnstagedChangesAsync(); - const inquirer: typeof InquirerType = await import('inquirer'); - const promptModule: InquirerType.PromptModule = inquirer.createPromptModule(); let changeFileData: Map = new Map(); let interactiveMode: boolean = false; if (this._bulkChangeParameter.value) { @@ -279,7 +276,6 @@ export class ChangeAction extends BaseRushAction { await this._getChangeFilesAsync() ); changeFileData = await this._promptForChangeFileDataAsync( - promptModule, sortedProjectList, existingChangeComments ); @@ -287,7 +283,7 @@ export class ChangeAction extends BaseRushAction { if (this._isEmailRequired(changeFileData)) { const email: string = this._changeEmailParameter.value ? this._changeEmailParameter.value - : await this._detectOrAskForEmailAsync(promptModule); + : await this._detectOrAskForEmailAsync(); changeFileData.forEach((changeFile: IChangeFile) => { changeFile.email = this.rushConfiguration.getProjectByName(changeFile.packageName)?.versionPolicy ?.includeEmailInChangeFile @@ -299,7 +295,6 @@ export class ChangeAction extends BaseRushAction { let changefiles: string[]; try { changefiles = await this._writeChangeFilesAsync( - promptModule, changeFileData, this._overwriteFlagParameter.value, interactiveMode @@ -413,7 +408,6 @@ export class ChangeAction extends BaseRushAction { * The main loop which prompts the user for information on changed projects. */ private async _promptForChangeFileDataAsync( - promptModule: InquirerType.PromptModule, sortedProjectList: string[], existingChangeComments: Map ): Promise> { @@ -421,7 +415,6 @@ export class ChangeAction extends BaseRushAction { for (const projectName of sortedProjectList) { const changeInfo: IChangeInfo | undefined = await this._askQuestionsAsync( - promptModule, projectName, existingChangeComments ); @@ -448,7 +441,6 @@ export class ChangeAction extends BaseRushAction { * Asks all questions which are needed to generate changelist for a project. */ private async _askQuestionsAsync( - promptModule: InquirerType.PromptModule, packageName: string, existingChangeComments: Map ): Promise { @@ -462,11 +454,10 @@ export class ChangeAction extends BaseRushAction { // eslint-disable-next-line no-console console.log(` > ${comment}`); }); - const { appendComment }: { appendComment: 'skip' | 'append' } = await promptModule({ - name: 'appendComment', - type: 'list', - default: 'skip', + const { default: select } = await import('@inquirer/select'); + const appendComment: 'skip' | 'append' = await select<'skip' | 'append'>({ message: 'Append to existing comments or skip?', + default: 'skip', choices: [ { name: 'Skip', @@ -482,23 +473,19 @@ export class ChangeAction extends BaseRushAction { if (appendComment === 'skip') { return undefined; } else { - return await this._promptForCommentsAsync(promptModule, packageName); + return await this._promptForCommentsAsync(packageName); } } else { - return await this._promptForCommentsAsync(promptModule, packageName); + return await this._promptForCommentsAsync(packageName); } } private async _promptForCommentsAsync( - promptModule: InquirerType.PromptModule, packageName: string ): Promise { const bumpOptions: { [type: string]: string } = this._getBumpOptions(packageName); - const { comment }: { comment: string } = await promptModule({ - name: 'comment', - type: 'input', - message: `Describe changes, or ENTER if no changes:` - }); + const { default: input } = await import('@inquirer/input'); + const comment: string = await input({ message: `Describe changes, or ENTER if no changes:` }); if (Object.keys(bumpOptions).length === 0 || !comment) { return { @@ -507,7 +494,8 @@ export class ChangeAction extends BaseRushAction { type: ChangeType[ChangeType.none] } as IChangeInfo; } else { - const { bumpType }: { bumpType: string } = await promptModule({ + const { default: select } = await import('@inquirer/select'); + const bumpType: string = await select({ choices: Object.keys(bumpOptions).map((option) => { return { value: option, @@ -515,9 +503,7 @@ export class ChangeAction extends BaseRushAction { }; }), default: 'patch', - message: 'Select the type of change:', - name: 'bumpType', - type: 'list' + message: 'Select the type of change:' }); return { @@ -581,10 +567,10 @@ export class ChangeAction extends BaseRushAction { * Will determine a user's email by first detecting it from their Git config, * or will ask for it if it is not found or the Git config is wrong. */ - private async _detectOrAskForEmailAsync(promptModule: InquirerType.PromptModule): Promise { + private async _detectOrAskForEmailAsync(): Promise { return ( - (await this._detectAndConfirmEmailAsync(promptModule)) || - (await this._promptForEmailAsync(promptModule)) + (await this._detectAndConfirmEmailAsync()) || + (await this._promptForEmailAsync()) ); } @@ -605,20 +591,15 @@ export class ChangeAction extends BaseRushAction { * Detects the user's email address from their Git configuration, prompts the user to approve the * detected email. It returns undefined if it cannot be detected. */ - private async _detectAndConfirmEmailAsync( - promptModule: InquirerType.PromptModule - ): Promise { + private async _detectAndConfirmEmailAsync(): Promise { const email: string | undefined = this._detectEmail(); if (email) { - const { isCorrectEmail }: { isCorrectEmail: boolean } = await promptModule([ - { - type: 'confirm', - name: 'isCorrectEmail', - default: 'Y', - message: `Is your email address ${email}?` - } - ]); + const { default: confirm } = await import('@inquirer/confirm'); + const isCorrectEmail: boolean = await confirm({ + message: `Is your email address ${email}?`, + default: true + }); return isCorrectEmail ? email : undefined; } else { return undefined; @@ -628,18 +609,14 @@ export class ChangeAction extends BaseRushAction { /** * Asks the user for their email address */ - private async _promptForEmailAsync(promptModule: InquirerType.PromptModule): Promise { - const { email }: { email: string } = await promptModule([ - { - type: 'input', - name: 'email', - message: 'What is your email address?', - validate: (input: string) => { - return true; // @todo should be an email - } + private async _promptForEmailAsync(): Promise { + const { default: input } = await import('@inquirer/input'); + return await input({ + message: 'What is your email address?', + validate: (value: string) => { + return true; // @todo should be an email } - ]); - return email; + }); } private async _warnUnstagedChangesAsync(): Promise { @@ -665,7 +642,6 @@ export class ChangeAction extends BaseRushAction { * Writes change files to the common/changes folder. Will prompt for overwrite if file already exists. */ private async _writeChangeFilesAsync( - promptModule: InquirerType.PromptModule, changeFileData: Map, overwrite: boolean, interactiveMode: boolean @@ -673,7 +649,6 @@ export class ChangeAction extends BaseRushAction { const writtenFiles: string[] = []; await changeFileData.forEach(async (changeFile: IChangeFile) => { const writtenFile: string | undefined = await this._writeChangeFileAsync( - promptModule, changeFile, overwrite, interactiveMode @@ -686,7 +661,6 @@ export class ChangeAction extends BaseRushAction { } private async _writeChangeFileAsync( - promptModule: InquirerType.PromptModule, changeFileData: IChangeFile, overwrite: boolean, interactiveMode: boolean @@ -699,7 +673,7 @@ export class ChangeAction extends BaseRushAction { const shouldWrite: boolean = !fileExists || overwrite || - (interactiveMode ? await this._promptForOverwriteAsync(promptModule, filePath) : false); + (interactiveMode ? await this._promptForOverwriteAsync(filePath) : false); if (!interactiveMode && fileExists && !overwrite) { throw new Error(`Changefile ${filePath} already exists`); @@ -712,16 +686,12 @@ export class ChangeAction extends BaseRushAction { } private async _promptForOverwriteAsync( - promptModule: InquirerType.PromptModule, filePath: string ): Promise { - const overwrite: boolean = await promptModule([ - { - name: 'overwrite', - type: 'confirm', - message: `Overwrite ${filePath}?` - } - ]); + const { default: confirm } = await import('@inquirer/confirm'); + const overwrite: boolean = await confirm({ + message: `Overwrite ${filePath}?` + }); if (overwrite) { return true; diff --git a/libraries/rush-lib/src/logic/InteractiveUpgrader.ts b/libraries/rush-lib/src/logic/InteractiveUpgrader.ts index 493a2a25ffc..a9a2e855179 100644 --- a/libraries/rush-lib/src/logic/InteractiveUpgrader.ts +++ b/libraries/rush-lib/src/logic/InteractiveUpgrader.ts @@ -1,15 +1,12 @@ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. -import Prompt from 'inquirer/lib/ui/prompt'; - import { NpmCheck, type INpmCheckState, type INpmCheckPackageSummary } from '@rushstack/npm-check-fork'; import { Colorize } from '@rushstack/terminal'; import type { RushConfiguration } from '../api/RushConfiguration'; import { upgradeInteractive, type IDepsToUpgradeAnswers } from '../utilities/InteractiveUpgradeUI'; import type { RushConfigurationProject } from '../api/RushConfigurationProject'; -import { SearchListPrompt } from '../utilities/prompts/SearchListPrompt'; interface IUpgradeInteractiveDeps { projects: RushConfigurationProject[]; @@ -42,26 +39,27 @@ export class InteractiveUpgrader { private async _getUserSelectedProjectForUpgradeAsync(): Promise { const projects: RushConfigurationProject[] | undefined = this._rushConfiguration.projects; - const ui: Prompt = new Prompt({ - list: SearchListPrompt - }); - const { selectProject } = await ui.run([ - { - name: 'selectProject', - message: 'Select a project you would like to upgrade', - type: 'list', - choices: projects.map((project) => { - return { + const { default: search } = await import('@inquirer/search'); + + return await search({ + message: 'Select a project you would like to upgrade', + source: (term) => { + const choices: { name: string; short: string; value: RushConfigurationProject }[] = projects.map( + (project) => ({ name: Colorize.green(project.packageName), + short: project.packageName, value: project - }; - }), - pageSize: 12 - } - ]); - - return selectProject; + }) + ); + if (!term) { + return choices; + } + const filter: string = term.toUpperCase(); + return choices.filter((choice) => choice.short.toUpperCase().includes(filter)); + }, + pageSize: 12 + }); } private async _getPackageDependenciesStatusAsync( diff --git a/libraries/rush-lib/src/utilities/InteractiveUpgradeUI.ts b/libraries/rush-lib/src/utilities/InteractiveUpgradeUI.ts index 9e5d9bf1c06..398443ac962 100644 --- a/libraries/rush-lib/src/utilities/InteractiveUpgradeUI.ts +++ b/libraries/rush-lib/src/utilities/InteractiveUpgradeUI.ts @@ -5,9 +5,8 @@ // https://github.com/dylang/npm-check/blob/master/lib/out/interactive-update.js // Extended to use one type of text table -import inquirer from 'inquirer'; import CliTable from 'cli-table'; -import type Separator from 'inquirer/lib/objects/separator'; +import type { Separator } from '@inquirer/checkbox'; import { AnsiEscape, Colorize } from '@rushstack/terminal'; import type { INpmCheckPackageSummary } from '@rushstack/npm-check-fork'; @@ -123,71 +122,73 @@ function getChoice(dep: INpmCheckPackageSummary): IUpgradeInteractiveDepChoice | }; } -function unselectable(options?: { title: string }): Separator { - return new inquirer.Separator(AnsiEscape.removeCodes(options ? options.title : '')); -} +export const upgradeInteractive = async (pkgs: INpmCheckPackageSummary[]): Promise => { + const { default: checkbox, Separator } = await import('@inquirer/checkbox'); -function createChoices(packages: INpmCheckPackageSummary[], options: IUIGroup): ChoiceTable { - const { filter } = options; - const filteredChoices: INpmCheckPackageSummary[] = packages.filter((pkg: INpmCheckPackageSummary) => { - if ('mismatch' in filter && pkg.mismatch !== filter.mismatch) { - return false; - } else if ('bump' in filter && pkg.bump !== filter.bump) { - return false; - } else if ('notInstalled' in filter && pkg.notInstalled !== filter.notInstalled) { - return false; - } else { - return true; - } - }) as INpmCheckPackageSummary[]; - - const choices: (IUpgradeInteractiveDepChoice | Separator | boolean)[] = filteredChoices - .map(getChoice) - .filter(Boolean); - - const cliTable: CliTable = new CliTable({ - chars: { - top: '', - 'top-mid': '', - 'top-left': '', - 'top-right': '', - bottom: '', - 'bottom-mid': '', - 'bottom-left': '', - 'bottom-right': '', - left: '', - 'left-mid': '', - mid: '', - 'mid-mid': '', - right: '', - 'right-mid': '', - middle: ' ' - }, - colWidths: [50, 10, 3, 10, 100] - }); + function unselectable(options?: { title: string }): Separator { + return new Separator(AnsiEscape.removeCodes(options ? options.title : '')); + } - for (const choice of choices) { - if (typeof choice === 'object' && 'name' in choice) { - cliTable.push(choice.name); + function createChoices(packages: INpmCheckPackageSummary[], options: IUIGroup): ChoiceTable { + const { filter } = options; + const filteredChoices: INpmCheckPackageSummary[] = packages.filter((pkg: INpmCheckPackageSummary) => { + if ('mismatch' in filter && pkg.mismatch !== filter.mismatch) { + return false; + } else if ('bump' in filter && pkg.bump !== filter.bump) { + return false; + } else if ('notInstalled' in filter && pkg.notInstalled !== filter.notInstalled) { + return false; + } else { + return true; + } + }) as INpmCheckPackageSummary[]; + + const choices: (IUpgradeInteractiveDepChoice | Separator | boolean)[] = filteredChoices + .map(getChoice) + .filter(Boolean); + + const cliTable: CliTable = new CliTable({ + chars: { + top: '', + 'top-mid': '', + 'top-left': '', + 'top-right': '', + bottom: '', + 'bottom-mid': '', + 'bottom-left': '', + 'bottom-right': '', + left: '', + 'left-mid': '', + mid: '', + 'mid-mid': '', + right: '', + 'right-mid': '', + middle: ' ' + }, + colWidths: [50, 10, 3, 10, 100] + }); + + for (const choice of choices) { + if (typeof choice === 'object' && 'name' in choice) { + cliTable.push(choice.name); + } } - } - const choicesAsATable: string[] = cliTable.toString().split('\n'); - for (let i: number = 0; i < choices.length; i++) { - const choice: IUpgradeInteractiveDepChoice | Separator | boolean | undefined = choices[i]; - if (typeof choice === 'object' && 'name' in choice) { - choice.name = choicesAsATable[i]; + const choicesAsATable: string[] = cliTable.toString().split('\n'); + for (let i: number = 0; i < choices.length; i++) { + const choice: IUpgradeInteractiveDepChoice | Separator | boolean | undefined = choices[i]; + if (typeof choice === 'object' && 'name' in choice) { + choice.name = choicesAsATable[i]; + } } - } - if (choices.length > 0) { - choices.unshift(unselectable(options)); - choices.unshift(unselectable()); - return choices; + if (choices.length > 0) { + choices.unshift(unselectable(options)); + choices.unshift(unselectable()); + return choices; + } } -} -export const upgradeInteractive = async (pkgs: INpmCheckPackageSummary[]): Promise => { const choicesGrouped: ChoiceTable[] = UI_GROUPS.map((group) => createChoices(pkgs, group)).filter(Boolean); const choices: ChoiceTable = []; @@ -206,17 +207,15 @@ export const upgradeInteractive = async (pkgs: INpmCheckPackageSummary[]): Promi choices.push(unselectable()); choices.push(unselectable({ title: 'Space to select. Enter to start upgrading. Control-C to cancel.' })); - const promptQuestions: inquirer.QuestionCollection = [ - { - name: 'packages', - message: 'Choose which packages to upgrade', - type: 'checkbox', - choices: choices.concat(unselectable()), - pageSize: process.stdout.rows - 2 - } - ]; - - const answers: IDepsToUpgradeAnswers = (await inquirer.prompt(promptQuestions)) as IDepsToUpgradeAnswers; + const packages: INpmCheckPackageSummary[] = await checkbox({ + message: 'Choose which packages to upgrade', + // At this point choices only contains Separator and IUpgradeInteractiveDepChoice items + // with their `name` fields already set to strings by createChoices. + choices: choices.concat(unselectable()) as unknown as ReadonlyArray< + Separator | { value: INpmCheckPackageSummary; name: string; short: string } + >, + pageSize: process.stdout.rows - 2 + }); - return answers; + return { packages }; }; diff --git a/libraries/rush-lib/src/utilities/prompts/SearchListPrompt.ts b/libraries/rush-lib/src/utilities/prompts/SearchListPrompt.ts deleted file mode 100644 index a1e76cc008e..00000000000 --- a/libraries/rush-lib/src/utilities/prompts/SearchListPrompt.ts +++ /dev/null @@ -1,295 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. -// See LICENSE in the project root for license information. - -import type { Interface } from 'node:readline'; - -// Modified from the choice list prompt in inquirer: -// https://github.com/SBoudrias/Inquirer.js/blob/inquirer%407.3.3/packages/inquirer/lib/prompts/list.js -// Extended to include text filtering for the list -import type { default as inquirer, Answers, ListQuestion, DistinctChoice } from 'inquirer'; -import BasePrompt from 'inquirer/lib/prompts/base'; -import observe from 'inquirer/lib/utils/events'; -import Paginator from 'inquirer/lib/utils/paginator'; -import type Separator from 'inquirer/lib/objects/separator'; -import type Choice from 'inquirer/lib/objects/choice'; -import type Choices from 'inquirer/lib/objects/choices'; -import figures from 'figures'; -import { map, takeUntil } from 'rxjs/operators'; - -import { Colorize } from '@rushstack/terminal'; - -interface IKeyPressEvent { - key: { name: string; ctrl: boolean; sequence?: string }; -} - -export class SearchListPrompt extends BasePrompt { - protected done!: (result: unknown) => void; - - private readonly _paginator: Paginator; - private _selected: number = 0; - private _query: string = ''; - private _firstRender: boolean = true; - - public constructor(question: ListQuestion, readline: Interface, answers: Answers) { - super(question, readline, answers); - - if (!this.opt.choices) { - this.throwParamError('choices'); - } - - const isDefaultANumber: boolean = typeof this.opt.default === 'number'; - if (isDefaultANumber && this.opt.default >= 0 && this.opt.default < this.opt.choices.realLength) { - this._selected = this.opt.default; - } else if (!isDefaultANumber && this.opt.default !== null) { - const index: number = this.opt.choices.realChoices.findIndex(({ value }) => value === this.opt.default); - this._selected = Math.max(index, 0); - } - - // Make sure no default is set (so it won't be printed) - this.opt.default = null; - - this._paginator = new Paginator(this.screen); - } - - protected _run(callback: (result: unknown) => void): this { - this.done = callback; - - // eslint-disable-next-line @typescript-eslint/typedef - const events = observe(this.rl); - // eslint-disable-next-line @typescript-eslint/typedef - const validation = this.handleSubmitEvents(events.line.pipe(map(this._getCurrentValue.bind(this)))); - - void validation.success.forEach(this._onSubmit.bind(this)); - void validation.error.forEach(this._onError.bind(this)); - - void events.numberKey - .pipe(takeUntil(events.line)) - .forEach(this._onNumberKey.bind(this) as (evt: unknown) => void); - - void events.keypress - .pipe(takeUntil(validation.success)) - .forEach(this._onKeyPress.bind(this) as (evt: unknown) => void); - - this.render(); - return this; - } - - private _onUpKey(): void { - return this._adjustSelected(-1); - } - - private _onDownKey(): void { - return this._adjustSelected(1); - } - - private _onNumberKey(input: number): void { - if (input <= this.opt.choices.realLength) { - this._selected = input - 1; - } - - this.render(); - } - - /** - * When user press `enter` key - */ - private _onSubmit(state: { value: unknown }): void { - this.status = 'answered'; - // Rerender prompt (and clean subline error) - this.render(); - - this.screen.done(); - this.done(state.value); - } - - private _onError(state: inquirer.prompts.FailedPromptStateData): void { - this.render(state.isValid || undefined); - } - - private _onKeyPress(event: IKeyPressEvent): void { - if (event.key.ctrl) { - switch (event.key.name) { - case 'backspace': - return this._setQuery(''); - } - } else { - switch (event.key.name) { - // Go to beginning of list - case 'home': - return this._adjustSelected(-Infinity); - // Got to end of list - case 'end': - return this._adjustSelected(Infinity); - // Paginate up - case 'pageup': - return this._adjustSelected(-(this.opt.pageSize ?? 1)); - // Paginate down - case 'pagedown': - return this._adjustSelected(this.opt.pageSize ?? 1); - - case 'backspace': - return this._setQuery(this._query.slice(0, -1)); - case 'up': - return this._onUpKey(); - case 'down': - return this._onDownKey(); - - default: - if (event.key.sequence && event.key.sequence.length === 1) { - this._setQuery(this._query + event.key.sequence); - } - } - } - } - - private _setQuery(query: string): void { - this._query = query; - const filter: string = query.toUpperCase(); - - const { choices } = this.opt.choices; - for (const choice of choices as Iterable<{ disabled?: boolean; type: string; short: string }>) { - if (choice.type !== 'separator') { - choice.disabled = !choice.short.toUpperCase().includes(filter); - } - } - - // Select the first valid option - this._adjustSelected(0); - } - - // Provide the delta in deplayed choices and change the selected - // index accordingly by the delta in real choices - private _adjustSelected(delta: number): void { - const { choices } = this.opt.choices; - const pointer: number = this._selected; - let lastValidIndex: number = pointer; - - // if delta is less than 0, we are moving up in list w/ selected index - if (delta < 0) { - for (let i: number = pointer - 1; i >= 0; i--) { - const choice: Choice = choices[i] as Choice; - if (isValidChoice(choice)) { - ++delta; - lastValidIndex = i; - // if delta is 0, we have found the next valid choice that has an index less than the selected index - if (delta === 0) { - break; - } - } - } - } else { - // if delta is greater than 0, we are moving down in list w/ selected index - // Also, if delta is exactly 0, the request is to adjust to the first - // displayed choice that has an index >= the current selected choice. - ++delta; - for (let i: number = pointer, len: number = choices.length; i < len; i++) { - const choice: Choice = choices[i] as Choice; - if (isValidChoice(choice)) { - --delta; - lastValidIndex = i; - // if delta is 0, we have found the next valid choice that has an index greater than the selected index - if (delta === 0) { - break; - } - } - } - } - - this._selected = lastValidIndex; - this.render(); - } - - private _getCurrentValue(): string { - return this.opt.choices.getChoice(this._selected).value; - } - - public render(error?: string): void { - // Render the question - let message: string = this.getQuestion(); - let bottomContent: string = ''; - - if (this._firstRender) { - message += Colorize.dim(' (Use arrow keys)'); - } - - // Render choices or answer depending on the state - if (this.status === 'answered') { - message += Colorize.cyan(this.opt.choices.getChoice(this._selected).short!); - } else { - const choicesStr: string = listRender(this.opt.choices, this._selected); - const indexPosition: number = this.opt.choices.indexOf( - this.opt.choices.getChoice(this._selected) as Choice - ); - let realIndexPosition: number = 0; - const { choices } = this.opt.choices; - - for (let i: number = 0; i < indexPosition; i++) { - const value: DistinctChoice = choices[i]; - - // Add line if it's a separator - if (value.type === 'separator') { - realIndexPosition++; - continue; - } - - // Do not render choices which disabled property - // these represent choices that are filtered out - if ((value as { disabled?: unknown }).disabled) { - continue; - } - - const line: string | undefined = value.name; - // Non-strings take up one line - if (typeof line !== 'string') { - realIndexPosition++; - continue; - } - - // Calculate lines taken up by string - // eslint-disable-next-line no-bitwise - realIndexPosition += ((line.length / process.stdout.columns!) | 0) + 1; - } - message += `\n${Colorize.white(Colorize.bold('Start typing to filter:'))} ${Colorize.cyan( - this._query - )}`; - // @ts-expect-error Types are wrong - message += '\n' + this._paginator.paginate(choicesStr, realIndexPosition, this.opt.pageSize!); - } - - if (error) { - bottomContent = Colorize.red('>> ') + error; - } - - this.screen.render(message, bottomContent); - } -} - -function listRender(choices: Choices, pointer: number): string { - let output: string = ''; - - choices.forEach((choice: Separator | Choice, i: number) => { - if (choice.type === 'separator') { - output += ' ' + choice + '\n'; - return; - } - - if (!choice.disabled) { - const line: string = choice.name; - if (i === pointer) { - output += Colorize.cyan(figures.pointer + line); - } else { - output += ' ' + line; - } - } - - if (i < choices.length - 1) { - output += '\n'; - } - }); - - return output.replace(/\n$/, ''); -} - -function isValidChoice(choice: Choice): boolean { - return !choice.disabled; -}