Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(fetch): use undici + ProxyAgent #1000

Merged
merged 11 commits into from
May 7, 2024
Merged

Conversation

kanadgupta
Copy link
Member

@kanadgupta kanadgupta commented May 6, 2024

🚥 Resolves RM-8008, RM-9687

🧰 Changes

  • Removes node-fetch in favor of its native Node.js counterpart
  • Removes formdata-node in favor of its native Node.js counterpart
  • Uses undici's ProxyAgent for proxying requests1
  • Now that we installed the latest nock beta in chore(deps): nock@beta, [email protected] #999, msw is no longer required and has been removed.
  • Removed a few useless delayConnection statements so now tests are like 2-3x faster

🧬 QA & Testing

Do tests still pass?

Footnotes

  1. We very well might have been doing proxying incorrectly this entire time? Ideally we should use the new EnvHttpProxyAgent API instead but that's only supported in undici@6 😔

@kanadgupta kanadgupta changed the title chore(deps): remove node-fetch, formdata-node, msw feat(fetch): use undici + ProxyAgent May 7, 2024
@kanadgupta kanadgupta added enhancement New feature or request refactor Issues about tackling technical debt labels May 7, 2024
@kanadgupta kanadgupta requested a review from erunion May 7, 2024 15:34
@kanadgupta kanadgupta marked this pull request as ready for review May 7, 2024 15:35
@@ -135,7 +133,6 @@ describe('rdme openapi', () => {
.basicAuth({ user: key })
.reply(200, [{ _id: 'spec1', title: 'spec1_title' }])
.post('/api/v1/api-specification', { registryUUID })
.delayConnection(1000)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

love to see it


server.use(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

msw i think you're really neat but my dude... the code bloat

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah... once nock started using the same underlying interceptor, it was game over

"gray-matter": "^4.0.1",
"ignore": "^5.2.0",
"mime-types": "^2.1.35",
"node-fetch": "^3.3.2",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...options,
headers,
dispatcher: proxy ? new ProxyAgent(proxy) : undefined,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol @ the way node-fetch forced us to handle proxies 🤡

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lol that was not exactly a node-fetch issue and more of a me issue 😭

@kanadgupta kanadgupta merged commit 9da7132 into next May 7, 2024
11 checks passed
@kanadgupta kanadgupta deleted the kanad-2024-05-06/remove-msw branch May 7, 2024 15:53
kanadgupta pushed a commit that referenced this pull request May 7, 2024
# [9.0.0-next.15](v9.0.0-next.14...v9.0.0-next.15) (2024-05-07)

### Features

* **fetch:** use undici + `ProxyAgent`  ([#1000](#1000)) ([9da7132](9da7132)), closes [#999](#999)

[skip ci]
@kanadgupta kanadgupta mentioned this pull request May 7, 2024
26 tasks
kanadgupta pushed a commit that referenced this pull request Dec 6, 2024
# [9.0.0](v8.6.6...v9.0.0) (2024-12-06)

* feat!: deprecation notices for non-readme-refactored commands ([#1099](#1099)) ([732e32b](732e32b))
* feat!: drop node 18 ([#1085](#1085)) ([ebc2ac0](ebc2ac0))
* feat!: final v9 touchups ([#1106](#1106)) ([15447c5](15447c5)), closes [#1107](#1107)
* feat!: oclif (take 2) ([#1068](#1068)) ([5e05f93](5e05f93)), closes [#962](#962) [#1067](#1067) [/github.com/readmeio/rdme/blob/d01d76fe3c2e4a98b4f5c415be03e589fbe3b56e/.releaserc.yml#L30](https://github.com//github.com/readmeio/rdme/blob/d01d76fe3c2e4a98b4f5c415be03e589fbe3b56e/.releaserc.yml/issues/L30) [#1067](#1067)
* feat!: remove `validate`, deprecate/hide `open` ([#1072](#1072)) ([f1b46f6](f1b46f6))
* feat!: switch topic separator to space ([#1100](#1100)) ([13eb8ab](13eb8ab))

### Bug Fixes

* add better debugging for fetch failures ([a17f8da](a17f8da))
* add GITHUB_TOKEN ([e106e10](e106e10))
* attempt to use semantic-release/github instead of `gh` ([331d28b](331d28b))
* build `dist-gha/` files with every release ([f42392b](f42392b))
* bump semantic-release versions ([21efc66](21efc66))
* debug properly ([#1078](#1078)) ([5de0a4f](5de0a4f))
* **deps:** bump more deps ([#1042](#1042)) ([786a000](786a000))
* empty commit to trigger build ([51c1566](51c1566))
* empty commit to trigger build ([76efb7e](76efb7e))
* empty commit to trigger release ([3604f2a](3604f2a))
* fixed debug script ([#908](#908)) ([82c3541](82c3541))
* hide `ExperimentalWarning` ([#901](#901)) ([f9b5679](f9b5679))
* **npm:** tweak npm lifecycle scripts ([#1073](#1073)) ([35534db](35534db))
* oclif-friendly error logging ([#1080](#1080)) ([73c5f4c](73c5f4c))
* **openapi:** add spinner catch statement ([#961](#961)) ([4669b29](4669b29))
* **release:** track `dist-gha` assets properly ([b0934cb](b0934cb))
* **release:** track changes to commands doc directory ([78b6554](78b6554))
* swap out ts-node for tsx ([16f64b3](16f64b3))
* Update LICENSE for 2024 ([#963](#963)) ([23cf44b](23cf44b))
* use newest import attributes syntax ([#993](#993)) ([d76c0ae](d76c0ae)), closes [/github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#2023-11-22-version-20100](https://github.com//github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md/issues/2023-11-22-version-20100)
* **versions/update:** various edge cases ([#965](#965)) ([580e307](580e307))

### chore

* type fixes for tests ([#903](#903)) ([d423b4c](d423b4c))

### Code Refactoring

* remove `oas`, `swagger`, `docs:edit` ([#902](#902)) ([9107d15](9107d15))

### Features

* add `@oclif/plugin-not-found`, other cleanups ([#1074](#1074)) ([6529b03](6529b03))
* add `title` flag to `openapi:convert` ([#1071](#1071)) ([1d71f3f](1d71f3f)), closes [#1068](#1068)
* convert to ESM (breaking change) ([#856](#856)) ([84b8571](84b8571)), closes [/www.stefanjudis.com/snippets/how-to-import-json-files-in-es-modules-node-js/#option-1](https://github.com//www.stefanjudis.com/snippets/how-to-import-json-files-in-es-modules-node-js//issues/option-1) [1#L228](https://github.com/1/issues/L228)
* **fetch:** use undici + `ProxyAgent`  ([#1000](#1000)) ([9da7132](9da7132)), closes [#999](#999)
* **openapi/convert:** support openapi in convert command ([#941](#941)) ([a33bbeb](a33bbeb))
* revamped `oclif`-powered docs ([#1081](#1081)) ([8a2833b](8a2833b))
* sort when syncing by parent ([#973](#973)) ([9795840](9795840))
* support `README_API_KEY` env var ([#950](#950)) ([bcf3f18](bcf3f18))
* support node 18 and up ([#900](#900)) ([a217904](a217904))
* **test:** moving unit tests over to vitest ([#857](#857)) ([36d561b](36d561b)), closes [#870](#870)
* use `actions/checkout@v4` everywhere ([#895](#895)) ([d30b71c](d30b71c))
* **versions:** flag parity with API, copy fixes ([#906](#906)) ([d424d9f](d424d9f))

### BREAKING CHANGES

* `rdme openapi` is deprecated and will be replaced in
`rdme@10` by a command with a simpler flag setup based on community
feedback.
* deprecates commands that are not supported in ReadMe
Refactored. For more information, please visit our migration guide:
https://github.com/readmeio/rdme/tree/v9/documentation/migration-guide.md

## 🧬 QA & Testing

Does the copy in these deprecation warnings make sense to you? Note that
the links will be broken for now since we haven't tagged a proper v9
release yet, but that will be fixed once this release is out!
* the topic separator (i.e., what separates a command
from its subcommand) has changed from a colon to a space by default. For
example, `rdme openapi:validate` is now `rdme openapi validate`. The
colon topic separator will continue to be supported so there is no need
to change any existing commands, but all documentation and help screens
will reflect the space topic separator.

## 🧬 QA & Testing

Do tests still pass?
* dropping support for Node.js v18. The minimum required
Node.js version is v20.10.0.
* `rdme validate` has been removed, use `rdme
openapi:validate` instead.
* `rdme open` is now deprecated

also updates our docs accordingly
* the `rdme` GitHub Actions is now a [the `node20` JavaScript action](https://docs.github.com/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions#runs-for-javascript-actions) rather than [a Docker container action](https://docs.github.com/en/actions/sharing-automations/creating-actions/metadata-syntax-for-github-actions#runs-for-docker-container-actions).
* `rdme` is now powered by [`oclif`](https://oclif.io/). The formatting and content of certain error messages and outputs may have changed. Please continue to only utilize exit codes to determine command successes/failures.

completed tasks:

- [x] a handful of tests are still failing, hoping that
oclif/test#652 gets merged in)
- [x] github actions dry runs are failing (but i got them working in
* **versions:** this flips the `isPublic` flag to `hidden`.
* removes several deprecated commands

* chore: knip cleanup

* chore: type fixes for tests
* removes several deprecated commands
* Node.js >= 18 required

[skip ci]
@kanadgupta
Copy link
Member Author

🎉 This PR is included in version 9.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request refactor Issues about tackling technical debt released
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants