diff options
author | 2023-08-02 16:27:36 -0700 | |
---|---|---|
committer | 2023-08-02 16:27:36 -0700 | |
commit | c2a77cf7ec9de9eadf938046bdf78e58561c8a6d (patch) | |
tree | 0f90f1b323061455875333c9f40592b303585973 /src/js/thirdparty/node-fetch.js | |
parent | 7656b4b17e91f15b58eeab8f45b78c416ec6a045 (diff) | |
download | bun-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.js | 63 |
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, +}); |