From 8a02ad48a5eb1319c1bf3e9eb97e013924db875f Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Thu, 9 Sep 2021 05:40:07 -0700 Subject: fetc h!!! --- src/node-fallbacks/@vercel_fetch.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/node-fallbacks/@vercel_fetch.js (limited to 'src/node-fallbacks/@vercel_fetch.js') diff --git a/src/node-fallbacks/@vercel_fetch.js b/src/node-fallbacks/@vercel_fetch.js new file mode 100644 index 000000000..5ab626670 --- /dev/null +++ b/src/node-fallbacks/@vercel_fetch.js @@ -0,0 +1,31 @@ +// This is just a no-op. Intent is to prevent importing a bunch of stuff that isn't relevant. +module.exports = (wrapper = Bun.fetch) => { + return 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; + } + }; +}; -- cgit v1.2.3