setup github/npm releases

This commit is contained in:
Matthias Kretschmann 2018-09-06 17:44:17 +02:00
parent 41a876b196
commit 2f56090668
Signed by: m
GPG Key ID: 606EEEF3C479A91F
9 changed files with 44 additions and 9091 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
node_modules/
node_modules/
dist/

1
.npmignore Normal file
View File

@ -0,0 +1 @@
node_modules/

View File

@ -19,6 +19,7 @@
- [Get Started](#get-started)
- [Production Build](#production-build)
- [npm releases](#nopm-releases)
- [License](#license)
---
@ -40,6 +41,40 @@ This will start a watcher for changes of the code.
npm run build
```
## npm releases
For a new **patch release**, execute on the machine where you're logged into your npm account:
```bash
npm run release
```
In case you have 2FA setup on npm.js, pass a code as One Time Password:
```bash
npm run release --otp <yourcode>
```
Command is powered by [`release-it`](https://github.com/webpro/release-it) package, defined in the `package.json`.
That's what the command does without any user interaction:
- create release commit by updating version in `package.json`
- create tag for that release commit
- push commit & tag
- create a new release on GitHub, with change log auto-generated from commit messages
- publish to npm as a new release
If you want to create a **minor** or **major release**, use these commands:
```bash
npm run release-minor
```
```bash
npm run release-major
```
## License
```
@ -55,4 +90,4 @@ Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.

View File

@ -1,74 +0,0 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _truffleContract = _interopRequireDefault(require("truffle-contract"));
var contracts = [];
var ContractLoader =
/*#__PURE__*/
function () {
function ContractLoader() {
(0, _classCallCheck2.default)(this, ContractLoader);
}
(0, _createClass2.default)(ContractLoader, null, [{
key: "_doLoad",
value: function () {
var _doLoad2 = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee(what, where, provider) {
var artifact, contract;
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
// console.log("Loading", what, "from", where)
/* eslint-disable-next-line */
artifact = require("@oceanprotocol/keeper-contracts/artifacts/".concat(what, ".").concat(where));
contract = (0, _truffleContract.default)(artifact);
contract.setProvider(provider);
_context.next = 5;
return contract.at(artifact.address);
case 5:
contracts[what] = _context.sent;
return _context.abrupt("return", contracts[what]);
case 7:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function _doLoad(_x, _x2, _x3) {
return _doLoad2.apply(this, arguments);
};
}()
}, {
key: "load",
value: function load(what, where, provider) {
return contracts[what] || ContractLoader._doLoad(what, where, provider);
}
}]);
return ContractLoader;
}();
exports.default = ContractLoader;

62
dist/ocean-agent.js vendored
View File

@ -1,62 +0,0 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
/* global fetch */
var OceanAgent =
/*#__PURE__*/
function () {
function OceanAgent(connectionUrl) {
(0, _classCallCheck2.default)(this, OceanAgent);
this.assetsUrl = connectionUrl + '/assets';
}
(0, _createClass2.default)(OceanAgent, [{
key: "getAssetsMetadata",
value: function getAssetsMetadata() {
return fetch(this.assetsUrl + '/metadata', {
method: 'GET'
}).then(function (res) {
return res.json();
}).then(function (data) {
return JSON.parse(data);
});
}
}, {
key: "publishDataAsset",
value: function publishDataAsset(asset) {
return fetch(this.assetsUrl + '/metadata', {
method: 'POST',
body: JSON.stringify(asset),
headers: {
'Content-type': 'application/json'
}
}).then(function (response) {
console.log('Success:', response);
if (response.ok) {
console.log('Success:', response);
return true;
}
console.log('Failed: ', response.status, response.statusText);
return false; // throw new Error(response.statusText ? response.statusText : `publish asset failed with status ${response.status}`)
}).catch(function (error) {
console.log("Publish asset to ocean database could not be completed: ".concat(error.message()));
return false;
});
}
}]);
return OceanAgent;
}();
exports.default = OceanAgent;

390
dist/ocean-keeper.js vendored
View File

@ -1,390 +0,0 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _web = _interopRequireDefault(require("web3"));
var _contractLoader = _interopRequireDefault(require("./contractLoader"));
var DEFAULT_GAS = 300000;
var OceanKeeper =
/*#__PURE__*/
function () {
function OceanKeeper(uri, network) {
(0, _classCallCheck2.default)(this, OceanKeeper);
var web3Provider = new _web.default.providers.HttpProvider(uri);
this.web3 = new _web.default(web3Provider);
this.defaultGas = DEFAULT_GAS;
this.network = network || 'development';
}
(0, _createClass2.default)(OceanKeeper, [{
key: "initContracts",
value: function () {
var _initContracts = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return _contractLoader.default.load('OceanToken', this.network, this.web3.currentProvider);
case 2:
this.oceanToken = _context.sent;
_context.next = 5;
return _contractLoader.default.load('OceanMarket', this.network, this.web3.currentProvider);
case 5:
this.oceanMarket = _context.sent;
_context.next = 8;
return _contractLoader.default.load('OceanAuth', this.network, this.web3.currentProvider);
case 8:
this.oceanAuth = _context.sent;
return _context.abrupt("return", {
oceanToken: this.oceanToken,
oceanMarket: this.oceanMarket,
oceanAuth: this.oceanAuth
});
case 10:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
return function initContracts() {
return _initContracts.apply(this, arguments);
};
}() // web3 wrappers
}, {
key: "sign",
value: function sign(accountAddress, message) {
return this.web3.eth.sign(accountAddress, message);
}
}, {
key: "getMessageHash",
value: function getMessageHash(message) {
return this.web3.sha3("\x19Ethereum Signed Message:\n".concat(message.length).concat(message));
} // call functions (costs no gas)
}, {
key: "checkAsset",
value: function checkAsset(assetId) {
return this.oceanMarket.checkAsset(assetId);
}
}, {
key: "getBalance",
value: function getBalance(accountAddress) {
return this.oceanToken.balanceOf.call(accountAddress);
}
}, {
key: "getAssetPrice",
value: function getAssetPrice(assetId) {
return this.oceanMarket.getAssetPrice(assetId).then(function (price) {
return price.toNumber();
});
}
}, {
key: "getOrderStatus",
value: function getOrderStatus(orderId) {
return this.oceanAuth.statusOfAccessRequest(orderId);
}
}, {
key: "verifyOrderPayment",
value: function verifyOrderPayment(orderId) {
return this.oceanMarket.verifyPaymentReceived(orderId);
}
}, {
key: "getEncryptedAccessToken",
value: function getEncryptedAccessToken(orderId, senderAddress) {
return this.oceanAuth.getEncryptedAccessToken(orderId, {
from: senderAddress
});
}
}, {
key: "getConsumerOrders",
value: function () {
var _getConsumerOrders = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee3(consumerAddress) {
var _this = this;
var accessConsentEvent, _resolve, _reject, promise, getEvents, events, orders;
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
accessConsentEvent = this.oceanAuth.AccessConsentRequested({
_consumer: consumerAddress
}, {
fromBlock: 0,
toBlock: 'latest'
});
_resolve = null;
_reject = null;
promise = new Promise(function (resolve, reject) {
_resolve = resolve;
_reject = reject;
});
getEvents = function getEvents() {
accessConsentEvent.get(function (error, logs) {
if (error) {
_reject(error);
throw new Error(error);
} else {
_resolve(logs);
}
});
return promise;
};
_context3.next = 7;
return getEvents().then(function (events) {
return events;
});
case 7:
events = _context3.sent;
// let orders = await this.buildOrdersFromEvents(events, consumerAddress).then((result) => result)
orders = events.filter(function (obj) {
return obj.args._consumer === consumerAddress;
}).map(
/*#__PURE__*/
function () {
var _ref = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee2(event) {
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.t0 = _objectSpread2.default;
_context2.t1 = {};
_context2.t2 = event.args;
_context2.t3 = event.args._timeout.toNumber();
_context2.next = 6;
return _this.getOrderStatus(event.args._id).then(function (status) {
return status.toNumber();
});
case 6:
_context2.t4 = _context2.sent;
_context2.next = 9;
return _this.verifyOrderPayment(event.args._id).then(function (received) {
return received;
});
case 9:
_context2.t5 = _context2.sent;
_context2.t6 = {
timeout: _context2.t3,
status: _context2.t4,
paid: _context2.t5,
key: null
};
return _context2.abrupt("return", (0, _context2.t0)(_context2.t1, _context2.t2, _context2.t6));
case 12:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
return function (_x2) {
return _ref.apply(this, arguments);
};
}());
console.debug('got orders: ', orders);
return _context3.abrupt("return", orders);
case 11:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
return function getConsumerOrders(_x) {
return _getConsumerOrders.apply(this, arguments);
};
}() // Transactions with gas cost
}, {
key: "requestTokens",
value: function requestTokens(senderAddress, numTokens) {
return this.oceanMarket.requestTokens(numTokens, {
from: senderAddress
});
}
}, {
key: "registerDataAsset",
value: function () {
var _registerDataAsset = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee4(name, description, price, publisherAddress) {
var assetId, result;
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return this.oceanMarket.generateId(name + description);
case 2:
assetId = _context4.sent;
_context4.next = 5;
return this.oceanMarket.register(assetId, price, {
from: publisherAddress,
gas: this.defaultGas
});
case 5:
result = _context4.sent;
console.log('registered: ', result);
return _context4.abrupt("return", assetId);
case 8:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
return function registerDataAsset(_x3, _x4, _x5, _x6) {
return _registerDataAsset.apply(this, arguments);
};
}()
}, {
key: "sendPayment",
value: function () {
var _sendPayment = (0, _asyncToGenerator2.default)(
/*#__PURE__*/
_regenerator.default.mark(function _callee5(assetId, order, publisherAddress, senderAddress) {
var assetPrice;
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return this.oceanMarket.getAssetPrice(assetId).then(function (price) {
return price.toNumber();
});
case 2:
assetPrice = _context5.sent;
this.oceanMarket.sendPayment(order.id, publisherAddress, assetPrice, order.timeout, {
from: senderAddress,
gas: 2000000
});
case 4:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
return function sendPayment(_x7, _x8, _x9, _x10) {
return _sendPayment.apply(this, arguments);
};
}()
}, {
key: "cancelAccessRequest",
value: function cancelAccessRequest(orderId, senderAddress) {
return this.oceanAuth.cancelAccessRequest(orderId, {
from: senderAddress
});
}
}, {
key: "orchestrateResourcePurchase",
value: function orchestrateResourcePurchase(assetId, publisherId, price, privateKey, publicKey, timeout, senderAddress, initialRequestEventHandler, accessCommittedEventHandler, tokenPublishedEventHandler) {
var _this2 = this;
var oceanToken = this.oceanToken,
oceanMarket = this.oceanMarket,
oceanAuth = this.oceanAuth; // Allow OceanMarket contract to transfer funds on the consumer's behalf
oceanToken.approve(oceanMarket.address, price, {
from: senderAddress,
gas: 2000000
}); // Submit the access request
oceanAuth.initiateAccessRequest(assetId, publisherId, publicKey, timeout, {
from: senderAddress,
gas: 1000000
});
var resourceFilter = {
_resourceId: assetId,
_consumer: senderAddress
};
var initRequestEvent = oceanAuth.AccessConsentRequested(resourceFilter);
var order = {};
this._listenOnce(initRequestEvent, 'AccessConsentRequested', function (result, error) {
order = initialRequestEventHandler(result, error);
var requestIdFilter = {
_id: order.id
};
var accessCommittedEvent = oceanAuth.AccessRequestCommitted(requestIdFilter);
var tokenPublishedEvent = oceanAuth.EncryptedTokenPublished(requestIdFilter);
_this2._listenOnce(accessCommittedEvent, 'AccessRequestCommitted', function (result, error) {
accessCommittedEventHandler(result, order, error);
});
_this2._listenOnce(tokenPublishedEvent, 'EncryptedTokenPublished', function (result, error) {
tokenPublishedEventHandler(result, order, error);
});
});
return order;
} // Helper functions (private)
}, {
key: "_listenOnce",
value: function _listenOnce(event, eventName, callback) {
event.watch(function (error, result) {
event.stopWatching();
if (error) {
console.log("Error in keeper ".concat(eventName, " event: "), error);
}
callback(result, error);
});
}
}]);
return OceanKeeper;
}();
exports.default = OceanKeeper;

23
dist/squid.js vendored
View File

@ -1,23 +0,0 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "OceanAgent", {
enumerable: true,
get: function get() {
return _oceanAgent.default;
}
});
Object.defineProperty(exports, "OceanKeeper", {
enumerable: true,
get: function get() {
return _oceanKeeper.default;
}
});
var _oceanAgent = _interopRequireDefault(require("./ocean-agent"));
var _oceanKeeper = _interopRequireDefault(require("./ocean-keeper"));

8539
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -6,7 +6,11 @@
"scripts": {
"test": "eslint ./src",
"start": "babel src --watch --out-dir dist",
"build": "babel src --out-dir dist"
"build": "babel src --out-dir dist",
"release": "./node_modules/release-it/bin/release-it.js --src.tagName='v%s' --github.release --npm.publish --non-interactive",
"release-minor": "./node_modules/release-it/bin/release-it.js minor --src.tagName='v%s' --github.release --npm.publish --non-interactive",
"release-major": "./node_modules/release-it/bin/release-it.js major --src.tagName='v%s' --github.release --npm.publish --non-interactive",
"prepublishOnly": "npm run build"
},
"repository": {
"type": "git",