Nifty Pony Merchandise

    @oceanprotocol/squid
    TypeScript icon, indicating that this package has built-in type declarations

    2.2.0 • Public • Published

    banner

    Squid-js

    🦑 JavaScript client library for Ocean Protocol oceanprotocol.com

    npm Travis (.com) GitHub contributors Maintainability Test Coverage js oceanprotocol Greenkeeper badge


    🐲🦑 THERE COULD BE DRAGONS AND SQUIDS. If you run into problems, please open up a new issue. 🦑🐲



    Get started

    Start by adding the package to your dependencies:

    npm i @oceanprotocol/squid

    The package exposes Ocean and Logger which you can import in your code like this:

    // ES6
    import { Ocean, Logger } from '@oceanprotocol/squid'
    
    // ES2015
    const { Ocean, Logger } = require('@oceanprotocol/squid')

    You can then connect to running Keeper, Aquarius, Brizo instances, e.g.:

    const ocean: Ocean = await Ocean.getInstance({
        // the node of the blockchain to connect to, could also be infura
        nodeUri: 'http://localhost:8545',
        // the uri of aquarius
        aquariusUri: 'http://localhost:5000',
        // the uri of brizo
        brizoUri: 'http://localhost:8030',
        // address that brizo uses
        brizoAddress: '0x00bd138abd70e2f00903268f3db08f2d25677c9e'
        // the uri to the parity node you want to use for encryption and decryption
        parityUri: 'http://localhost:9545',
        // the uri of the secret store that holds the keys
        secretStoreUri: 'http://localhost:12001'
    })

    For an overview of endpoint configurations making up various Ocean networks, please refer to .env.local.example from commons.

    Optionally, you can initialize an Aquarius connection without relying on the rest of Ocean to be loaded. This is useful for outputting asset metadata stored in Aquarius without the need to configure Web3 and all other Ocean Protocol network connections.

    import { Ocean, Aquarius, Logger } from 'squid'
    
    const aquarius = new Aquarius('http://localhost:5000', Logger)
    const asset = aquarius.retrieveDDO('did:op:e6fda48e8d814d5d9655645aac3c046cc87528dbc1a9449799e579d7b83d1360')
    
    const ocean = await Ocean.getInstance({ ... })
    // Aquarius will still be available under ocean.aquarius, just later
    const asset = ocean.aquarius.retrieveDDO('did:op:e6fda48e8d814d5d9655645aac3c046cc87528dbc1a9449799e579d7b83d1360')

    Examples

    You can see how squid-js is used on:

    Documentation

    Docs: squid-js API Reference →

    Alternatively, you can generate the raw TypeDoc documentation locally by running:

    # will output to ./doc folder
    npm run doc

    Migration Guide

    Instructions on how to migrate between breaking versions:

    Development

    To start development you need to:

    npm i
    npm start

    Testing

    Unit Tests

    For unit tests, running ganache-cli is required before starting the tests. It's best to start it on a different port so it doesn't clash with anything running in Barge:

    npm i -g ganache-cli
    ganache-cli --port 18545
    export ETH_PORT=18545

    To start unit tests, run:

    npm test

    or to watch for changes:

    npm run test:watch

    to create code coverage information:

    npm run test:cover

    Integration Tests

    A locally running Ocean network is required. To do so before running the tests, use Barge:

    git clone https://github.com/oceanprotocol/barge
    cd barge
    
    ./start_ocean.sh --no-commons

    In another terminal window, run this script and export the seed phrase:

    # copies the contract artifacts once the local Ocean network is up and running
    ./scripts/keeper.sh
    
    # export Spree accounts seed phrase
    export SEED_WORDS="taxi music thumb unique chat sand crew more leg another off lamp"

    Once everything is up, run the integration tests:

    # integration tests work with the spree network and the SEED_WORDS in previous step are required.
    # Make sure to reset `ETH_PORT` to 8545 (or whatever port is used in `spree1)
    npm run test:integration

    to generate code coverage information during test, run:

    npm run test:integration:cover

    Code Style

    Project follows eslint-config-oceanprotocol. For linting and auto-formatting you can use:

    # lint all ts with eslint
    npm run lint
    
    # auto format all ts with prettier, taking all configs into account
    npm run format

    Production build

    To create a production build:

    npm run build

    Releases

    From a clean master branch you can run any release task doing the following:

    • bumps the project version in package.json, package-lock.json
    • auto-generates and updates the CHANGELOG.md file from commit messages
    • creates a Git tag
    • commits and pushes everything
    • creates a GitHub release with commit messages as description
    • Git tag push will trigger Travis to do a npm release

    You can execute the script using arguments to bump the version accordingly:

    • To bump a patch version: npm run release
    • To bump a minor version: npm run release minor
    • To bump a major version: npm run release major

    For the GitHub releases steps a GitHub personal access token, exported as GITHUB_TOKEN is required. Setup

    License

    Copyright 2019 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
    limitations under the License.
    

    Keywords

    none

    Install

    npm i @oceanprotocol/squid

    DownloadsWeekly Downloads

    374

    Version

    2.2.0

    License

    Apache-2.0

    Unpacked Size

    54.8 MB

    Total Files

    229

    Last publish

    Collaborators

    • alexbigchaindb
    • leucothia
    • kremalicious