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

Deno compatibility #34

Open
2 tasks
NightScript370 opened this issue Jan 19, 2022 · 12 comments
Open
2 tasks

Deno compatibility #34

NightScript370 opened this issue Jan 19, 2022 · 12 comments
Labels
enhancement New feature or request

Comments

@NightScript370
Copy link
Contributor

It would be nice if we could use this within Deno. Here are the things that would have to occur if we were to proceed with this:

  • Switch axios to fetch (with the polyfill node-fetch for node.js)
  • Explicitly define '.ts' file extensions

There are many reasons to use Deno over Node, including the built-in TypeScript support, Permission system and much more

Is there a Revolt channel I could use to discuss revolt.js? It would be best for fast communication

@Rexogamer
Copy link
Member

On your last point, you can join the Revolt Lounge server and discuss this in the Revolt Development channel.

@Rexogamer Rexogamer added the enhancement New feature or request label Jan 19, 2022
@NightScript370
Copy link
Contributor Author

NightScript370 commented Jan 20, 2022

Ok, this seems to be more work than I initially expected:

To maintain compatibility with Node, I tried to make a global deps.ts file with import()'s so that we could use URLs for Deno and NPM packages for Node. It ended up being a mess, with every module declaration being lost. That's not a fault of Deno; that's a fault of mine, because I have NO idea how to organize anything.

Also, while '.ts' is required in Deno, it would absolutely break Node. We'd have to use import('<file path>' + ("Deno" in (window || {}) ? '.ts' : ''))

@Rexogamer
Copy link
Member

This should be a little easier once Node 18+ becomes the norm/more widespread as it supports built-in fetch via undici

@NightScript370
Copy link
Contributor Author

I was told the dev team didn't want to replace axios, so we'll see what happens with that.

@insertish
Copy link
Member

A lot of dependencies on Axios have been untied and it's likely going to be stripped out in the near future, it pretty much entirely on lives within the revolt-api package now.

@NightScript370
Copy link
Contributor Author

Alright, I'll have to join the Revolt channel again and discuss this. It's been a while since I've been on Revolt, either way, because this was one of the big factors for me.
Either way, a work around for said issue exists in the form of PR #35

@NightScript370
Copy link
Contributor Author

Currently halting on denoland/deno#7296 so we don't get the monstrosity that is the comment I made above: #34 (comment)

@NightScript370
Copy link
Contributor Author

Hm, so with Deno getting official NPM support and skypack, it may be worthwhile to reconsider whether this is needed or not. Obviously nothing will replace a decentralized module that wouldnt run through a compat layer, but it may be more work than its worth to introduce cross Node and Deno compatibility.

I personally no longer use Revolt, simply because the servers that were initially pro-Revolt decided against having a bridge, meaning im stuck on a different platform.

@Rexogamer
Copy link
Member

For what it's worth, if the lib isn't compatible with Deno yet I'm still in favour of compatibility

@gaycookie
Copy link

So I just discovered the hard way that it is not compatible with Deno yet!
Would love to see this working with Deno in the future!

Keep up the good work! ❤️

@insertish
Copy link
Member

On the first point, I plan to drop axios in the near future: insertish/oapi#2

@williamhorning
Copy link
Contributor

williamhorning commented Jul 9, 2023

Importing revolt.js using Deno's npm compatibility almost works, but it's broken due to #83. Fixing the second point mentioned in this issue is possible if we use esbuild instead of tsc to build Node releases. Dropping Axios support would be nice as that'd allow revolt.js to run without the compatibility layer included in Deno but that'd take a bit more work.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
Status: 🙋 Upvoting
Development

No branches or pull requests

5 participants