edgedb-js
edgedb-js copied to clipboard
Support Cloudflare workers
It would be nice if the Edge DB JS client supported Cloudflare workers: https://workers.cloudflare.com/
To do this, any references to unsupported node polyfills would need to be removed. It seems like there is only one? (Buffer)
I believe this would require a ground-up rewrite, since we rely on a ton of Node.js APIs from crypto, fs, path, os, net, tls, readline, and stream. Unless I'm missing something? cc @tailhook
What about Deno? I've read somewhere that Deno is explicitly compatible with Cloudflare workers.
I believe this would require a ground-up rewrite, since we rely on a ton of Node.js APIs from
crypto,fs,path,os,net,tls,readline, andstream. Unless I'm missing something? cc @tailhook
I think most of that is possible to get rid of (fs and path are probably by disabling that feature), but the biggest issue is raw network sockets. I think CloudFlare workers don't support them. So we need some WebSocket mapping of the protocol, which I think we didn't implement yet.
We actually already implement protocol tunneling over the Fetch API. The only thing that isn't supported is transaction blocks.
Is transaction support coming in the near future (4-8 months) for cf workers?
Transactions are supported in edgedb+http, just only the all-at-once kind. I.e you can send a bunch of statements together and they'll be executed atomically. But you can't start a transaction and keep it open. The difficulty of implementing open-ended transactions over a stateless protocol like HTTP is that you need sticky sessions, which introduces lots of complexity to the stack.
@haikyuu, do you have an use case example that can't be done as a single db roundtrip?
@haikyuu, do you have an use case example that can't be done as a single db roundtrip?
No that's probably plenty enough for the foreseeable future 😅
Related to #387
From what I understand of the HttpClient, both this and #387 can be closed.
@PastelStoic Is this resolved? I'm trying to call createHttpClient in a Cloudflare Function and still getting the error ReferenceError: process is not defined.
@PastelStoic Is this resolved? I'm trying to call createHttpClient in a Cloudflare Function and still getting the error
ReferenceError: process is not defined.
Yep - also running into this, specifically from a call to getEnv in parseConnectDsnAndArgs; so my guess is this is not resolved :/ Sample:
const e = edgedb.createHttpClient({
dsn: env.EDGEDB_DSN,
tlsSecurity: "insecure",
});
const res = await e.querySingle<number>("SELECT 1");