Socket
Socket
Sign inDemoInstall

@pooltogether/utilities

Package Overview
Dependencies
49
Maintainers
6
Versions
77
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.3.8 to 0.3.9

3

dist/constants.d.ts

@@ -0,1 +1,2 @@

export declare const SECONDS_PER_MINUTE = 60;
export declare const SECONDS_PER_HOUR = 3600;

@@ -5,1 +6,3 @@ export declare const SECONDS_PER_DAY = 86400;

export declare const SECONDS_PER_YEAR = 31536000;
export declare const MINUTES_PER_HOUR = 60;
export declare const MINUTES_PER_DAY = 1440;

@@ -31,1 +31,14 @@ import { Provider } from '@ethersproject/providers';

};
/**
* Returns an RPC URL using configured API keys if possible.
* @param chainId
*/
export declare const getRpcUrl: (chainId: number, apiKeys?: ApiKeys) => string;
/**
* Returns multiple RPC URLS using configured API keys if possible.
* @param chainIds
* @returns
*/
export declare const getRpcUrls: (chainIds: number[], apiKeys?: ApiKeys) => {
[chainId: number]: string;
};

@@ -35,2 +35,38 @@ import { BigNumber } from 'ethers';

/**
* Converts days to milliseconds
* @param days days as a number
* @returns
*/
export declare const dToMs: (days: number) => number;
/**
* Converts milliseconds to days
* @param days days as a number
* @returns
*/
export declare const msToD: (ms: number) => number;
/**
* Converts days to seconds
* @param days days as a number
* @returns
*/
export declare const dToS: (days: number) => number;
/**
* Converts seconds to days
* @param s seconds as a number
* @returns
*/
export declare const sToD: (s: number) => number;
/**
* Converts seconds to minutes
* @param s seconds as a number
* @returns
*/
export declare const sToM: (s: number) => number;
/**
* Converts days to minutes
* @param days days as a number
* @returns
*/
export declare const dToM: (days: number) => number;
/**
* Finds the difference between two date objects

@@ -37,0 +73,0 @@ * @param dateA DateTime JS object (ie. new Date(Date.now()))

@@ -9,2 +9,3 @@ 'use strict';

var providers = require('@ethersproject/providers');
var networks = require('@ethersproject/networks');
var evmChainsExtended = require('@pooltogether/evm-chains-extended');

@@ -259,6 +260,9 @@

// Seconds
var SECONDS_PER_MINUTE = 60;
var SECONDS_PER_HOUR = 3600;
var SECONDS_PER_DAY = 86400;
var SECONDS_PER_WEEK = 604800;
var SECONDS_PER_YEAR = 31536000;
var SECONDS_PER_YEAR = 31536000; // Minutes
var MINUTES_PER_DAY = 1440;

@@ -690,4 +694,59 @@ /**

};
/**
* Returns an RPC URL using configured API keys if possible.
* @param chainId
*/
var getRpcUrl = function getRpcUrl(chainId, apiKeys) {
var alchemyApiKey = API_KEYS.alchemy || (apiKeys == null ? void 0 : apiKeys.alchemy);
var infuraApiKey = API_KEYS.infura || (apiKeys == null ? void 0 : apiKeys.infura);
try {
var _chainData$rpc;
if (!!alchemyApiKey && ALCHEMY_CHAIN_IDS.includes(chainId)) {
var connectionInfo = providers.AlchemyProvider.getUrl(networks.getNetwork(chainId), alchemyApiKey);
return connectionInfo.url;
} else if (!!infuraApiKey && INFURA_CHAIN_IDS.includes(chainId)) {
var _connectionInfo = providers.InfuraProvider.getUrl(networks.getNetwork(chainId), typeof infuraApiKey === 'string' ? {
projectId: infuraApiKey
} : infuraApiKey);
return _connectionInfo.url;
}
var chainData = evmChainsExtended.getChain(chainId);
var rpcUrl = chainData == null ? void 0 : (_chainData$rpc = chainData.rpc) == null ? void 0 : _chainData$rpc[0];
if (!!rpcUrl) {
return rpcUrl;
} else {
console.warn("getRpcUrl | Chain id " + chainId + " not supported.");
var _chainData = evmChainsExtended.getChain(NETWORK.mainnet);
return _chainData.rpc[0];
}
} catch (e) {
console.error(e);
var _chainData2 = evmChainsExtended.getChain(NETWORK.mainnet);
return _chainData2.rpc[0];
}
};
/**
* Returns multiple RPC URLS using configured API keys if possible.
* @param chainIds
* @returns
*/
var getRpcUrls = function getRpcUrls(chainIds, apiKeys) {
return chainIds.reduce(function (rpcUrls, chainId) {
rpcUrls[chainId] = getRpcUrl(chainId, apiKeys);
return rpcUrls;
}, {});
};
/**
* Breaks down a number of seconds into years, weeks, days, hours, minutes, seconds

@@ -791,2 +850,80 @@ * @param totalSeconds

/**
* Converts days to milliseconds
* @param days days as a number
* @returns
*/
var dToMs = function dToMs(days) {
if (!days) {
return 0;
}
return days * SECONDS_PER_DAY * 1000;
};
/**
* Converts milliseconds to days
* @param days days as a number
* @returns
*/
var msToD = function msToD(ms) {
if (!ms) {
return 0;
}
return ms / 1000 / SECONDS_PER_DAY;
};
/**
* Converts days to seconds
* @param days days as a number
* @returns
*/
var dToS = function dToS(days) {
if (!days) {
return 0;
}
return days * SECONDS_PER_DAY;
};
/**
* Converts seconds to days
* @param s seconds as a number
* @returns
*/
var sToD = function sToD(s) {
if (!s) {
return 0;
}
return s / SECONDS_PER_DAY;
};
/**
* Converts seconds to minutes
* @param s seconds as a number
* @returns
*/
var sToM = function sToM(s) {
if (!s) {
return 0;
}
return s / SECONDS_PER_MINUTE;
};
/**
* Converts days to minutes
* @param days days as a number
* @returns
*/
var dToM = function dToM(days) {
if (!days) {
return 0;
}
return days * MINUTES_PER_DAY;
};
/**
* Finds the difference between two date objects

@@ -919,2 +1056,5 @@ * @param dateA DateTime JS object (ie. new Date(Date.now()))

exports.chainIdToNetworkName = chainIdToNetworkName;
exports.dToM = dToM;
exports.dToMs = dToMs;
exports.dToS = dToS;
exports.deserializeBigNumbers = deserializeBigNumbers;

@@ -932,2 +1072,4 @@ exports.displayPercentage = displayPercentage;

exports.getReadProviders = getReadProviders;
exports.getRpcUrl = getRpcUrl;
exports.getRpcUrls = getRpcUrls;
exports.getSecondsRemainingInPrizePeriod = getSecondsRemainingInPrizePeriod;

@@ -938,2 +1080,3 @@ exports.getSecondsSinceEpoch = getSecondsSinceEpoch;

exports.initProviderApiKeys = initProviderApiKeys;
exports.msToD = msToD;
exports.msToS = msToS;

@@ -943,2 +1086,4 @@ exports.msToSeconds = msToSeconds;

exports.prettyNumber = prettyNumber;
exports.sToD = sToD;
exports.sToM = sToM;
exports.sToMs = sToMs;

@@ -945,0 +1090,0 @@ exports.safeParseUnits = safeParseUnits;

2

dist/utilities.cjs.production.min.js

@@ -1,2 +0,2 @@

"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("ethers"),r=require("ethers/lib/utils"),t=require("@ethersproject/units"),n=require("@ethersproject/providers"),o=require("@pooltogether/evm-chains-extended"),i=/^(\w{6})\w*(\w{4})$/;function s(e,r){void 0===r&&(r={precision:2});var t=r.precision;if(e&&"function"==typeof e.indexOf){var n=t?t+1:0;return e.substr(0,e.indexOf(".")+n)}return e}var a=function(e){return t.parseUnits(s(e,{precision:2}),2)},u=function(r,t){if(void 0===t&&(t={}),t.decimals||(t.decimals=18),null!=r){var n=r._isBigNumber?e.ethers.utils.formatUnits(r,t.decimals):r;return!t.precision&&0!==t.precision&&n&&(t.precision=c(n)),function(e,r){if(void 0===r&&(r={}),!e)return"number"==typeof e?e:"";var t=2;void 0!==r.precision&&(t=r.precision);var n="en-GB";r.currentLang&&"es"===r.currentLang&&(n="es-ES"),0===t&&(e=Math.floor(Number(e))),e.toString().match("e")&&(e=Number.parseFloat(e).toFixed(0));var o=e.toString().split(".");o[0]=o[0].replace(",","");var i="";return i=o.length>1&&t>0?s(o.join("."),{precision:t}):o[0],r.removeTrailingZeros&&(i=i.replace(/(\.0+|0+)$/,"")),Number(i).toLocaleString(n,{minimumFractionDigits:r.removeTrailingZeros?0:t})}(n,t)}},c=function(e){return(e=parseFloat(e))>1e4?0:e>=.1?2:l(e)},l=function(e,r){void 0===r&&(r={additionalDigits:2});var t=r.additionalDigits,n=String(e).split(".")[1];return"0"===n?0:n?n.match(/^0*/)[0].length+t:t},d=function(e,r){return e.mul(Math.round(100*r)).div(100)},m=function(r){return r.reduce((function(e,r){return r.add(e)}),e.ethers.constants.Zero)},p=Object.freeze({mainnet:1,homestead:1,ropsten:3,rinkeby:4,goerli:5,kovan:42,bsc:56,"poa-sokol":77,"bsc-testnet":97,poa:99,xdai:100,polygon:137,matic:137,optimism:420,avalanche:43114,fuji:43113,celo:42220,"celo-testnet":44787,mumbai:80001}),f=Object.freeze([p.mainnet,p.ropsten,p.rinkeby,p.goerli,p.kovan]),h=Object.freeze([p.polygon,p.mumbai]),v=Object.freeze([p.avalanche,p.fuji]),b=Object.freeze([p.celo,p["celo-testnet"]]),x=function(e){var r=Object.keys(p).find((function(r){return p[r]===e}));if(void 0!==r)return r},g=Object.freeze([1,3,4,5,42,137,80001,10,69,42161,421611]),N=Object.freeze([1,3,4,5,42]),y=Object.freeze([1,3,4,5,42,137,80001,10,69,42161,421611]),U={alchemy:void 0,etherscan:void 0,infura:void 0},O=function(e){var r,t=o.getChain(e);try{U.alchemy&&g.includes(e)?r=new n.AlchemyProvider(e,U.alchemy):U.infura&&y.includes(e)?r=new n.InfuraProvider(e,U.infura):U.etherscan&&N.includes(e)?r=new n.EtherscanProvider(e,U.etherscan):t&&t.rpc[0]?r=new n.JsonRpcProvider(t.rpc[0],e):console.warn("Chain id "+e+" not supported.")}catch(e){console.error(e)}return r},S=function(){return Number((Date.now()/1e3).toFixed(0))},T=Object.freeze({}),P=Object.freeze({});exports.AVALANCHE_NETWORKS=v,exports.CELO_NETWORKS=b,exports.ETHEREUM_NETWORKS=f,exports.NETWORK=p,exports.POLYGON_NETWORKS=h,exports.addBigNumbers=m,exports.addTokenTotalUsdValue=function(e,t){var n=t[e.address];if(n){if(e.usd=n.usd||0,e.derivedETH=n.derivedETH||"0",e.amountUnformatted){var o=d(e.amountUnformatted,e.usd);e.totalValueUsd=r.formatUnits(o,e.decimals),e.totalValueUsdScaled=a(e.totalValueUsd)}}else e.usd=0,e.derivedETH="0"},exports.amountMultByUsd=d,exports.calculateAPR=function(e,r){return r.isZero()||e.isZero()?"0":t.formatUnits(e.mul(1e4).mul(365).div(r),2)},exports.calculateCreamBorrowApy=function(e,r,n,o,i,s,a){var u=Number(t.formatUnits(e,18)),c=Number(t.formatUnits(r,18)),l=Number(t.formatUnits(n,18)),d=Number(t.formatUnits(o,18)),m=Number(t.formatUnits(i,18)),p=Number(t.formatUnits(s,18)),f=a.toNumber();return Math.pow(1+u+c*Math.min(l,d)+Math.max(p*l-m,0),f)-1},exports.calculateCreamSupplyApy=function(e,r,n,o){var i=Number(t.formatUnits(r,18)),s=Number(t.formatUnits(n,18)),a=o.toNumber();return Math.pow(1+(Math.pow(1+e,1/a)-1)*(1-i)*s,a)-1},exports.calculateEstimatedCompoundPrizeWithYieldUnformatted=function(r,t,n,o,i,s){var a=s&&0!==parseFloat(s)?e.ethers.utils.parseUnits(parseFloat(s).toFixed(Number(o)),o):e.ethers.constants.Zero;return(a.isZero()?e.ethers.constants.Zero:t.mul(n).mul(Math.round(parseFloat(i))).mul(a).div(e.ethers.utils.parseUnits("1",18)).div(e.ethers.utils.parseUnits("1",o))).add(r)},exports.calculateLPTokenPrice=function(e,r,n,o,i){var s=m([d(t.parseUnits(e,18),n),d(t.parseUnits(r,18),o)]),a=t.parseUnits(i,18);return s.div(a)},exports.calculateOdds=function(r,t,n,o){if(void 0===o&&(o=1),!r||r.isZero()||!t||t.isZero()||!n||0===o)return 0;var i=Number(e.ethers.utils.formatUnits(r,n)),s=Number(e.ethers.utils.formatUnits(t,n));return 1-Math.pow((s-i)/s,o)},exports.calculateUsersOdds=function(r,t,n,o){if(!r||r.eq(e.ethers.BigNumber.from(0))||!n)return 0;var i=parseInt(o,10),s=Number(e.ethers.utils.formatUnits(r,Number(n))),a=Number(e.ethers.utils.formatUnits(t,Number(n)));return 1/(1-Math.pow((a-s)/a,i))},exports.calculatedEstimatedAccruedCompTotalValueUsdScaled=function(r,t,n){return r?t.mul(Math.round(100*parseFloat(r))).div(1e4).mul(100).div(31536e3).mul(n).div(100):e.ethers.constants.Zero},exports.chainIdToNetworkName=function(e){return 137===e?"polygon":x(e)},exports.deserializeBigNumbers=function r(t){try{return Array.isArray(t)?t.forEach(r):"object"==typeof t&&null!==t&&Object.keys(t).forEach((function(n){if(Array.isArray(t[n]))t[n].forEach(r);else if("object"==typeof t[n]&&null!==t[n]){var o;"BigNumber"===(null==(o=t[n])?void 0:o.type)?t[n]=e.ethers.BigNumber.from(t[n]):r(t[n])}})),t}catch(e){return t}},exports.displayPercentage=function(e){return(e=parseFloat(e).toFixed(2)).toString().replace(/(\.0+$)|(0+$)/,"")},exports.getChainIdByAlias=function(e){return null==p?void 0:p[e]},exports.getLootBoxKey=function(e,r){return"lootBox-"+e+"-"+r},exports.getMaxPrecision=function(e){var r;return(null==(r=String(e).split(".")[1])?void 0:r.length)||0},exports.getMinPrecision=l,exports.getNetworkNameAliasByChainId=x,exports.getNetworkNiceNameByChainId=function(e){switch(Number(e)){case p.mainnet:return"Ethereum";case p.matic:return"Polygon";case p.bsc:return"Binance Smart Chain";case p.celo:return"Celo";case p.xdai:return"xDai";default:var r=x(e);return r?r.charAt(0).toUpperCase()+r.slice(1):"--"}},exports.getPrecision=c,exports.getPrizePoolSymbol=function(e,r){return e.toUpperCase()+"-"+r.slice(0,8)},exports.getReadProvider=O,exports.getReadProviders=function(e){var r={};return e.forEach((function(e){var t=O(e);t&&(r[e]=t)})),r},exports.getSecondsRemainingInPrizePeriod=function(e,r){var t=e.toNumber(),n=r.toNumber();return t-(S()-n)},exports.getSecondsSinceEpoch=S,exports.getTimeBreakdown=function(e){var r=Number(e),t=0;r>=31536e3&&(r-=31536e3*(t=Math.floor(r/31536e3)));var n=0;r>=604800&&(r-=604800*(n=Math.floor(r/604800)));var o=0;r>=86400&&(r-=86400*(o=Math.floor(r/86400)));var i=0;(o||r>=3600)&&(r-=3600*(i=Math.floor(r/3600)));var s=0;(i||r>=60)&&(r-=60*(s=Math.floor(r/60)));var a=0;return(s||r>=1)&&(a=r),{years:t,weeks:n,days:o,hours:i,minutes:s,seconds:a}},exports.getTokenColour=function(e,r){return void 0===r&&(r=!1),r?P[e]:T[e]},exports.initProviderApiKeys=function(e){U.alchemy=e.alchemy,U.etherscan=e.etherscan,U.infura=e.infura},exports.msToS=function(e){return e?e/1e3:0},exports.msToSeconds=function(r){return r?e.ethers.BigNumber.from(r).div(1e3).toNumber():0},exports.numberWithCommas=u,exports.prettyNumber=function(e,r){return u(e,{decimals:r})},exports.sToMs=function(e){return e?1e3*e:0},exports.safeParseUnits=function(e,r){try{return t.parseUnits(e,r)}catch(t){return void console.warn("could not run parseUnits on values:",e,r)}},exports.sharesAmountToUnderlyingAmount=function(e,r,t){if(!r.isZero())return e.mul(t).div(r)},exports.shorten=function(e){var r;return e.hash&&(r=i.exec(e.hash))?e.short?r[1]+"...":r[1]+"..."+r[2]:null},exports.stringWithPrecision=s,exports.subtractDates=function(e,r){var t=e.getTime()-r.getTime(),n=0;t>=864e5&&(t-=864e5*(n=t/864e5));var o=0;(n||t>=36e5)&&(t-=36e5*(o=t/36e5));var i=0;(o||t>=6e4)&&(t-=6e4*(i=t/6e4));var s=0;return(i||t>=1e3)&&(s=t/1e3),{days:n,hours:o,minutes:i,seconds:s}},exports.toNonScaledUsdString=function(e){return t.formatUnits(e,2)},exports.toScaledUsdBigNumber=a,exports.underlyingAmountToSharesAmount=function(e,r,t){if(!t.isZero())return e.mul(r).div(t)};
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("ethers"),r=require("ethers/lib/utils"),t=require("@ethersproject/units"),n=require("@ethersproject/providers"),o=require("@ethersproject/networks"),i=require("@pooltogether/evm-chains-extended"),s=/^(\w{6})\w*(\w{4})$/;function a(e,r){void 0===r&&(r={precision:2});var t=r.precision;if(e&&"function"==typeof e.indexOf){var n=t?t+1:0;return e.substr(0,e.indexOf(".")+n)}return e}var u=function(e){return t.parseUnits(a(e,{precision:2}),2)},c=function(r,t){if(void 0===t&&(t={}),t.decimals||(t.decimals=18),null!=r){var n=r._isBigNumber?e.ethers.utils.formatUnits(r,t.decimals):r;return!t.precision&&0!==t.precision&&n&&(t.precision=l(n)),function(e,r){if(void 0===r&&(r={}),!e)return"number"==typeof e?e:"";var t=2;void 0!==r.precision&&(t=r.precision);var n="en-GB";r.currentLang&&"es"===r.currentLang&&(n="es-ES"),0===t&&(e=Math.floor(Number(e))),e.toString().match("e")&&(e=Number.parseFloat(e).toFixed(0));var o=e.toString().split(".");o[0]=o[0].replace(",","");var i="";return i=o.length>1&&t>0?a(o.join("."),{precision:t}):o[0],r.removeTrailingZeros&&(i=i.replace(/(\.0+|0+)$/,"")),Number(i).toLocaleString(n,{minimumFractionDigits:r.removeTrailingZeros?0:t})}(n,t)}},l=function(e){return(e=parseFloat(e))>1e4?0:e>=.1?2:d(e)},d=function(e,r){void 0===r&&(r={additionalDigits:2});var t=r.additionalDigits,n=String(e).split(".")[1];return"0"===n?0:n?n.match(/^0*/)[0].length+t:t},p=function(e,r){return e.mul(Math.round(100*r)).div(100)},m=function(r){return r.reduce((function(e,r){return r.add(e)}),e.ethers.constants.Zero)},f=Object.freeze({mainnet:1,homestead:1,ropsten:3,rinkeby:4,goerli:5,kovan:42,bsc:56,"poa-sokol":77,"bsc-testnet":97,poa:99,xdai:100,polygon:137,matic:137,optimism:420,avalanche:43114,fuji:43113,celo:42220,"celo-testnet":44787,mumbai:80001}),h=Object.freeze([f.mainnet,f.ropsten,f.rinkeby,f.goerli,f.kovan]),v=Object.freeze([f.polygon,f.mumbai]),x=Object.freeze([f.avalanche,f.fuji]),g=Object.freeze([f.celo,f["celo-testnet"]]),b=function(e){var r=Object.keys(f).find((function(r){return f[r]===e}));if(void 0!==r)return r},N=Object.freeze([1,3,4,5,42,137,80001,10,69,42161,421611]),y=Object.freeze([1,3,4,5,42]),U=Object.freeze([1,3,4,5,42,137,80001,10,69,42161,421611]),T={alchemy:void 0,etherscan:void 0,infura:void 0},w=function(e){var r,t=i.getChain(e);try{T.alchemy&&N.includes(e)?r=new n.AlchemyProvider(e,T.alchemy):T.infura&&U.includes(e)?r=new n.InfuraProvider(e,T.infura):T.etherscan&&y.includes(e)?r=new n.EtherscanProvider(e,T.etherscan):t&&t.rpc[0]?r=new n.JsonRpcProvider(t.rpc[0],e):console.warn("Chain id "+e+" not supported.")}catch(e){console.error(e)}return r},P=function(e,r){var t=T.alchemy||(null==r?void 0:r.alchemy),s=T.infura||(null==r?void 0:r.infura);try{var a;if(t&&N.includes(e))return n.AlchemyProvider.getUrl(o.getNetwork(e),t).url;if(s&&U.includes(e))return n.InfuraProvider.getUrl(o.getNetwork(e),"string"==typeof s?{projectId:s}:s).url;var u=i.getChain(e);return(null==u||null==(a=u.rpc)?void 0:a[0])||(console.warn("getRpcUrl | Chain id "+e+" not supported."),i.getChain(f.mainnet).rpc[0])}catch(e){return console.error(e),i.getChain(f.mainnet).rpc[0]}},S=function(){return Number((Date.now()/1e3).toFixed(0))},M=Object.freeze({}),O=Object.freeze({});exports.AVALANCHE_NETWORKS=x,exports.CELO_NETWORKS=g,exports.ETHEREUM_NETWORKS=h,exports.NETWORK=f,exports.POLYGON_NETWORKS=v,exports.addBigNumbers=m,exports.addTokenTotalUsdValue=function(e,t){var n=t[e.address];if(n){if(e.usd=n.usd||0,e.derivedETH=n.derivedETH||"0",e.amountUnformatted){var o=p(e.amountUnformatted,e.usd);e.totalValueUsd=r.formatUnits(o,e.decimals),e.totalValueUsdScaled=u(e.totalValueUsd)}}else e.usd=0,e.derivedETH="0"},exports.amountMultByUsd=p,exports.calculateAPR=function(e,r){return r.isZero()||e.isZero()?"0":t.formatUnits(e.mul(1e4).mul(365).div(r),2)},exports.calculateCreamBorrowApy=function(e,r,n,o,i,s,a){var u=Number(t.formatUnits(e,18)),c=Number(t.formatUnits(r,18)),l=Number(t.formatUnits(n,18)),d=Number(t.formatUnits(o,18)),p=Number(t.formatUnits(i,18)),m=Number(t.formatUnits(s,18)),f=a.toNumber();return Math.pow(1+u+c*Math.min(l,d)+Math.max(m*l-p,0),f)-1},exports.calculateCreamSupplyApy=function(e,r,n,o){var i=Number(t.formatUnits(r,18)),s=Number(t.formatUnits(n,18)),a=o.toNumber();return Math.pow(1+(Math.pow(1+e,1/a)-1)*(1-i)*s,a)-1},exports.calculateEstimatedCompoundPrizeWithYieldUnformatted=function(r,t,n,o,i,s){var a=s&&0!==parseFloat(s)?e.ethers.utils.parseUnits(parseFloat(s).toFixed(Number(o)),o):e.ethers.constants.Zero;return(a.isZero()?e.ethers.constants.Zero:t.mul(n).mul(Math.round(parseFloat(i))).mul(a).div(e.ethers.utils.parseUnits("1",18)).div(e.ethers.utils.parseUnits("1",o))).add(r)},exports.calculateLPTokenPrice=function(e,r,n,o,i){var s=m([p(t.parseUnits(e,18),n),p(t.parseUnits(r,18),o)]),a=t.parseUnits(i,18);return s.div(a)},exports.calculateOdds=function(r,t,n,o){if(void 0===o&&(o=1),!r||r.isZero()||!t||t.isZero()||!n||0===o)return 0;var i=Number(e.ethers.utils.formatUnits(r,n)),s=Number(e.ethers.utils.formatUnits(t,n));return 1-Math.pow((s-i)/s,o)},exports.calculateUsersOdds=function(r,t,n,o){if(!r||r.eq(e.ethers.BigNumber.from(0))||!n)return 0;var i=parseInt(o,10),s=Number(e.ethers.utils.formatUnits(r,Number(n))),a=Number(e.ethers.utils.formatUnits(t,Number(n)));return 1/(1-Math.pow((a-s)/a,i))},exports.calculatedEstimatedAccruedCompTotalValueUsdScaled=function(r,t,n){return r?t.mul(Math.round(100*parseFloat(r))).div(1e4).mul(100).div(31536e3).mul(n).div(100):e.ethers.constants.Zero},exports.chainIdToNetworkName=function(e){return 137===e?"polygon":b(e)},exports.dToM=function(e){return e?1440*e:0},exports.dToMs=function(e){return e?86400*e*1e3:0},exports.dToS=function(e){return e?86400*e:0},exports.deserializeBigNumbers=function r(t){try{return Array.isArray(t)?t.forEach(r):"object"==typeof t&&null!==t&&Object.keys(t).forEach((function(n){if(Array.isArray(t[n]))t[n].forEach(r);else if("object"==typeof t[n]&&null!==t[n]){var o;"BigNumber"===(null==(o=t[n])?void 0:o.type)?t[n]=e.ethers.BigNumber.from(t[n]):r(t[n])}})),t}catch(e){return t}},exports.displayPercentage=function(e){return(e=parseFloat(e).toFixed(2)).toString().replace(/(\.0+$)|(0+$)/,"")},exports.getChainIdByAlias=function(e){return null==f?void 0:f[e]},exports.getLootBoxKey=function(e,r){return"lootBox-"+e+"-"+r},exports.getMaxPrecision=function(e){var r;return(null==(r=String(e).split(".")[1])?void 0:r.length)||0},exports.getMinPrecision=d,exports.getNetworkNameAliasByChainId=b,exports.getNetworkNiceNameByChainId=function(e){switch(Number(e)){case f.mainnet:return"Ethereum";case f.matic:return"Polygon";case f.bsc:return"Binance Smart Chain";case f.celo:return"Celo";case f.xdai:return"xDai";default:var r=b(e);return r?r.charAt(0).toUpperCase()+r.slice(1):"--"}},exports.getPrecision=l,exports.getPrizePoolSymbol=function(e,r){return e.toUpperCase()+"-"+r.slice(0,8)},exports.getReadProvider=w,exports.getReadProviders=function(e){var r={};return e.forEach((function(e){var t=w(e);t&&(r[e]=t)})),r},exports.getRpcUrl=P,exports.getRpcUrls=function(e,r){return e.reduce((function(e,t){return e[t]=P(t,r),e}),{})},exports.getSecondsRemainingInPrizePeriod=function(e,r){var t=e.toNumber(),n=r.toNumber();return t-(S()-n)},exports.getSecondsSinceEpoch=S,exports.getTimeBreakdown=function(e){var r=Number(e),t=0;r>=31536e3&&(r-=31536e3*(t=Math.floor(r/31536e3)));var n=0;r>=604800&&(r-=604800*(n=Math.floor(r/604800)));var o=0;r>=86400&&(r-=86400*(o=Math.floor(r/86400)));var i=0;(o||r>=3600)&&(r-=3600*(i=Math.floor(r/3600)));var s=0;(i||r>=60)&&(r-=60*(s=Math.floor(r/60)));var a=0;return(s||r>=1)&&(a=r),{years:t,weeks:n,days:o,hours:i,minutes:s,seconds:a}},exports.getTokenColour=function(e,r){return void 0===r&&(r=!1),r?O[e]:M[e]},exports.initProviderApiKeys=function(e){T.alchemy=e.alchemy,T.etherscan=e.etherscan,T.infura=e.infura},exports.msToD=function(e){return e?e/1e3/86400:0},exports.msToS=function(e){return e?e/1e3:0},exports.msToSeconds=function(r){return r?e.ethers.BigNumber.from(r).div(1e3).toNumber():0},exports.numberWithCommas=c,exports.prettyNumber=function(e,r){return c(e,{decimals:r})},exports.sToD=function(e){return e?e/86400:0},exports.sToM=function(e){return e?e/60:0},exports.sToMs=function(e){return e?1e3*e:0},exports.safeParseUnits=function(e,r){try{return t.parseUnits(e,r)}catch(t){return void console.warn("could not run parseUnits on values:",e,r)}},exports.sharesAmountToUnderlyingAmount=function(e,r,t){if(!r.isZero())return e.mul(t).div(r)},exports.shorten=function(e){var r;return e.hash&&(r=s.exec(e.hash))?e.short?r[1]+"...":r[1]+"..."+r[2]:null},exports.stringWithPrecision=a,exports.subtractDates=function(e,r){var t=e.getTime()-r.getTime(),n=0;t>=864e5&&(t-=864e5*(n=t/864e5));var o=0;(n||t>=36e5)&&(t-=36e5*(o=t/36e5));var i=0;(o||t>=6e4)&&(t-=6e4*(i=t/6e4));var s=0;return(i||t>=1e3)&&(s=t/1e3),{days:n,hours:o,minutes:i,seconds:s}},exports.toNonScaledUsdString=function(e){return t.formatUnits(e,2)},exports.toScaledUsdBigNumber=u,exports.underlyingAmountToSharesAmount=function(e,r,t){if(!t.isZero())return e.mul(r).div(t)};
//# sourceMappingURL=utilities.cjs.production.min.js.map

@@ -5,2 +5,3 @@ import { ethers } from 'ethers';

import { AlchemyProvider, InfuraProvider, EtherscanProvider, JsonRpcProvider } from '@ethersproject/providers';
import { getNetwork } from '@ethersproject/networks';
import { getChain } from '@pooltogether/evm-chains-extended';

@@ -255,6 +256,9 @@

// Seconds
var SECONDS_PER_MINUTE = 60;
var SECONDS_PER_HOUR = 3600;
var SECONDS_PER_DAY = 86400;
var SECONDS_PER_WEEK = 604800;
var SECONDS_PER_YEAR = 31536000;
var SECONDS_PER_YEAR = 31536000; // Minutes
var MINUTES_PER_DAY = 1440;

@@ -686,4 +690,59 @@ /**

};
/**
* Returns an RPC URL using configured API keys if possible.
* @param chainId
*/
var getRpcUrl = function getRpcUrl(chainId, apiKeys) {
var alchemyApiKey = API_KEYS.alchemy || (apiKeys == null ? void 0 : apiKeys.alchemy);
var infuraApiKey = API_KEYS.infura || (apiKeys == null ? void 0 : apiKeys.infura);
try {
var _chainData$rpc;
if (!!alchemyApiKey && ALCHEMY_CHAIN_IDS.includes(chainId)) {
var connectionInfo = AlchemyProvider.getUrl(getNetwork(chainId), alchemyApiKey);
return connectionInfo.url;
} else if (!!infuraApiKey && INFURA_CHAIN_IDS.includes(chainId)) {
var _connectionInfo = InfuraProvider.getUrl(getNetwork(chainId), typeof infuraApiKey === 'string' ? {
projectId: infuraApiKey
} : infuraApiKey);
return _connectionInfo.url;
}
var chainData = getChain(chainId);
var rpcUrl = chainData == null ? void 0 : (_chainData$rpc = chainData.rpc) == null ? void 0 : _chainData$rpc[0];
if (!!rpcUrl) {
return rpcUrl;
} else {
console.warn("getRpcUrl | Chain id " + chainId + " not supported.");
var _chainData = getChain(NETWORK.mainnet);
return _chainData.rpc[0];
}
} catch (e) {
console.error(e);
var _chainData2 = getChain(NETWORK.mainnet);
return _chainData2.rpc[0];
}
};
/**
* Returns multiple RPC URLS using configured API keys if possible.
* @param chainIds
* @returns
*/
var getRpcUrls = function getRpcUrls(chainIds, apiKeys) {
return chainIds.reduce(function (rpcUrls, chainId) {
rpcUrls[chainId] = getRpcUrl(chainId, apiKeys);
return rpcUrls;
}, {});
};
/**
* Breaks down a number of seconds into years, weeks, days, hours, minutes, seconds

@@ -787,2 +846,80 @@ * @param totalSeconds

/**
* Converts days to milliseconds
* @param days days as a number
* @returns
*/
var dToMs = function dToMs(days) {
if (!days) {
return 0;
}
return days * SECONDS_PER_DAY * 1000;
};
/**
* Converts milliseconds to days
* @param days days as a number
* @returns
*/
var msToD = function msToD(ms) {
if (!ms) {
return 0;
}
return ms / 1000 / SECONDS_PER_DAY;
};
/**
* Converts days to seconds
* @param days days as a number
* @returns
*/
var dToS = function dToS(days) {
if (!days) {
return 0;
}
return days * SECONDS_PER_DAY;
};
/**
* Converts seconds to days
* @param s seconds as a number
* @returns
*/
var sToD = function sToD(s) {
if (!s) {
return 0;
}
return s / SECONDS_PER_DAY;
};
/**
* Converts seconds to minutes
* @param s seconds as a number
* @returns
*/
var sToM = function sToM(s) {
if (!s) {
return 0;
}
return s / SECONDS_PER_MINUTE;
};
/**
* Converts days to minutes
* @param days days as a number
* @returns
*/
var dToM = function dToM(days) {
if (!days) {
return 0;
}
return days * MINUTES_PER_DAY;
};
/**
* Finds the difference between two date objects

@@ -898,3 +1035,3 @@ * @param dateA DateTime JS object (ie. new Date(Date.now()))

export { AVALANCHE_NETWORKS, CELO_NETWORKS, ETHEREUM_NETWORKS, NETWORK, POLYGON_NETWORKS, addBigNumbers, addTokenTotalUsdValue, amountMultByUsd, calculateAPR, calculateCreamBorrowApy, calculateCreamSupplyApy, calculateEstimatedCompoundPrizeWithYieldUnformatted, calculateLPTokenPrice, calculateOdds, calculateUsersOdds, calculatedEstimatedAccruedCompTotalValueUsdScaled, chainIdToNetworkName, deserializeBigNumbers, displayPercentage, getChainIdByAlias, getLootBoxKey, getMaxPrecision, getMinPrecision, getNetworkNameAliasByChainId, getNetworkNiceNameByChainId, getPrecision, getPrizePoolSymbol, getReadProvider, getReadProviders, getSecondsRemainingInPrizePeriod, getSecondsSinceEpoch, getTimeBreakdown, getTokenColour, initProviderApiKeys, msToS, msToSeconds, numberWithCommas, prettyNumber, sToMs, safeParseUnits, sharesAmountToUnderlyingAmount, shorten, stringWithPrecision, subtractDates, toNonScaledUsdString, toScaledUsdBigNumber, underlyingAmountToSharesAmount };
export { AVALANCHE_NETWORKS, CELO_NETWORKS, ETHEREUM_NETWORKS, NETWORK, POLYGON_NETWORKS, addBigNumbers, addTokenTotalUsdValue, amountMultByUsd, calculateAPR, calculateCreamBorrowApy, calculateCreamSupplyApy, calculateEstimatedCompoundPrizeWithYieldUnformatted, calculateLPTokenPrice, calculateOdds, calculateUsersOdds, calculatedEstimatedAccruedCompTotalValueUsdScaled, chainIdToNetworkName, dToM, dToMs, dToS, deserializeBigNumbers, displayPercentage, getChainIdByAlias, getLootBoxKey, getMaxPrecision, getMinPrecision, getNetworkNameAliasByChainId, getNetworkNiceNameByChainId, getPrecision, getPrizePoolSymbol, getReadProvider, getReadProviders, getRpcUrl, getRpcUrls, getSecondsRemainingInPrizePeriod, getSecondsSinceEpoch, getTimeBreakdown, getTokenColour, initProviderApiKeys, msToD, msToS, msToSeconds, numberWithCommas, prettyNumber, sToD, sToM, sToMs, safeParseUnits, sharesAmountToUnderlyingAmount, shorten, stringWithPrecision, subtractDates, toNonScaledUsdString, toScaledUsdBigNumber, underlyingAmountToSharesAmount };
//# sourceMappingURL=utilities.esm.js.map
{
"name": "@pooltogether/utilities",
"version": "0.3.8",
"version": "0.3.9",
"description": "Shared utility functions across PoolTogether apps",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc