diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index df4c3c15..b65150fb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -57,6 +57,7 @@ jobs: - plugin-signups - plugin-templates - plugin-custom-metadata + - plugin-settings - plugin-community - plugin-user os: diff --git a/.mocharc.json b/.mocharc.json index 02d8c6c8..814da5d4 100644 --- a/.mocharc.json +++ b/.mocharc.json @@ -1,8 +1,9 @@ { - "require": "test/init.js, ts-node/register, source-map-support/register", + "require": "ts-node/register", "watch-extensions": ["ts", "md"], "watch-files": ["src", "test", "messages"], "recursive": true, "reporter": "spec", - "timeout": 5000 + "timeout": 5000, + "node-option": ["loader=ts-node/esm"] } diff --git a/CHANGELOG.md b/CHANGELOG.md index ed97e800..494a1aca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,1617 +1,1078 @@ ## [5.0.13](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.12...5.0.13) (2023-12-24) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.15.0 to 3.15.1 ([4bffa1e](https://github.com/salesforcecli/sf-plugins-core/commit/4bffa1e21f048f23edaf8200f8df2af2932751f0)) - - +- **deps:** bump @oclif/core from 3.15.0 to 3.15.1 ([4bffa1e](https://github.com/salesforcecli/sf-plugins-core/commit/4bffa1e21f048f23edaf8200f8df2af2932751f0)) ## [5.0.12](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.11...5.0.12) (2023-12-17) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.14.1 to 3.15.0 ([9ebc68b](https://github.com/salesforcecli/sf-plugins-core/commit/9ebc68bbf48ffff0f5e1df5d03a941399dbb84b9)) - - +- **deps:** bump @oclif/core from 3.14.1 to 3.15.0 ([9ebc68b](https://github.com/salesforcecli/sf-plugins-core/commit/9ebc68bbf48ffff0f5e1df5d03a941399dbb84b9)) ## [5.0.11](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.10...5.0.11) (2023-12-17) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.2.2 to 6.4.1 ([2dbb56f](https://github.com/salesforcecli/sf-plugins-core/commit/2dbb56f27cffbae304ad3989d1b3b4177f80fa4d)) - - +- **deps:** bump @salesforce/core from 6.2.2 to 6.4.1 ([2dbb56f](https://github.com/salesforcecli/sf-plugins-core/commit/2dbb56f27cffbae304ad3989d1b3b4177f80fa4d)) ## [5.0.10](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.9...5.0.10) (2023-12-14) - ### Bug Fixes -* allow zero default duration flags ([#470](https://github.com/salesforcecli/sf-plugins-core/issues/470)) ([fdc04b8](https://github.com/salesforcecli/sf-plugins-core/commit/fdc04b88bf45567b1b6476f807989a8b39936ed1)) - - +- allow zero default duration flags ([#470](https://github.com/salesforcecli/sf-plugins-core/issues/470)) ([fdc04b8](https://github.com/salesforcecli/sf-plugins-core/commit/fdc04b88bf45567b1b6476f807989a8b39936ed1)) ## [5.0.9](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.8...5.0.9) (2023-12-14) - ### Bug Fixes -* check oclif exit code first ([#466](https://github.com/salesforcecli/sf-plugins-core/issues/466)) ([6ac36aa](https://github.com/salesforcecli/sf-plugins-core/commit/6ac36aacaaf67b6222c91584c367ef3c49c01069)) - - +- check oclif exit code first ([#466](https://github.com/salesforcecli/sf-plugins-core/issues/466)) ([6ac36aa](https://github.com/salesforcecli/sf-plugins-core/commit/6ac36aacaaf67b6222c91584c367ef3c49c01069)) ## [5.0.8](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.7...5.0.8) (2023-12-09) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.12.0 to 3.14.1 ([07586fd](https://github.com/salesforcecli/sf-plugins-core/commit/07586fda0b8e22a8f5c1b93a3d4f9708e22a62e0)) - - +- **deps:** bump @oclif/core from 3.12.0 to 3.14.1 ([07586fd](https://github.com/salesforcecli/sf-plugins-core/commit/07586fda0b8e22a8f5c1b93a3d4f9708e22a62e0)) ## [5.0.7](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.6...5.0.7) (2023-12-07) - ### Bug Fixes -* preserve oclif exit code ([#460](https://github.com/salesforcecli/sf-plugins-core/issues/460)) ([8a3c370](https://github.com/salesforcecli/sf-plugins-core/commit/8a3c370096f970b7bac8e8dabe1384bc1239a441)) - - +- preserve oclif exit code ([#460](https://github.com/salesforcecli/sf-plugins-core/issues/460)) ([8a3c370](https://github.com/salesforcecli/sf-plugins-core/commit/8a3c370096f970b7bac8e8dabe1384bc1239a441)) ## [5.0.6](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.5...5.0.6) (2023-12-06) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.2.0 to 6.2.2 ([#463](https://github.com/salesforcecli/sf-plugins-core/issues/463)) ([50ec705](https://github.com/salesforcecli/sf-plugins-core/commit/50ec7058542e22f3a167fcf41f848350618a5795)) - - +- **deps:** bump @salesforce/core from 6.2.0 to 6.2.2 ([#463](https://github.com/salesforcecli/sf-plugins-core/issues/463)) ([50ec705](https://github.com/salesforcecli/sf-plugins-core/commit/50ec7058542e22f3a167fcf41f848350618a5795)) ## [5.0.5](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.4...5.0.5) (2023-12-01) - ### Bug Fixes -* **deps:** bump @oclif/core from 3.11.0 to 3.12.0 ([eb7289d](https://github.com/salesforcecli/sf-plugins-core/commit/eb7289ddbb4f60a1cdffe176badb58e14eb20cf3)) - - +- **deps:** bump @oclif/core from 3.11.0 to 3.12.0 ([eb7289d](https://github.com/salesforcecli/sf-plugins-core/commit/eb7289ddbb4f60a1cdffe176badb58e14eb20cf3)) ## [5.0.4](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.3...5.0.4) (2023-11-26) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.1.3 to 6.2.0 ([23ee019](https://github.com/salesforcecli/sf-plugins-core/commit/23ee019ace63b3d6bf4c1752fd93d5cba78ec002)) - - +- **deps:** bump @salesforce/core from 6.1.3 to 6.2.0 ([23ee019](https://github.com/salesforcecli/sf-plugins-core/commit/23ee019ace63b3d6bf4c1752fd93d5cba78ec002)) ## [5.0.3](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.2...5.0.3) (2023-11-21) - ### Bug Fixes -* docs about required flags that read from config ([#455](https://github.com/salesforcecli/sf-plugins-core/issues/455)) ([ca7b8d5](https://github.com/salesforcecli/sf-plugins-core/commit/ca7b8d52251665fba661a4412cff0a14001c1066)) - - +- docs about required flags that read from config ([#455](https://github.com/salesforcecli/sf-plugins-core/issues/455)) ([ca7b8d5](https://github.com/salesforcecli/sf-plugins-core/commit/ca7b8d52251665fba661a4412cff0a14001c1066)) ## [5.0.2](https://github.com/salesforcecli/sf-plugins-core/compare/5.0.1...5.0.2) (2023-11-19) - ### Bug Fixes -* **deps:** bump @salesforce/core from 6.1.0 to 6.1.3 ([6b2edde](https://github.com/salesforcecli/sf-plugins-core/commit/6b2eddeeae28291bc179e3f3f881475b78d52b58)) - - +- **deps:** bump @salesforce/core from 6.1.0 to 6.1.3 ([6b2edde](https://github.com/salesforcecli/sf-plugins-core/commit/6b2eddeeae28291bc179e3f3f881475b78d52b58)) ## [5.0.1](https://github.com/salesforcecli/sf-plugins-core/compare/4.1.3...5.0.1) (2023-11-15) - - ## [4.1.3](https://github.com/salesforcecli/sf-plugins-core/compare/4.1.2...4.1.3) (2023-11-15) - - ## [4.1.2](https://github.com/salesforcecli/sf-plugins-core/compare/4.1.1...4.1.2) (2023-11-13) - ### Bug Fixes -* **perf:** 2 fs ops in parallel ([#446](https://github.com/salesforcecli/sf-plugins-core/issues/446)) ([a6aa122](https://github.com/salesforcecli/sf-plugins-core/commit/a6aa12229e229a7bdc537187a7fa90bf5afaf4bc)) - - +- **perf:** 2 fs ops in parallel ([#446](https://github.com/salesforcecli/sf-plugins-core/issues/446)) ([a6aa122](https://github.com/salesforcecli/sf-plugins-core/commit/a6aa12229e229a7bdc537187a7fa90bf5afaf4bc)) ## [4.1.1](https://github.com/salesforcecli/sf-plugins-core/compare/4.1.0...4.1.1) (2023-11-10) - ### Bug Fixes -* add ctrl+c 130 listener ([#445](https://github.com/salesforcecli/sf-plugins-core/issues/445)) ([6b005cb](https://github.com/salesforcecli/sf-plugins-core/commit/6b005cb91c54956d44b9f0e8d6b895308c267118)) - - +- add ctrl+c 130 listener ([#445](https://github.com/salesforcecli/sf-plugins-core/issues/445)) ([6b005cb](https://github.com/salesforcecli/sf-plugins-core/commit/6b005cb91c54956d44b9f0e8d6b895308c267118)) # [4.1.0](https://github.com/salesforcecli/sf-plugins-core/compare/4.0.0...4.1.0) (2023-11-09) - ### Features -* export inquirer Separator ([#443](https://github.com/salesforcecli/sf-plugins-core/issues/443)) ([cb58076](https://github.com/salesforcecli/sf-plugins-core/commit/cb58076f8dcc7c2d8b273a450e9dfafa06d76426)) - - +- export inquirer Separator ([#443](https://github.com/salesforcecli/sf-plugins-core/issues/443)) ([cb58076](https://github.com/salesforcecli/sf-plugins-core/commit/cb58076f8dcc7c2d8b273a450e9dfafa06d76426)) # [4.0.0](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.28...4.0.0) (2023-10-04) - - ## [3.1.28](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.27...3.1.28) (2023-10-02) - ### Bug Fixes -* stop spinners on caught error ([c3242a7](https://github.com/salesforcecli/sf-plugins-core/commit/c3242a7127a2721eea60edad29f3ad72261a96e6)) - - +- stop spinners on caught error ([c3242a7](https://github.com/salesforcecli/sf-plugins-core/commit/c3242a7127a2721eea60edad29f3ad72261a96e6)) ## [3.1.27](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.26...3.1.27) (2023-10-01) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 3.0.11 to 3.0.13 ([2789a38](https://github.com/salesforcecli/sf-plugins-core/commit/2789a38bfefdec0edc6469d241a4e2eebbbcfdce)) - - +- **deps:** bump @salesforce/kit from 3.0.11 to 3.0.13 ([2789a38](https://github.com/salesforcecli/sf-plugins-core/commit/2789a38bfefdec0edc6469d241a4e2eebbbcfdce)) ## [3.1.26](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.25...3.1.26) (2023-10-01) - ### Bug Fixes -* **deps:** bump @salesforce/core from 5.2.10 to 5.3.1 ([a8ddfae](https://github.com/salesforcecli/sf-plugins-core/commit/a8ddfaeb26af68cb64ba2ffd32a37a2036e28ce2)) - - +- **deps:** bump @salesforce/core from 5.2.10 to 5.3.1 ([a8ddfae](https://github.com/salesforcecli/sf-plugins-core/commit/a8ddfaeb26af68cb64ba2ffd32a37a2036e28ce2)) ## [3.1.25](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.24...3.1.25) (2023-09-28) - ### Bug Fixes -* **deps:** bump get-func-name from 2.0.0 to 2.0.2 ([7437cf0](https://github.com/salesforcecli/sf-plugins-core/commit/7437cf0ead86fc40cf1eed1b95859f22c683cf38)) - - +- **deps:** bump get-func-name from 2.0.0 to 2.0.2 ([7437cf0](https://github.com/salesforcecli/sf-plugins-core/commit/7437cf0ead86fc40cf1eed1b95859f22c683cf38)) ## [3.1.24](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.23...3.1.24) (2023-09-24) - ### Bug Fixes -* **deps:** bump @salesforce/core from 5.2.9 to 5.2.10 ([dcabda3](https://github.com/salesforcecli/sf-plugins-core/commit/dcabda3e3573883ae6396e961528602020931442)) - - +- **deps:** bump @salesforce/core from 5.2.9 to 5.2.10 ([dcabda3](https://github.com/salesforcecli/sf-plugins-core/commit/dcabda3e3573883ae6396e961528602020931442)) ## [3.1.23](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.22...3.1.23) (2023-09-17) - ### Bug Fixes -* **deps:** bump @salesforce/core from 5.2.7 to 5.2.9 ([143aa88](https://github.com/salesforcecli/sf-plugins-core/commit/143aa88f2821b6f6bc40e437347fdd653368e3f3)) - - +- **deps:** bump @salesforce/core from 5.2.7 to 5.2.9 ([143aa88](https://github.com/salesforcecli/sf-plugins-core/commit/143aa88f2821b6f6bc40e437347fdd653368e3f3)) ## [3.1.22](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.21...3.1.22) (2023-09-03) - ### Bug Fixes -* **deps:** bump @salesforce/core from 5.2.1 to 5.2.6 ([3de9cb1](https://github.com/salesforcecli/sf-plugins-core/commit/3de9cb1401a23e139d505e566555df1393b29272)) - - +- **deps:** bump @salesforce/core from 5.2.1 to 5.2.6 ([3de9cb1](https://github.com/salesforcecli/sf-plugins-core/commit/3de9cb1401a23e139d505e566555df1393b29272)) ## [3.1.21](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.20...3.1.21) (2023-09-03) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.12.0 to 2.15.0 ([45a069c](https://github.com/salesforcecli/sf-plugins-core/commit/45a069c2e5f4e41c18069de99eec8656917a6ef3)) - - +- **deps:** bump @oclif/core from 2.12.0 to 2.15.0 ([45a069c](https://github.com/salesforcecli/sf-plugins-core/commit/45a069c2e5f4e41c18069de99eec8656917a6ef3)) ## [3.1.20](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.19...3.1.20) (2023-08-29) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 3.0.9 to 3.0.11 ([903d3f9](https://github.com/salesforcecli/sf-plugins-core/commit/903d3f99206bfd987d6f36b4d67f534fab15a48c)) - - +- **deps:** bump @salesforce/kit from 3.0.9 to 3.0.11 ([903d3f9](https://github.com/salesforcecli/sf-plugins-core/commit/903d3f99206bfd987d6f36b4d67f534fab15a48c)) ## [3.1.19](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.18...3.1.19) (2023-08-28) - ### Bug Fixes -* bump oclif/core ([d1e15a8](https://github.com/salesforcecli/sf-plugins-core/commit/d1e15a8eb1cf68abdbe7abb72b3bbd3b97dde5e8)) - - +- bump oclif/core ([d1e15a8](https://github.com/salesforcecli/sf-plugins-core/commit/d1e15a8eb1cf68abdbe7abb72b3bbd3b97dde5e8)) ## [3.1.18](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.17...3.1.18) (2023-08-23) - ### Bug Fixes -* use getPluginsList to prep for oclif/core v3 ([#377](https://github.com/salesforcecli/sf-plugins-core/issues/377)) ([716f4f8](https://github.com/salesforcecli/sf-plugins-core/commit/716f4f8f615cad1d5ede54b4ba458c2517bf8297)) - - +- use getPluginsList to prep for oclif/core v3 ([#377](https://github.com/salesforcecli/sf-plugins-core/issues/377)) ([716f4f8](https://github.com/salesforcecli/sf-plugins-core/commit/716f4f8f615cad1d5ede54b4ba458c2517bf8297)) ## [3.1.17](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.16...3.1.17) (2023-08-20) - ### Bug Fixes -* **deps:** bump @salesforce/ts-types from 2.0.6 to 2.0.7 ([1f572f2](https://github.com/salesforcecli/sf-plugins-core/commit/1f572f240a4220f723dfff4efb09612069a13079)) - - +- **deps:** bump @salesforce/ts-types from 2.0.6 to 2.0.7 ([1f572f2](https://github.com/salesforcecli/sf-plugins-core/commit/1f572f240a4220f723dfff4efb09612069a13079)) ## [3.1.16](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.15...3.1.16) (2023-08-20) - ### Bug Fixes -* **deps:** bump @salesforce/core from 5.2.0 to 5.2.1 ([bf2ba9d](https://github.com/salesforcecli/sf-plugins-core/commit/bf2ba9d930c6bc64bcb8b40cf037efae4d462e21)) - - +- **deps:** bump @salesforce/core from 5.2.0 to 5.2.1 ([bf2ba9d](https://github.com/salesforcecli/sf-plugins-core/commit/bf2ba9d930c6bc64bcb8b40cf037efae4d462e21)) ## [3.1.15](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.14...3.1.15) (2023-08-13) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 3.0.8 to 3.0.9 ([f620678](https://github.com/salesforcecli/sf-plugins-core/commit/f620678e90a099f3f2febe2501ab8ac58035ab01)) - - +- **deps:** bump @salesforce/kit from 3.0.8 to 3.0.9 ([f620678](https://github.com/salesforcecli/sf-plugins-core/commit/f620678e90a099f3f2febe2501ab8ac58035ab01)) ## [3.1.14](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.13...3.1.14) (2023-08-04) - - ## [3.1.13-dev.0](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.12...3.1.13-dev.0) (2023-07-27) - ### Bug Fixes -* bump sfdx-core to v5 ([74a7a85](https://github.com/salesforcecli/sf-plugins-core/commit/74a7a855910af0d27b2f2f745d59b76f493cbb77)) - - +- bump sfdx-core to v5 ([74a7a85](https://github.com/salesforcecli/sf-plugins-core/commit/74a7a855910af0d27b2f2f745d59b76f493cbb77)) ## [3.1.13](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.13-dev.0...3.1.13) (2023-07-31) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.9.4 to 2.11.1 ([8189e89](https://github.com/salesforcecli/sf-plugins-core/commit/8189e8910844c58825a0926589348794d6af52b3)) - - +- **deps:** bump @oclif/core from 2.9.4 to 2.11.1 ([8189e89](https://github.com/salesforcecli/sf-plugins-core/commit/8189e8910844c58825a0926589348794d6af52b3)) ## [3.1.13-dev.0](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.12...3.1.13-dev.0) (2023-07-27) - ### Bug Fixes -* bump sfdx-core to v5 ([74a7a85](https://github.com/salesforcecli/sf-plugins-core/commit/74a7a855910af0d27b2f2f745d59b76f493cbb77)) - - +- bump sfdx-core to v5 ([74a7a85](https://github.com/salesforcecli/sf-plugins-core/commit/74a7a855910af0d27b2f2f745d59b76f493cbb77)) ## [3.1.12](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.11...3.1.12) (2023-07-23) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.9.3 to 2.9.4 ([4b88222](https://github.com/salesforcecli/sf-plugins-core/commit/4b882229e193c105bb7874e1d36f6b1e141fe06b)) - - +- **deps:** bump @oclif/core from 2.9.3 to 2.9.4 ([4b88222](https://github.com/salesforcecli/sf-plugins-core/commit/4b882229e193c105bb7874e1d36f6b1e141fe06b)) ## [3.1.11](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.10...3.1.11) (2023-07-23) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 3.0.5 to 3.0.6 ([03713bc](https://github.com/salesforcecli/sf-plugins-core/commit/03713bc171d5f2212b389e4c41ac0b572dc940d7)) - - +- **deps:** bump @salesforce/kit from 3.0.5 to 3.0.6 ([03713bc](https://github.com/salesforcecli/sf-plugins-core/commit/03713bc171d5f2212b389e4c41ac0b572dc940d7)) ## [3.1.10](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.9...3.1.10) (2023-07-18) - ### Bug Fixes -* **deps:** bump @salesforce/core from 4.3.10 to 4.3.11 ([4661225](https://github.com/salesforcecli/sf-plugins-core/commit/4661225549588806131cab76c701ef01fa63b0f0)) - - +- **deps:** bump @salesforce/core from 4.3.10 to 4.3.11 ([4661225](https://github.com/salesforcecli/sf-plugins-core/commit/4661225549588806131cab76c701ef01fa63b0f0)) ## [3.1.9](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.8...3.1.9) (2023-07-17) - ### Bug Fixes -* **deps:** remove hooks docs, add docs for stubUx functions, bump deps ([#347](https://github.com/salesforcecli/sf-plugins-core/issues/347)) ([765fc17](https://github.com/salesforcecli/sf-plugins-core/commit/765fc1759c8ca20c92d8b1e88686e4d0fdc5296f)) - - +- **deps:** remove hooks docs, add docs for stubUx functions, bump deps ([#347](https://github.com/salesforcecli/sf-plugins-core/issues/347)) ([765fc17](https://github.com/salesforcecli/sf-plugins-core/commit/765fc1759c8ca20c92d8b1e88686e4d0fdc5296f)) ## [3.1.8](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.7...3.1.8) (2023-07-16) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.8.11 to 2.9.3 ([8c4d954](https://github.com/salesforcecli/sf-plugins-core/commit/8c4d954a005e19ef0f1fa6244c61c57f57c6431d)) - - +- **deps:** bump @oclif/core from 2.8.11 to 2.9.3 ([8c4d954](https://github.com/salesforcecli/sf-plugins-core/commit/8c4d954a005e19ef0f1fa6244c61c57f57c6431d)) ## [3.1.7](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.6...3.1.7) (2023-07-11) - ### Bug Fixes -* **deps:** bump semver from 5.7.1 to 5.7.2 ([103c4b9](https://github.com/salesforcecli/sf-plugins-core/commit/103c4b94d5c217bb26cad4b9e6279aa9d2a91b68)) - - +- **deps:** bump semver from 5.7.1 to 5.7.2 ([103c4b9](https://github.com/salesforcecli/sf-plugins-core/commit/103c4b94d5c217bb26cad4b9e6279aa9d2a91b68)) ## [3.1.6](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.5...3.1.6) (2023-07-09) - ### Bug Fixes -* **deps:** bump @salesforce/core from 4.3.2 to 4.3.8 ([f600baf](https://github.com/salesforcecli/sf-plugins-core/commit/f600baf48925ce91c6e27969e48c3907ac7e7b43)) - - +- **deps:** bump @salesforce/core from 4.3.2 to 4.3.8 ([f600baf](https://github.com/salesforcecli/sf-plugins-core/commit/f600baf48925ce91c6e27969e48c3907ac7e7b43)) ## [3.1.5](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.4...3.1.5) (2023-07-09) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 3.0.3 to 3.0.4 ([8793632](https://github.com/salesforcecli/sf-plugins-core/commit/879363260f5b1cb80ea56a1a1fd455201fe96c66)) - - +- **deps:** bump @salesforce/kit from 3.0.3 to 3.0.4 ([8793632](https://github.com/salesforcecli/sf-plugins-core/commit/879363260f5b1cb80ea56a1a1fd455201fe96c66)) ## [3.1.4](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.3...3.1.4) (2023-07-03) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.8.7 to 2.8.11 ([78059e7](https://github.com/salesforcecli/sf-plugins-core/commit/78059e7c08afbf0d0173c65914d9ccabc50914e9)) - - +- **deps:** bump @oclif/core from 2.8.7 to 2.8.11 ([78059e7](https://github.com/salesforcecli/sf-plugins-core/commit/78059e7c08afbf0d0173c65914d9ccabc50914e9)) ## [3.1.3](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.2...3.1.3) (2023-06-25) - ### Bug Fixes -* **deps:** bump @salesforce/core from 4.3.1 to 4.3.2 ([e6f08a3](https://github.com/salesforcecli/sf-plugins-core/commit/e6f08a3676837f28098a7dcb4c53fbf6fb03f5f8)) - - +- **deps:** bump @salesforce/core from 4.3.1 to 4.3.2 ([e6f08a3](https://github.com/salesforcecli/sf-plugins-core/commit/e6f08a3676837f28098a7dcb4c53fbf6fb03f5f8)) ## [3.1.2](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.1...3.1.2) (2023-06-18) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.8.6 to 2.8.7 ([d30f819](https://github.com/salesforcecli/sf-plugins-core/commit/d30f819f1478c9fcaeb5ea25804f2694c04c817a)) - - +- **deps:** bump @oclif/core from 2.8.6 to 2.8.7 ([d30f819](https://github.com/salesforcecli/sf-plugins-core/commit/d30f819f1478c9fcaeb5ea25804f2694c04c817a)) ## [3.1.1](https://github.com/salesforcecli/sf-plugins-core/compare/3.1.0...3.1.1) (2023-06-18) - ### Bug Fixes -* **deps:** bump @salesforce/core from 4.3.0 to 4.3.1 ([636d890](https://github.com/salesforcecli/sf-plugins-core/commit/636d890c79ef2addee4cb4fa1c7d4b3ca381595d)) - - +- **deps:** bump @salesforce/core from 4.3.0 to 4.3.1 ([636d890](https://github.com/salesforcecli/sf-plugins-core/commit/636d890c79ef2addee4cb4fa1c7d4b3ca381595d)) # [3.1.0](https://github.com/salesforcecli/sf-plugins-core/compare/3.0.4...3.1.0) (2023-06-13) - ### Bug Fixes -* bump versions of kit and core ([0dfdabd](https://github.com/salesforcecli/sf-plugins-core/commit/0dfdabdd00905a6d9022a20be6007882a07e90f2)) - +- bump versions of kit and core ([0dfdabd](https://github.com/salesforcecli/sf-plugins-core/commit/0dfdabdd00905a6d9022a20be6007882a07e90f2)) ### Features -* smarter progress defaults, including noTTY ([2ce7882](https://github.com/salesforcecli/sf-plugins-core/commit/2ce7882d0eb0d300321866227793f5cbffc33016)) - - +- smarter progress defaults, including noTTY ([2ce7882](https://github.com/salesforcecli/sf-plugins-core/commit/2ce7882d0eb0d300321866227793f5cbffc33016)) ## [3.0.4](https://github.com/salesforcecli/sf-plugins-core/compare/3.0.3...3.0.4) (2023-06-08) - ### Bug Fixes -* don't truncate tables by default ([2115fe7](https://github.com/salesforcecli/sf-plugins-core/commit/2115fe78b0d9180bf442082b2853fb72c0aa74b7)) - - +- don't truncate tables by default ([2115fe7](https://github.com/salesforcecli/sf-plugins-core/commit/2115fe78b0d9180bf442082b2853fb72c0aa74b7)) ## [3.0.3](https://github.com/salesforcecli/sf-plugins-core/compare/3.0.2...3.0.3) (2023-06-06) - ### Bug Fixes -* **deps:** bump @salesforce/core from 4.1.0 to 4.1.2 ([415a06a](https://github.com/salesforcecli/sf-plugins-core/commit/415a06a29fbe31ccbbafeefc654bfb381000eb5a)) - - +- **deps:** bump @salesforce/core from 4.1.0 to 4.1.2 ([415a06a](https://github.com/salesforcecli/sf-plugins-core/commit/415a06a29fbe31ccbbafeefc654bfb381000eb5a)) ## [3.0.2](https://github.com/salesforcecli/sf-plugins-core/compare/3.0.1...3.0.2) (2023-05-30) - - ## [3.0.1](https://github.com/salesforcecli/sf-plugins-core/compare/2.4.3...3.0.1) (2023-05-22) - - ## [2.4.3](https://github.com/salesforcecli/sf-plugins-core/compare/2.4.2...2.4.3) (2023-05-14) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.36.0 to 3.36.1 ([aac76cd](https://github.com/salesforcecli/sf-plugins-core/commit/aac76cda0cd0c4cfa3ddea3675bc41928f09e132)) - - +- **deps:** bump @salesforce/core from 3.36.0 to 3.36.1 ([aac76cd](https://github.com/salesforcecli/sf-plugins-core/commit/aac76cda0cd0c4cfa3ddea3675bc41928f09e132)) ## [2.4.2](https://github.com/salesforcecli/sf-plugins-core/compare/2.4.1...2.4.2) (2023-05-04) - ### Bug Fixes -* sf flag default values don't always appear in help text ([#288](https://github.com/salesforcecli/sf-plugins-core/issues/288)) ([cf4f915](https://github.com/salesforcecli/sf-plugins-core/commit/cf4f915ee835f4b959a9107d1c61ab44cb0096b3)) - - +- sf flag default values don't always appear in help text ([#288](https://github.com/salesforcecli/sf-plugins-core/issues/288)) ([cf4f915](https://github.com/salesforcecli/sf-plugins-core/commit/cf4f915ee835f4b959a9107d1c61ab44cb0096b3)) ## [2.4.1](https://github.com/salesforcecli/sf-plugins-core/compare/2.4.0...2.4.1) (2023-05-04) - ### Bug Fixes -* nicer error messages for duration min/max violations ([9ec87e6](https://github.com/salesforcecli/sf-plugins-core/commit/9ec87e633c7b00fab6e1f1b946ecde15035ccb41)) - - +- nicer error messages for duration min/max violations ([9ec87e6](https://github.com/salesforcecli/sf-plugins-core/commit/9ec87e633c7b00fab6e1f1b946ecde15035ccb41)) # [2.4.0](https://github.com/salesforcecli/sf-plugins-core/compare/2.3.0...2.4.0) (2023-04-28) - ### Bug Fixes -* support setting json = true via env ([a02f269](https://github.com/salesforcecli/sf-plugins-core/commit/a02f2698d9d8fd650ecf33bfb311403fb9c71a11)) - +- support setting json = true via env ([a02f269](https://github.com/salesforcecli/sf-plugins-core/commit/a02f2698d9d8fd650ecf33bfb311403fb9c71a11)) ### Features -* support json env in any case ([a6d02bf](https://github.com/salesforcecli/sf-plugins-core/commit/a6d02bf57820b0b70da8de5281017d370c7907a3)) - - +- support json env in any case ([a6d02bf](https://github.com/salesforcecli/sf-plugins-core/commit/a6d02bf57820b0b70da8de5281017d370c7907a3)) # [2.3.0](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.11...2.3.0) (2023-04-28) - ### Features -* one config aggregator ([#274](https://github.com/salesforcecli/sf-plugins-core/issues/274)) ([169805a](https://github.com/salesforcecli/sf-plugins-core/commit/169805ab6491a807477bfb8688dbd5845c8508c4)) - - +- one config aggregator ([#274](https://github.com/salesforcecli/sf-plugins-core/issues/274)) ([169805a](https://github.com/salesforcecli/sf-plugins-core/commit/169805ab6491a807477bfb8688dbd5845c8508c4)) ## [2.2.11](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.10...2.2.11) (2023-04-27) - ### Bug Fixes -* add more error properties to support push errors ([b39ada3](https://github.com/salesforcecli/sf-plugins-core/commit/b39ada36d2df142f18363951f38c84758ed9bb6e)) - - +- add more error properties to support push errors ([b39ada3](https://github.com/salesforcecli/sf-plugins-core/commit/b39ada36d2df142f18363951f38c84758ed9bb6e)) ## [2.2.10](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.9...2.2.10) (2023-04-24) - ### Bug Fixes -* emit sfCommandError event ([#240](https://github.com/salesforcecli/sf-plugins-core/issues/240)) ([ac385c0](https://github.com/salesforcecli/sf-plugins-core/commit/ac385c0bc16da5c50e53a8d39f582e592f5a1ed3)) - - +- emit sfCommandError event ([#240](https://github.com/salesforcecli/sf-plugins-core/issues/240)) ([ac385c0](https://github.com/salesforcecli/sf-plugins-core/commit/ac385c0bc16da5c50e53a8d39f582e592f5a1ed3)) ## [2.2.9](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.8...2.2.9) (2023-04-19) - - ## [2.2.6-beta.5](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6-beta.4...2.2.6-beta.5) (2023-03-29) - ### Bug Fixes -* onRelease flow needs dist tag ([59e02a6](https://github.com/salesforcecli/sf-plugins-core/commit/59e02a606ba68bf00697d10340dac40c8557f0b0)) - - +- onRelease flow needs dist tag ([59e02a6](https://github.com/salesforcecli/sf-plugins-core/commit/59e02a606ba68bf00697d10340dac40c8557f0b0)) ## [2.2.6-beta.4](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6-beta.3...2.2.6-beta.4) (2023-03-29) - ### Bug Fixes -* use context.options ([9d55ab6](https://github.com/salesforcecli/sf-plugins-core/commit/9d55ab65cec49c493b11fc6c595527dab3023ec1)) - - +- use context.options ([9d55ab6](https://github.com/salesforcecli/sf-plugins-core/commit/9d55ab65cec49c493b11fc6c595527dab3023ec1)) ## [2.2.6-beta.3](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6-beta.2...2.2.6-beta.3) (2023-03-29) - ### Bug Fixes -* bump core ([256ddc9](https://github.com/salesforcecli/sf-plugins-core/commit/256ddc92c861c2220e94d10573911c7a72efc8b8)) - - +- bump core ([256ddc9](https://github.com/salesforcecli/sf-plugins-core/commit/256ddc92c861c2220e94d10573911c7a72efc8b8)) ## [2.2.6-beta.2](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.5...2.2.6-beta.2) (2023-03-29) - ### Bug Fixes -* use ability to omit default and defaultHelp from manifest ([ad6be7c](https://github.com/salesforcecli/sf-plugins-core/commit/ad6be7cff5d5d8b3317ee7e104502ac44c106f18)) - - +- use ability to omit default and defaultHelp from manifest ([ad6be7c](https://github.com/salesforcecli/sf-plugins-core/commit/ad6be7cff5d5d8b3317ee7e104502ac44c106f18)) ## [2.2.8](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.7...2.2.8) (2023-04-16) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.8.0 to 2.8.2 ([fa99f51](https://github.com/salesforcecli/sf-plugins-core/commit/fa99f514b7de1f0ecf5896dc93cbe96cdf4a36db)) - - +- **deps:** bump @oclif/core from 2.8.0 to 2.8.2 ([fa99f51](https://github.com/salesforcecli/sf-plugins-core/commit/fa99f514b7de1f0ecf5896dc93cbe96cdf4a36db)) ## [2.2.7](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6...2.2.7) (2023-04-02) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.34.1 to 3.34.6 ([efbc49d](https://github.com/salesforcecli/sf-plugins-core/commit/efbc49d4c46be8f9486299342f8796bb902676c5)) - - +- **deps:** bump @salesforce/core from 3.34.1 to 3.34.6 ([efbc49d](https://github.com/salesforcecli/sf-plugins-core/commit/efbc49d4c46be8f9486299342f8796bb902676c5)) ## [2.2.6](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6-beta.5...2.2.6) (2023-04-02) - ### Bug Fixes -* **deps:** bump @oclif/core from 2.7.1 to 2.8.0 ([580c9c7](https://github.com/salesforcecli/sf-plugins-core/commit/580c9c74f6cfd99004f2f6df0ed497cdaeadbb6c)) - - +- **deps:** bump @oclif/core from 2.7.1 to 2.8.0 ([580c9c7](https://github.com/salesforcecli/sf-plugins-core/commit/580c9c74f6cfd99004f2f6df0ed497cdaeadbb6c)) ## [2.2.6-beta.5](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6-beta.4...2.2.6-beta.5) (2023-03-29) - ### Bug Fixes -* onRelease flow needs dist tag ([59e02a6](https://github.com/salesforcecli/sf-plugins-core/commit/59e02a606ba68bf00697d10340dac40c8557f0b0)) - - +- onRelease flow needs dist tag ([59e02a6](https://github.com/salesforcecli/sf-plugins-core/commit/59e02a606ba68bf00697d10340dac40c8557f0b0)) ## [2.2.6-beta.4](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6-beta.3...2.2.6-beta.4) (2023-03-29) - ### Bug Fixes -* use context.options ([9d55ab6](https://github.com/salesforcecli/sf-plugins-core/commit/9d55ab65cec49c493b11fc6c595527dab3023ec1)) - - +- use context.options ([9d55ab6](https://github.com/salesforcecli/sf-plugins-core/commit/9d55ab65cec49c493b11fc6c595527dab3023ec1)) ## [2.2.6-beta.3](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.6-beta.2...2.2.6-beta.3) (2023-03-29) - ### Bug Fixes -* bump core ([256ddc9](https://github.com/salesforcecli/sf-plugins-core/commit/256ddc92c861c2220e94d10573911c7a72efc8b8)) - - +- bump core ([256ddc9](https://github.com/salesforcecli/sf-plugins-core/commit/256ddc92c861c2220e94d10573911c7a72efc8b8)) ## [2.2.6-beta.2](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.5...2.2.6-beta.2) (2023-03-29) - ### Bug Fixes -* use ability to omit default and defaultHelp from manifest ([ad6be7c](https://github.com/salesforcecli/sf-plugins-core/commit/ad6be7cff5d5d8b3317ee7e104502ac44c106f18)) - - +- use ability to omit default and defaultHelp from manifest ([ad6be7c](https://github.com/salesforcecli/sf-plugins-core/commit/ad6be7cff5d5d8b3317ee7e104502ac44c106f18)) ## [2.2.5](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.4...2.2.5) (2023-03-19) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.33.5 to 3.34.1 ([b17fbe2](https://github.com/salesforcecli/sf-plugins-core/commit/b17fbe2c6dbe4143a80c05dda7768f703882c628)) - - +- **deps:** bump @salesforce/core from 3.33.5 to 3.34.1 ([b17fbe2](https://github.com/salesforcecli/sf-plugins-core/commit/b17fbe2c6dbe4143a80c05dda7768f703882c628)) ## [2.2.4](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.3...2.2.4) (2023-03-01) - ### Bug Fixes -* add skipOclifErrorHandling to errors thrown from SfCommand.catch ([#234](https://github.com/salesforcecli/sf-plugins-core/issues/234)) ([82660ef](https://github.com/salesforcecli/sf-plugins-core/commit/82660efe0bbeea085ec4549c7a2407eee87154d5)) - - +- add skipOclifErrorHandling to errors thrown from SfCommand.catch ([#234](https://github.com/salesforcecli/sf-plugins-core/issues/234)) ([82660ef](https://github.com/salesforcecli/sf-plugins-core/commit/82660efe0bbeea085ec4549c7a2407eee87154d5)) ## [2.2.3](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.2...2.2.3) (2023-02-24) - ### Bug Fixes -* add logJson stub ([5f84c48](https://github.com/salesforcecli/sf-plugins-core/commit/5f84c489f3365df71a6bc89fe7cdfa3129b38dc4)) - - +- add logJson stub ([5f84c48](https://github.com/salesforcecli/sf-plugins-core/commit/5f84c489f3365df71a6bc89fe7cdfa3129b38dc4)) ## [2.2.2](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.1...2.2.2) (2023-02-23) - ### Bug Fixes -* throw SfError from catch ([#230](https://github.com/salesforcecli/sf-plugins-core/issues/230)) ([1eb1c17](https://github.com/salesforcecli/sf-plugins-core/commit/1eb1c1715ceef59ee424677a351607ae0568b513)) - - +- throw SfError from catch ([#230](https://github.com/salesforcecli/sf-plugins-core/issues/230)) ([1eb1c17](https://github.com/salesforcecli/sf-plugins-core/commit/1eb1c1715ceef59ee424677a351607ae0568b513)) ## [2.2.1](https://github.com/salesforcecli/sf-plugins-core/compare/2.2.0...2.2.1) (2023-02-21) - ### Bug Fixes -* throw from catch ([#229](https://github.com/salesforcecli/sf-plugins-core/issues/229)) ([6dcb16f](https://github.com/salesforcecli/sf-plugins-core/commit/6dcb16f5cc662a07fb2217ffc5401c7ff7a14d61)) - - +- throw from catch ([#229](https://github.com/salesforcecli/sf-plugins-core/issues/229)) ([6dcb16f](https://github.com/salesforcecli/sf-plugins-core/commit/6dcb16f5cc662a07fb2217ffc5401c7ff7a14d61)) # [2.2.0](https://github.com/salesforcecli/sf-plugins-core/compare/2.1.3...2.2.0) (2023-02-20) - ### Features -* export Spinner and remove console.error ([#223](https://github.com/salesforcecli/sf-plugins-core/issues/223)) ([04475a0](https://github.com/salesforcecli/sf-plugins-core/commit/04475a0792bd8393be1885c22ccdefcf90740193)) - - +- export Spinner and remove console.error ([#223](https://github.com/salesforcecli/sf-plugins-core/issues/223)) ([04475a0](https://github.com/salesforcecli/sf-plugins-core/commit/04475a0792bd8393be1885c22ccdefcf90740193)) ## [2.1.3](https://github.com/salesforcecli/sf-plugins-core/compare/2.1.2...2.1.3) (2023-02-20) - ### Bug Fixes -* _run type ([#227](https://github.com/salesforcecli/sf-plugins-core/issues/227)) ([5b01252](https://github.com/salesforcecli/sf-plugins-core/commit/5b012527c020829f891f029fe77779e75a6e665f)) - - +- \_run type ([#227](https://github.com/salesforcecli/sf-plugins-core/issues/227)) ([5b01252](https://github.com/salesforcecli/sf-plugins-core/commit/5b012527c020829f891f029fe77779e75a6e665f)) ## [2.1.2](https://github.com/salesforcecli/sf-plugins-core/compare/2.1.1...2.1.2) (2023-02-13) - ### Bug Fixes -* dont allow hooks to exit process ([#217](https://github.com/salesforcecli/sf-plugins-core/issues/217)) ([928f89d](https://github.com/salesforcecli/sf-plugins-core/commit/928f89dce4ba85a2dd8b59d78a6823e7b22cf83d)) - - +- dont allow hooks to exit process ([#217](https://github.com/salesforcecli/sf-plugins-core/issues/217)) ([928f89d](https://github.com/salesforcecli/sf-plugins-core/commit/928f89dce4ba85a2dd8b59d78a6823e7b22cf83d)) ## [2.1.1](https://github.com/salesforcecli/sf-plugins-core/compare/2.1.0...2.1.1) (2023-02-10) - ### Bug Fixes -* warnings to stderr ([fb0c56a](https://github.com/salesforcecli/sf-plugins-core/commit/fb0c56a51474a9cca7e923e34a0fd0e7ffc3d683)) - - +- warnings to stderr ([fb0c56a](https://github.com/salesforcecli/sf-plugins-core/commit/fb0c56a51474a9cca7e923e34a0fd0e7ffc3d683)) # [2.1.0](https://github.com/salesforcecli/sf-plugins-core/compare/2.0.2...2.1.0) (2023-02-09) - ### Features -* add default answer param to confirm ([#215](https://github.com/salesforcecli/sf-plugins-core/issues/215)) ([dc40d45](https://github.com/salesforcecli/sf-plugins-core/commit/dc40d45a51e0d153981123e2a435896a7855bc93)) - - +- add default answer param to confirm ([#215](https://github.com/salesforcecli/sf-plugins-core/issues/215)) ([dc40d45](https://github.com/salesforcecli/sf-plugins-core/commit/dc40d45a51e0d153981123e2a435896a7855bc93)) ## [2.0.2](https://github.com/salesforcecli/sf-plugins-core/compare/2.0.1...2.0.2) (2023-02-07) - ### Bug Fixes -* **deps:** bump oclif core for multi-flag fix ([#213](https://github.com/salesforcecli/sf-plugins-core/issues/213)) ([6b3156a](https://github.com/salesforcecli/sf-plugins-core/commit/6b3156a9683e1a8c6eb05d87154c3850f993e483)) - - +- **deps:** bump oclif core for multi-flag fix ([#213](https://github.com/salesforcecli/sf-plugins-core/issues/213)) ([6b3156a](https://github.com/salesforcecli/sf-plugins-core/commit/6b3156a9683e1a8c6eb05d87154c3850f993e483)) ## [2.0.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.22.3...2.0.1) (2023-01-30) - - ## [1.22.3](https://github.com/salesforcecli/sf-plugins-core/compare/1.22.2...1.22.3) (2023-01-29) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.32.12 to 3.33.1 ([b3a0792](https://github.com/salesforcecli/sf-plugins-core/commit/b3a0792c6cddb5dd7eca2f0435861be3107d2aed)) - - +- **deps:** bump @salesforce/core from 3.32.12 to 3.33.1 ([b3a0792](https://github.com/salesforcecli/sf-plugins-core/commit/b3a0792c6cddb5dd7eca2f0435861be3107d2aed)) ## [1.22.2](https://github.com/salesforcecli/sf-plugins-core/compare/1.22.1...1.22.2) (2023-01-22) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 1.8.0 to 1.8.3 ([0d671c5](https://github.com/salesforcecli/sf-plugins-core/commit/0d671c5582934984b8fd05d1a715d283f6859652)) - - +- **deps:** bump @salesforce/kit from 1.8.0 to 1.8.3 ([0d671c5](https://github.com/salesforcecli/sf-plugins-core/commit/0d671c5582934984b8fd05d1a715d283f6859652)) ## [1.22.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.22.0...1.22.1) (2023-01-13) - ### Bug Fixes -* no default hub with default org ([c59d264](https://github.com/salesforcecli/sf-plugins-core/commit/c59d26414f5fdd16433431935f69688e8b42479a)) - - +- no default hub with default org ([c59d264](https://github.com/salesforcecli/sf-plugins-core/commit/c59d26414f5fdd16433431935f69688e8b42479a)) # [1.22.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.8...1.22.0) (2023-01-10) - ### Features -* optional devhub flag (and deprecated equivalent) ([8458fc3](https://github.com/salesforcecli/sf-plugins-core/commit/8458fc3ea1a2ed055d6e9c59e4d9e43da0efbf91)) - - +- optional devhub flag (and deprecated equivalent) ([8458fc3](https://github.com/salesforcecli/sf-plugins-core/commit/8458fc3ea1a2ed055d6e9c59e4d9e43da0efbf91)) ## [1.21.8](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.7...1.21.8) (2023-01-10) - ### Bug Fixes -* allowed optional properties on Deployers ([941abda](https://github.com/salesforcecli/sf-plugins-core/commit/941abdaa7b8391ad78ce537d6ae5c561adff2938)) -* revert pr [#33](https://github.com/salesforcecli/sf-plugins-core/issues/33) (caused downstream type problems) ([1cc7e07](https://github.com/salesforcecli/sf-plugins-core/commit/1cc7e0738de190805cccd5404674df2b6ab5a7de)) - - +- allowed optional properties on Deployers ([941abda](https://github.com/salesforcecli/sf-plugins-core/commit/941abdaa7b8391ad78ce537d6ae5c561adff2938)) +- revert pr [#33](https://github.com/salesforcecli/sf-plugins-core/issues/33) (caused downstream type problems) ([1cc7e07](https://github.com/salesforcecli/sf-plugins-core/commit/1cc7e0738de190805cccd5404674df2b6ab5a7de)) ## [1.21.7](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.6...1.21.7) (2023-01-09) - ### Bug Fixes -* add ‘both’ type to id flag ([e58a70f](https://github.com/salesforcecli/sf-plugins-core/commit/e58a70fb7e692f9b91ce39915f6483afda613748)) - - +- add ‘both’ type to id flag ([e58a70f](https://github.com/salesforcecli/sf-plugins-core/commit/e58a70fb7e692f9b91ce39915f6483afda613748)) ## [1.21.6](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.5...1.21.6) (2023-01-07) - ### Bug Fixes -* **deps:** bump json5 from 1.0.1 to 1.0.2 ([3e72202](https://github.com/salesforcecli/sf-plugins-core/commit/3e72202da74572423b3bae2200009fc7ede163e5)) - - +- **deps:** bump json5 from 1.0.1 to 1.0.2 ([3e72202](https://github.com/salesforcecli/sf-plugins-core/commit/3e72202da74572423b3bae2200009fc7ede163e5)) ## [1.21.5](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.4...1.21.5) (2023-01-01) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.32.9 to 3.32.12 ([13c9722](https://github.com/salesforcecli/sf-plugins-core/commit/13c9722f1fc01d63bd27d6465831b36753e5ba72)) - - +- **deps:** bump @salesforce/core from 3.32.9 to 3.32.12 ([13c9722](https://github.com/salesforcecli/sf-plugins-core/commit/13c9722f1fc01d63bd27d6465831b36753e5ba72)) ## [1.21.4](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.3...1.21.4) (2023-01-01) - ### Bug Fixes -* **deps:** bump @oclif/core from 1.22.0 to 1.23.1 ([d6a0869](https://github.com/salesforcecli/sf-plugins-core/commit/d6a086994575165848f7c1500876fa6fdb7d9e56)) - - +- **deps:** bump @oclif/core from 1.22.0 to 1.23.1 ([d6a0869](https://github.com/salesforcecli/sf-plugins-core/commit/d6a086994575165848f7c1500876fa6fdb7d9e56)) ## [1.21.3](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.2...1.21.3) (2022-12-19) - ### Bug Fixes -* get good typing for array flags ([1e6ae3f](https://github.com/salesforcecli/sf-plugins-core/commit/1e6ae3f63be9452e2035f88ae715d1e2457ee9dc)) -* required flags use `required` for oclif types ([40147b7](https://github.com/salesforcecli/sf-plugins-core/commit/40147b7f92b8f371ae357f8d8213a0cf9eb4c3c0)) -* required prop on compatibility ([87401b9](https://github.com/salesforcecli/sf-plugins-core/commit/87401b90dcaf72bfa1a8d276d164fa0b5a94cbd0)) - - +- get good typing for array flags ([1e6ae3f](https://github.com/salesforcecli/sf-plugins-core/commit/1e6ae3f63be9452e2035f88ae715d1e2457ee9dc)) +- required flags use `required` for oclif types ([40147b7](https://github.com/salesforcecli/sf-plugins-core/commit/40147b7f92b8f371ae357f8d8213a0cf9eb4c3c0)) +- required prop on compatibility ([87401b9](https://github.com/salesforcecli/sf-plugins-core/commit/87401b90dcaf72bfa1a8d276d164fa0b5a94cbd0)) ## [1.21.2](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.1...1.21.2) (2022-12-18) - ### Bug Fixes -* **deps:** bump @oclif/core from 1.21.0 to 1.22.0 ([4416a6e](https://github.com/salesforcecli/sf-plugins-core/commit/4416a6e60ebeb868cc30d33d99a0a5c5dbf23246)) - - +- **deps:** bump @oclif/core from 1.21.0 to 1.22.0 ([4416a6e](https://github.com/salesforcecli/sf-plugins-core/commit/4416a6e60ebeb868cc30d33d99a0a5c5dbf23246)) ## [1.21.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.21.0...1.21.1) (2022-12-14) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.32.6 to 3.32.9 ([8ba261d](https://github.com/salesforcecli/sf-plugins-core/commit/8ba261de6079facf0321743852910a2e6f9903f3)) - - - -# [1.21.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.20.0...1.21.0) (2022-12-07) - - -### Features +- **deps:** bump @salesforce/core from 3.32.6 to 3.32.9 ([8ba261d](https://github.com/salesforcecli/sf-plugins-core/commit/8ba261de6079facf0321743852910a2e6f9903f3)) -* add array style flag for backward compatibility ([#155](https://github.com/salesforcecli/sf-plugins-core/issues/155)) ([b1844a4](https://github.com/salesforcecli/sf-plugins-core/commit/b1844a495d2adb289b90c0e46f86553a335345e0)) +# [1.21.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.20.0...1.21.0) (2022-12-07) +### Features +- add array style flag for backward compatibility ([#155](https://github.com/salesforcecli/sf-plugins-core/issues/155)) ([b1844a4](https://github.com/salesforcecli/sf-plugins-core/commit/b1844a495d2adb289b90c0e46f86553a335345e0)) # [1.20.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.19.3...1.20.0) (2022-12-07) - ### Features -* prompter.confirm can require a positive answer([#157](https://github.com/salesforcecli/sf-plugins-core/issues/157)) ([05571a0](https://github.com/salesforcecli/sf-plugins-core/commit/05571a0f9c5111b8bbbcfcd0cdcf3854a5afa1b3)) - - +- prompter.confirm can require a positive answer([#157](https://github.com/salesforcecli/sf-plugins-core/issues/157)) ([05571a0](https://github.com/salesforcecli/sf-plugins-core/commit/05571a0f9c5111b8bbbcfcd0cdcf3854a5afa1b3)) ## [1.19.3](https://github.com/salesforcecli/sf-plugins-core/compare/1.19.2...1.19.3) (2022-12-07) - ### Bug Fixes -* update loglevel warn msg to mention env var ([#156](https://github.com/salesforcecli/sf-plugins-core/issues/156)) ([758c813](https://github.com/salesforcecli/sf-plugins-core/commit/758c813a0870c2289bda841cb1ad898ae11ada7f)) - - +- update loglevel warn msg to mention env var ([#156](https://github.com/salesforcecli/sf-plugins-core/issues/156)) ([758c813](https://github.com/salesforcecli/sf-plugins-core/commit/758c813a0870c2289bda841cb1ad898ae11ada7f)) ## [1.19.2](https://github.com/salesforcecli/sf-plugins-core/compare/1.19.1...1.19.2) (2022-12-06) - - ## [1.19.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.19.0...1.19.1) (2022-12-04) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.32.1 to 3.32.6 ([2c9846c](https://github.com/salesforcecli/sf-plugins-core/commit/2c9846c55ed9dca275652dde3fef9c98df9aa499)) - - +- **deps:** bump @salesforce/core from 3.32.1 to 3.32.6 ([2c9846c](https://github.com/salesforcecli/sf-plugins-core/commit/2c9846c55ed9dca275652dde3fef9c98df9aa499)) # [1.19.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.18.1...1.19.0) (2022-11-22) - ### Features -* subscribe existing hooks to matching events ([4e85ebe](https://github.com/salesforcecli/sf-plugins-core/commit/4e85ebe6d728760fbabf26a4c921a320e5a16f38)) - - +- subscribe existing hooks to matching events ([4e85ebe](https://github.com/salesforcecli/sf-plugins-core/commit/4e85ebe6d728760fbabf26a4c921a320e5a16f38)) ## [1.18.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.18.0...1.18.1) (2022-11-18) - ### Bug Fixes -* add `summary` field to org flags ([#137](https://github.com/salesforcecli/sf-plugins-core/issues/137)) ([936dea0](https://github.com/salesforcecli/sf-plugins-core/commit/936dea0ce583c19eec12ec738896884974050c86)) - - +- add `summary` field to org flags ([#137](https://github.com/salesforcecli/sf-plugins-core/issues/137)) ([936dea0](https://github.com/salesforcecli/sf-plugins-core/commit/936dea0ce583c19eec12ec738896884974050c86)) # [1.18.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.7...1.18.0) (2022-11-17) - ### Bug Fixes -* use -o for target-org ([1706d9c](https://github.com/salesforcecli/sf-plugins-core/commit/1706d9c108d5d96ea13147202547dab12701a12b)) -* use o for target-org, not e ([e082eeb](https://github.com/salesforcecli/sf-plugins-core/commit/e082eeb0a24ac016b1be928b9c63cf2802d189d2)) - +- use -o for target-org ([1706d9c](https://github.com/salesforcecli/sf-plugins-core/commit/1706d9c108d5d96ea13147202547dab12701a12b)) +- use o for target-org, not e ([e082eeb](https://github.com/salesforcecli/sf-plugins-core/commit/e082eeb0a24ac016b1be928b9c63cf2802d189d2)) ### Features -* deprecated org flags ([449b1cf](https://github.com/salesforcecli/sf-plugins-core/commit/449b1cfa28da0126948ff5f7e5ffa14f05338a3b)) -* use sfdx's apiversion and loglevel flags ([77f5bd5](https://github.com/salesforcecli/sf-plugins-core/commit/77f5bd56cd5d78e158f256912591f31218b402c1)) - - +- deprecated org flags ([449b1cf](https://github.com/salesforcecli/sf-plugins-core/commit/449b1cfa28da0126948ff5f7e5ffa14f05338a3b)) +- use sfdx's apiversion and loglevel flags ([77f5bd5](https://github.com/salesforcecli/sf-plugins-core/commit/77f5bd56cd5d78e158f256912591f31218b402c1)) ## [1.17.7](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.6...1.17.7) (2022-11-17) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.31.16 to 3.31.19 ([124a8a4](https://github.com/salesforcecli/sf-plugins-core/commit/124a8a484398c28c152ba786a8b30f0c21acf14c)) - - +- **deps:** bump @salesforce/core from 3.31.16 to 3.31.19 ([124a8a4](https://github.com/salesforcecli/sf-plugins-core/commit/124a8a484398c28c152ba786a8b30f0c21acf14c)) ## [1.17.6](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.5...1.17.6) (2022-11-13) - ### Bug Fixes -* **deps:** bump @salesforce/ts-types from 1.7.0 to 1.7.1 ([517db39](https://github.com/salesforcecli/sf-plugins-core/commit/517db39723a28bee5001aa2fc4152d52fab42a06)) - - +- **deps:** bump @salesforce/ts-types from 1.7.0 to 1.7.1 ([517db39](https://github.com/salesforcecli/sf-plugins-core/commit/517db39723a28bee5001aa2fc4152d52fab42a06)) ## [1.17.5](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.4...1.17.5) (2022-11-13) - ### Bug Fixes -* **deps:** bump @oclif/core from 1.20.0 to 1.20.4 ([4fe73b4](https://github.com/salesforcecli/sf-plugins-core/commit/4fe73b466db85c4caa54348900860d6c287bcf45)) - - +- **deps:** bump @oclif/core from 1.20.0 to 1.20.4 ([4fe73b4](https://github.com/salesforcecli/sf-plugins-core/commit/4fe73b466db85c4caa54348900860d6c287bcf45)) ## [1.17.4](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.3...1.17.4) (2022-11-02) - ### Bug Fixes -* **deps:** bump @oclif/core from 1.19.1 to 1.20.0 ([73bb83e](https://github.com/salesforcecli/sf-plugins-core/commit/73bb83e1054d4929fd3b6f7e68df942ab52ad1f1)) - - +- **deps:** bump @oclif/core from 1.19.1 to 1.20.0 ([73bb83e](https://github.com/salesforcecli/sf-plugins-core/commit/73bb83e1054d4929fd3b6f7e68df942ab52ad1f1)) ## [1.17.3](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.2...1.17.3) (2022-10-30) - ### Bug Fixes -* **deps:** bump inquirer from 8.2.4 to 8.2.5 ([446b1e4](https://github.com/salesforcecli/sf-plugins-core/commit/446b1e40cffa91b2b8dfa457d10616aa065ca4af)) - - +- **deps:** bump inquirer from 8.2.4 to 8.2.5 ([446b1e4](https://github.com/salesforcecli/sf-plugins-core/commit/446b1e40cffa91b2b8dfa457d10616aa065ca4af)) ## [1.17.2](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.1...1.17.2) (2022-10-30) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 1.7.0 to 1.7.1 ([b25e3e8](https://github.com/salesforcecli/sf-plugins-core/commit/b25e3e8f07c515f1b07025f60b5367eee6b5208a)) - - +- **deps:** bump @salesforce/kit from 1.7.0 to 1.7.1 ([b25e3e8](https://github.com/salesforcecli/sf-plugins-core/commit/b25e3e8f07c515f1b07025f60b5367eee6b5208a)) ## [1.17.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.17.0...1.17.1) (2022-10-26) - ### Bug Fixes -* **deps:** bump @oclif/core from 1.19.0 to 1.19.1 ([efb5d51](https://github.com/salesforcecli/sf-plugins-core/commit/efb5d5156a266306beba5efdb689865805c8b53b)) - - +- **deps:** bump @oclif/core from 1.19.0 to 1.19.1 ([efb5d51](https://github.com/salesforcecli/sf-plugins-core/commit/efb5d5156a266306beba5efdb689865805c8b53b)) # [1.17.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.16.1...1.17.0) (2022-10-20) - ### Features -* improve Ux options ([#113](https://github.com/salesforcecli/sf-plugins-core/issues/113)) ([fc91673](https://github.com/salesforcecli/sf-plugins-core/commit/fc91673f6e0bff71e4a05e2a53ab7eb434e20c58)) - - +- improve Ux options ([#113](https://github.com/salesforcecli/sf-plugins-core/issues/113)) ([fc91673](https://github.com/salesforcecli/sf-plugins-core/commit/fc91673f6e0bff71e4a05e2a53ab7eb434e20c58)) ## [1.16.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.16.0...1.16.1) (2022-10-20) - ### Bug Fixes -* **deps:** bump @salesforce/core from 3.30.9 to 3.31.16 ([4dc2d53](https://github.com/salesforcecli/sf-plugins-core/commit/4dc2d5303e63e775a4237823759f5929e47eb00d)) - - +- **deps:** bump @salesforce/core from 3.30.9 to 3.31.16 ([4dc2d53](https://github.com/salesforcecli/sf-plugins-core/commit/4dc2d5303e63e775a4237823759f5929e47eb00d)) # [1.16.0](https://github.com/salesforcecli/sf-plugins-core/compare/1.15.2...1.16.0) (2022-10-20) - ### Features -* export Ux and add configAggregator to SfCommand ([#106](https://github.com/salesforcecli/sf-plugins-core/issues/106)) ([9c03d8d](https://github.com/salesforcecli/sf-plugins-core/commit/9c03d8d569deab77e2e80d47e62b6b76e09f4d20)) - - +- export Ux and add configAggregator to SfCommand ([#106](https://github.com/salesforcecli/sf-plugins-core/issues/106)) ([9c03d8d](https://github.com/salesforcecli/sf-plugins-core/commit/9c03d8d569deab77e2e80d47e62b6b76e09f4d20)) ## [1.15.2](https://github.com/salesforcecli/sf-plugins-core/compare/1.15.1...1.15.2) (2022-10-15) - ### Bug Fixes -* **deps:** bump @salesforce/kit from 1.5.44 to 1.7.0 ([3561000](https://github.com/salesforcecli/sf-plugins-core/commit/3561000058a131b147baaeeaaae337078fb96020)) - - +- **deps:** bump @salesforce/kit from 1.5.44 to 1.7.0 ([3561000](https://github.com/salesforcecli/sf-plugins-core/commit/3561000058a131b147baaeeaaae337078fb96020)) ## [1.15.1](https://github.com/salesforcecli/sf-plugins-core/compare/1.15.0...1.15.1) (2022-10-13) - ### Bug Fixes -* parse varargs response type ([35b1aa9](https://github.com/salesforcecli/sf-plugins-core/commit/35b1aa9a7a17b246f8508a2b89e9eaa143824581)) - - +- parse varargs response type ([35b1aa9](https://github.com/salesforcecli/sf-plugins-core/commit/35b1aa9a7a17b246f8508a2b89e9eaa143824581)) # [1.15.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.14.1...1.15.0) (2022-10-11) - ### Features -* support varargs ([6a24106](https://github.com/salesforcecli/sf-plugins-core/commit/6a241069791fe98f861e6011b47696dd86b746e7)) - - +- support varargs ([6a24106](https://github.com/salesforcecli/sf-plugins-core/commit/6a241069791fe98f861e6011b47696dd86b746e7)) ## [1.14.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.13.2...v1.14.1) (2022-08-23) - ### Features -* update custom flag definitions ([828daac](https://github.com/salesforcecli/sf-plugins-core/commit/828daac881124e7f1ef75a2efbcbd0de4a71bb3c)) - - +- update custom flag definitions ([828daac](https://github.com/salesforcecli/sf-plugins-core/commit/828daac881124e7f1ef75a2efbcbd0de4a71bb3c)) ## [1.13.2](https://github.com/salesforcecli/sf-plugins-core/compare/v1.13.1...v1.13.2) (2022-08-09) - ### Bug Fixes -* add function overloads to custom flags ([12c1178](https://github.com/salesforcecli/sf-plugins-core/commit/12c117837a08bc8cf8eff41832f95a19d3386b18)) -* compile errors ([3782a70](https://github.com/salesforcecli/sf-plugins-core/commit/3782a703b7b0eddbc3d47a7dcbdf33272bdfd6fc)) - - +- add function overloads to custom flags ([12c1178](https://github.com/salesforcecli/sf-plugins-core/commit/12c117837a08bc8cf8eff41832f95a19d3386b18)) +- compile errors ([3782a70](https://github.com/salesforcecli/sf-plugins-core/commit/3782a703b7b0eddbc3d47a7dcbdf33272bdfd6fc)) ## [1.13.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.13.0...v1.13.1) (2022-08-03) - ### Bug Fixes -* add number to deploy function return type ([ac9457b](https://github.com/salesforcecli/sf-plugins-core/commit/ac9457b78ab1242090fc4322ec266e8d0157cb6f)) - - +- add number to deploy function return type ([ac9457b](https://github.com/salesforcecli/sf-plugins-core/commit/ac9457b78ab1242090fc4322ec266e8d0157cb6f)) # [1.13.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.12.3...v1.13.0) (2022-06-09) - ### Bug Fixes -* error can't be spread ([30930b7](https://github.com/salesforcecli/sf-plugins-core/commit/30930b74ff5e6b59116228d547362a284ad98388)) - +- error can't be spread ([30930b7](https://github.com/salesforcecli/sf-plugins-core/commit/30930b74ff5e6b59116228d547362a284ad98388)) ### Features -* catch method supports base and SfError ([2b9a038](https://github.com/salesforcecli/sf-plugins-core/commit/2b9a038713c77e1230e21f5cc6f8ae2a6aaab5be)) - - +- catch method supports base and SfError ([2b9a038](https://github.com/salesforcecli/sf-plugins-core/commit/2b9a038713c77e1230e21f5cc6f8ae2a6aaab5be)) ## [1.12.3](https://github.com/salesforcecli/sf-plugins-core/compare/v1.12.2...v1.12.3) (2022-05-04) - ### Bug Fixes -* prevent multiple starts of progress bar ([8ec788c](https://github.com/salesforcecli/sf-plugins-core/commit/8ec788cfda452d2c227631fde64e01786f6f6a49)) -* stop using once ([970fb80](https://github.com/salesforcecli/sf-plugins-core/commit/970fb808ad14a8d8bce0daabd78854c4a046e621)) - - +- prevent multiple starts of progress bar ([8ec788c](https://github.com/salesforcecli/sf-plugins-core/commit/8ec788cfda452d2c227631fde64e01786f6f6a49)) +- stop using once ([970fb80](https://github.com/salesforcecli/sf-plugins-core/commit/970fb808ad14a8d8bce0daabd78854c4a046e621)) ## [1.12.2](https://github.com/salesforcecli/sf-plugins-core/compare/v1.12.1...v1.12.2) (2022-05-03) - ### Bug Fixes -* update error message ([182cfa3](https://github.com/salesforcecli/sf-plugins-core/commit/182cfa30beb4e7fe052a0453d141e19ba7129647)) - - +- update error message ([182cfa3](https://github.com/salesforcecli/sf-plugins-core/commit/182cfa30beb4e7fe052a0453d141e19ba7129647)) ## [1.12.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.12.0...v1.12.1) (2022-04-20) - ### Bug Fixes -* update config vars ([0c557b5](https://github.com/salesforcecli/sf-plugins-core/commit/0c557b59f6b833a6fe2812d9a765a2f006f57b01)) - - +- update config vars ([0c557b5](https://github.com/salesforcecli/sf-plugins-core/commit/0c557b59f6b833a6fe2812d9a765a2f006f57b01)) # [1.12.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.11.3...v1.12.0) (2022-04-18) - ### Features -* adjusting message colors for accessibility ([6f873da](https://github.com/salesforcecli/sf-plugins-core/commit/6f873daf2e05c2ec0b52b357b15333a3b68e106e)) - - +- adjusting message colors for accessibility ([6f873da](https://github.com/salesforcecli/sf-plugins-core/commit/6f873daf2e05c2ec0b52b357b15333a3b68e106e)) ## [1.11.3](https://github.com/salesforcecli/sf-plugins-core/compare/v1.11.2...v1.11.3) (2022-04-12) - ### Bug Fixes -* need await in order for the catch to be effective ([2805578](https://github.com/salesforcecli/sf-plugins-core/commit/28055783503177667620528b6246b252ff10cb7f)) - - +- need await in order for the catch to be effective ([2805578](https://github.com/salesforcecli/sf-plugins-core/commit/28055783503177667620528b6246b252ff10cb7f)) ## [1.11.2](https://github.com/salesforcecli/sf-plugins-core/compare/v1.11.1...v1.11.2) (2022-04-11) - ### Bug Fixes -* optional orgs can be undefined ([412629d](https://github.com/salesforcecli/sf-plugins-core/commit/412629de689d7d73b7c2b0673b8e9b373cc957bc)) -* throw if input provided but no org found ([10be468](https://github.com/salesforcecli/sf-plugins-core/commit/10be468c0c3e164fed171c947dbe437b2325605c)) - - +- optional orgs can be undefined ([412629d](https://github.com/salesforcecli/sf-plugins-core/commit/412629de689d7d73b7c2b0673b8e9b373cc957bc)) +- throw if input provided but no org found ([10be468](https://github.com/salesforcecli/sf-plugins-core/commit/10be468c0c3e164fed171c947dbe437b2325605c)) ## [1.11.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.11.0...v1.11.1) (2022-04-07) - ### Bug Fixes -* adjust message formats ([5b62ced](https://github.com/salesforcecli/sf-plugins-core/commit/5b62cedeb522c08dcce01159a22060be72c1bf62)) - - +- adjust message formats ([5b62ced](https://github.com/salesforcecli/sf-plugins-core/commit/5b62cedeb522c08dcce01159a22060be72c1bf62)) # [1.11.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.10.0...v1.11.0) (2022-03-31) - ### Features -* support error codes help section ([4852a4f](https://github.com/salesforcecli/sf-plugins-core/commit/4852a4f75bcc744febf276293ed5bf45080436e6)) - - +- support error codes help section ([4852a4f](https://github.com/salesforcecli/sf-plugins-core/commit/4852a4f75bcc744febf276293ed5bf45080436e6)) # [1.10.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.9.0...v1.10.0) (2022-03-31) - ### Features -* warn users when using a beta command ([2cf26f2](https://github.com/salesforcecli/sf-plugins-core/commit/2cf26f2d363a40b0739f082bfe4aedd62fd4531f)) - - +- warn users when using a beta command ([2cf26f2](https://github.com/salesforcecli/sf-plugins-core/commit/2cf26f2d363a40b0739f082bfe4aedd62fd4531f)) # [1.9.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.8.1...v1.9.0) (2022-03-24) - ### Features -* explain what a valid api version looks like ([4c5669a](https://github.com/salesforcecli/sf-plugins-core/commit/4c5669a969ef79eae1d4aec76f6cb20df92aae5e)) - - +- explain what a valid api version looks like ([4c5669a](https://github.com/salesforcecli/sf-plugins-core/commit/4c5669a969ef79eae1d4aec76f6cb20df92aae5e)) ## [1.8.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.8.0...v1.8.1) (2022-03-24) - ### Bug Fixes -* log errors to stderr ([9958d8e](https://github.com/salesforcecli/sf-plugins-core/commit/9958d8e49cf1fbe514026491d8d095651d1cb88b)) - - +- log errors to stderr ([9958d8e](https://github.com/salesforcecli/sf-plugins-core/commit/9958d8e49cf1fbe514026491d8d095651d1cb88b)) # [1.8.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.7.2...v1.8.0) (2022-03-17) - ### Bug Fixes -* better checking of hub ([8c92bfe](https://github.com/salesforcecli/sf-plugins-core/commit/8c92bfed8f0600ff03489abbb253b5b95c95128a)) -* no unused, respects timeout ([c41c43e](https://github.com/salesforcecli/sf-plugins-core/commit/c41c43e5c480dc1dd914a86ec8c97a8af41369a1)) -* use OptionFlag interface so that exactlyOne can be used ([0e65453](https://github.com/salesforcecli/sf-plugins-core/commit/0e65453dacb68a90f4af2387e571edbd4077ba1b)) - +- better checking of hub ([8c92bfe](https://github.com/salesforcecli/sf-plugins-core/commit/8c92bfed8f0600ff03489abbb253b5b95c95128a)) +- no unused, respects timeout ([c41c43e](https://github.com/salesforcecli/sf-plugins-core/commit/c41c43e5c480dc1dd914a86ec8c97a8af41369a1)) +- use OptionFlag interface so that exactlyOne can be used ([0e65453](https://github.com/salesforcecli/sf-plugins-core/commit/0e65453dacb68a90f4af2387e571edbd4077ba1b)) ### Features -* confirms are timed ([9c89ee9](https://github.com/salesforcecli/sf-plugins-core/commit/9c89ee99901c7abefc11a811e8e4dda0c704ed1c)) -* simplified confirm prompts ([ddf1364](https://github.com/salesforcecli/sf-plugins-core/commit/ddf1364a48fb384bd0ad66bc310a35abcef20d68)) - - +- confirms are timed ([9c89ee9](https://github.com/salesforcecli/sf-plugins-core/commit/9c89ee99901c7abefc11a811e8e4dda0c704ed1c)) +- simplified confirm prompts ([ddf1364](https://github.com/salesforcecli/sf-plugins-core/commit/ddf1364a48fb384bd0ad66bc310a35abcef20d68)) ## [1.7.2](https://github.com/salesforcecli/sf-plugins-core/compare/v1.7.1...v1.7.2) (2022-03-15) - ### Bug Fixes -* need to pass ms to timedPrompt function ([f285e07](https://github.com/salesforcecli/sf-plugins-core/commit/f285e07525937798d0251da69c86c05cc683edfd)) - - +- need to pass ms to timedPrompt function ([f285e07](https://github.com/salesforcecli/sf-plugins-core/commit/f285e07525937798d0251da69c86c05cc683edfd)) ## [1.7.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.7.0...v1.7.1) (2022-03-11) - ### Bug Fixes -* add oclif enum to exports ([71ee6ac](https://github.com/salesforcecli/sf-plugins-core/commit/71ee6ac7942790ffc519512ade67330614ada51b)) -* expose timed prompt in command class ([3b056c6](https://github.com/salesforcecli/sf-plugins-core/commit/3b056c668d3379ada6f85e2e5b5f6da76c1a3223)) - - +- add oclif enum to exports ([71ee6ac](https://github.com/salesforcecli/sf-plugins-core/commit/71ee6ac7942790ffc519512ade67330614ada51b)) +- expose timed prompt in command class ([3b056c6](https://github.com/salesforcecli/sf-plugins-core/commit/3b056c668d3379ada6f85e2e5b5f6da76c1a3223)) # [1.7.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.6.1...v1.7.0) (2022-03-11) - ### Features -* suppress progress bar output with env vars ([d2e8a84](https://github.com/salesforcecli/sf-plugins-core/commit/d2e8a849d7ca93b3dba538a26ce5f9ab7f858984)) - - +- suppress progress bar output with env vars ([d2e8a84](https://github.com/salesforcecli/sf-plugins-core/commit/d2e8a849d7ca93b3dba538a26ce5f9ab7f858984)) ## [1.6.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.6.0...v1.6.1) (2022-03-09) - ### Bug Fixes -* erturn error - dont throw ([0ea70bc](https://github.com/salesforcecli/sf-plugins-core/commit/0ea70bc12cecd380a907323eba84ddb9d5a44e08)) - - +- erturn error - dont throw ([0ea70bc](https://github.com/salesforcecli/sf-plugins-core/commit/0ea70bc12cecd380a907323eba84ddb9d5a44e08)) # [1.6.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.5.3...v1.6.0) (2022-03-08) - ### Features -* add timedPrompt method ([ea9e98c](https://github.com/salesforcecli/sf-plugins-core/commit/ea9e98c5bffdfc1e917d61006a91f4dba1f808f3)) - - +- add timedPrompt method ([ea9e98c](https://github.com/salesforcecli/sf-plugins-core/commit/ea9e98c5bffdfc1e917d61006a91f4dba1f808f3)) ## [1.5.3](https://github.com/salesforcecli/sf-plugins-core/compare/v1.5.2...v1.5.3) (2022-03-08) - ### Bug Fixes -* expose styledHeader as func in sf command ([fd2dc48](https://github.com/salesforcecli/sf-plugins-core/commit/fd2dc48444be224a884c3b56d5604f4b854f1c0e)) - - +- expose styledHeader as func in sf command ([fd2dc48](https://github.com/salesforcecli/sf-plugins-core/commit/fd2dc48444be224a884c3b56d5604f4b854f1c0e)) ## [1.5.2](https://github.com/salesforcecli/sf-plugins-core/compare/v1.5.1...v1.5.2) (2022-03-07) - ### Bug Fixes -* add styled header function to sf command ([5cc0e8b](https://github.com/salesforcecli/sf-plugins-core/commit/5cc0e8bf60774918c2ebaf2ba5b465f3dd6caf15)) -* retrhow ([eaebd44](https://github.com/salesforcecli/sf-plugins-core/commit/eaebd44d0028cedab92173ed30050757602d2c28)) - - +- add styled header function to sf command ([5cc0e8b](https://github.com/salesforcecli/sf-plugins-core/commit/5cc0e8bf60774918c2ebaf2ba5b465f3dd6caf15)) +- retrhow ([eaebd44](https://github.com/salesforcecli/sf-plugins-core/commit/eaebd44d0028cedab92173ed30050757602d2c28)) ## [1.5.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.5.0...v1.5.1) (2022-03-07) - - # [1.5.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.4.1...v1.5.0) (2022-03-03) - ### Features -* friendly default help for org flags ([f4d55b3](https://github.com/salesforcecli/sf-plugins-core/commit/f4d55b30c08e988c0231b97acce8ba2bc9733a06)) - - +- friendly default help for org flags ([f4d55b3](https://github.com/salesforcecli/sf-plugins-core/commit/f4d55b30c08e988c0231b97acce8ba2bc9733a06)) ## [1.4.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.4.0...v1.4.1) (2022-03-02) - ### Bug Fixes -* make toHelpSection types more friendly ([add364b](https://github.com/salesforcecli/sf-plugins-core/commit/add364b6be532dae6fb49f62164dad486b186347)) - - +- make toHelpSection types more friendly ([add364b](https://github.com/salesforcecli/sf-plugins-core/commit/add364b6be532dae6fb49f62164dad486b186347)) # [1.4.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.3.0...v1.4.0) (2022-03-02) - ### Bug Fixes -* error keys support createError ([f094c49](https://github.com/salesforcecli/sf-plugins-core/commit/f094c49f1ec1063fb05cdc74e1aab88e7ceb7f13)) -* error message doesn't take params ([5d917bf](https://github.com/salesforcecli/sf-plugins-core/commit/5d917bf100d41077d2eaabcd89c41fa049ef6f21)) -* wrong error name ([1b3bbbe](https://github.com/salesforcecli/sf-plugins-core/commit/1b3bbbeae9f3e888faf438fe8d1f4bfd6bdac2c9)) - +- error keys support createError ([f094c49](https://github.com/salesforcecli/sf-plugins-core/commit/f094c49f1ec1063fb05cdc74e1aab88e7ceb7f13)) +- error message doesn't take params ([5d917bf](https://github.com/salesforcecli/sf-plugins-core/commit/5d917bf100d41077d2eaabcd89c41fa049ef6f21)) +- wrong error name ([1b3bbbe](https://github.com/salesforcecli/sf-plugins-core/commit/1b3bbbeae9f3e888faf438fe8d1f4bfd6bdac2c9)) ### Features -* common salesforce flags ([00ab4fc](https://github.com/salesforcecli/sf-plugins-core/commit/00ab4fc94d268b44dccb6a2de02fe4f720ff0fc0)) -* debugging ([cc3fd1e](https://github.com/salesforcecli/sf-plugins-core/commit/cc3fd1e46134c08a4d76e79c74605e90e09abbb3)) -* duration flag ([b11eaab](https://github.com/salesforcecli/sf-plugins-core/commit/b11eaabb0050961094f412d85c2bbbf4b183cd40)) - - +- common salesforce flags ([00ab4fc](https://github.com/salesforcecli/sf-plugins-core/commit/00ab4fc94d268b44dccb6a2de02fe4f720ff0fc0)) +- debugging ([cc3fd1e](https://github.com/salesforcecli/sf-plugins-core/commit/cc3fd1e46134c08a4d76e79c74605e90e09abbb3)) +- duration flag ([b11eaab](https://github.com/salesforcecli/sf-plugins-core/commit/b11eaabb0050961094f412d85c2bbbf4b183cd40)) # [1.3.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.2.1...v1.3.0) (2022-02-23) - ### Features -* add requiresProject property ([5ff0cf3](https://github.com/salesforcecli/sf-plugins-core/commit/5ff0cf34fffe896e1ed312585705ff13436e58cf)) - - +- add requiresProject property ([5ff0cf3](https://github.com/salesforcecli/sf-plugins-core/commit/5ff0cf34fffe896e1ed312585705ff13436e58cf)) ## [1.2.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.2.0...v1.2.1) (2022-01-27) - ### Bug Fixes -* protect against non-existent bar ([2d0dc37](https://github.com/salesforcecli/sf-plugins-core/commit/2d0dc37ce7fedfee4413ae91299de11c8cd9db93)) - - +- protect against non-existent bar ([2d0dc37](https://github.com/salesforcecli/sf-plugins-core/commit/2d0dc37ce7fedfee4413ae91299de11c8cd9db93)) # [1.2.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.1.0...v1.2.0) (2022-01-27) - ### Features -* expose ux methods in SfCommand ([8e58a93](https://github.com/salesforcecli/sf-plugins-core/commit/8e58a93a942d5a0305a77a82e938f778c59fcd16)) - - +- expose ux methods in SfCommand ([8e58a93](https://github.com/salesforcecli/sf-plugins-core/commit/8e58a93a942d5a0305a77a82e938f778c59fcd16)) # [1.1.0](https://github.com/salesforcecli/sf-plugins-core/compare/v1.0.5...v1.1.0) (2022-01-03) - ### Bug Fixes -* add status method ([9cf2069](https://github.com/salesforcecli/sf-plugins-core/commit/9cf20694d76e2509785b7c8faa4bd63ab190707e)) -* make status a getter/setter ([441c55a](https://github.com/salesforcecli/sf-plugins-core/commit/441c55acd3d811664213e9801a8bcc270e3aca7b)) - +- add status method ([9cf2069](https://github.com/salesforcecli/sf-plugins-core/commit/9cf20694d76e2509785b7c8faa4bd63ab190707e)) +- make status a getter/setter ([441c55a](https://github.com/salesforcecli/sf-plugins-core/commit/441c55acd3d811664213e9801a8bcc270e3aca7b)) ### Features -* add spinner methods ([f209f8f](https://github.com/salesforcecli/sf-plugins-core/commit/f209f8f4e6736b9de91e37f865d66b5356e5abec)) - - +- add spinner methods ([f209f8f](https://github.com/salesforcecli/sf-plugins-core/commit/f209f8f4e6736b9de91e37f865d66b5356e5abec)) ## [1.0.5](https://github.com/salesforcecli/sf-plugins-core/compare/v1.0.4...v1.0.5) (2021-12-16) - ### Bug Fixes -* bump dependencies ([4f78d8c](https://github.com/salesforcecli/sf-plugins-core/commit/4f78d8c940aab41bb406c45a9df98f686e626d28)) - - +- bump dependencies ([4f78d8c](https://github.com/salesforcecli/sf-plugins-core/commit/4f78d8c940aab41bb406c45a9df98f686e626d28)) ## [1.0.4](https://github.com/salesforcecli/sf-plugins-core/compare/v1.0.3...v1.0.4) (2021-10-13) - ### Bug Fixes -* bump module versions ([abdf5e3](https://github.com/salesforcecli/sf-plugins-core/commit/abdf5e37205b464a36393ca1887ce90a7c1ba302)) - - +- bump module versions ([abdf5e3](https://github.com/salesforcecli/sf-plugins-core/commit/abdf5e37205b464a36393ca1887ce90a7c1ba302)) ## [1.0.3](https://github.com/salesforcecli/sf-plugins-core/compare/v1.0.2...v1.0.3) (2021-10-12) - - ## [1.0.2](https://github.com/salesforcecli/sf-plugins-core/compare/v1.0.1...v1.0.2) (2021-10-11) - ### Bug Fixes -* bump oclif and sfdx-core versions ([3d38a70](https://github.com/salesforcecli/sf-plugins-core/commit/3d38a70dcad79aa151529bf51d281f68fe92a3ce)) - - +- bump oclif and sfdx-core versions ([3d38a70](https://github.com/salesforcecli/sf-plugins-core/commit/3d38a70dcad79aa151529bf51d281f68fe92a3ce)) ## [1.0.1](https://github.com/salesforcecli/sf-plugins-core/compare/v1.0.0...v1.0.1) (2021-10-06) - ### Bug Fixes -* update inquirer ([067bbfb](https://github.com/salesforcecli/sf-plugins-core/commit/067bbfbbfcd271ae25260e6b83452093b1fe4deb)) - - +- update inquirer ([067bbfb](https://github.com/salesforcecli/sf-plugins-core/commit/067bbfbbfcd271ae25260e6b83452093b1fe4deb)) # [1.0.0](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.28...v1.0.0) (2021-09-29) - - ## [0.0.28](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.27...v0.0.28) (2021-09-29) - ### Bug Fixes -* allow empty message in logSensitive ([5b8edf5](https://github.com/salesforcecli/sf-plugins-core/commit/5b8edf509647887500d9e71b506939b3cc6945d9)) - - +- allow empty message in logSensitive ([5b8edf5](https://github.com/salesforcecli/sf-plugins-core/commit/5b8edf509647887500d9e71b506939b3cc6945d9)) ## [0.0.27](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.26...v0.0.27) (2021-09-29) - ### Bug Fixes -* publish messages ([91a6aa6](https://github.com/salesforcecli/sf-plugins-core/commit/91a6aa6c396f9b33049407820d0b8bd9caaa30f4)) - - +- publish messages ([91a6aa6](https://github.com/salesforcecli/sf-plugins-core/commit/91a6aa6c396f9b33049407820d0b8bd9caaa30f4)) ## [0.0.26](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.25...v0.0.26) (2021-09-29) - ### Features -* logSensitive, capture warnings ([a8b3e76](https://github.com/salesforcecli/sf-plugins-core/commit/a8b3e76ff20806b136ee606797b84a70c8f5a528)) - - +- logSensitive, capture warnings ([a8b3e76](https://github.com/salesforcecli/sf-plugins-core/commit/a8b3e76ff20806b136ee606797b84a70c8f5a528)) ## [0.0.25](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.24...v0.0.25) (2021-09-21) - ### Bug Fixes -* add envirnment type to env list ([8f020df](https://github.com/salesforcecli/sf-plugins-core/commit/8f020dfc8695be19a7fd1f4b811b8c2b8c321418)) - - +- add envirnment type to env list ([8f020df](https://github.com/salesforcecli/sf-plugins-core/commit/8f020dfc8695be19a7fd1f4b811b8c2b8c321418)) ## [0.0.24](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.23...v0.0.24) (2021-09-16) - ### Bug Fixes -* allow null for EnvDisplay ([0868d3f](https://github.com/salesforcecli/sf-plugins-core/commit/0868d3f0ed23e28c53ce11cb447e41b9b0144ac1)) - - +- allow null for EnvDisplay ([0868d3f](https://github.com/salesforcecli/sf-plugins-core/commit/0868d3f0ed23e28c53ce11cb447e41b9b0144ac1)) ## [0.0.23](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.22...v0.0.23) (2021-09-15) - ### Bug Fixes -* update to latest oclif/core and enable json flag ([b486ef1](https://github.com/salesforcecli/sf-plugins-core/commit/b486ef173b27ba465cc8fddf53e3a53d339f8734)) - - +- update to latest oclif/core and enable json flag ([b486ef1](https://github.com/salesforcecli/sf-plugins-core/commit/b486ef173b27ba465cc8fddf53e3a53d339f8734)) ## [0.0.22](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.21...v0.0.22) (2021-09-15) - ### Bug Fixes -* bump oclif/core ([c7a07f7](https://github.com/salesforcecli/sf-plugins-core/commit/c7a07f7671699197f3db93ec750e009eb9dfd56f)) - - +- bump oclif/core ([c7a07f7](https://github.com/salesforcecli/sf-plugins-core/commit/c7a07f7671699197f3db93ec750e009eb9dfd56f)) ## [0.0.21](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.20...v0.0.21) (2021-09-14) - ### Bug Fixes -* move sf command to this repo ([968f80f](https://github.com/salesforcecli/sf-plugins-core/commit/968f80f0b8aecd0d47fe8d428c605117828f886f)) - - +- move sf command to this repo ([968f80f](https://github.com/salesforcecli/sf-plugins-core/commit/968f80f0b8aecd0d47fe8d428c605117828f886f)) ## [0.0.20](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.19...v0.0.20) (2021-09-14) - - ## [0.0.19](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.18...v0.0.19) (2021-09-13) - ### Features -* add logout hook ([4a4d79b](https://github.com/salesforcecli/sf-plugins-core/commit/4a4d79bcd9f2017e70f75967bb0661ae3eb4aa4a)) - - +- add logout hook ([4a4d79b](https://github.com/salesforcecli/sf-plugins-core/commit/4a4d79bcd9f2017e70f75967bb0661ae3eb4aa4a)) ## [0.0.18](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.17...v0.0.18) (2021-09-10) - ### Bug Fixes -* missed export ([63086ae](https://github.com/salesforcecli/sf-plugins-core/commit/63086aee3dc26c6f674c0bad8054205ed3992597)) - - +- missed export ([63086ae](https://github.com/salesforcecli/sf-plugins-core/commit/63086aee3dc26c6f674c0bad8054205ed3992597)) ## [0.0.17](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.16...v0.0.17) (2021-09-10) - ### Features -* add help section helper function ([379d14f](https://github.com/salesforcecli/sf-plugins-core/commit/379d14f45eedc46736f64bb5c37a7f906e235d4c)) - - +- add help section helper function ([379d14f](https://github.com/salesforcecli/sf-plugins-core/commit/379d14f45eedc46736f64bb5c37a7f906e235d4c)) ## [0.0.16](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.15...v0.0.16) (2021-09-08) - ### Bug Fixes -* bump oclif/core ([1cd3df6](https://github.com/salesforcecli/sf-plugins-core/commit/1cd3df66dde4d1e5386221e892aa01a7d504261c)) - - +- bump oclif/core ([1cd3df6](https://github.com/salesforcecli/sf-plugins-core/commit/1cd3df66dde4d1e5386221e892aa01a7d504261c)) ## [0.0.15](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.14...v0.0.15) (2021-08-31) - ### Bug Fixes -* improve jsdocs ([e3e3784](https://github.com/salesforcecli/sf-plugins-core/commit/e3e3784954fc2d6b06f96459c824cf77795a9de9)) -* improve jsdocs ([aefdd06](https://github.com/salesforcecli/sf-plugins-core/commit/aefdd06b164d413b3f3c4d51b36dea475efcc3ef)) - - +- improve jsdocs ([e3e3784](https://github.com/salesforcecli/sf-plugins-core/commit/e3e3784954fc2d6b06f96459c824cf77795a9de9)) +- improve jsdocs ([aefdd06](https://github.com/salesforcecli/sf-plugins-core/commit/aefdd06b164d413b3f3c4d51b36dea475efcc3ef)) ## [0.0.14](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.13...v0.0.14) (2021-08-31) - ### Bug Fixes -* improve env types ([e7a7c1d](https://github.com/salesforcecli/sf-plugins-core/commit/e7a7c1df001d02b60c31bcbe5abe4ab31d5faf8d)) - - +- improve env types ([e7a7c1d](https://github.com/salesforcecli/sf-plugins-core/commit/e7a7c1df001d02b60c31bcbe5abe4ab31d5faf8d)) ## [0.0.13](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.12...v0.0.13) (2021-08-30) - ### Bug Fixes -* update exports ([548ab46](https://github.com/salesforcecli/sf-plugins-core/commit/548ab4646bd1e2d79dbda0609551e6f805b69d09)) - - +- update exports ([548ab46](https://github.com/salesforcecli/sf-plugins-core/commit/548ab4646bd1e2d79dbda0609551e6f805b69d09)) ## [0.0.12](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.11...v0.0.12) (2021-08-30) - ### Features -* support env display ([446af15](https://github.com/salesforcecli/sf-plugins-core/commit/446af15385ed57e7d5ebd40c4a4964b2bf326e16)) - - +- support env display ([446af15](https://github.com/salesforcecli/sf-plugins-core/commit/446af15385ed57e7d5ebd40c4a4964b2bf326e16)) ## [0.0.11](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.10...v0.0.11) (2021-08-30) - ### Features -* rename to sf-plugins-core ([e51d6aa](https://github.com/salesforcecli/sf-plugins-core/commit/e51d6aa6879c085ae9efac990d6d406a79615088)) - - +- rename to sf-plugins-core ([e51d6aa](https://github.com/salesforcecli/sf-plugins-core/commit/e51d6aa6879c085ae9efac990d6d406a79615088)) ## [0.0.10](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.9...v0.0.10) (2021-08-10) - ### Bug Fixes -* correct header to data column alignment ([a6d1baf](https://github.com/salesforcecli/sf-plugins-core/commit/a6d1bafd098443dcb4381f03fd7283594d263c8d)) - - +- correct header to data column alignment ([a6d1baf](https://github.com/salesforcecli/sf-plugins-core/commit/a6d1bafd098443dcb4381f03fd7283594d263c8d)) ## [0.0.9](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.8...v0.0.9) (2021-07-15) - ### Bug Fixes -* rename ProjectDeployOptions to DeployOptions ([eafefcf](https://github.com/salesforcecli/sf-plugins-core/commit/eafefcfb55f73e96e2b0b08bb3129b6aa0fb6571)) - - +- rename ProjectDeployOptions to DeployOptions ([eafefcf](https://github.com/salesforcecli/sf-plugins-core/commit/eafefcfb55f73e96e2b0b08bb3129b6aa0fb6571)) ## [0.0.8](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.7...v0.0.8) (2021-07-15) - - ## [0.0.7](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.6...v0.0.7) (2021-07-01) - ### Features -* support deploy file ([99b4a81](https://github.com/salesforcecli/sf-plugins-core/commit/99b4a81b1a844714233a30679ae267c6866ba4a2)) - - +- support deploy file ([99b4a81](https://github.com/salesforcecli/sf-plugins-core/commit/99b4a81b1a844714233a30679ae267c6866ba4a2)) ## [0.0.6](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.5...v0.0.6) (2021-06-28) - ### Bug Fixes -* allow empty log message ([1272215](https://github.com/salesforcecli/sf-plugins-core/commit/1272215b62a35e89072df2f02c1bab6c2999e056)) - - +- allow empty log message ([1272215](https://github.com/salesforcecli/sf-plugins-core/commit/1272215b62a35e89072df2f02c1bab6c2999e056)) ## [0.0.5](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.4...v0.0.5) (2021-06-28) - ### Features -* add Prompter class ([7f7861f](https://github.com/salesforcecli/sf-plugins-core/commit/7f7861f68dc74d815a1bf2d668edd719496524ff)) - - +- add Prompter class ([7f7861f](https://github.com/salesforcecli/sf-plugins-core/commit/7f7861f68dc74d815a1bf2d668edd719496524ff)) ## [0.0.4](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.3...v0.0.4) (2021-06-28) - ### Bug Fixes -* update Options type ([f24a800](https://github.com/salesforcecli/sf-plugins-core/commit/f24a800409e026605f08717cd572e89afcdf35d0)) - - +- update Options type ([f24a800](https://github.com/salesforcecli/sf-plugins-core/commit/f24a800409e026605f08717cd572e89afcdf35d0)) ## [0.0.3](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.2...v0.0.3) (2021-06-28) - ### Features -* add Deployables class ([0405a6b](https://github.com/salesforcecli/sf-plugins-core/commit/0405a6bdc78cf44237e1bd51efb2199c275678ca)) - - +- add Deployables class ([0405a6b](https://github.com/salesforcecli/sf-plugins-core/commit/0405a6bdc78cf44237e1bd51efb2199c275678ca)) ## [0.0.2](https://github.com/salesforcecli/sf-plugins-core/compare/v0.0.1...v0.0.2) (2021-06-24) - - ## [0.0.1](https://github.com/salesforcecli/sf-plugins-core/compare/fbfee1eb223c67ead31dfd6da65ed6d55c83015d...v0.0.1) (2021-06-24) - ### Features -* deployer interface ([fbfee1e](https://github.com/salesforcecli/sf-plugins-core/commit/fbfee1eb223c67ead31dfd6da65ed6d55c83015d)) - - - +- deployer interface ([fbfee1e](https://github.com/salesforcecli/sf-plugins-core/commit/fbfee1eb223c67ead31dfd6da65ed6d55c83015d)) diff --git a/LICENSE.txt b/LICENSE.txt index f2cee7bb..6cfd8734 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2023, Salesforce.com, Inc. +Copyright (c) 2024, Salesforce.com, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: diff --git a/MIGRATING_V5-V6.md b/MIGRATING_V5-V6.md new file mode 100644 index 00000000..c35e7cdd --- /dev/null +++ b/MIGRATING_V5-V6.md @@ -0,0 +1,45 @@ +# Migrating from v5 to v6 + +## ESM + +v6 is ESM-only, which can't be consumed by plugins written in cjs. Salesforce-owned plugins are ESM now and you can use them as a guide for the necessary changes. + +## Prompts + +This library uses [`inquirer`](https://github.com/SBoudrias/Inquirer.js) for interactivity. Inquirer made some large changes, including its own ESM rewrite. To take advantage of its improved performance and smaller dependency, we've upgraded. + +The API is completely different, resulting in changes to sf-plugins-core. The new philopsophy is + +1. provide limited, simplified prompts for common use cases +2. plugins that need more advanced propting should import the parts of inquirer that they need + +### Changes + +The `Prompter` class is removed. + +SfCommand contains two prompt methods + +1. `confirm` provides boolean confirmation prompts +2. `secretPrompt` takes masked string input from the user + +Unlike the inquirer base prompts (`confirm` and `password`, respectively) these have a built-in default timeout. Both take an object parameter that lets you change the timeout (confirm previously took a series of parameters) + +These methods are also built into the `stubPrompter` method for simplified test stubbing. + +If your command relies heavily on the old inquirer/prompt structure, it's possible to import that as a dependency. + +### Reorganized exports + +There are more "standalone" exports available. See package.json#exports for options that don't invole importing the entire library. + +Also removed is the "barrel of Ux". Import what you need. + +## Breaking type changes + +### SfCommand.project + +Project was typed as an `SfProject` but could be undefined when `requiresProject` wasn't set to true on a command. It's now typed as `SfProject | undefined`. If your command sets `requiresProject = true` you can safely assert `this.project!`. + +### SfCommand.catch + +Catch was previously typed to return an error, but it always threw the error. It's now properly typed as `never`. If you extended `catch`, your method should also return `never`. diff --git a/README.md b/README.md index 5d8fe24b..2e3b0a16 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,7 @@ The SfCommand abstract class extends [@oclif/core's Command class](https://githu - Provides functions that help place success messages, warnings and errors into the correct location in JSON results - Enables additional help sections to the standard oclif command help output - Provides access to the [cli-ux cli actions](https://github.com/oclif/cli-ux#cliaction). This avoids having to import that interface from cli-ux and manually handling the `--json` flag. - -## Prompter Class - -A general purpose class that prompts a user for information. See [inquirer NPM Module](https://www.npmjs.com/package/inquirer) for more information. +- Provides simple, stubbable prompts for confirmation and secrets ## Flags diff --git a/package.json b/package.json index e203d368..e68554c4 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,10 @@ { "name": "@salesforce/sf-plugins-core", - "version": "5.0.13", + "version": "6.0.0", "description": "Utils for writing Salesforce CLI plugins", "main": "lib/exported", "types": "lib/exported.d.ts", + "type": "module", "license": "BSD-3-Clause", "scripts": { "build": "wireit", @@ -21,6 +22,13 @@ "test": "wireit", "test:only": "wireit" }, + "exports": { + "./SfCommand": "./lib/SfCommand.js", + "./Flags": "./lib/flags/flags.js", + "./Ux": "./lib/ux/ux.js", + "./StandardColors": "./lib/ux/standardColors.js", + ".": "./lib/exported.js" + }, "repository": "salesforcecli/sf-plugins-core", "bugs": { "url": "https://github.com/salesforcecli/sf-plugins-core/issues" @@ -35,22 +43,20 @@ "node": ">=18.0.0" }, "dependencies": { - "@oclif/core": "^3.15.1", + "@inquirer/confirm": "^2.0.15", + "@inquirer/password": "^1.1.14", + "@oclif/core": "^3.16.0", "@salesforce/core": "^6.4.2", "@salesforce/kit": "^3.0.15", "@salesforce/ts-types": "^2.0.9", - "@types/inquirer": "^8.2.3", - "chalk": "^4", - "inquirer": "^8.2.5" + "chalk": "^5.3.0" }, "devDependencies": { - "@oclif/test": "^3.1.5", + "@inquirer/type": "^1.1.5", "@salesforce/dev-scripts": "^8.1.3", "eslint-plugin-sf-plugin": "^1.17.0", - "shelljs": "0.8.5", - "strip-ansi": "6.0.1", "ts-node": "^10.9.2", - "typescript": "^4.9.5" + "typescript": "^5.3.3" }, "publishConfig": { "access": "public" diff --git a/src/compatibility.ts b/src/compatibility.ts index 36841afd..19bef633 100644 --- a/src/compatibility.ts +++ b/src/compatibility.ts @@ -7,8 +7,8 @@ import { Flags } from '@oclif/core'; import { Lifecycle, Messages } from '@salesforce/core'; -import { orgApiVersionFlag } from './flags/orgApiVersion'; -import { optionalHubFlag, optionalOrgFlag, requiredHubFlag, requiredOrgFlag } from './flags/orgFlags'; +import { orgApiVersionFlag } from './flags/orgApiVersion.js'; +import { optionalHubFlag, optionalOrgFlag, requiredHubFlag, requiredOrgFlag } from './flags/orgFlags.js'; /** * Adds an alias for the deprecated sfdx-style "apiversion" and provides a warning if it is used @@ -31,7 +31,7 @@ export const orgApiVersionFlagWithDeprecations = orgApiVersionFlag({ deprecateAliases: true, }); -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); /** * Use only for commands that maintain sfdx compatibility. diff --git a/src/deauthorizer.ts b/src/deauthorizer.ts deleted file mode 100644 index 393c7791..00000000 --- a/src/deauthorizer.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ - -import { JsonMap } from '@salesforce/ts-types'; - -/** - * The Deauthorizer is an abstract class that is used to implement a concrete implementation of deauthorizing an environment. - */ -export abstract class Deauthorizer { - public async removeAll(): Promise { - const result = { - successes: [], - failures: [], - } as Deauthorizer.Result; - - const environments = await this.find(); - for (const id of Object.keys(environments)) { - try { - // avoid configFile collision bug - // eslint-disable-next-line no-await-in-loop - await this.remove(id); - result.successes.push(id); - } catch { - result.failures.push(id); - } - } - return result; - } - - /** - * This method should return a list of all the environments a deauthorizer could deauthorize. - */ - public abstract find(): Promise>; - - /** - * This method should deauthorize an environment. - */ - public abstract remove(id: string): Promise; -} - -export namespace Deauthorizer { - export type Result = { - successes: string[]; - failures: string[]; - }; -} diff --git a/src/deployer.ts b/src/deployer.ts deleted file mode 100644 index b713f231..00000000 --- a/src/deployer.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ -/* eslint-disable @typescript-eslint/explicit-member-accessibility */ - -import { EventEmitter } from 'node:events'; -import { AnyJson, JsonMap } from '@salesforce/ts-types'; -import { QuestionCollection, Answers } from 'inquirer'; -import { ux } from '@oclif/core'; -import { Prompter } from './ux'; - -export type DeployerResult = { - exitCode: number; -}; - -export abstract class Deployable { - abstract getName(): string; - abstract getType(): string; - abstract getPath(): string; - abstract getParent(): Deployer; -} - -/** - * Interface for deploying Deployables. - */ -export abstract class Deployer extends EventEmitter { - /** - * Deployables are individual pieces that can be deployed on their own. For example, - * each package in a salesforce project is considered a deployable that can be deployed - * on its own. - */ - public deployables: Deployable[] = []; - private prompter = new Prompter(); - - /** - * Method for displaying deploy progress to the user - */ - // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, class-methods-use-this - public progress(current: number, total: number, message: string): void {} - - /** - * Log messages to the console - */ - // eslint-disable-next-line class-methods-use-this - public log(msg?: string | undefined, ...args: string[]): void { - ux.log(msg, ...args); - } - - /** - * Prompt user for additional information - */ - public async prompt(questions: QuestionCollection, initialAnswers?: Partial): Promise { - const answers = await this.prompter.prompt(questions, initialAnswers); - return answers; - } - - /** - * Overwrite the deployables property on the class. - */ - public selectDeployables(deployables: Deployable[]): void { - this.deployables = Object.assign([], deployables); - } - - /** - * The human readable name of the deployer - */ - public abstract getName(): string; - - /** - * Perform any initialization or setup. This is the time to prompt the - * user for any needed information. - * - * If options are passed it, it should use those instead of prompting the for the passed in information - * - * Uses the returned dictionary as the information to store in the deploy-options.json file. - */ - public abstract setup(flags: Deployer.Flags, options: Deployer.Options): Promise; - - /** - * Deploy the app. - */ - public abstract deploy(): Promise; -} - -export namespace Deployer { - export type Flags = { - interactive: boolean; - }; - - /** - * This interface represents the aggregation of all deployer options, e.g. - * - * @example - * ``` - * { - * 'Salesforce Apps': { - * testLevel: 'RunLocalTests', - * apps: ['force-app'], - * }, - * 'Salesforce Functions': { username: 'user@salesforce.com' }, - * } - * ``` - */ - export type Options = JsonMap & { - [key: string]: T | undefined; - }; -} diff --git a/src/errorFormatting.ts b/src/errorFormatting.ts new file mode 100644 index 00000000..1573299e --- /dev/null +++ b/src/errorFormatting.ts @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +import { Mode, Messages, envVars } from '@salesforce/core'; +import type { ChalkInstance } from 'chalk'; +import { StandardColors } from './ux/standardColors.js'; +import { SfCommandError } from './types.js'; + +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); +const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); + +/** + * Format errors and actions for human consumption. Adds 'Error ():', + * When there are actions, we add 'Try this:' in blue + * followed by each action in red on its own line. + * If Error.code is present it is output last in parentheses + * + * @returns {string} Returns decorated messages. + */ + +/** + * Utility function to format actions lines + * + * @param actions + * @param options + * @private + */ +export const formatActions = ( + actions: string[], + options: { actionColor: ChalkInstance } = { actionColor: StandardColors.info } +): string[] => + actions.length + ? [ + `\n${StandardColors.info(messages.getMessage('actions.tryThis'))}\n`, + ...actions.map((a) => `${options.actionColor(a)}`), + ] + : []; + +export const formatError = (error: SfCommandError): string => + [ + `${formatErrorPrefix(error)} ${error.message}`, + ...formatActions(error.actions ?? []), + error.stack && envVars.getString('SF_ENV') === Mode.DEVELOPMENT + ? StandardColors.info(`\n*** Internal Diagnostic ***\n\n${error.stack}\n******\n`) + : [], + ].join('\n'); + +const formatErrorPrefix = (error: SfCommandError): string => + `${StandardColors.error(messages.getMessage('error.prefix', [formatErrorCode(error)]))}`; + +const formatErrorCode = (error: SfCommandError): string => + typeof error.code === 'string' || typeof error.code === 'number' ? ` (${error.code})` : ''; diff --git a/src/exported.ts b/src/exported.ts index 6b906215..b2343008 100644 --- a/src/exported.ts +++ b/src/exported.ts @@ -5,36 +5,14 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { Flags as OclifFlags } from '@oclif/core'; +export { toHelpSection, parseVarArgs } from './util.js'; +export { Progress } from './ux/progress.js'; +export { Spinner } from './ux/spinner.js'; +export { Ux } from './ux/ux.js'; +export { StandardColors } from './ux/standardColors.js'; -export { toHelpSection, parseVarArgs } from './util'; -export { Deployable, Deployer, DeployerResult } from './deployer'; -export { Deauthorizer } from './deauthorizer'; -export { Progress, Prompter, generateTableChoices, Ux, Spinner, Separator } from './ux'; -export { SfHook } from './hooks'; -export * from './types'; -export { SfCommand, SfCommandInterface, StandardColors } from './sfCommand'; -export * from './compatibility'; -export * from './stubUx'; -// custom flags -import { requiredOrgFlag, requiredHubFlag, optionalOrgFlag, optionalHubFlag } from './flags/orgFlags'; -import { salesforceIdFlag } from './flags/salesforceId'; -import { orgApiVersionFlag } from './flags/orgApiVersion'; -import { durationFlag } from './flags/duration'; - -export const Flags = { - boolean: OclifFlags.boolean, - directory: OclifFlags.directory, - file: OclifFlags.file, - integer: OclifFlags.integer, - string: OclifFlags.string, - url: OclifFlags.url, - custom: OclifFlags.custom, - duration: durationFlag, - salesforceId: salesforceIdFlag, - orgApiVersion: orgApiVersionFlag, - requiredOrg: requiredOrgFlag, - requiredHub: requiredHubFlag, - optionalOrg: optionalOrgFlag, - optionalHub: optionalHubFlag, -}; +export { SfCommand, SfCommandInterface } from './sfCommand.js'; +export * from './compatibility.js'; +export * from './stubUx.js'; +export { Flags } from './flags/flags.js'; +export { prompts } from './ux/prompts.js'; diff --git a/src/flags/duration.ts b/src/flags/duration.ts index aa9c0f78..7cf1a4a9 100644 --- a/src/flags/duration.ts +++ b/src/flags/duration.ts @@ -8,7 +8,7 @@ import { Flags } from '@oclif/core'; import { Messages } from '@salesforce/core'; import { Duration } from '@salesforce/kit'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); type DurationUnit = Lowercase; diff --git a/src/flags/flags.ts b/src/flags/flags.ts new file mode 100644 index 00000000..e3ac6ffa --- /dev/null +++ b/src/flags/flags.ts @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +import { Flags as OclifFlags } from '@oclif/core'; + +// custom flags +import { requiredOrgFlag, requiredHubFlag, optionalOrgFlag, optionalHubFlag } from './orgFlags.js'; +import { salesforceIdFlag } from './salesforceId.js'; +import { orgApiVersionFlag } from './orgApiVersion.js'; +import { durationFlag } from './duration.js'; + +export const Flags = { + boolean: OclifFlags.boolean, + directory: OclifFlags.directory, + file: OclifFlags.file, + integer: OclifFlags.integer, + string: OclifFlags.string, + option: OclifFlags.option, + url: OclifFlags.url, + custom: OclifFlags.custom, + duration: durationFlag, + salesforceId: salesforceIdFlag, + orgApiVersion: orgApiVersionFlag, + requiredOrg: requiredOrgFlag, + requiredHub: requiredHubFlag, + optionalOrg: optionalOrgFlag, + optionalHub: optionalHubFlag, +}; diff --git a/src/flags/orgApiVersion.ts b/src/flags/orgApiVersion.ts index 4811e284..56cf1305 100644 --- a/src/flags/orgApiVersion.ts +++ b/src/flags/orgApiVersion.ts @@ -7,7 +7,7 @@ import { Flags } from '@oclif/core'; import { Messages, Lifecycle, OrgConfigProperties, validateApiVersion } from '@salesforce/core'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); // versions below this are retired diff --git a/src/flags/orgFlags.ts b/src/flags/orgFlags.ts index b0981a6f..5a70d286 100644 --- a/src/flags/orgFlags.ts +++ b/src/flags/orgFlags.ts @@ -7,7 +7,7 @@ import { Flags } from '@oclif/core'; import { ConfigAggregator, Messages, Org, OrgConfigProperties } from '@salesforce/core'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); export async function maybeGetOrg(input: string): Promise; diff --git a/src/flags/salesforceId.ts b/src/flags/salesforceId.ts index 1c569537..92671a8b 100644 --- a/src/flags/salesforceId.ts +++ b/src/flags/salesforceId.ts @@ -7,7 +7,7 @@ import { Flags } from '@oclif/core'; import { Messages, validateSalesforceId } from '@salesforce/core'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); export type IdFlagConfig = { diff --git a/src/hooks.ts b/src/hooks.ts deleted file mode 100644 index ee80274f..00000000 --- a/src/hooks.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ - -import { Config } from '@oclif/core/lib/interfaces/config'; -import { Hook, Hooks } from '@oclif/core/lib/interfaces/hooks'; -import { Duration, env } from '@salesforce/kit'; -import { ux } from '@oclif/core'; -import { Deployer } from './deployer'; -import { EnvList, EnvDisplay, JsonObject, Deploy, Login, Logout } from './types'; -import { Deauthorizer } from './deauthorizer'; - -/** - * Interface that defines the well known Unified CLI command hooks. - */ -interface SfHooks extends Hooks { - 'sf:env:list': EnvList.HookMeta; - 'sf:env:display': EnvDisplay.HookMeta; - 'sf:deploy': Deploy.HookMeta; - 'sf:login': Login.HookMeta; - 'sf:logout': Logout.HookMeta; -} - -type GenericHook = Hook>; - -/** - * Class that provides a static method to run a pre-defined sf hook. See {@link SfHooks}. - */ -export class SfHook { - /** - * Executes a well known Unified CLI hook. See {@link SfHooks}. - */ - public static async run( - config: Config, - hookName: T, - options: SfHooks[T]['options'] = {} - ): Promise> { - const timeout = Duration.milliseconds(env.getNumber('SF_HOOK_TIMEOUT_MS') ?? 5000); - const results = await config.runHook(hookName, options, timeout.milliseconds, true); - results.failures.forEach((failure) => { - ux.debug(`Failed to run ${hookName} hook for ${failure.plugin.name}`); - ux.debug(failure.error.toString()); - }); - return results; - } -} - -export namespace SfHook { - export type EnvList = GenericHook<'sf:env:list', T>; - export type EnvDisplay = GenericHook<'sf:env:display', T>; - export type Deploy = GenericHook<'sf:deploy', T>; - export type Login = Hook<'sf:login', SfHooks>; - export type Logout = Hook<'sf:logout', SfHooks>; -} diff --git a/src/sfCommand.ts b/src/sfCommand.ts index 2e375c0b..280c84cc 100644 --- a/src/sfCommand.ts +++ b/src/sfCommand.ts @@ -4,24 +4,29 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import * as os from 'node:os'; -import { ux, Command, Config, HelpSection } from '@oclif/core'; +import os from 'node:os'; +import { Command, Config, HelpSection } from '@oclif/core'; import { envVars, Messages, SfProject, - StructuredMessage, Lifecycle, - Mode, EnvironmentVariable, SfError, ConfigAggregator, + StructuredMessage, } from '@salesforce/core'; -import { AnyJson } from '@salesforce/ts-types'; -import * as chalk from 'chalk'; -import { Progress, Prompter, Spinner, Ux } from './ux'; - -Messages.importMessagesDirectory(__dirname); +import type { AnyJson } from '@salesforce/ts-types'; +import { Progress } from './ux/progress.js'; +import { Spinner } from './ux/spinner.js'; +import { Ux } from './ux/ux.js'; +import { SfCommandError } from './types.js'; +import { formatActions, formatError } from './errorFormatting.js'; +import { StandardColors } from './ux/standardColors.js'; +import { confirm, secretPrompt, PromptInputs } from './ux/prompts.js'; +import { removeEmpty } from './util.js'; + +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); export interface SfCommandInterface extends Command.Class { @@ -30,13 +35,6 @@ export interface SfCommandInterface extends Command.Class { errorCodes?: HelpSection; } -export const StandardColors = { - error: chalk.bold.red, - warning: chalk.bold.yellow, - info: chalk.dim, - success: chalk.bold.green, -}; - /** * A base command that provided common functionality for all sf commands. * Functionality includes: @@ -70,7 +68,6 @@ export const StandardColors = { */ export abstract class SfCommand extends Command { - public static SF_ENV = 'SF_ENV'; public static enableJsonFlag = true; /** * Add a CONFIGURATION VARIABLES section to the help output. @@ -124,21 +121,6 @@ export abstract class SfCommand extends Command { */ public static errorCodes?: HelpSection; - /** - * Flags that you can use for manipulating tables. - * - * @example - * ``` - * import { SfCommand } from '@salesforce/sf-plugins-core'; - * export default class MyCommand extends SfCommand { - * public static flags = { - * ...SfCommand.tableFags, - * 'my-flags: flags.string({ char: 'm', description: 'my flag' }), - * } - * } - * ``` - */ - public static tableFlags = ux.table.flags; /** * Set to true if the command must be executed inside a Salesforce project directory. * @@ -157,7 +139,7 @@ export abstract class SfCommand extends Command { * Add a progress bar to the console. {@link Progress} */ public progress: Progress; - public project!: SfProject; + public project?: SfProject; /** * ConfigAggregator instance for accessing global and local configuration. @@ -166,7 +148,6 @@ export abstract class SfCommand extends Command { private warnings: SfCommand.Warning[] = []; private ux: Ux; - private prompter: Prompter; private lifecycle: Lifecycle; public constructor(argv: string[], config: Config) { @@ -176,7 +157,6 @@ export abstract class SfCommand extends Command { this.ux.outputEnabled && envVars.getBoolean(EnvironmentVariable.SF_USE_PROGRESS_BAR, true) ); this.spinner = this.ux.spinner; - this.prompter = this.ux.prompter; this.lifecycle = Lifecycle.getInstance(); } @@ -209,14 +189,13 @@ export abstract class SfCommand extends Command { * @param input {@link SfCommand.Warning} The message to log. */ public warn(input: SfCommand.Warning): SfCommand.Warning { - const colorizedArgs: string[] = []; this.warnings.push(input); const message = typeof input === 'string' ? input : input.message; - colorizedArgs.push(`${StandardColors.warning(messages.getMessage('warning.prefix'))} ${message}`); - colorizedArgs.push( - ...this.formatActions(typeof input === 'string' ? [] : input.actions ?? [], { actionColor: StandardColors.info }) - ); + const colorizedArgs = [ + `${StandardColors.warning(messages.getMessage('warning.prefix'))} ${message}`, + ...formatActions(typeof input === 'string' ? [] : input.actions ?? [], { actionColor: StandardColors.info }), + ]; this.logToStderr(colorizedArgs.join(os.EOL)); return input; @@ -228,15 +207,13 @@ export abstract class SfCommand extends Command { * @param input {@link SfCommand.Info} The message to log. */ public info(input: SfCommand.Info): void { - const colorizedArgs: string[] = []; const message = typeof input === 'string' ? input : input.message; - - colorizedArgs.push(`${StandardColors.info(message)}`); - colorizedArgs.push( - ...this.formatActions(typeof input === 'string' ? [] : input.actions ?? [], { actionColor: StandardColors.info }) + this.log( + [ + `${StandardColors.info(message)}`, + ...formatActions(typeof input === 'string' ? [] : input.actions ?? [], { actionColor: StandardColors.info }), + ].join(os.EOL) ); - - this.log(colorizedArgs.join(os.EOL)); } /** @@ -303,46 +280,32 @@ export abstract class SfCommand extends Command { } /** - * Prompt user for information. See https://www.npmjs.com/package/inquirer for more. + * Prompt user for yes/no confirmation. + * Avoid calling in --json scenarios and always provide a `--no-prompt` option for scripting * - * This will NOT be automatically suppressed when the --json flag is present since we assume - * that any command that prompts the user for required information will not also support the --json flag. - * - * If you need to conditionally suppress prompts to support json output, then do the following: + * @param message text to display. Do not include a question mark. + * @param ms milliseconds to wait for user input. Defaults to 60s. Will throw an error when timeout is reached. * - * @example - * if (!this.jsonEnabled()) { - * await this.prompt(); - * } */ - public async prompt( - questions: Prompter.Questions, - initialAnswers?: Partial - ): Promise { - return this.prompter.prompt(questions, initialAnswers); + + // eslint-disable-next-line class-methods-use-this + public async secretPrompt({ message, ms = 60_000 }: PromptInputs): Promise { + return secretPrompt({ message, ms }); } /** - * Simplified prompt for single-question confirmation. Times out and throws after 10s + * Prompt user for yes/no confirmation. + * Avoid calling in --json scenarios and always provide a `--no-prompt` option for scripting + * + * @param message text to display. Do not include a question mark or Y/N. + * @param ms milliseconds to wait for user input. Defaults to 10s. Will use the default value when timeout is reached. + * @param defaultAnswer boolean to set the default answer to. Defaults to false. * - * @param message text to display. Do not include a question mark. - * @param ms milliseconds to wait for user input. Defaults to 10s. - * @param defaultAnswer boolean to set the default answer to. Defaults to true. - * @return true if the user confirms, false if they do not. */ - public async confirm(message: string, ms = 10000, defaultAnswer = true): Promise { - return this.prompter.confirm(message, ms, defaultAnswer); - } - /** - * Prompt user for information with a timeout (in milliseconds). See https://www.npmjs.com/package/inquirer for more. - */ - public async timedPrompt( - questions: Prompter.Questions, - ms = 10_000, - initialAnswers?: Partial - ): Promise { - return this.prompter.timedPrompt(questions, ms, initialAnswers); + // eslint-disable-next-line class-methods-use-this + public async confirm({ message, ms = 10_000, defaultAnswer = false }: PromptInputs): Promise { + return confirm({ message, ms, defaultAnswer }); } public async _run(): Promise { @@ -354,7 +317,7 @@ export abstract class SfCommand extends Command { [this.configAggregator, this.project] = await Promise.all([ ConfigAggregator.create(), - ...(this.statics.requiresProject ? [this.assignProject()] : []), + ...(this.statics.requiresProject ? [assignProject()] : []), ]); if (this.statics.state === 'beta') { @@ -408,20 +371,8 @@ export abstract class SfCommand extends Command { }; } - // eslint-disable-next-line class-methods-use-this - protected async assignProject(): Promise { - try { - return await SfProject.resolve(); - } catch (err) { - if (err instanceof Error && err.name === 'InvalidProjectWorkspaceError') { - throw messages.createError('errors.RequiresProject'); - } - throw err; - } - } - // eslint-disable-next-line @typescript-eslint/require-await - protected async catch(error: Error | SfError | SfCommand.Error): Promise { + protected async catch(error: Error | SfError | SfCommand.Error): Promise { // stop any spinners to prevent it from unintentionally swallowing output. // If there is an active spinner, it'll say "Error" instead of "Done" this.spinner.stop(StandardColors.error('Error')); @@ -456,7 +407,7 @@ export abstract class SfCommand extends Command { if (this.jsonEnabled()) { this.logJson(this.toErrorJson(sfCommandError)); } else { - this.logToStderr(this.formatError(sfCommandError)); + this.logToStderr(formatError(sfCommandError)); } // Create SfError that can be thrown @@ -488,51 +439,19 @@ export abstract class SfCommand extends Command { throw err; } - /** - * Format errors and actions for human consumption. Adds 'Error ():', - * When there are actions, we add 'Try this:' in blue - * followed by each action in red on its own line. - * If Error.code is present it is output last in parentheses - * - * @returns {string} Returns decorated messages. - */ - protected formatError(error: SfCommand.Error): string { - const colorizedArgs: string[] = []; - const errorCode = typeof error.code === 'string' || typeof error.code === 'number' ? ` (${error.code})` : ''; - const errorPrefix = `${StandardColors.error(messages.getMessage('error.prefix', [errorCode]))}`; - colorizedArgs.push(`${errorPrefix} ${error.message}`); - colorizedArgs.push(...this.formatActions(error.actions ?? [])); - if (error.stack && envVars.getString(SfCommand.SF_ENV) === Mode.DEVELOPMENT) { - colorizedArgs.push(StandardColors.info(`\n*** Internal Diagnostic ***\n\n${error.stack}\n******\n`)); - } - return colorizedArgs.join('\n'); - } + public abstract run(): Promise; +} - /** - * Utility function to format actions lines - * - * @param actions - * @param options - * @private - */ - // eslint-disable-next-line class-methods-use-this - private formatActions( - actions: string[], - options: { actionColor: chalk.Chalk } = { actionColor: StandardColors.info } - ): string[] { - const colorizedArgs: string[] = []; - // Format any actions. - if (actions?.length) { - colorizedArgs.push(`\n${StandardColors.info(messages.getMessage('actions.tryThis'))}\n`); - actions.forEach((action) => { - colorizedArgs.push(`${options.actionColor(action)}`); - }); +const assignProject = async (): Promise => { + try { + return await SfProject.resolve(); + } catch (err) { + if (err instanceof Error && err.name === 'InvalidProjectWorkspaceError') { + throw messages.createError('errors.RequiresProject'); } - return colorizedArgs; + throw err; } - - public abstract run(): Promise; -} +}; export namespace SfCommand { export type Info = StructuredMessage | string; @@ -543,23 +462,5 @@ export namespace SfCommand { result: T; warnings?: Warning[]; } - - export interface Error { - status: number; - name: string; - message: string; - stack: string | undefined; - warnings?: Warning[]; - actions?: string[]; - code?: unknown; - exitCode?: number; - data?: unknown; - context?: string; - commandName?: string; - } -} - -function removeEmpty(obj: Record): Record { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - return Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null)); + export type Error = SfCommandError; } diff --git a/src/stubUx.ts b/src/stubUx.ts index 1cc95528..7985c369 100644 --- a/src/stubUx.ts +++ b/src/stubUx.ts @@ -7,8 +7,9 @@ /* eslint-disable @typescript-eslint/explicit-function-return-type */ import { SinonSandbox } from 'sinon'; -import { SfCommand } from './sfCommand'; -import { Prompter, Spinner, Ux } from './ux'; +import { SfCommand } from './sfCommand.js'; +import { Spinner } from './ux/spinner.js'; +import { Ux } from './ux/ux.js'; /** * Stub methods on the Ux class. @@ -117,8 +118,7 @@ export function stubSpinner(sandbox: SinonSandbox) { */ export function stubPrompter(sandbox: SinonSandbox) { return { - prompt: sandbox.stub(Prompter.prototype, 'prompt'), - confirm: sandbox.stub(Prompter.prototype, 'confirm'), - timedPrompt: sandbox.stub(Prompter.prototype, 'timedPrompt'), + secret: sandbox.stub(SfCommand.prototype, 'secretPrompt'), + confirm: sandbox.stub(SfCommand.prototype, 'confirm'), }; } diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 00000000..d172a396 --- /dev/null +++ b/src/types.ts @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ +import { StructuredMessage } from '@salesforce/core'; + +// a standlone type here to avoid circular dependencies +export interface SfCommandError { + status: number; + name: string; + message: string; + stack: string | undefined; + warnings?: Array; + actions?: string[]; + code?: unknown; + exitCode?: number; + data?: unknown; + context?: string; + commandName?: string; +} diff --git a/src/types/index.ts b/src/types/index.ts deleted file mode 100644 index 41b7a769..00000000 --- a/src/types/index.ts +++ /dev/null @@ -1,137 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ - -import { Deauthorizer } from '../deauthorizer'; -import { Deployer } from '../deployer'; - -export type JsonObject = { - [key: string]: string | string[] | number | number[] | boolean | boolean[] | null | undefined; -}; - -/** - * By default `sf env display` will display every key/value returned by the hook. - * It will also Title Case every key for readability. To overwrite this behavior, - * you can specify how a key should be displayed to the user. - * - * @example - * - * ``` - * { data: { theURL: 'https://example.com' } } - * // Renders as: - * Key Value - * ------- ------------------- - * The URL https://example.com - * ``` - * - * @example - * - * ``` - * { - * data: { theURL: 'https://example.com' } - * keys: { theURL: 'Url' }, - * } - * // Renders as: - * Key Value - * --- ------------------- - * Url https://example.com - *``` - * If no environment matches the provided targetEnv, then return null in the data field. - * - * @example - * ``` - * { data: null } - * ``` - */ -export namespace EnvDisplay { - type Keys = Record; - - export type HookMeta = { - options: { targetEnv: string }; - return: { data: T | null; keys?: Keys }; - }; -} - -/** - * By default `sf env list` will render a table with all the data provided by the hook. - * The columns of the table are derived from the keys of the provided data. These column - * headers are Title Cased for readability. To overwrite a column name specify it with - * the `keys` property. - * - * @example - * - * ``` - * { - * title: 'My Envs', - * data: [{ username: 'foo', theURL: 'https://example.com' }] - * } - * // Renders as: - * My Envs - * ================================ - * | Username | The URL - * | foo | https://example.com - *``` - * - * @example - * - * ``` - * { - * data: [{ username: 'foo', theURL: 'https://example.com' }] - * keys: { theURL: 'Url', username: 'Name' }, - * } - * - * // Renders as: - * My Envs - * ============================ - * | Name | Url - * | foo | https://example.com - * - *``` - */ -export namespace EnvList { - export enum EnvType { - 'salesforceOrgs' = 'salesforceOrgs', - 'scratchOrgs' = 'scratchOrgs', - 'computeEnvs' = 'computeEnvs', - } - - export type Table = { - type: EnvType | string; - data: T[]; - keys?: Record; - title: string; - }; - - type Options = { - all: boolean; - }; - - export type HookMeta = { - options: Options; - return: Array>; - }; -} - -export namespace Deploy { - export type HookMeta = { - options: Record; - return: T[]; - }; -} - -export namespace Login { - export type HookMeta = { - options: Record; - return: void; - }; -} - -export namespace Logout { - export type HookMeta = { - options: Record; - return: T; - }; -} diff --git a/src/util.ts b/src/util.ts index 4e5babe3..82e463b6 100644 --- a/src/util.ts +++ b/src/util.ts @@ -16,9 +16,6 @@ import { } from '@salesforce/core'; import { HelpSection, HelpSectionKeyValueTable } from '@oclif/core'; -Messages.importMessagesDirectory(__dirname); -const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); - /** * Function to build a help section for command help. * Takes a string to be used as section header text and an array of enums @@ -73,6 +70,9 @@ export function parseVarArgs(args: Record, argv: string[]): Rec return { [varargs[0]]: varargs[1] }; } + Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); + const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); + // Ensure that all args are in the right format (e.g. key=value key1=value1) varargs.forEach((arg) => { const split = arg.split('='); @@ -92,3 +92,5 @@ export function parseVarArgs(args: Record, argv: string[]): Rec return final; } +export const removeEmpty = (obj: Record): Record => + Object.fromEntries(Object.entries(obj).filter(([, v]) => v != null)); diff --git a/src/ux/base.ts b/src/ux/base.ts index 96473d56..2e6786c7 100644 --- a/src/ux/base.ts +++ b/src/ux/base.ts @@ -5,7 +5,7 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { AnyFunction } from '@salesforce/ts-types'; +import type { AnyFunction } from '@salesforce/ts-types'; export class UxBase { public constructor(public readonly outputEnabled: boolean) {} diff --git a/src/ux/index.ts b/src/ux/index.ts deleted file mode 100644 index a8e0e81f..00000000 --- a/src/ux/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ - -export { UxBase } from './base'; -export { Ux } from './ux'; -export { Progress } from './progress'; -export { Prompter, generateTableChoices, Separator } from './prompter'; -export { Spinner } from './spinner'; diff --git a/src/ux/progress.ts b/src/ux/progress.ts index e134438a..c575f3ca 100644 --- a/src/ux/progress.ts +++ b/src/ux/progress.ts @@ -7,7 +7,7 @@ import * as util from 'node:util'; import { ux } from '@oclif/core'; -import { UxBase } from '.'; +import { UxBase } from './base.js'; /** * Class for display a progress bar to the console. Will automatically be suppressed if the --json flag is present. diff --git a/src/ux/prompter.ts b/src/ux/prompter.ts deleted file mode 100644 index 3bfd2def..00000000 --- a/src/ux/prompter.ts +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ - -import { prompt, QuestionCollection, Separator, ChoiceOptions, ChoiceBase } from 'inquirer'; -import { Dictionary, Nullable, ensureString } from '@salesforce/ts-types'; -import { ux } from '@oclif/core'; - -export class Prompter { - /** - * Prompt user for information. See https://www.npmjs.com/package/inquirer for more. - */ - // eslint-disable-next-line class-methods-use-this - public async prompt( - questions: Prompter.Questions, - initialAnswers?: Partial - ): Promise { - const answers = await prompt(questions, initialAnswers); - return answers; - } - - /** - * Prompt user for information with a timeout (in milliseconds). See https://www.npmjs.com/package/inquirer for more. - */ - // eslint-disable-next-line class-methods-use-this - public async timedPrompt( - questions: Prompter.Questions, - ms = 10000, - initialAnswers?: Partial - ): Promise { - let id: NodeJS.Timeout; - const thePrompt = prompt(questions, initialAnswers); - const timeout = new Promise((_, reject) => { - id = setTimeout(() => { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-expect-error - // eslint-disable-next-line @typescript-eslint/no-unsafe-call - thePrompt.ui['activePrompt'].done(); - ux.log(); - reject(new Error(`Timed out after ${ms} ms.`)); - }, ms).unref(); - }); - - return Promise.race([timeout, thePrompt]).then((result) => { - clearTimeout(id); - return result as T; - }); - } - - /** - * Simplified prompt for single-question confirmation. Times out and throws after 10s - * - * @param message text to display. Do not include a question mark. - * @param ms milliseconds to wait for user input. Defaults to 10s. - * @param defaultAnswer default answer for the prompt. Defaults to true. Pass in `false` to require a positive response. - * @return true if the user confirms, false if they do not. - */ - public async confirm(message: string, ms = 10000, defaultAnswer = true): Promise { - const { confirmed } = await this.timedPrompt<{ confirmed: boolean }>( - [ - { - name: 'confirmed', - message, - type: 'confirm', - default: defaultAnswer, - }, - ], - ms - ); - return confirmed; - } -} - -export namespace Prompter { - export type Answers> = T & Record; - export type Questions = QuestionCollection; -} - -/** - * Generate a formatted table for list and checkbox prompts - * - * Each option should contain the same keys as specified in columns. - * - * @example - * ``` - * const columns = { name: 'Name', type: 'Type', path: 'Path' }; - * const options = [{ name: 'foo', type: 'org', path: '/path/to/foo/' }]; - * generateTableChoices(columns, options); - * ``` - */ -export function generateTableChoices( - columns: Dictionary, - choices: Array | T>>, - // eslint-disable-next-line @typescript-eslint/no-unused-vars - padForCheckbox = true -): ChoiceBase[] { - const columnEntries = Object.entries(columns); - const columnLengths = columnEntries.map( - ([key, value]) => - Math.max( - ensureString(value).length, - ...choices.map( - (option) => - ensureString(option[key], `Type ${typeof option[key]} for ${key} in ${Object.keys(option).join(', ')}`) - .length - ) - ) + 1 - ); - - const choicesOptions: ChoiceBase[] = [ - new Separator( - `${padForCheckbox ? ' '.repeat(2) : ''}${columnEntries - .map(([, value], index) => value?.padEnd(columnLengths[index], ' ')) - .join('')}` - ), - ]; - - for (const meta of choices) { - const name = columnEntries - .map(([key], index) => ensureString(meta[key]).padEnd(columnLengths[index], ' ')) - .join(''); - const choice: ChoiceOptions = { name, value: meta.value, short: ensureString(meta.name) }; - choicesOptions.push(choice); - } - - return choicesOptions; -} - -export { Separator }; diff --git a/src/ux/prompts.ts b/src/ux/prompts.ts new file mode 100644 index 00000000..f1c251a0 --- /dev/null +++ b/src/ux/prompts.ts @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +import { setTimeout } from 'node:timers/promises'; +import { SfError } from '@salesforce/core'; +import { CancelablePromise } from '@inquirer/type'; + +export type PromptInputs = { + /** text to display. Do not include a question mark */ + message: string; + /** after this many ms, the prompt will time out. If a default value is provided, the default will be used. Otherwise the prompt will throw an error */ + ms?: number; + /** + * default value to offer to the user. Will be used if the user does not respond within the timeout period. + */ + defaultAnswer?: T; +}; + +export const confirm = async ({ + message, + ms = 10_000, + defaultAnswer = false, +}: PromptInputs): Promise => { + const promptConfirm = (await import('@inquirer/confirm')).default; + const answer = promptConfirm({ message, default: defaultAnswer }); + return Promise.race([answer, handleTimeout(answer, ms, defaultAnswer)]); +}; + +export const secretPrompt = async ({ message, ms = 60_000 }: PromptInputs): Promise => { + const promptSecret = (await import('@inquirer/password')).default; + const answer = promptSecret({ message }); + return Promise.race([answer, handleTimeout(answer, ms)]); +}; + +const handleTimeout = async (answer: CancelablePromise, ms: number, defaultAnswer?: T): Promise => + setTimeout(ms, undefined, { ref: false }).then(() => { + answer.cancel(); + if (typeof defaultAnswer !== 'undefined') return defaultAnswer; + throw new SfError('Prompt timed out.'); + }); + +export const prompts = { confirm, secretPrompt }; diff --git a/src/ux/spinner.ts b/src/ux/spinner.ts index 074357a7..28dc89b5 100644 --- a/src/ux/spinner.ts +++ b/src/ux/spinner.ts @@ -6,7 +6,7 @@ */ import { ux } from '@oclif/core'; -import { UxBase } from '.'; +import { UxBase } from './base.js'; /** * This class is a light wrapper around ux.action that allows us to diff --git a/src/ux/standardColors.ts b/src/ux/standardColors.ts new file mode 100644 index 00000000..08d254c8 --- /dev/null +++ b/src/ux/standardColors.ts @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2023, salesforce.com, inc. + * All rights reserved. + * Licensed under the BSD 3-Clause license. + * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause + */ + +import chalk from 'chalk'; + +export const StandardColors = { + error: chalk.bold.red, + warning: chalk.bold.yellow, + info: chalk.dim, + success: chalk.bold.green, +}; diff --git a/src/ux/ux.ts b/src/ux/ux.ts index 23953838..bfaa9ac1 100644 --- a/src/ux/ux.ts +++ b/src/ux/ux.ts @@ -7,9 +7,8 @@ import { ux } from '@oclif/core'; import { AnyJson } from '@salesforce/ts-types'; -import { UxBase } from './base'; -import { Prompter } from './prompter'; -import { Spinner } from './spinner'; +import { UxBase } from './base.js'; +import { Spinner } from './spinner.js'; /** * UX methods for plugins. Automatically suppress console output if outputEnabled is set to false. @@ -29,14 +28,12 @@ import { Spinner } from './spinner'; */ export class Ux extends UxBase { public readonly spinner: Spinner; - public readonly prompter: Prompter; public readonly outputEnabled: boolean; public constructor({ jsonEnabled } = { jsonEnabled: false }) { super(!jsonEnabled); this.outputEnabled = !jsonEnabled; this.spinner = new Spinner(this.outputEnabled); - this.prompter = new Prompter(); } /** diff --git a/test/tsconfig.json b/test/tsconfig.json index 270e87bc..069e5027 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@salesforce/dev-config/tsconfig-test-strict", + "extends": "@salesforce/dev-config/tsconfig-test-strict-esm", "include": ["unit/**/*.ts", "../node_modules/@types/**/*.d.ts"], "compilerOptions": { "noEmit": true, diff --git a/test/unit/flags/apiVersion.test.ts b/test/unit/flags/apiVersion.test.ts index 7be44607..bf8a070e 100644 --- a/test/unit/flags/apiVersion.test.ts +++ b/test/unit/flags/apiVersion.test.ts @@ -7,15 +7,15 @@ import { expect } from 'chai'; import { Parser } from '@oclif/core'; import { Lifecycle, Messages } from '@salesforce/core'; -import * as sinon from 'sinon'; +import sinon from 'sinon'; import { orgApiVersionFlag, minValidApiVersion, maxDeprecated, maxDeprecatedUrl, -} from '../../../src/flags/orgApiVersion'; +} from '../../../src/flags/orgApiVersion.js'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); describe('fs flags', () => { diff --git a/test/unit/flags/duration.test.ts b/test/unit/flags/duration.test.ts index 19aea059..88111b9e 100644 --- a/test/unit/flags/duration.test.ts +++ b/test/unit/flags/duration.test.ts @@ -9,9 +9,9 @@ import { Parser } from '@oclif/core'; import { Messages } from '@salesforce/core'; import { expect } from 'chai'; import { Duration } from '@salesforce/kit'; -import { durationFlag } from '../../../src/flags/duration'; +import { durationFlag } from '../../../src/flags/duration.js'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); describe('duration flag', () => { diff --git a/test/unit/flags/id.test.ts b/test/unit/flags/id.test.ts index 9f2b6beb..4fbd3eed 100644 --- a/test/unit/flags/id.test.ts +++ b/test/unit/flags/id.test.ts @@ -7,9 +7,9 @@ import { expect } from 'chai'; import { Parser } from '@oclif/core'; import { Messages } from '@salesforce/core'; -import { salesforceIdFlag } from '../../../src/flags/salesforceId'; +import { salesforceIdFlag } from '../../../src/flags/salesforceId.js'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); describe('id flag', () => { diff --git a/test/unit/flags/orgFlags.test.ts b/test/unit/flags/orgFlags.test.ts index fceec24f..8c71b273 100644 --- a/test/unit/flags/orgFlags.test.ts +++ b/test/unit/flags/orgFlags.test.ts @@ -4,10 +4,10 @@ * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ -import { Org, SfError, OrgConfigProperties } from '@salesforce/core'; -import { MockTestOrgData, shouldThrow, TestContext } from '@salesforce/core/lib/testSetup'; import { assert, expect, config } from 'chai'; -import { getHubOrThrow, getOrgOrThrow, maybeGetHub, maybeGetOrg } from '../../../src/flags/orgFlags'; +import { Org, SfError, OrgConfigProperties } from '@salesforce/core'; +import { MockTestOrgData, shouldThrow, TestContext } from '@salesforce/core/lib/testSetup.js'; +import { getHubOrThrow, getOrgOrThrow, maybeGetHub, maybeGetOrg } from '../../../src/flags/orgFlags.js'; config.truncateThreshold = 0; diff --git a/test/unit/sfCommand.test.ts b/test/unit/sfCommand.test.ts index 733c9ccd..68a699f4 100644 --- a/test/unit/sfCommand.test.ts +++ b/test/unit/sfCommand.test.ts @@ -6,12 +6,13 @@ */ import { Flags } from '@oclif/core'; import { Lifecycle } from '@salesforce/core'; -import { TestContext } from '@salesforce/core/lib/testSetup'; +import { TestContext } from '@salesforce/core/lib/testSetup.js'; import { assert, expect } from 'chai'; import { SfError } from '@salesforce/core'; import { Config } from '@oclif/core/lib/interfaces'; -import { SfCommand, StandardColors } from '../../src/sfCommand'; -import { stubSfCommandUx, stubSpinner } from '../../src/stubUx'; +import { SfCommand } from '../../src/sfCommand.js'; +import { StandardColors } from '../../src/ux/standardColors.js'; +import { stubSfCommandUx, stubSpinner } from '../../src/stubUx.js'; class TestCommand extends SfCommand { public static readonly flags = { actions: Flags.boolean({ char: 'a', description: 'show actions' }), diff --git a/test/unit/stubUx.test.ts b/test/unit/stubUx.test.ts index 90b6d3b1..8b51a151 100644 --- a/test/unit/stubUx.test.ts +++ b/test/unit/stubUx.test.ts @@ -6,9 +6,9 @@ */ import { Interfaces } from '@oclif/core'; import { expect } from 'chai'; -import { TestContext } from '@salesforce/core/lib/testSetup'; +import { TestContext } from '@salesforce/core/lib/testSetup.js'; import { Lifecycle } from '@salesforce/core'; -import { stubUx, stubSfCommandUx, SfCommand, Ux, stubSpinner, Flags } from '../../src/exported'; +import { stubUx, stubSfCommandUx, SfCommand, Ux, stubSpinner, Flags } from '../../src/exported.js'; const TABLE_DATA = Array.from({ length: 10 }).fill({ id: '123', name: 'foo', value: 'bar' }) as Array< Record diff --git a/test/unit/util.test.ts b/test/unit/util.test.ts index 9aecd3e0..a117894e 100644 --- a/test/unit/util.test.ts +++ b/test/unit/util.test.ts @@ -15,9 +15,9 @@ import { SFDX_ALLOWED_PROPERTIES, Messages, } from '@salesforce/core'; -import { parseVarArgs, toHelpSection } from '../../src/util'; +import { parseVarArgs, toHelpSection } from '../../src/util.js'; -Messages.importMessagesDirectory(__dirname); +Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/sf-plugins-core', 'messages'); describe('toHelpSection', () => { diff --git a/test/unit/ux/progress.test.ts b/test/unit/ux/progress.test.ts index 2edbbca5..272952d8 100644 --- a/test/unit/ux/progress.test.ts +++ b/test/unit/ux/progress.test.ts @@ -5,8 +5,8 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { expect } from 'chai'; -import * as sinon from 'sinon'; -import { Progress } from '../../../src/ux'; +import sinon from 'sinon'; +import { Progress } from '../../../src/ux/progress.js'; describe('Progress', () => { let sandbox: sinon.SinonSandbox; diff --git a/test/unit/ux/prompter.test.ts b/test/unit/ux/prompter.test.ts deleted file mode 100644 index ab78f421..00000000 --- a/test/unit/ux/prompter.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2022, salesforce.com, inc. - * All rights reserved. - * Licensed under the BSD 3-Clause license. - * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause - */ -import { expect } from 'chai'; -import stripAnsi = require('strip-ansi'); -import { Separator } from 'inquirer'; -import { generateTableChoices } from '../../../src/ux'; - -describe('generateTableChoices', () => { - const columns = { - name: 'APP OR PACKAGE', - type: 'TYPE', - path: 'PATH', - }; - const choices = [ - { - name: 'force-app', - type: 'org', - path: 'force-app', - value: 'force-app', - }, - { - name: 'my-app', - type: 'a-long-org', - path: 'my-app', - value: 'my-app', - }, - ]; - it('should generate a formatted table of choices', () => { - const tableChoices = generateTableChoices(columns, choices); - expect(tableChoices[0]).to.be.instanceof(Separator); - const separator = tableChoices[0] as typeof Separator; - expect(stripAnsi(separator.toString())).to.be.equal(' APP OR PACKAGE TYPE PATH '); - expect(tableChoices[1]).to.have.property('name').and.equal('force-app org force-app '); - expect(tableChoices[2]).to.have.property('name').and.equal('my-app a-long-org my-app '); - }); - - it('should generate a formatted table of choices without checkbox padding', () => { - const tableChoices = generateTableChoices(columns, choices, false); - expect(tableChoices[0]).to.be.instanceof(Separator); - const separator = tableChoices[0] as typeof Separator; - expect(stripAnsi(separator.toString())).to.be.equal('APP OR PACKAGE TYPE PATH '); - expect(tableChoices[1]).to.have.property('name').and.equal('force-app org force-app '); - expect(tableChoices[2]).to.have.property('name').and.equal('my-app a-long-org my-app '); - }); -}); diff --git a/test/unit/ux/spinner.test.ts b/test/unit/ux/spinner.test.ts index 786076fb..4f9c6ec0 100644 --- a/test/unit/ux/spinner.test.ts +++ b/test/unit/ux/spinner.test.ts @@ -5,9 +5,9 @@ * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { expect } from 'chai'; -import * as sinon from 'sinon'; +import sinon from 'sinon'; import { ux } from '@oclif/core'; -import { Spinner } from '../../../src/ux'; +import { Spinner } from '../../../src/ux/spinner.js'; describe('Spinner', () => { let sandbox: sinon.SinonSandbox; diff --git a/test/unit/ux/ux.test.ts b/test/unit/ux/ux.test.ts index 13f08c09..ff70c3cf 100644 --- a/test/unit/ux/ux.test.ts +++ b/test/unit/ux/ux.test.ts @@ -6,9 +6,9 @@ */ import { expect } from 'chai'; -import * as sinon from 'sinon'; +import sinon from 'sinon'; import { ux as coreUx } from '@oclif/core'; -import { Ux } from '../../../src/ux'; +import { Ux } from '../../../src/ux/ux.js'; describe('Ux', () => { let sandbox: sinon.SinonSandbox; diff --git a/tsconfig.json b/tsconfig.json index 22456944..7aa5fb68 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "@salesforce/dev-config/tsconfig-strict", + "extends": "@salesforce/dev-config/tsconfig-strict-esm", "compilerOptions": { "outDir": "./lib", "declarationMap": true, diff --git a/yarn.lock b/yarn.lock index 143a97e6..8768a84a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -436,6 +436,59 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz#e5211452df060fa8522b55c7b3c0c4d1981cb044" integrity sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw== +"@inquirer/confirm@^2.0.15": + version "2.0.15" + resolved "https://registry.yarnpkg.com/@inquirer/confirm/-/confirm-2.0.15.tgz#b5512ed190efd8c5b96e0969115756b48546ab36" + integrity sha512-hj8Q/z7sQXsF0DSpLQZVDhWYGN6KLM/gNjjqGkpKwBzljbQofGjn0ueHADy4HUY+OqDHmXuwk/bY+tZyIuuB0w== + dependencies: + "@inquirer/core" "^5.1.1" + "@inquirer/type" "^1.1.5" + chalk "^4.1.2" + +"@inquirer/core@^5.1.1": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@inquirer/core/-/core-5.1.1.tgz#849d4846aea68371c133df6ec9059f5e5bd30d30" + integrity sha512-IuJyZQUg75+L5AmopgnzxYrgcU6PJKL0hoIs332G1Gv55CnmZrhG6BzNOeZ5sOsTi1YCGOopw4rYICv74ejMFg== + dependencies: + "@inquirer/type" "^1.1.5" + "@types/mute-stream" "^0.0.4" + "@types/node" "^20.9.0" + "@types/wrap-ansi" "^3.0.0" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + cli-spinners "^2.9.1" + cli-width "^4.1.0" + figures "^3.2.0" + mute-stream "^1.0.0" + run-async "^3.0.0" + signal-exit "^4.1.0" + strip-ansi "^6.0.1" + wrap-ansi "^6.2.0" + +"@inquirer/input@^1.2.14": + version "1.2.14" + resolved "https://registry.yarnpkg.com/@inquirer/input/-/input-1.2.14.tgz#8951867618bb5cd16dd096e02404eec225a92207" + integrity sha512-tISLGpUKXixIQue7jypNEShrdzJoLvEvZOJ4QRsw5XTfrIYfoWFqAjMQLerGs9CzR86yAI89JR6snHmKwnNddw== + dependencies: + "@inquirer/core" "^5.1.1" + "@inquirer/type" "^1.1.5" + chalk "^4.1.2" + +"@inquirer/password@^1.1.14": + version "1.1.14" + resolved "https://registry.yarnpkg.com/@inquirer/password/-/password-1.1.14.tgz#c1fc139efe84a38986870a1bcf80718050f82bbf" + integrity sha512-vL2BFxfMo8EvuGuZYlryiyAB3XsgtbxOcFs4H9WI9szAS/VZCAwdVqs8rqEeaAf/GV/eZOghIOYxvD91IsRWSg== + dependencies: + "@inquirer/input" "^1.2.14" + "@inquirer/type" "^1.1.5" + ansi-escapes "^4.3.2" + chalk "^4.1.2" + +"@inquirer/type@^1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@inquirer/type/-/type-1.1.5.tgz#b8c171f755859c8159b10e41e1e3a88f0ca99d7f" + integrity sha512-wmwHvHozpPo4IZkkNtbYenem/0wnfI6hvOcGKmPEa0DwuaH5XUQzFqy6OpEpjEegZMhYIk8HDYITI16BPLtrRA== + "@isaacs/cliui@^8.0.2": version "8.0.2" resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" @@ -535,10 +588,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@oclif/core@^3.15.0", "@oclif/core@^3.15.1": - version "3.15.1" - resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.15.1.tgz#e03fa775d658e76056150ac0c7b8097b6f51ab9c" - integrity sha512-d4457zVo2agLoJG97CmdY6M3BeP5sogBP3BtP65hUvJH6wA6Us1hdY3UiPPtD/ZzZImq7cATVMABuCF9tM+rWA== +"@oclif/core@^3.16.0": + version "3.16.0" + resolved "https://registry.yarnpkg.com/@oclif/core/-/core-3.16.0.tgz#682657cb5e4a3262a47e26e0c8a7bf0343acaf76" + integrity sha512-/PIz+udzb59XE8O/bQvqlCtXy6RByEHH0KsrAJNa/ZrqtdsLmeDNJcHdgygFHx+nz+PYMoUzsyzJMau++EDNoQ== dependencies: ansi-escapes "^4.3.2" ansi-styles "^4.3.0" @@ -568,15 +621,6 @@ wordwrap "^1.0.0" wrap-ansi "^7.0.0" -"@oclif/test@^3.1.5": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@oclif/test/-/test-3.1.5.tgz#4b4486b7478e6407c56e6d6acc54f073664bb839" - integrity sha512-SYA44is3O/2BRQKBmp/6M1VgqRXnYQpsnBIxljICrrPLhEUQh14Ev/8IuL11ULijZMZDeWM+9sPMsj06jsJyBA== - dependencies: - "@oclif/core" "^3.15.0" - chai "^4.3.10" - fancy-test "^3.0.4" - "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -675,27 +719,6 @@ dependencies: type-detect "4.0.8" -"@sinonjs/commons@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" - integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== - dependencies: - type-detect "4.0.8" - -"@sinonjs/commons@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^10.0.2", "@sinonjs/fake-timers@^10.3.0": - version "10.3.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers@^6.0.0", "@sinonjs/fake-timers@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" @@ -712,15 +735,6 @@ lodash.get "^4.4.2" type-detect "^4.0.8" -"@sinonjs/samsam@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" - integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== - dependencies: - "@sinonjs/commons" "^2.0.0" - lodash.get "^4.4.2" - type-detect "^4.0.8" - "@sinonjs/text-encoding@^0.7.1": version "0.7.2" resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" @@ -746,19 +760,11 @@ resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@types/chai@*", "@types/chai@^4.3.11": +"@types/chai@^4.3.11": version "4.3.11" resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.11.tgz#e95050bf79a932cb7305dd130254ccdf9bde671c" integrity sha512-qQR1dr2rGIHYlJulmr8Ioq3De0Le9E4MJ5AiaeAETJJpndT1uUNHsGFK3L/UIu+rbkQSdj8J/w2bCsBZc/Y5fQ== -"@types/inquirer@^8.2.3": - version "8.2.6" - resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-8.2.6.tgz#abd41a5fb689c7f1acb12933d787d4262a02a0ab" - integrity sha512-3uT88kxg8lNzY8ay2ZjP44DKcRaTGztqeIvN2zHvhzIBH/uAPaL75aBtdNRKbA7xXoMbBt5kX0M00VKAnfOYlA== - dependencies: - "@types/through" "*" - rxjs "^7.2.0" - "@types/json-schema@^7.0.12": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" @@ -769,11 +775,6 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== -"@types/lodash@*": - version "4.14.196" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.196.tgz#a7c3d6fc52d8d71328b764e28e080b4169ec7a95" - integrity sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ== - "@types/minimatch@^3.0.3": version "3.0.5" resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" @@ -789,10 +790,19 @@ resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.6.tgz#818551d39113081048bdddbef96701b4e8bb9d1b" integrity sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg== -"@types/node@*": - version "20.4.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.7.tgz#74d323a93f1391a63477b27b9aec56669c98b2ab" - integrity sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g== +"@types/mute-stream@^0.0.4": + version "0.0.4" + resolved "https://registry.yarnpkg.com/@types/mute-stream/-/mute-stream-0.0.4.tgz#77208e56a08767af6c5e1237be8888e2f255c478" + integrity sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@^20.9.0": + version "20.10.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.10.4.tgz#b246fd84d55d5b1b71bf51f964bd514409347198" + integrity sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg== + dependencies: + undici-types "~5.26.4" "@types/node@^12.19.9": version "12.20.55" @@ -821,7 +831,7 @@ resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.6.tgz#c65b2bfce1bec346582c07724e3f8c1017a20339" integrity sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A== -"@types/sinon@*", "@types/sinon@^10.0.20": +"@types/sinon@^10.0.20": version "10.0.20" resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.20.tgz#f1585debf4c0d99f9938f4111e5479fb74865146" integrity sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg== @@ -833,12 +843,10 @@ resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== -"@types/through@*": - version "0.0.30" - resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" - integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== - dependencies: - "@types/node" "*" +"@types/wrap-ansi@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz#18b97a972f94f60a679fd5c796d96421b9abb9fd" + integrity sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g== "@typescript-eslint/eslint-plugin@^6.10.0": version "6.11.0" @@ -1285,15 +1293,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1341,14 +1340,6 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - buffer@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" @@ -1465,7 +1456,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -1473,7 +1464,7 @@ chalk@^4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^5.0.0: +chalk@^5.0.0, chalk@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.3.0.tgz#67c20a7ebef70e7f3970a01f90fa210cb6860385" integrity sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w== @@ -1561,16 +1552,21 @@ cli-progress@^3.12.0: dependencies: string-width "^4.2.3" -cli-spinners@^2.5.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.0.tgz#5881d0ad96381e117bbe07ad91f2008fe6ffd8db" - integrity sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g== +cli-spinners@^2.9.1: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== cli-width@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +cli-width@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-4.1.0.tgz#42daac41d3c254ef38ad8ac037672130173691c5" + integrity sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ== + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -1598,11 +1594,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1857,13 +1848,6 @@ default-require-extensions@^3.0.0: dependencies: strip-bom "^4.0.0" -defaults@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" - integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== - dependencies: - clone "^1.0.2" - define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" @@ -1896,11 +1880,6 @@ diff@^4.0.1, diff@^4.0.2: resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -diff@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" - integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2382,21 +2361,6 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" -fancy-test@^3.0.4: - version "3.0.6" - resolved "https://registry.yarnpkg.com/fancy-test/-/fancy-test-3.0.6.tgz#b41900894cda8ce94e9e51ef1897b096afa46111" - integrity sha512-Js1ixKwDXU92yDhpCP5cG5IRKBUIaAO5ka11a7Kdpv0IbN4DSp8a9P/12oFiOSGJiiumHH1WgcTsA5f4V65OyQ== - dependencies: - "@types/chai" "*" - "@types/lodash" "*" - "@types/node" "*" - "@types/sinon" "*" - lodash "^4.17.13" - mock-stdin "^1.0.0" - nock "^13.4.0" - sinon "^16.0.0" - stdout-stderr "^0.1.9" - fast-copy@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.1.tgz#9e89ef498b8c04c1cd76b33b8e14271658a732aa" @@ -2464,7 +2428,7 @@ faye@^1.4.0: tough-cookie "*" tunnel-agent "*" -figures@^3.0.0: +figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -2954,7 +2918,7 @@ iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ieee754@^1.1.13, ieee754@^1.2.1: +ieee754@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== @@ -2995,7 +2959,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -3024,27 +2988,6 @@ inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" -inquirer@^8.2.5: - version "8.2.6" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.6.tgz#733b74888195d8d400a67ac332011b5fae5ea562" - integrity sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.5.5" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - wrap-ansi "^6.0.1" - internal-slot@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986" @@ -3148,11 +3091,6 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - is-negative-zero@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" @@ -3464,11 +3402,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json-stringify-safe@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - json5@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" @@ -3700,12 +3633,12 @@ lodash.upperfirst@^4.3.1: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21: +lodash@^4.17.15, lodash@^4.17.19: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@4.1.0, log-symbols@^4.1.0: +log-symbols@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== @@ -3931,11 +3864,6 @@ mocha@^10.2.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" -mock-stdin@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/mock-stdin/-/mock-stdin-1.0.0.tgz#efcfaf4b18077e14541742fd758b9cae4e5365ea" - integrity sha512-tukRdb9Beu27t6dN+XztSRHq9J0B/CoAOySGzHfn8UTfmqipA5yNT/sDUEyYdAV3Hpka6Wx6kOMxuObdOex60Q== - mri@^1.1.5: version "1.2.0" resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" @@ -3975,6 +3903,11 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== +mute-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" + integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== + nanoid@3.3.3: version "3.3.3" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" @@ -4001,17 +3934,6 @@ nise@^4.1.0: just-extend "^4.0.2" path-to-regexp "^1.7.0" -nise@^5.1.4: - version "5.1.5" - resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.5.tgz#f2aef9536280b6c18940e32ba1fbdc770b8964ee" - integrity sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw== - dependencies: - "@sinonjs/commons" "^2.0.0" - "@sinonjs/fake-timers" "^10.0.2" - "@sinonjs/text-encoding" "^0.7.1" - just-extend "^4.0.2" - path-to-regexp "^1.7.0" - no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -4020,15 +3942,6 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -nock@^13.4.0: - version "13.4.0" - resolved "https://registry.yarnpkg.com/nock/-/nock-13.4.0.tgz#60aa3f7a4afa9c12052e74d8fb7550f682ef0115" - integrity sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ== - dependencies: - debug "^4.1.0" - json-stringify-safe "^5.0.1" - propagate "^2.0.0" - node-fetch@^2.6.1, node-fetch@^2.6.9: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -4205,21 +4118,6 @@ optionator@^0.9.3: prelude-ls "^1.2.1" type-check "^0.4.0" -ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -4490,11 +4388,6 @@ process@^0.11.10: resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== -propagate@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/propagate/-/propagate-2.0.1.tgz#40cdedab18085c792334e64f0ac17256d38f9a45" - integrity sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag== - proper-lockfile@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/proper-lockfile/-/proper-lockfile-4.1.2.tgz#c8b9de2af6b2f1601067f98e01ac66baa223141f" @@ -4749,6 +4642,11 @@ run-async@^2.4.0: resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== +run-async@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-3.0.0.tgz#42a432f6d76c689522058984384df28be379daad" + integrity sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q== + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -4763,13 +4661,6 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -rxjs@^7.2.0, rxjs@^7.5.5: - version "7.8.1" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - safe-array-concat@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" @@ -4910,7 +4801,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -shelljs@0.8.5, shelljs@^0.8.5: +shelljs@^0.8.5: version "0.8.5" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== @@ -4943,7 +4834,7 @@ signal-exit@^3.0.2, signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== -signal-exit@^4.0.1: +signal-exit@^4.0.1, signal-exit@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== @@ -4967,18 +4858,6 @@ sinon@10.0.0: nise "^4.1.0" supports-color "^7.1.0" -sinon@^16.0.0: - version "16.1.3" - resolved "https://registry.yarnpkg.com/sinon/-/sinon-16.1.3.tgz#b760ddafe785356e2847502657b4a0da5501fba8" - integrity sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA== - dependencies: - "@sinonjs/commons" "^3.0.0" - "@sinonjs/fake-timers" "^10.3.0" - "@sinonjs/samsam" "^8.0.0" - diff "^5.1.0" - nise "^5.1.4" - supports-color "^7.2.0" - slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -5081,14 +4960,6 @@ srcset@^5.0.0: resolved "https://registry.yarnpkg.com/srcset/-/srcset-5.0.0.tgz#9df6c3961b5b44a02532ce6ae4544832609e2e3f" integrity sha512-SqEZaAEhe0A6ETEa9O1IhSPC7MdvehZtCnTR0AftXk3QhY2UNgb+NApFOUPZILXk/YTDfFxMTNJOBpzrJsEdIA== -stdout-stderr@^0.1.9: - version "0.1.13" - resolved "https://registry.yarnpkg.com/stdout-stderr/-/stdout-stderr-0.1.13.tgz#54e3450f3d4c54086a49c0c7f8786a44d1844b6f" - integrity sha512-Xnt9/HHHYfjZ7NeQLvuQDyL1LnbsbddgMFKCuaQKwGCdJm8LnstZIXop+uOY36UR1UXXoHXfMbC1KlVdVd2JLA== - dependencies: - debug "^4.1.1" - strip-ansi "^6.0.0" - "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" @@ -5148,7 +5019,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -5203,7 +5074,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0, supports-color@^7.2.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== @@ -5349,7 +5220,7 @@ tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3, tslib@^2.1.0, tslib@^2.6.2: +tslib@^2.0.3, tslib@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== @@ -5459,10 +5330,10 @@ typedoc@^0.25.3: minimatch "^9.0.3" shiki "^0.14.1" -"typescript@^4.6.4 || ^5.0.0": - version "5.1.6" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274" - integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA== +"typescript@^4.6.4 || ^5.0.0", typescript@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.3.tgz#b3ce6ba258e72e6305ba66f5c9b452aaee3ffe37" + integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== typescript@^4.9.5: version "4.9.5" @@ -5569,13 +5440,6 @@ vscode-textmate@^8.0.0: resolved "https://registry.yarnpkg.com/vscode-textmate/-/vscode-textmate-8.0.0.tgz#2c7a3b1163ef0441097e0b5d6389cd5504b59e5d" integrity sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg== -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -5674,7 +5538,7 @@ workerpool@6.2.1: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^6.0.1, wrap-ansi@^6.2.0: +wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==