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

Request and Request-Promise packages are deprecated #95

Open
CryptoGrampy opened this issue Jun 24, 2022 · 8 comments
Open

Request and Request-Promise packages are deprecated #95

CryptoGrampy opened this issue Jun 24, 2022 · 8 comments
Labels
help wanted Extra attention is needed

Comments

@CryptoGrampy
Copy link

Just noticed these packages are deprecated. Not sure if this is possible, but there is a native 'fetch' API that's NodeJS 18+ compatible: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API and https://blog.logrocket.com/fetch-api-node-js/ that might be nice to use as it's native for browser/Node and doesn't require any extra packages (and allows us to remove packages from monero-javascript!) , but Axios is also a very good, popular and full-featured request library.

@trasherdk
Copy link
Contributor

  1. Firefox native fetch still doesn't support digest auth, required by Monero.
  2. Moving beyond Node.js LTS version seems like a really bad idea.
  3. Something like undici is probably a better choice, as it's the thingy implemented in
    Node.js 16.5+ (experimental). It's not for the browser though, so Axios seems like a decent alternative.

@CryptoGrampy
Copy link
Author

Definitely agree on the LTS subject, just important to acknowledge that this will be a built in feature down the road. I'm a big fan of the axios lib, personally.

@trasherdk
Copy link
Contributor

@CryptoGrampy did you try debug/tracing what's going on below the surface, during requests?

Getting rid of browser fetch was not a simple task, if memory serves me. Other than that, I agree. Getting rid of those deprecation warnings would be nice.

@47Key
Copy link

47Key commented Jul 11, 2022

@trasherdk @CryptoGrampy I can try and take care of this issue if needed, with either axios or node-fetch. Personally I've used node fetch just for simplicity and standardizing the fetch calls. But can use axios if needed.

Let me know what progress you've made on this and I will try to dig farther from the point you left off.

@CryptoGrampy
Copy link
Author

@trasherdk - I haven't dug into this at all beyond noticing that the library being used isn't supported anymore.
@47Key - Monero-Javascript is used from both nodejs as well as browser context, so any library used should support both; for that reason, Axios is probably the best modern request library to go with until the fetch API for node matures.

@47Key
Copy link

47Key commented Jul 16, 2022

@CryptoGrampy On it, any unit tests or guidelines I should adhere too before finishing?

@trasherdk
Copy link
Contributor

@CryptoGrampy The problem is Firefox native fetch() have a broken digest authentication. Chrome was OK.
And under the hood, the request logic is very complex. I have single-stepped this thing many times and Oh boy, it'll make your head spin.

@47Key Looking forward to see what you come up with 😃

@woodser
Copy link
Owner

woodser commented Nov 21, 2023

If anyone wants to help with this issue, HttpClient.ts just needs to be updated to support the dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

4 participants