spfi-cores
v2.2.1
Published
- [**Contract api**](https://docs.api.spin.fi/#introduction)
Downloads
1
Readme
Links
@spinfi/node
Spin node create spin api for node
How to install
yarn add @spinfi/node
How to init
const {spin} = await createApi({
accountId: 'some account id value',
privateKey: 'some private key value',
});
@spinfi/core
Spin core create spin api instace that work exactly in browser and node.js
const response = await spin.depositFt(request);
Websocket
Websocket property provide functions to call spin
off-chain methods by websocket
Websocket method divided in two types:
- method (similar to async call with callback)
- subscription
1. Method
Method require some parameters in json rpc
format and return some data with onOk
callback.
If websocket return not expected data format - api will ignore it. If websocket return correct
message without connection/js error, but with error field - data handled by onError
callback
How to use
const unsubscribe = spin.ping({
onOk: (data) => console.log(data),
onError: (error) => console.error(error),
});
2. Subscription
Subscription its like method but more complex. It work like that:
- subscription send method
sub
and createchannel
to server - if
sub
ok (channel created) then api create listners for websocket - if new websocket message its for
channel
then api call corresponding subscription callbacks
const unsubscribe = spin.listenOrders(request, {
onSubOk: (data) => console.log(data),
onSubError: (error) => console.error(error),
});
Channel - its stream of websocket message that have same subscription id
and have some format.
Messages in channel maybe different. Some channel have first uniq message and some not.
First uniq message in channel its state
and other messages its notification
Websoket message match with channel by json rpc
id created when subscription called and subscription id
created by server
const unsubscribe = spin.listenOrders(request, {
onNotifyOk: (data) => console.log(data),
onNotifyError: (error) => console.error(error),
onStateOk: (data) => console.log(data),
onStateError: (error) => console.error(error),
});
Some times its needed unsubscribe from subscription. It work like that:
- subscription send method
unsub
and get response - if response is
true
thenchannel
is closed - internal
rxjs
subscriptions its also unsubscribed - if response is
false
thenchannel
not closed onUnsubError
handlefalse
branch
const unsubscribe = spin.listenOrders(request, {
onSubError: (error) => console.error(error),
onUnsubError: (error) => console.error(error),
});