squarelink
Version:
Squarelink's Web3 library
118 lines (79 loc) • 5.36 kB
Markdown
<p align="center">
<a href="https://squarelink.com/" target="_blank">
<img alt="Squarelink" src="https://squarelink.com/img/logo.png?v=2" width="450">
</a>
</p>
# Squarelink Web3 SDK
[](https://squarelink.com)
[](https://npmjs.org/package/squarelink)
[](https://t.me/squarelink)
[](https://github.com/Squarelink-Inc/Squarelink-Web3/blob/master/LICENSE.txt)
This is the Squarelink Web3 SDK which enables Squarelink enhancements to standard Web3 JSON RPC requests.
Check out the **[Squarelink Documentation](https://docs.squarelink.com)** for more information, quick-start guides, etc.
## Installation
### Node
```bash
$ npm install squarelink
```
### CDN
```html
<script src="https://squarelink.com/js/squarelink.min.js"></script>
```
## Usage
First, register your application at **[dev.squarelink.com](https://dev.squarelink.com)** to obtain your `CLIENT ID`
```javascript
import Web3 from 'web3'
import Squarelink from 'squarelink'
const sqlk = new Squarelink('<CLIENT ID>')
// Use callback or Promise
sqlk.getProvider(provider => {
const web3 = new Web3(provider)
// Use the web3 library as you would normally!
web3.currentProvider.enable()
})
```
### Configuration
`const sqlk = new Squarelink(clientId [, network][, opts])`
`Squarelink`-`Object` - Initializes a Squarelink Web3 Provider for you
- `clientId`-`String` - The Client ID provided to you when you register your DApp in the **[Squarelink Developer Console](https://dev.squarelink.com)**
- `network`-`String|Object` - Configures the RPC node you're connecting to. See **[a list of our available networks](https://docs.squarelink.com/#available-networks)**. Defaults to 'mainnet'.
- `opts` - `Object` - Pass additional options to the Squarelink SDK.
### Examples
```javascript
// connect to the Ropsten network
new Squarelink('<CLIENT ID>', 'ropsten')
```
```javascript
// connect to a custom private network
new Squarelink('<CLIENT ID>', {
url: 'https://localhost:8545',
chainId: 420
})
```
### Options (`opts`)
- `scope` - `Array` - Request additional scopes to use custom Squarelink functions.
- `useSync` - `Boolean` - See *getProviderSync* below for usage (default = false).
#### Available Scopes:
- `user` - Equivalent to all scopes below
- `user:name` - Access to read user's name
- `user:email` - Access to user's email address
- `user:security` - Access to read user's security settings
### Detecting Squarelink
```
web3.currentProvider.isSquarelink
```
### Additional Functions
- *Squarelink*.**getName()** - requires the `user` or `user:name` scope
- *Squarelink*.**getEmail()** - requires the `user` or `user:email` scope
- *Squarelink*.**getSecuritySettings()** - requires the `user` or `user:security` scope
### Initializing Squarelink Synchronously
The `getProvider` function fetches a list of our supported networks and their RPC endpoints from our API. This allows us to remotely switch RPC providers to ensure 100% uptime and remove faulty/compromised endpoints.
If you are unable to support callbacks/promises, you can use `getProviderSync` which uses hard-coded RPC endpoints. **NOTE**: *we cannot guarantee 100% uptime with this method.*
```javascript
const sqlk = new Squarelink('<CLIENT ID>', 'mainnet', { useSync: true })
const web3 = new Web(sqlk.getProviderSync())
```
## Documentation
**[https://docs.squarelink.com](https://docs.squarelink.com)**
## License
MIT