aboutsummaryrefslogtreecommitdiff
path: root/src/js/thirdparty/node-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/node-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/node-fetch.js')
-rw-r--r--src/js/thirdparty/node-fetch.js63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/js/thirdparty/node-fetch.js b/src/js/thirdparty/node-fetch.js
new file mode 100644
index 000000000..899536d9b
--- /dev/null
+++ b/src/js/thirdparty/node-fetch.js
@@ -0,0 +1,63 @@
+const { Headers, Request, Response, Blob, File = Blob, FormData } = globalThis;
+const realFetch = Bun.fetch;
+
+function fetch(...args) {
+ // require("node-fetch") returns the default export which means we need to
+ // repeat the ESM exports onto it.
+ //
+ // We don't want to copy that onto the global fetch object, so we wrap it.
+ return realFetch(...args);
+}
+
+class AbortError extends DOMException {
+ constructor(message) {
+ super(message, "AbortError");
+ }
+}
+
+class FetchBaseError extends Error {
+ constructor(message, type) {
+ super(message);
+ this.type = type;
+ }
+}
+
+class FetchError extends FetchBaseError {
+ constructor(message, type, systemError) {
+ super(message, type);
+ this.code = systemError?.code;
+ }
+}
+
+function blobFrom(path, options) {
+ return Promise.resolve(Bun.file(data));
+}
+
+function blobFromSync(path, options) {
+ return Bun.file(data);
+}
+
+var fileFrom = blobFrom;
+var fileFromSync = blobFromSync;
+
+function isRedirect(code) {
+ return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
+}
+
+export default Object.assign(fetch, {
+ AbortError,
+ Blob,
+ FetchBaseError,
+ FetchError,
+ File,
+ FormData,
+ Headers,
+ Request,
+ Response,
+ blobFrom,
+ blobFromSync,
+ fileFrom,
+ fileFromSync,
+ isRedirect,
+ fetch,
+});