diff --git a/package.json b/package.json index 0ef447f..575d753 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,8 @@ "./src/text-decoder.js": "./src/text-decoder.browser.js", "./src/temp-dir.js": "./src/temp-dir.browser.js", "./src/path-join.js": "./src/path-join.browser.js", - "./test/files/glob-source.spec.js": false + "./test/files/glob-source.spec.js": false, + "@achingbrain/electron-fetch": false }, "repository": "github:ipfs/js-ipfs-utils", "scripts": { @@ -34,8 +35,9 @@ "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", - "any-signal": "^1.1.0", + "any-signal": "^2.1.0", "buffer": "^5.6.0", + "@achingbrain/electron-fetch": "^1.7.2", "err-code": "^2.0.0", "fs-extra": "^9.0.1", "is-electron": "^2.2.0", @@ -43,6 +45,8 @@ "it-glob": "0.0.8", "merge-options": "^2.0.0", "nanoid": "^3.1.3", + "native-abort-controller": "0.0.3", + "native-fetch": "^2.0.0", "node-fetch": "^2.6.0", "stream-to-it": "^0.2.0" }, diff --git a/src/fetch.js b/src/fetch.js new file mode 100644 index 0000000..3507138 --- /dev/null +++ b/src/fetch.js @@ -0,0 +1,10 @@ +'use strict' + +const { isElectronMain } = require('./env') + +if (isElectronMain) { + module.exports = require('@achingbrain/electron-fetch') +} else { + // use window.fetch if it is available, fall back to node-fetch if not + module.exports = require('native-fetch') +} diff --git a/src/http.js b/src/http.js index 6655e06..61225b2 100644 --- a/src/http.js +++ b/src/http.js @@ -1,16 +1,17 @@ /* eslint-disable no-undef */ 'use strict' -const fetch = require('node-fetch') +const { + default: fetch, + Request, + Headers +} = require('./fetch') const merge = require('merge-options').bind({ ignoreUndefined: true }) const { URL, URLSearchParams } = require('iso-url') const TextDecoder = require('./text-decoder') -const AbortController = require('abort-controller') +const AbortController = require('native-abort-controller') const anySignal = require('any-signal') -const Request = fetch.Request -const Headers = fetch.Headers - class TimeoutError extends Error { constructor () { super('Request timed out') diff --git a/test/http.spec.js b/test/http.spec.js index b79ea62..3c02951 100644 --- a/test/http.spec.js +++ b/test/http.spec.js @@ -5,7 +5,7 @@ const { expect } = require('aegir/utils/chai') const HTTP = require('../src/http') const toStream = require('it-to-stream') const delay = require('delay') -const AbortController = require('abort-controller') +const AbortController = require('native-abort-controller') const drain = require('it-drain') const all = require('it-all') const { isBrowser, isWebWorker } = require('../src/env')