aboutsummaryrefslogtreecommitdiff
path: root/src/js/thirdparty/vercel_fetch.js
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-08-02 16:27:36 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-02 16:27:36 -0700
commitc2a77cf7ec9de9eadf938046bdf78e58561c8a6d (patch)
tree0f90f1b323061455875333c9f40592b303585973 /src/js/thirdparty/vercel_fetch.js
parent7656b4b17e91f15b58eeab8f45b78c416ec6a045 (diff)
downloadbun-c2a77cf7ec9de9eadf938046bdf78e58561c8a6d.tar.gz
bun-c2a77cf7ec9de9eadf938046bdf78e58561c8a6d.tar.zst
bun-c2a77cf7ec9de9eadf938046bdf78e58561c8a6d.zip
Rewrite built-in modules to use CommonJS over ESM (#3814)
* stfdsafsd sadffdsa stuff finish commonjs stuff asdf not done but work not done but work not done yet but this is how far i am remove files lol update built files uncomment everything in events lol export default stuff * afdsafsd * its not perfect but almost done * okay * cool * remove temp file * finish rebase * revert settings.json * a * ch-ch-ch-ch-changes * okay * remove this check in release for now * sxdcfghnjm, * lkjhgf * fmt * filename can be null * Update NodeModuleModule.h * weee * fmt --------- Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/js/thirdparty/vercel_fetch.js')
-rw-r--r--src/js/thirdparty/vercel_fetch.js32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/js/thirdparty/vercel_fetch.js b/src/js/thirdparty/vercel_fetch.js
new file mode 100644
index 000000000..9d9be6c17
--- /dev/null
+++ b/src/js/thirdparty/vercel_fetch.js
@@ -0,0 +1,32 @@
+// This is just a no-op. Intent is to prevent importing a bunch of stuff that isn't relevant.
+export default (wrapper = Bun.fetch) => {
+ async function vercelFetch(url, opts = {}) {
+ // Convert Object bodies to JSON if they are JS objects
+ if (
+ opts.body &&
+ typeof opts.body === "object" &&
+ (!("buffer" in opts.body) || typeof opts.body.buffer !== "object" || !(opts.body.buffer instanceof ArrayBuffer))
+ ) {
+ opts.body = JSON.stringify(opts.body);
+ // Content length will automatically be set
+ if (!opts.headers) opts.headers = new Headers();
+
+ opts.headers.set("Content-Type", "application/json");
+ }
+
+ try {
+ return await wrapper(url, opts);
+ } catch (err) {
+ if (typeof err === "string") {
+ err = new Error(err);
+ }
+
+ err.url = url;
+ err.opts = opts;
+ throw err;
+ }
+ }
+
+ vercelFetch.default = vercelFetch;
+ return vercelFetch;
+};