defined-realtime-websocket
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -1,3 +0,3 @@ | ||
import type { WebSocketFactory } from "./types"; | ||
import type { WebSocketFactory } from './types'; | ||
declare const getWebSocketBrowser: () => WebSocketFactory | undefined; | ||
export { getWebSocketBrowser, }; | ||
export { getWebSocketBrowser }; |
@@ -11,2 +11,2 @@ export declare const DEFAULT_HOST_URI = "realtime.api.defined.fi"; | ||
* | ||
*/ | ||
*/ |
@@ -49,2 +49,24 @@ 'use strict'; | ||
}; | ||
var getDefinedErc20TokenSwapUpdateGql = function getDefinedErc20TokenSwapUpdateGql(contractAddressOrPairAddress, networkId) { | ||
var filterParams = []; | ||
if (contractAddressOrPairAddress && networkId) { | ||
// Note: address must be lowercase | ||
filterParams.push(['pairId', contractAddressOrPairAddress.toLowerCase() + ':' + networkId]); | ||
} | ||
var whereClause = ""; | ||
var subclauses = filterParams.map(generateSubClause); | ||
if (subclauses.length > 0) { | ||
whereClause = "(" + subclauses.join(',') + ")"; | ||
} | ||
return "\n subscription UpdateAggregateBatch {\n onUpdateAggregateBatch" + whereClause + " {\n eventSortKey\n networkId\n pairAddress\n pairId\n timestamp\n aggregates {\n r1 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r5 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r15 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r30 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r60 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r240 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r720 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r1D {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r7D {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n }\n }\n"; | ||
}; | ||
var getDefinedErc20TokenChartUpdateGql = function getDefinedErc20TokenChartUpdateGql(contractAddressOrPairAddress, networkId) { | ||
var filterParams = []; | ||
if (contractAddressOrPairAddress && networkId) { | ||
// Note: address must be lowercase | ||
filterParams.push(['pairId', contractAddressOrPairAddress.toLowerCase() + ':' + networkId]); | ||
} | ||
filterParams.map(generateSubClause); | ||
return "\n subscription CreateEvents {\n onCreateEvents(id: $id) {\n events {\n address\n baseTokenPrice\n blockHash\n blockNumber\n eventDisplayType\n eventType\n logIndex\n id\n liquidityToken\n maker\n networkId\n timestamp\n token0SwapValueUsd\n token0ValueBase\n token1SwapValueUsd\n token1ValueBase\n transactionHash\n transactionIndex\n data {\n ... on MintEventData {\n amount0\n amount1\n amount0Shifted\n amount1Shifted\n tickLower\n tickUpper\n type\n }\n ... on BurnEventData {\n amount0\n amount1\n amount0Shifted\n amount1Shifted\n tickLower\n tickUpper\n type\n }\n ... on SwapEventData {\n amount0\n amount0In\n amount0Out\n amount1\n amount1In\n amount1Out\n amountNonLiquidityToken\n priceBaseToken\n priceBaseTokenTotal\n priceUsd\n priceUsdTotal\n tick\n type\n }\n }\n }\n address\n id\n networkId\n }\n }\n"; | ||
}; | ||
@@ -645,5 +667,13 @@ var prefix = 'Invariant failed'; | ||
this.subscribeToTokenPriceUpdates = function (subscriptionOptions, sink) { | ||
var gql = getDefinedNftSaleSubscriptionGql(subscriptionOptions.contractAddress, subscriptionOptions.chainId); | ||
var gql = getDefinedErc20TokenPriceUpdateGql(subscriptionOptions.contractAddress, subscriptionOptions.chainId); | ||
return _this.subscribe(gql, sink); | ||
}; | ||
this.subscribeToTokenChartUpdates = function (subscriptionOptions, sink) { | ||
var gql = getDefinedErc20TokenChartUpdateGql(subscriptionOptions.contractAddressOrPaidAddress, subscriptionOptions.chainId); | ||
return _this.subscribe(gql, sink); | ||
}; | ||
this.subscribeToTokenSwapUpdates = function (subscriptionOptions, sink) { | ||
var gql = getDefinedErc20TokenSwapUpdateGql(subscriptionOptions.contractAddressOrPaidAddress, subscriptionOptions.chainId); | ||
return _this.subscribe(gql, sink); | ||
}; | ||
this.getWebSocketAuthenticatedConnectionString = function () { | ||
@@ -677,3 +707,5 @@ var encodedApiKeyHeader = encodeApiKeyToWebsocketAuthHeader(_this.apiKey, _this.hostUrl); | ||
exports.encodeApiKeyToWebsocketAuthHeader = encodeApiKeyToWebsocketAuthHeader; | ||
exports.getDefinedErc20TokenChartUpdateGql = getDefinedErc20TokenChartUpdateGql; | ||
exports.getDefinedErc20TokenPriceUpdateGql = getDefinedErc20TokenPriceUpdateGql; | ||
exports.getDefinedErc20TokenSwapUpdateGql = getDefinedErc20TokenSwapUpdateGql; | ||
exports.getDefinedNftSaleSubscriptionGql = getDefinedNftSaleSubscriptionGql; | ||
@@ -680,0 +712,0 @@ exports.getDefinedWsWebsocketUrl = getDefinedWsWebsocketUrl; |
@@ -1,2 +0,2 @@ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("uuid"),e=function(t){var e=t[0],n=t[1],r=e+': "'+n+'"';return"number"==typeof n&&(r=e+": "+n),r},n=function(t,n){var r=[];t&&r.push(["address",t.toLowerCase()]),n&&r.push(["networkId",parseInt(n.toString(10),10)]);var o="",i=r.map(e);return i.length>0&&(o="("+i.join(",")+")"),"\nsubscription NftSaleEventSubscription {\n onCreateNftEvents"+o+" {\n address\n id\n networkId\n events {\n id\n tokenId\n aggregatorAddress\n blockNumber\n contractAddress\n eventType\n exchangeAddress\n data {\n buyHash\n maker\n metadata\n price\n sellHash\n taker\n type\n }\n taker\n timestamp\n numberOfTokens\n transactionHash\n logIndex\n maker\n networkId\n totalPriceNetworkBaseToken\n totalPriceUsd\n transactionIndex\n individualPrice\n individualPriceUsd\n individualPriceNetworkBaseToken\n paymentTokenAddress\n poolAddress\n sortKey\n totalPrice\n }\n }\n}\n"};function r(t,e){if(!t)throw new Error("Invariant failed")}var o="realtime.api.defined.fi",i=function(t){try{return btoa(t)}catch(e){return Buffer.from(t).toString("base64")}},a=function(t){if(t)return t;var e,n=(e=void 0,"undefined"!=typeof WebSocket?e=WebSocket:"undefined"!=typeof MozWebSocket?e=MozWebSocket:"undefined"!=typeof global?e=global.WebSocket||global.MozWebSocket:"undefined"!=typeof window?e=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(e=self.WebSocket||self.MozWebSocket),e);return n||("undefined"==typeof window?require("ws"):(n||r(!1),n))},c=function(t,e){return void 0===e&&(e="wss://realtime.api.defined.fi/graphql/realtime"),e+"?header="+t+"&payload=e30="},s=function(t,e){return void 0===e&&(e=o),i('{"host": "'+e+'", "Authorization": "'+t+'" }')};function u(){u=function(){return t};var t={},e=Object.prototype,n=e.hasOwnProperty,r=Object.defineProperty||function(t,e,n){t[e]=n.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function s(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,n){return t[e]=n}}function l(t,e,n,o){var i=Object.create((e&&e.prototype instanceof h?e:h).prototype),a=new z(o||[]);return r(i,"_invoke",{value:L(t,n,a)}),i}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}t.wrap=l;var d={};function h(){}function p(){}function v(){}var y={};s(y,i,(function(){return this}));var g=Object.getPrototypeOf,w=g&&g(g(P([])));w&&w!==e&&n.call(w,i)&&(y=w);var m=v.prototype=h.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function S(t,e){function o(r,i,a,c){var s=f(t[r],t,i);if("throw"!==s.type){var u=s.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){o("next",t,a,c)}),(function(t){o("throw",t,a,c)})):e.resolve(l).then((function(t){u.value=t,a(u)}),(function(t){return o("throw",t,a,c)}))}c(s.arg)}var i;r(this,"_invoke",{value:function(t,n){function r(){return new e((function(e,r){o(t,n,e,r)}))}return i=i?i.then(r,r):r()}})}function L(t,e,n){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(n.method=o,n.arg=i;;){var a=n.delegate;if(a){var c=k(a,n);if(c){if(c===d)continue;return c}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=f(t,e,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===d)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function k(t,e){var n=e.method,r=t.iterator[n];if(void 0===r)return e.delegate=null,"throw"===n&&t.iterator.return&&(e.method="return",e.arg=void 0,k(t,e),"throw"===e.method)||"return"!==n&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+n+"' method")),d;var o=f(r,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,d;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,d):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,d)}function x(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function E(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function z(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(x,this),this.reset(!0)}function P(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:W}}function W(){return{value:void 0,done:!0}}return p.prototype=v,r(m,"constructor",{value:v,configurable:!0}),r(v,"constructor",{value:p,configurable:!0}),p.displayName=s(v,c,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===p||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,v):(t.__proto__=v,s(t,c,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},b(S.prototype),s(S.prototype,a,(function(){return this})),t.AsyncIterator=S,t.async=function(e,n,r,o,i){void 0===i&&(i=Promise);var a=new S(l(e,n,r,o),i);return t.isGeneratorFunction(n)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},b(m),s(m,c,"Generator"),s(m,i,(function(){return this})),s(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},t.values=P,z.prototype={constructor:z,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(n,r){return a.type="throw",a.arg=t,e.next=n,r&&(e.method="next",e.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),s=n.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),d},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),E(n),d}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;E(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,n){return this.delegate={iterator:P(t),resultName:e,nextLoc:n},"next"===this.method&&(this.arg=void 0),d}},t}function l(t,e,n,r,o,i,a){try{var c=t[i](a),s=c.value}catch(t){return void n(t)}c.done?e(s):Promise.resolve(s).then(r,o)}function f(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var i=t.apply(e,n);function a(t){l(i,r,o,a,c,"next",t)}function c(t){l(i,r,o,a,c,"throw",t)}a(void 0)}))}}exports.DefinedRealtimeClient=function(e,i){var l=this;this.apiKey=void 0,this.wsFactory=void 0,this.hostUrl=o,this.wsLazySingleton=void 0,this.getWebSocketUrl=function(){var t=s(l.apiKey);return c(t)},this.disconnect=f(u().mark((function t(){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise((function(t){var e,n,r;if(!l.wsLazySingleton)return t(!0);null==(e=l.wsLazySingleton)||e.close(),3!==(null==(n=l.wsLazySingleton)?void 0:n.readyState)?null==(r=l.wsLazySingleton)||r.addEventListener("close",(function(e){t(!0)})):t(!0)})));case 1:case"end":return t.stop()}}),t)}))),this.connect=f(u().mark((function t(){return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",new Promise((function(t){var e,n,r;1===(null==(e=l.wsLazySingleton)?void 0:e.readyState)&&t(l.wsLazySingleton),l.wsLazySingleton||l._initDefinedFiWebSocket(),1!==(null==(n=l.wsLazySingleton)?void 0:n.readyState)?null==(r=l.wsLazySingleton)||r.addEventListener("open",(function(e){t(l.wsLazySingleton)})):t(l.wsLazySingleton)})));case 1:case"end":return t.stop()}}),t)}))),this.subscribe=function(){var e=f(u().mark((function e(n,r){var o,i,a,c,s;return u().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l.connect();case 2:return i=t.v4(),a=JSON.stringify({query:n,variables:null}),c={id:i,payload:{data:a,extensions:{authorization:{host:l.hostUrl,Authorization:l.apiKey}}},type:"start"},s=function(t){try{var e=JSON.parse(t.data);if(!e.id)return void console.warn("Unrecognized websocket message",e.payload.errors);if(e.id!==i)return;if("error"===e.type)return console.log("Error with subscription "+i,e.payload.errors),void(null==r.error||r.error(e));if("start_ack"===e.type)return;return void r.next(e.payload.data)}catch(t){throw t}},null==(o=l.wsLazySingleton)||o.addEventListener("message",s),l.wsLazySingleton.send(JSON.stringify(c)),e.abrupt("return",(function(){var t;null==(t=l.wsLazySingleton)||t.removeEventListener("message",s)}));case 10:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),this.subscribeToNftSales=function(t,e){var r=n(t.contractAddress,t.chainId);return l.subscribe(r,e)},this.subscribeToTokenPriceUpdates=function(t,e){var r=n(t.contractAddress,t.chainId);return l.subscribe(r,e)},this.getWebSocketAuthenticatedConnectionString=function(){var t=s(l.apiKey,l.hostUrl);return c(t)},this._initDefinedFiWebSocket=function(){if(l.wsLazySingleton)return l.wsLazySingleton;var t=l.getWebSocketAuthenticatedConnectionString();return l.wsLazySingleton=new l.wsFactory(t,"graphql-ws"),l.wsLazySingleton},this.apiKey=e,this.apiKey||r(!1),this.wsFactory=a(),!1===(null==i?void 0:i.lazyLoadWebSocketConnection)&&this._initDefinedFiWebSocket(),null!=i&&i.hostUrl&&(this.hostUrl=i.hostUrl)},exports.btoaIsomorphic=i,exports.encodeApiKeyToWebsocketAuthHeader=s,exports.getDefinedErc20TokenPriceUpdateGql=function(t,n){var r=[];t&&r.push(["address",t.toLowerCase()]),n&&r.push(["networkId",parseInt(n.toString(10),10)]);var o="",i=r.map(e);return i.length>0&&(o="("+i.join(",")+")"),"\nsubscription UpdatePrice {\n onUpdatePrice"+o+" {\n address\n networkId\n priceUsd\n timestamp\n }\n }\n"},exports.getDefinedNftSaleSubscriptionGql=n,exports.getDefinedWsWebsocketUrl=c,exports.getIsomorphicWebSocket=a,exports.sleep=function(t){return new Promise((function(e,n){setTimeout((function(){e(null)}),t)}))}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var n=require("uuid"),t=function(n){var t=n[0],e=n[1],r=t+': "'+e+'"';return"number"==typeof e&&(r=t+": "+e),r},e=function(n,e){var r=[];n&&r.push(["address",n.toLowerCase()]),e&&r.push(["networkId",parseInt(e.toString(10),10)]);var o="",i=r.map(t);return i.length>0&&(o="("+i.join(",")+")"),"\nsubscription NftSaleEventSubscription {\n onCreateNftEvents"+o+" {\n address\n id\n networkId\n events {\n id\n tokenId\n aggregatorAddress\n blockNumber\n contractAddress\n eventType\n exchangeAddress\n data {\n buyHash\n maker\n metadata\n price\n sellHash\n taker\n type\n }\n taker\n timestamp\n numberOfTokens\n transactionHash\n logIndex\n maker\n networkId\n totalPriceNetworkBaseToken\n totalPriceUsd\n transactionIndex\n individualPrice\n individualPriceUsd\n individualPriceNetworkBaseToken\n paymentTokenAddress\n poolAddress\n sortKey\n totalPrice\n }\n }\n}\n"},r=function(n,e){var r=[];n&&r.push(["address",n.toLowerCase()]),e&&r.push(["networkId",parseInt(e.toString(10),10)]);var o="",i=r.map(t);return i.length>0&&(o="("+i.join(",")+")"),"\nsubscription UpdatePrice {\n onUpdatePrice"+o+" {\n address\n networkId\n priceUsd\n timestamp\n }\n }\n"},o=function(n,e){var r=[];n&&e&&r.push(["pairId",n.toLowerCase()+":"+e]);var o="",i=r.map(t);return i.length>0&&(o="("+i.join(",")+")"),"\n subscription UpdateAggregateBatch {\n onUpdateAggregateBatch"+o+" {\n eventSortKey\n networkId\n pairAddress\n pairId\n timestamp\n aggregates {\n r1 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r5 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r15 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r30 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r60 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r240 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r720 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r1D {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r7D {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n }\n }\n"},i=function(n,e){var r=[];return n&&e&&r.push(["pairId",n.toLowerCase()+":"+e]),r.map(t),"\n subscription CreateEvents {\n onCreateEvents(id: $id) {\n events {\n address\n baseTokenPrice\n blockHash\n blockNumber\n eventDisplayType\n eventType\n logIndex\n id\n liquidityToken\n maker\n networkId\n timestamp\n token0SwapValueUsd\n token0ValueBase\n token1SwapValueUsd\n token1ValueBase\n transactionHash\n transactionIndex\n data {\n ... on MintEventData {\n amount0\n amount1\n amount0Shifted\n amount1Shifted\n tickLower\n tickUpper\n type\n }\n ... on BurnEventData {\n amount0\n amount1\n amount0Shifted\n amount1Shifted\n tickLower\n tickUpper\n type\n }\n ... on SwapEventData {\n amount0\n amount0In\n amount0Out\n amount1\n amount1In\n amount1Out\n amountNonLiquidityToken\n priceBaseToken\n priceBaseTokenTotal\n priceUsd\n priceUsdTotal\n tick\n type\n }\n }\n }\n address\n id\n networkId\n }\n }\n"};function a(n,t){if(!n)throw new Error("Invariant failed")}var s="realtime.api.defined.fi",u=function(n){try{return btoa(n)}catch(t){return Buffer.from(n).toString("base64")}},c=function(n){if(n)return n;var t,e=(t=void 0,"undefined"!=typeof WebSocket?t=WebSocket:"undefined"!=typeof MozWebSocket?t=MozWebSocket:"undefined"!=typeof global?t=global.WebSocket||global.MozWebSocket:"undefined"!=typeof window?t=window.WebSocket||window.MozWebSocket:"undefined"!=typeof self&&(t=self.WebSocket||self.MozWebSocket),t);return e||("undefined"==typeof window?require("ws"):(e||a(!1),e))},l=function(n,t){return void 0===t&&(t="wss://realtime.api.defined.fi/graphql/realtime"),t+"?header="+n+"&payload=e30="},d=function(n,t){return void 0===t&&(t=s),u('{"host": "'+t+'", "Authorization": "'+n+'" }')};function h(){h=function(){return n};var n={},t=Object.prototype,e=t.hasOwnProperty,r=Object.defineProperty||function(n,t,e){n[t]=e.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function u(n,t,e){return Object.defineProperty(n,t,{value:e,enumerable:!0,configurable:!0,writable:!0}),n[t]}try{u({},"")}catch(n){u=function(n,t,e){return n[t]=e}}function c(n,t,e,o){var i=Object.create((t&&t.prototype instanceof f?t:f).prototype),a=new T(o||[]);return r(i,"_invoke",{value:S(n,e,a)}),i}function l(n,t,e){try{return{type:"normal",arg:n.call(t,e)}}catch(n){return{type:"throw",arg:n}}}n.wrap=c;var d={};function f(){}function p(){}function v(){}var y={};u(y,i,(function(){return this}));var g=Object.getPrototypeOf,m=g&&g(g(I([])));m&&m!==t&&e.call(m,i)&&(y=m);var w=v.prototype=f.prototype=Object.create(y);function b(n){["next","throw","return"].forEach((function(t){u(n,t,(function(n){return this._invoke(t,n)}))}))}function k(n,t){function o(r,i,a,s){var u=l(n[r],n,i);if("throw"!==u.type){var c=u.arg,d=c.value;return d&&"object"==typeof d&&e.call(d,"__await")?t.resolve(d.__await).then((function(n){o("next",n,a,s)}),(function(n){o("throw",n,a,s)})):t.resolve(d).then((function(n){c.value=n,a(c)}),(function(n){return o("throw",n,a,s)}))}s(u.arg)}var i;r(this,"_invoke",{value:function(n,e){function r(){return new t((function(t,r){o(n,e,t,r)}))}return i=i?i.then(r,r):r()}})}function S(n,t,e){var r="suspendedStart";return function(o,i){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw i;return{value:void 0,done:!0}}for(e.method=o,e.arg=i;;){var a=e.delegate;if(a){var s=L(a,e);if(s){if(s===d)continue;return s}}if("next"===e.method)e.sent=e._sent=e.arg;else if("throw"===e.method){if("suspendedStart"===r)throw r="completed",e.arg;e.dispatchException(e.arg)}else"return"===e.method&&e.abrupt("return",e.arg);r="executing";var u=l(n,t,e);if("normal"===u.type){if(r=e.done?"completed":"suspendedYield",u.arg===d)continue;return{value:u.arg,done:e.done}}"throw"===u.type&&(r="completed",e.method="throw",e.arg=u.arg)}}}function L(n,t){var e=t.method,r=n.iterator[e];if(void 0===r)return t.delegate=null,"throw"===e&&n.iterator.return&&(t.method="return",t.arg=void 0,L(n,t),"throw"===t.method)||"return"!==e&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+e+"' method")),d;var o=l(r,n.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,d;var i=o.arg;return i?i.done?(t[n.resultName]=i.value,t.next=n.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function x(n){var t={tryLoc:n[0]};1 in n&&(t.catchLoc=n[1]),2 in n&&(t.finallyLoc=n[2],t.afterLoc=n[3]),this.tryEntries.push(t)}function E(n){var t=n.completion||{};t.type="normal",delete t.arg,n.completion=t}function T(n){this.tryEntries=[{tryLoc:"root"}],n.forEach(x,this),this.reset(!0)}function I(n){if(n){var t=n[i];if(t)return t.call(n);if("function"==typeof n.next)return n;if(!isNaN(n.length)){var r=-1,o=function t(){for(;++r<n.length;)if(e.call(n,r))return t.value=n[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:z}}function z(){return{value:void 0,done:!0}}return p.prototype=v,r(w,"constructor",{value:v,configurable:!0}),r(v,"constructor",{value:p,configurable:!0}),p.displayName=u(v,s,"GeneratorFunction"),n.isGeneratorFunction=function(n){var t="function"==typeof n&&n.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},n.mark=function(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,v):(n.__proto__=v,u(n,s,"GeneratorFunction")),n.prototype=Object.create(w),n},n.awrap=function(n){return{__await:n}},b(k.prototype),u(k.prototype,a,(function(){return this})),n.AsyncIterator=k,n.async=function(t,e,r,o,i){void 0===i&&(i=Promise);var a=new k(c(t,e,r,o),i);return n.isGeneratorFunction(e)?a:a.next().then((function(n){return n.done?n.value:a.next()}))},b(w),u(w,s,"Generator"),u(w,i,(function(){return this})),u(w,"toString",(function(){return"[object Generator]"})),n.keys=function(n){var t=Object(n),e=[];for(var r in t)e.push(r);return e.reverse(),function n(){for(;e.length;){var r=e.pop();if(r in t)return n.value=r,n.done=!1,n}return n.done=!0,n}},n.values=I,T.prototype={constructor:T,reset:function(n){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!n)for(var t in this)"t"===t.charAt(0)&&e.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var n=this.tryEntries[0].completion;if("throw"===n.type)throw n.arg;return this.rval},dispatchException:function(n){if(this.done)throw n;var t=this;function r(e,r){return a.type="throw",a.arg=n,t.next=e,r&&(t.method="next",t.arg=void 0),!!r}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=e.call(i,"catchLoc"),u=e.call(i,"finallyLoc");if(s&&u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(n,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&e.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===n||"continue"===n)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=n,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,d):this.complete(a)},complete:function(n,t){if("throw"===n.type)throw n.arg;return"break"===n.type||"continue"===n.type?this.next=n.arg:"return"===n.type?(this.rval=this.arg=n.arg,this.method="return",this.next="end"):"normal"===n.type&&t&&(this.next=t),d},finish:function(n){for(var t=this.tryEntries.length-1;t>=0;--t){var e=this.tryEntries[t];if(e.finallyLoc===n)return this.complete(e.completion,e.afterLoc),E(e),d}},catch:function(n){for(var t=this.tryEntries.length-1;t>=0;--t){var e=this.tryEntries[t];if(e.tryLoc===n){var r=e.completion;if("throw"===r.type){var o=r.arg;E(e)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(n,t,e){return this.delegate={iterator:I(n),resultName:t,nextLoc:e},"next"===this.method&&(this.arg=void 0),d}},n}function f(n,t,e,r,o,i,a){try{var s=n[i](a),u=s.value}catch(n){return void e(n)}s.done?t(u):Promise.resolve(u).then(r,o)}function p(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var i=n.apply(t,e);function a(n){f(i,r,o,a,s,"next",n)}function s(n){f(i,r,o,a,s,"throw",n)}a(void 0)}))}}exports.DefinedRealtimeClient=function(t,u){var f=this;this.apiKey=void 0,this.wsFactory=void 0,this.hostUrl=s,this.wsLazySingleton=void 0,this.getWebSocketUrl=function(){var n=d(f.apiKey);return l(n)},this.disconnect=p(h().mark((function n(){return h().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",new Promise((function(n){var t,e,r;if(!f.wsLazySingleton)return n(!0);null==(t=f.wsLazySingleton)||t.close(),3!==(null==(e=f.wsLazySingleton)?void 0:e.readyState)?null==(r=f.wsLazySingleton)||r.addEventListener("close",(function(t){n(!0)})):n(!0)})));case 1:case"end":return n.stop()}}),n)}))),this.connect=p(h().mark((function n(){return h().wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.abrupt("return",new Promise((function(n){var t,e,r;1===(null==(t=f.wsLazySingleton)?void 0:t.readyState)&&n(f.wsLazySingleton),f.wsLazySingleton||f._initDefinedFiWebSocket(),1!==(null==(e=f.wsLazySingleton)?void 0:e.readyState)?null==(r=f.wsLazySingleton)||r.addEventListener("open",(function(t){n(f.wsLazySingleton)})):n(f.wsLazySingleton)})));case 1:case"end":return n.stop()}}),n)}))),this.subscribe=function(){var t=p(h().mark((function t(e,r){var o,i,a,s,u;return h().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,f.connect();case 2:return i=n.v4(),a=JSON.stringify({query:e,variables:null}),s={id:i,payload:{data:a,extensions:{authorization:{host:f.hostUrl,Authorization:f.apiKey}}},type:"start"},u=function(n){try{var t=JSON.parse(n.data);if(!t.id)return void console.warn("Unrecognized websocket message",t.payload.errors);if(t.id!==i)return;if("error"===t.type)return console.log("Error with subscription "+i,t.payload.errors),void(null==r.error||r.error(t));if("start_ack"===t.type)return;return void r.next(t.payload.data)}catch(n){throw n}},null==(o=f.wsLazySingleton)||o.addEventListener("message",u),f.wsLazySingleton.send(JSON.stringify(s)),t.abrupt("return",(function(){var n;null==(n=f.wsLazySingleton)||n.removeEventListener("message",u)}));case 10:case"end":return t.stop()}}),t)})));return function(n,e){return t.apply(this,arguments)}}(),this.subscribeToNftSales=function(n,t){var r=e(n.contractAddress,n.chainId);return f.subscribe(r,t)},this.subscribeToTokenPriceUpdates=function(n,t){var e=r(n.contractAddress,n.chainId);return f.subscribe(e,t)},this.subscribeToTokenChartUpdates=function(n,t){var e=i(n.contractAddressOrPaidAddress,n.chainId);return f.subscribe(e,t)},this.subscribeToTokenSwapUpdates=function(n,t){var e=o(n.contractAddressOrPaidAddress,n.chainId);return f.subscribe(e,t)},this.getWebSocketAuthenticatedConnectionString=function(){var n=d(f.apiKey,f.hostUrl);return l(n)},this._initDefinedFiWebSocket=function(){if(f.wsLazySingleton)return f.wsLazySingleton;var n=f.getWebSocketAuthenticatedConnectionString();return f.wsLazySingleton=new f.wsFactory(n,"graphql-ws"),f.wsLazySingleton},this.apiKey=t,this.apiKey||a(!1),this.wsFactory=c(),!1===(null==u?void 0:u.lazyLoadWebSocketConnection)&&this._initDefinedFiWebSocket(),null!=u&&u.hostUrl&&(this.hostUrl=u.hostUrl)},exports.btoaIsomorphic=u,exports.encodeApiKeyToWebsocketAuthHeader=d,exports.getDefinedErc20TokenChartUpdateGql=i,exports.getDefinedErc20TokenPriceUpdateGql=r,exports.getDefinedErc20TokenSwapUpdateGql=o,exports.getDefinedNftSaleSubscriptionGql=e,exports.getDefinedWsWebsocketUrl=l,exports.getIsomorphicWebSocket=c,exports.sleep=function(n){return new Promise((function(t,e){setTimeout((function(){t(null)}),n)}))}; | ||
//# sourceMappingURL=defined-realtime-websocket.cjs.production.min.js.map |
@@ -45,2 +45,24 @@ import { v4 } from 'uuid'; | ||
}; | ||
var getDefinedErc20TokenSwapUpdateGql = function getDefinedErc20TokenSwapUpdateGql(contractAddressOrPairAddress, networkId) { | ||
var filterParams = []; | ||
if (contractAddressOrPairAddress && networkId) { | ||
// Note: address must be lowercase | ||
filterParams.push(['pairId', contractAddressOrPairAddress.toLowerCase() + ':' + networkId]); | ||
} | ||
var whereClause = ""; | ||
var subclauses = filterParams.map(generateSubClause); | ||
if (subclauses.length > 0) { | ||
whereClause = "(" + subclauses.join(',') + ")"; | ||
} | ||
return "\n subscription UpdateAggregateBatch {\n onUpdateAggregateBatch" + whereClause + " {\n eventSortKey\n networkId\n pairAddress\n pairId\n timestamp\n aggregates {\n r1 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r5 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r15 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r30 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r60 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r240 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r720 {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r1D {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n r7D {\n t\n usd {\n t\n o\n h\n l\n c\n volume\n }\n token {\n t\n o\n h\n l\n c\n volume\n }\n }\n }\n }\n"; | ||
}; | ||
var getDefinedErc20TokenChartUpdateGql = function getDefinedErc20TokenChartUpdateGql(contractAddressOrPairAddress, networkId) { | ||
var filterParams = []; | ||
if (contractAddressOrPairAddress && networkId) { | ||
// Note: address must be lowercase | ||
filterParams.push(['pairId', contractAddressOrPairAddress.toLowerCase() + ':' + networkId]); | ||
} | ||
filterParams.map(generateSubClause); | ||
return "\n subscription CreateEvents {\n onCreateEvents(id: $id) {\n events {\n address\n baseTokenPrice\n blockHash\n blockNumber\n eventDisplayType\n eventType\n logIndex\n id\n liquidityToken\n maker\n networkId\n timestamp\n token0SwapValueUsd\n token0ValueBase\n token1SwapValueUsd\n token1ValueBase\n transactionHash\n transactionIndex\n data {\n ... on MintEventData {\n amount0\n amount1\n amount0Shifted\n amount1Shifted\n tickLower\n tickUpper\n type\n }\n ... on BurnEventData {\n amount0\n amount1\n amount0Shifted\n amount1Shifted\n tickLower\n tickUpper\n type\n }\n ... on SwapEventData {\n amount0\n amount0In\n amount0Out\n amount1\n amount1In\n amount1Out\n amountNonLiquidityToken\n priceBaseToken\n priceBaseTokenTotal\n priceUsd\n priceUsdTotal\n tick\n type\n }\n }\n }\n address\n id\n networkId\n }\n }\n"; | ||
}; | ||
@@ -647,5 +669,13 @@ var isProduction = process.env.NODE_ENV === 'production'; | ||
this.subscribeToTokenPriceUpdates = function (subscriptionOptions, sink) { | ||
var gql = getDefinedNftSaleSubscriptionGql(subscriptionOptions.contractAddress, subscriptionOptions.chainId); | ||
var gql = getDefinedErc20TokenPriceUpdateGql(subscriptionOptions.contractAddress, subscriptionOptions.chainId); | ||
return _this.subscribe(gql, sink); | ||
}; | ||
this.subscribeToTokenChartUpdates = function (subscriptionOptions, sink) { | ||
var gql = getDefinedErc20TokenChartUpdateGql(subscriptionOptions.contractAddressOrPaidAddress, subscriptionOptions.chainId); | ||
return _this.subscribe(gql, sink); | ||
}; | ||
this.subscribeToTokenSwapUpdates = function (subscriptionOptions, sink) { | ||
var gql = getDefinedErc20TokenSwapUpdateGql(subscriptionOptions.contractAddressOrPaidAddress, subscriptionOptions.chainId); | ||
return _this.subscribe(gql, sink); | ||
}; | ||
this.getWebSocketAuthenticatedConnectionString = function () { | ||
@@ -676,3 +706,3 @@ var encodedApiKeyHeader = encodeApiKeyToWebsocketAuthHeader(_this.apiKey, _this.hostUrl); | ||
export { DefinedRealtimeClient, btoaIsomorphic, encodeApiKeyToWebsocketAuthHeader, getDefinedErc20TokenPriceUpdateGql, getDefinedNftSaleSubscriptionGql, getDefinedWsWebsocketUrl, getIsomorphicWebSocket, sleep }; | ||
export { DefinedRealtimeClient, btoaIsomorphic, encodeApiKeyToWebsocketAuthHeader, getDefinedErc20TokenChartUpdateGql, getDefinedErc20TokenPriceUpdateGql, getDefinedErc20TokenSwapUpdateGql, getDefinedNftSaleSubscriptionGql, getDefinedWsWebsocketUrl, getIsomorphicWebSocket, sleep }; | ||
//# sourceMappingURL=defined-realtime-websocket.esm.js.map |
@@ -54,4 +54,87 @@ export declare const getDefinedNftSaleSubscriptionGql: (contractAddress: string | undefined | null, networkId: number | string | undefined | null) => string; | ||
} | ||
export interface DefinedWebSocketPricingData { | ||
export interface DefinedWebSocketTokenPricingData { | ||
onUpdatePrice: OnUpdatePrice; | ||
} | ||
export declare const getDefinedErc20TokenSwapUpdateGql: (contractAddressOrPairAddress: string | undefined | null, networkId: number | string | undefined | null) => string; | ||
export interface OHLCIndividualBarData { | ||
t: number; | ||
o: number; | ||
h: number; | ||
l: number; | ||
c: number; | ||
volume: string; | ||
__typename: string; | ||
} | ||
export interface CurrencyBarData { | ||
t: number; | ||
usd: OHLCIndividualBarData; | ||
token: OHLCIndividualBarData; | ||
__typename: string; | ||
} | ||
export interface ChartUpdateAggregates { | ||
r1: CurrencyBarData; | ||
r5: CurrencyBarData; | ||
r15: CurrencyBarData; | ||
r30: CurrencyBarData; | ||
r60: CurrencyBarData; | ||
r240: CurrencyBarData; | ||
r720: CurrencyBarData; | ||
r1D: CurrencyBarData; | ||
r7D: CurrencyBarData; | ||
__typename: string; | ||
} | ||
export interface OnUpdateAggregateBatch { | ||
eventSortKey: string; | ||
networkId: number; | ||
pairAddress: string; | ||
pairId: string; | ||
timestamp: number; | ||
aggregates: ChartUpdateAggregates; | ||
__typename: string; | ||
} | ||
export interface DefinedWebSocketTokenChartData { | ||
onUpdateAggregateBatch: OnUpdateAggregateBatch; | ||
} | ||
export declare const getDefinedErc20TokenChartUpdateGql: (contractAddressOrPairAddress: string | undefined | null, networkId: number | string | undefined | null) => string; | ||
export interface TokenSwapEventData { | ||
amount0?: any; | ||
amount0In: string; | ||
amount0Out: string; | ||
amount1?: any; | ||
amount1In: string; | ||
amount1Out: string; | ||
amountNonLiquidityToken: string; | ||
priceBaseToken: string; | ||
priceBaseTokenTotal: string; | ||
priceUsd: string; | ||
priceUsdTotal: string; | ||
tick?: any; | ||
type: string; | ||
} | ||
export interface TokenSwapEvent { | ||
address: string; | ||
baseTokenPrice: string; | ||
blockHash: string; | ||
blockNumber: number; | ||
eventDisplayType: string; | ||
eventType: string; | ||
logIndex: number; | ||
id: string; | ||
liquidityToken: string; | ||
maker: string; | ||
networkId: number; | ||
timestamp: number; | ||
token0SwapValueUsd: string; | ||
token0ValueBase: string; | ||
token1SwapValueUsd: string; | ||
token1ValueBase: string; | ||
transactionHash: string; | ||
transactionIndex: number; | ||
data: TokenSwapEventData; | ||
} | ||
export interface OnCreateEvents { | ||
events: TokenSwapEvent[]; | ||
} | ||
export interface DefinedWebSocketTokenSwapData { | ||
onCreateEvents: OnCreateEvents; | ||
} |
@@ -1,3 +0,3 @@ | ||
import { DefinedWebSocketOnCreatedNftEventsSubscriptionData, DefinedWebSocketPricingData } from './gql'; | ||
import type { Sink, SubscribeToNftSalesParams, SubscribeToTokenPriceParams } from './types'; | ||
import { DefinedWebSocketOnCreatedNftEventsSubscriptionData, DefinedWebSocketTokenChartData, DefinedWebSocketTokenPricingData, DefinedWebSocketTokenSwapData } from './gql'; | ||
import type { Sink, SubscribeToNftSalesParams, SubscribeToTokenChartParams, SubscribeToTokenPriceParams, SubscribeToTokenSwapParams } from './types'; | ||
type IWebSocket = WebSocket; | ||
@@ -56,3 +56,19 @@ /** | ||
*/ | ||
subscribeToTokenPriceUpdates: (subscriptionOptions: SubscribeToTokenPriceParams, sink: Sink<DefinedWebSocketPricingData>) => Promise<() => void>; | ||
subscribeToTokenPriceUpdates: (subscriptionOptions: SubscribeToTokenPriceParams, sink: Sink<DefinedWebSocketTokenPricingData>) => Promise<() => void>; | ||
/** | ||
* Subscribes to Token chart update events | ||
* https://docs.defined.fi/websockets/tokens/onUpdateAggregateBatch | ||
* @param subscriptionOptions Filtering options for token | ||
* @param sink Event sink | ||
* @returns Unsubscribe function | ||
*/ | ||
subscribeToTokenChartUpdates: (subscriptionOptions: SubscribeToTokenChartParams, sink: Sink<DefinedWebSocketTokenChartData>) => Promise<() => void>; | ||
/** | ||
* Subscribes to Token swap update events | ||
* https://docs.defined.fi/websockets/tokens/onCreateEvents | ||
* @param subscriptionOptions Filtering options for token | ||
* @param sink Event sink | ||
* @returns Unsubscribe function | ||
*/ | ||
subscribeToTokenSwapUpdates: (subscriptionOptions: SubscribeToTokenSwapParams, sink: Sink<DefinedWebSocketTokenSwapData>) => Promise<() => void>; | ||
getWebSocketAuthenticatedConnectionString: () => string; | ||
@@ -59,0 +75,0 @@ private _initDefinedFiWebSocket; |
@@ -56,2 +56,14 @@ interface Authorization { | ||
} | ||
export interface SubscribeToTokenChartParams { | ||
contractAddressOrPaidAddress: string; | ||
chainId: string | number; | ||
} | ||
export interface SubscribeToTokenSwapParams { | ||
contractAddressOrPaidAddress: string; | ||
chainId: string | number; | ||
} | ||
export {}; | ||
/** | ||
* | ||
* | ||
*/ |
{ | ||
"name": "defined-realtime-websocket", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"license": "MIT", | ||
@@ -20,3 +20,4 @@ "author": "johnrjj", | ||
"start": "dts watch", | ||
"test": "dts test" | ||
"test": "dts test", | ||
"prettier": "prettier --write \"**/*.{ts,tsx,js,json,css,yml,md}\"" | ||
}, | ||
@@ -23,0 +24,0 @@ "husky": { |
// https://github.com/maxogden/websocket-stream/blob/48dc3ddf943e5ada668c31ccd94e9186f02fafbd/ws-fallback.js | ||
import type { WebSocketFactory } from "./types"; | ||
import type { WebSocketFactory } from './types'; | ||
@@ -20,8 +20,5 @@ const getWebSocketBrowser = (): WebSocketFactory | undefined => { | ||
} | ||
return ws | ||
} | ||
return ws; | ||
}; | ||
export { | ||
getWebSocketBrowser, | ||
} | ||
export { getWebSocketBrowser }; |
@@ -1,6 +0,5 @@ | ||
export const DEFAULT_HOST_URI = `realtime.api.defined.fi` | ||
export const DEFAULT_WEBSOCKET_URI_ROOT = `wss://realtime.api.defined.fi/graphql/realtime` | ||
export const DEFAULT_HOST_URI = `realtime.api.defined.fi`; | ||
export const DEFAULT_WEBSOCKET_URI_ROOT = `wss://realtime.api.defined.fi/graphql/realtime`; | ||
export const WS_TRANSPORT_PROTOCOL = 'graphql-ws'; | ||
// https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState | ||
@@ -14,2 +13,2 @@ /** | ||
* | ||
*/ | ||
*/ |
381
src/gql.ts
@@ -163,4 +163,383 @@ type FilterTuple = [string, string | number]; | ||
export interface DefinedWebSocketPricingData { | ||
export interface DefinedWebSocketTokenPricingData { | ||
onUpdatePrice: OnUpdatePrice; | ||
} | ||
export const getDefinedErc20TokenSwapUpdateGql = ( | ||
contractAddressOrPairAddress: string | undefined | null, | ||
networkId: number | string | undefined | null | ||
) => { | ||
const filterParams: Array<FilterTuple> = []; | ||
if (contractAddressOrPairAddress && networkId) { | ||
// Note: address must be lowercase | ||
filterParams.push([ | ||
'pairId', | ||
contractAddressOrPairAddress.toLowerCase() + ':' + networkId, | ||
]); | ||
} | ||
let whereClause = ``; | ||
const subclauses = filterParams.map(generateSubClause); | ||
if (subclauses.length > 0) { | ||
whereClause = `(${subclauses.join(',')})`; | ||
} | ||
return ` | ||
subscription UpdateAggregateBatch { | ||
onUpdateAggregateBatch${whereClause} { | ||
eventSortKey | ||
networkId | ||
pairAddress | ||
pairId | ||
timestamp | ||
aggregates { | ||
r1 { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r5 { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r15 { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r30 { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r60 { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r240 { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r720 { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r1D { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
r7D { | ||
t | ||
usd { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
token { | ||
t | ||
o | ||
h | ||
l | ||
c | ||
volume | ||
} | ||
} | ||
} | ||
} | ||
`; | ||
}; | ||
// https://docs.defined.fi/websockets/tokens/onUpdateAggregateBatch#individualbardata | ||
export interface OHLCIndividualBarData { | ||
t: number; | ||
o: number; | ||
h: number; | ||
l: number; | ||
c: number; | ||
volume: string; | ||
__typename: string; | ||
} | ||
// https://docs.defined.fi/websockets/tokens/onUpdateAggregateBatch#currencybardata | ||
export interface CurrencyBarData { | ||
t: number; | ||
usd: OHLCIndividualBarData; | ||
token: OHLCIndividualBarData; | ||
__typename: string; | ||
} | ||
export interface ChartUpdateAggregates { | ||
r1: CurrencyBarData; | ||
r5: CurrencyBarData; | ||
r15: CurrencyBarData; | ||
r30: CurrencyBarData; | ||
r60: CurrencyBarData; | ||
r240: CurrencyBarData; | ||
r720: CurrencyBarData; | ||
r1D: CurrencyBarData; | ||
r7D: CurrencyBarData; | ||
__typename: string; | ||
} | ||
export interface OnUpdateAggregateBatch { | ||
eventSortKey: string; | ||
networkId: number; | ||
pairAddress: string; | ||
pairId: string; | ||
timestamp: number; | ||
aggregates: ChartUpdateAggregates; | ||
__typename: string; | ||
} | ||
export interface DefinedWebSocketTokenChartData { | ||
onUpdateAggregateBatch: OnUpdateAggregateBatch; | ||
} | ||
export const getDefinedErc20TokenChartUpdateGql = ( | ||
contractAddressOrPairAddress: string | undefined | null, | ||
networkId: number | string | undefined | null | ||
) => { | ||
const filterParams: Array<FilterTuple> = []; | ||
if (contractAddressOrPairAddress && networkId) { | ||
// Note: address must be lowercase | ||
filterParams.push([ | ||
'pairId', | ||
contractAddressOrPairAddress.toLowerCase() + ':' + networkId, | ||
]); | ||
} | ||
let whereClause = ``; | ||
const subclauses = filterParams.map(generateSubClause); | ||
if (subclauses.length > 0) { | ||
whereClause = `(${subclauses.join(',')})`; | ||
} | ||
return ` | ||
subscription CreateEvents { | ||
onCreateEvents(id: $id) { | ||
events { | ||
address | ||
baseTokenPrice | ||
blockHash | ||
blockNumber | ||
eventDisplayType | ||
eventType | ||
logIndex | ||
id | ||
liquidityToken | ||
maker | ||
networkId | ||
timestamp | ||
token0SwapValueUsd | ||
token0ValueBase | ||
token1SwapValueUsd | ||
token1ValueBase | ||
transactionHash | ||
transactionIndex | ||
data { | ||
... on MintEventData { | ||
amount0 | ||
amount1 | ||
amount0Shifted | ||
amount1Shifted | ||
tickLower | ||
tickUpper | ||
type | ||
} | ||
... on BurnEventData { | ||
amount0 | ||
amount1 | ||
amount0Shifted | ||
amount1Shifted | ||
tickLower | ||
tickUpper | ||
type | ||
} | ||
... on SwapEventData { | ||
amount0 | ||
amount0In | ||
amount0Out | ||
amount1 | ||
amount1In | ||
amount1Out | ||
amountNonLiquidityToken | ||
priceBaseToken | ||
priceBaseTokenTotal | ||
priceUsd | ||
priceUsdTotal | ||
tick | ||
type | ||
} | ||
} | ||
} | ||
address | ||
id | ||
networkId | ||
} | ||
} | ||
`; | ||
}; | ||
export interface TokenSwapEventData { | ||
amount0?: any; | ||
amount0In: string; | ||
amount0Out: string; | ||
amount1?: any; | ||
amount1In: string; | ||
amount1Out: string; | ||
amountNonLiquidityToken: string; | ||
priceBaseToken: string; | ||
priceBaseTokenTotal: string; | ||
priceUsd: string; | ||
priceUsdTotal: string; | ||
tick?: any; | ||
type: string; | ||
} | ||
export interface TokenSwapEvent { | ||
address: string; | ||
baseTokenPrice: string; | ||
blockHash: string; | ||
blockNumber: number; | ||
eventDisplayType: string; | ||
eventType: string; | ||
logIndex: number; | ||
id: string; | ||
liquidityToken: string; | ||
maker: string; | ||
networkId: number; | ||
timestamp: number; | ||
token0SwapValueUsd: string; | ||
token0ValueBase: string; | ||
token1SwapValueUsd: string; | ||
token1ValueBase: string; | ||
transactionHash: string; | ||
transactionIndex: number; | ||
data: TokenSwapEventData; | ||
} | ||
export interface OnCreateEvents { | ||
events: TokenSwapEvent[]; | ||
} | ||
export interface DefinedWebSocketTokenSwapData { | ||
onCreateEvents: OnCreateEvents; | ||
} |
@@ -1,6 +0,4 @@ | ||
export * from './types' | ||
export * from './gql' | ||
export * from './util' | ||
export { | ||
DefinedRealtimeClient | ||
} from './sdk' | ||
export * from './types'; | ||
export * from './gql'; | ||
export * from './util'; | ||
export { DefinedRealtimeClient } from './sdk'; |
@@ -1,3 +0,1 @@ | ||
const isProduction: boolean = process.env.NODE_ENV === 'production'; | ||
@@ -13,3 +11,3 @@ const prefix: string = 'Invariant failed'; | ||
// the message takes a fair amount of effort to compute | ||
message?: string | (() => string), | ||
message?: string | (() => string) | ||
): asserts condition { | ||
@@ -29,3 +27,4 @@ if (condition) { | ||
const provided: string | undefined = typeof message === 'function' ? message() : message; | ||
const provided: string | undefined = | ||
typeof message === 'function' ? message() : message; | ||
@@ -32,0 +31,0 @@ // Options: |
@@ -1,3 +0,3 @@ | ||
"use strict"; | ||
'use strict'; | ||
module.exports = require('ws'); | ||
module.exports = require('ws'); |
@@ -9,3 +9,8 @@ import { v4 as uuidv4 } from 'uuid'; | ||
DefinedWebSocketOnCreatedNftEventsSubscriptionData, | ||
DefinedWebSocketPricingData, | ||
DefinedWebSocketTokenChartData, | ||
DefinedWebSocketTokenPricingData, | ||
DefinedWebSocketTokenSwapData, | ||
getDefinedErc20TokenChartUpdateGql, | ||
getDefinedErc20TokenPriceUpdateGql, | ||
getDefinedErc20TokenSwapUpdateGql, | ||
getDefinedNftSaleSubscriptionGql, | ||
@@ -17,3 +22,5 @@ } from './gql'; | ||
SubscribeToNftSalesParams, | ||
SubscribeToTokenChartParams, | ||
SubscribeToTokenPriceParams, | ||
SubscribeToTokenSwapParams, | ||
WebSocketFactory, | ||
@@ -224,11 +231,47 @@ WebSocketSubscriptionRequest, | ||
subscriptionOptions: SubscribeToTokenPriceParams, | ||
sink: Sink<DefinedWebSocketPricingData> | ||
sink: Sink<DefinedWebSocketTokenPricingData> | ||
) => { | ||
const gql = getDefinedNftSaleSubscriptionGql( | ||
const gql = getDefinedErc20TokenPriceUpdateGql( | ||
subscriptionOptions.contractAddress, | ||
subscriptionOptions.chainId | ||
); | ||
return this.subscribe<DefinedWebSocketPricingData>(gql, sink); | ||
return this.subscribe<DefinedWebSocketTokenPricingData>(gql, sink); | ||
}; | ||
/** | ||
* Subscribes to Token chart update events | ||
* https://docs.defined.fi/websockets/tokens/onUpdateAggregateBatch | ||
* @param subscriptionOptions Filtering options for token | ||
* @param sink Event sink | ||
* @returns Unsubscribe function | ||
*/ | ||
public subscribeToTokenChartUpdates = ( | ||
subscriptionOptions: SubscribeToTokenChartParams, | ||
sink: Sink<DefinedWebSocketTokenChartData> | ||
) => { | ||
const gql = getDefinedErc20TokenChartUpdateGql( | ||
subscriptionOptions.contractAddressOrPaidAddress, | ||
subscriptionOptions.chainId | ||
); | ||
return this.subscribe<DefinedWebSocketTokenChartData>(gql, sink); | ||
}; | ||
/** | ||
* Subscribes to Token swap update events | ||
* https://docs.defined.fi/websockets/tokens/onCreateEvents | ||
* @param subscriptionOptions Filtering options for token | ||
* @param sink Event sink | ||
* @returns Unsubscribe function | ||
*/ | ||
public subscribeToTokenSwapUpdates = ( | ||
subscriptionOptions: SubscribeToTokenSwapParams, | ||
sink: Sink<DefinedWebSocketTokenSwapData> | ||
) => { | ||
const gql = getDefinedErc20TokenSwapUpdateGql( | ||
subscriptionOptions.contractAddressOrPaidAddress, | ||
subscriptionOptions.chainId | ||
); | ||
return this.subscribe<DefinedWebSocketTokenSwapData>(gql, sink); | ||
}; | ||
public getWebSocketAuthenticatedConnectionString = () => { | ||
@@ -235,0 +278,0 @@ const encodedApiKeyHeader = encodeApiKeyToWebsocketAuthHeader( |
@@ -65,1 +65,18 @@ interface Authorization { | ||
} | ||
export interface SubscribeToTokenChartParams { | ||
// Can specify _either_ specific contractAddress or pairAddress (e.g. uniswap pool address) | ||
contractAddressOrPaidAddress: string; | ||
chainId: string | number; | ||
} | ||
export interface SubscribeToTokenSwapParams { | ||
// Can specify _either_ specific contractAddress or pairAddress (e.g. uniswap pool address) | ||
contractAddressOrPaidAddress: string; | ||
chainId: string | number; | ||
} | ||
/** | ||
* | ||
* | ||
*/ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
241664
2794
11