build(deps): bump deprecated ipfs-api@17.2.4 to ipfs-http-client@39.0.2

BREAKING CHANGE:

Related to #1985. Prior to Embark's minimum supported version of Node.js being
bumped to to 10.17.0, Embark was incompatible with any relatively recent
release of the `ipfs-http-client` package.

While *internal* changes are needed re: ipfs's `Buffer` export for
e.g. `embark_demo` to function correctly *(and this PR makes those changes)*,
Embark otherwise runs/tests okay.

Keep in mind #2033.

However, if a dApp author were to explicitly `require('ifps-api')` in the
front-end that wouldn't work as before; and swapping `"ipfs-http-client"` for
`"ipfs-api"` might also not be enough — there are API changes that dApp authors
would need to consider, regardless of Embark presently supplying the dependency
and EmbarkJS wrapping around it.

Closes #1994.
This commit is contained in:
Michael Bradley, Jr 2019-11-08 18:21:17 -06:00 committed by Michael Bradley
parent 08933dec90
commit 978e17daa1
9 changed files with 583 additions and 243 deletions

View File

@ -161,7 +161,7 @@ class Storage extends React.Component {
<React.Fragment>
<Alert color="warning">The node you are using does not support IPFS. If
you haven't explicitly disabled IPFS in <code>config/storage.js</code> then
please ensure <a href="https://github.com/ipfs/js-ipfs-api#cors"
please ensure <a href="https://github.com/ipfs/js-ipfs-http-client#cors"
target="_blank">CORS</a> is setup for the IPFS node.</Alert>
</React.Fragment>}

View File

@ -41,7 +41,7 @@
</div>
</div>
<div role="tabpanel" class="tab-pane" id="storage">
<div class="error alert alert-danger" role="alert">The node you are using does not support IPFS. Please ensure <a href="https://github.com/ipfs/js-ipfs-api#cors" target="_blank">CORS</a> is setup for the IPFS node.</div>
<div class="error alert alert-danger" role="alert">The node you are using does not support IPFS. Please ensure <a href="https://github.com/ipfs/js-ipfs-http-client#cors" target="_blank">CORS</a> is setup for the IPFS node.</div>
<div id="storage-controls">
<h3>Save text to IPFS</h3>

View File

@ -46,7 +46,7 @@ class VM {
// "embarkjs-swarm",
// "embarkjs-whisper",
// "eth-ens-namehash",
// "ipfs-api",
// "ipfs-http-client",
"rxjs",
"rxjs/operators",
// "web3",

View File

@ -133,7 +133,6 @@
"globule": "1.2.1",
"hosted-git-info": "2.7.1",
"http-proxy": "1.17.0",
"ipfs-api": "17.2.4",
"istanbul": "0.4.5",
"json-parse-better-errors": "1.0.2",
"lodash.clonedeep": "4.5.0",

View File

@ -46,7 +46,7 @@
"dependencies": {
"@babel/runtime-corejs3": "7.6.3",
"core-js": "3.3.5",
"ipfs-api": "17.2.4"
"ipfs-http-client": "39.0.2"
},
"devDependencies": {
"ajv": "6.10.2",

View File

@ -1,4 +1,4 @@
const IpfsApi = require('ipfs-api');
const IpfsHttpClient = require('ipfs-http-client');
const __embarkIPFS = {};
@ -10,7 +10,7 @@ __embarkIPFS.setProvider = function (options) {
try {
if (!options) {
self._config = options;
self._ipfsConnection = IpfsApi('localhost', '5001');
self._ipfsConnection = IpfsHttpClient('localhost', '5001');
self._getUrl = "http://localhost:8080/ipfs/";
} else {
const ipfsOptions = {host: options.host || options.server, protocol: 'http'};
@ -20,7 +20,7 @@ __embarkIPFS.setProvider = function (options) {
if (options.port && options.port !== 'false') {
ipfsOptions.port = options.port;
}
self._ipfsConnection = IpfsApi(ipfsOptions);
self._ipfsConnection = IpfsHttpClient(ipfsOptions);
self._getUrl = options.getUrl || "http://localhost:8080/ipfs/";
}
resolve(self);
@ -54,7 +54,7 @@ __embarkIPFS.saveText = function (text) {
if (!self._ipfsConnection) {
return reject(new Error(NoConnectionError));
}
self._ipfsConnection.add(self._ipfsConnection.Buffer.from(text), function (err, result) {
self._ipfsConnection.add(IpfsHttpClient.Buffer.from(text), function (err, result) {
if (err) {
return reject(err);
}
@ -96,7 +96,7 @@ __embarkIPFS.uploadFile = function (inputSelector) {
}
const reader = new FileReader();
reader.onloadend = function () {
const buffer = self._ipfsConnection.Buffer.from(reader.result);
const buffer = IpfsHttpClient.Buffer.from(reader.result);
self._ipfsConnection.add(buffer, function (err, result) {
if (err) {
return reject(err);
@ -121,7 +121,7 @@ __embarkIPFS.resolve = function (name, callback) {
this._ipfsConnection.name.resolve(name)
.then(res => {
callback(null, res.Path);
callback(null, res);
})
.catch(() => {
callback(name + " is not registered");
@ -140,7 +140,7 @@ __embarkIPFS.register = function(addr, callback) {
this._ipfsConnection.name.publish("/ipfs/" + addr)
.then(res => {
callback(null, res.Name);
callback(null, res.name);
})
.catch(() => {
callback(addr + " could not be registered");

View File

@ -53,7 +53,7 @@
"embark-utils": "^5.0.0-alpha.1",
"embarkjs": "^5.0.0-alpha.1",
"embarkjs-ipfs": "^5.0.0-alpha.1",
"ipfs-api": "17.2.4",
"ipfs-http-client": "39.0.2",
"shelljs": "0.8.3"
},
"devDependencies": {

View File

@ -1,5 +1,5 @@
import {__} from 'embark-i18n';
const IpfsApi = require('ipfs-api');
const IpfsHttpClient = require('ipfs-http-client');
const StorageProcessesLauncher = require('./storageProcessesLauncher.js');
import {buildUrlFromConfig, getJson} from 'embark-utils';
const UploadIPFS = require('./upload.js');
@ -39,7 +39,7 @@ class IPFS {
return;
}
this.setupIpfsApi();
this.setupIpfsHttpClient();
this.setupEmbarkJS();
this.events.request("storage:node:register", "ipfs", (readyCb) => {
@ -82,8 +82,8 @@ class IPFS {
});
}
async setupIpfsApi() {
this.events.request("runcode:whitelist", 'ipfs-api', () => {});
async setupIpfsHttpClient() {
this.events.request("runcode:whitelist", 'ipfs-http-client', () => {});
this.events.on("storage:started", this.registerIpfsObject.bind(this));
this.registerIpfsObject();
this.registerIpfsHelp();
@ -91,7 +91,7 @@ class IPFS {
async registerIpfsObject() {
const {host, port} = this.config;
let ipfs = IpfsApi(host, port);
let ipfs = IpfsHttpClient(host, port);
await this.events.request2("runcode:register", "ipfs", ipfs);
}

791
yarn.lock

File diff suppressed because it is too large Load Diff