2018-09-03 10:34:14 +02:00
[![banner ](https://raw.githubusercontent.com/oceanprotocol/art/master/github/repo-banner%402x.png )](https://oceanprotocol.com)
2018-09-06 10:01:57 +02:00
# squid-js
2018-09-03 10:34:14 +02:00
2018-09-07 14:38:42 +02:00
> 🦑 JavaScript client library for Ocean Protocol
2018-09-03 10:34:14 +02:00
> [oceanprotocol.com](https://oceanprotocol.com)
2018-09-10 12:14:40 +02:00
[![npm ](https://img.shields.io/npm/v/@oceanprotocol/squid.svg )](https://www.npmjs.com/package/@oceanprotocol/squid)
2018-09-06 10:01:57 +02:00
[![Travis (.com) ](https://img.shields.io/travis/com/oceanprotocol/squid-js.svg )](https://travis-ci.com/oceanprotocol/squid-js)
[![GitHub contributors ](https://img.shields.io/github/contributors/oceanprotocol/squid-js.svg )](https://github.com/oceanprotocol/squid-js/graphs/contributors)
2018-09-10 11:47:02 +02:00
[![Codacy Badge ](https://api.codacy.com/project/badge/Grade/8508313231b44b0997ec84898cd6f9db )](https://app.codacy.com/app/ocean-protocol/squid-js?utm_source=github.com& utm_medium=referral& utm_content=oceanprotocol/squid-js& utm_campaign=Badge_Grade_Settings)
2018-09-10 10:24:14 +02:00
[![js oceanprotocol ](https://img.shields.io/badge/js-oceanprotocol-7b1173.svg )](https://github.com/oceanprotocol/eslint-config-oceanprotocol)
[![Greenkeeper badge ](https://badges.greenkeeper.io/oceanprotocol/squid-js.svg )](https://greenkeeper.io/)
2018-09-03 10:34:14 +02:00
---
2018-09-06 10:01:57 +02:00
**🐲🦑 THERE BE DRAGONS AND SQUIDS. This is in alpha state and you can expect running into problems. If you run into them, please open up [a new issue ](https://github.com/oceanprotocol/squid-js/issues ). 🦑🐲**
2018-09-03 10:34:14 +02:00
---
## Table of Contents
2018-09-10 12:14:40 +02:00
- [Get started ](#get-started )
- [Development ](#development )
- [Production build ](#production-build )
- [npm releases ](#npm-releases )
2018-09-03 10:56:38 +02:00
- [License ](#license )
2018-09-03 10:34:14 +02:00
---
2018-09-06 16:58:39 +02:00
2018-09-10 12:14:40 +02:00
## Get started
Start by adding the package to your dependencies:
```bash
2018-10-18 17:36:55 +02:00
npm i @oceanprotocol/squid --save
2018-09-10 12:14:40 +02:00
```
2018-09-20 15:05:24 +02:00
The package exposes `Ocean` and `Logger` which you can import in your code like this:
2018-09-10 12:14:40 +02:00
```js
// ES6
2018-09-20 15:05:24 +02:00
import { Ocean, Logger } from '@oceanprotocol/squid'
2018-09-10 12:14:40 +02:00
// ES2015
2018-09-20 15:05:24 +02:00
const { Ocean, Logger } = require('@oceanprotocol/squid')
2018-09-10 12:14:40 +02:00
```
You can then connect to a running [Keeper ](https://github.com/oceanprotocol/keeper-contracts ) & [Provider ](https://github.com/oceanprotocol/provider ) instance, e.g.:
```js
2018-09-20 15:05:24 +02:00
const ocean = await new Ocean({nodeUri: 'http://localhost:8545', network: 'development', providerUri: 'http://localhost:5000'})
2018-09-10 12:14:40 +02:00
```
## Development
2018-09-06 16:58:39 +02:00
2018-09-06 17:37:11 +02:00
To start development you need to:
2018-09-06 16:58:39 +02:00
2018-09-10 12:14:40 +02:00
```bash
2018-09-03 10:51:02 +02:00
npm i
2018-09-06 16:58:39 +02:00
npm start
```
2018-09-06 17:37:11 +02:00
This will start a watcher for changes of the code.
2018-09-10 12:14:40 +02:00
### Production build
2018-09-06 16:58:39 +02:00
```bash
npm run build
2018-09-03 10:51:02 +02:00
```
2018-09-10 12:14:40 +02:00
### npm releases
2018-09-06 17:44:17 +02:00
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
```
2018-09-03 10:34:14 +02:00
## License
```
Copyright 2018 Ocean Protocol Foundation Ltd.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
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
2018-09-06 17:44:17 +02:00
limitations under the License.