@polygon.io/client-js
Version:
Isomorphic Javascript client for Polygon.io Stocks, Forex, and Crypto APIs
2 lines (1 loc) • 9.65 kB
JavaScript
import rt from"cross-fetch";var G={fetch:(t,r)=>rt(t,r)};import{stringify as st}from"query-string";var O=class extends Error{constructor(o,e="",s=""){super(o);this.status=e,this.request_id=s}},i=(t,r,o={})=>async(e,s={},a={})=>{if(!t)throw new Error("API KEY not configured...");let u=async(m,tt={},Q={},T=[])=>{let C=st(tt,{encode:!0}),P=`${r}${m}${C?"?"+C:""}`,S={...Q.headers||o.headers||{},Authorization:`Bearer ${t}`};if(o.trace){console.log("Request URL: ",P);let n={...S};"Authorization"in n&&(n.Authorization=n.Authorization.replace(t,"REDACTED")),console.log("Request Headers: ",n)}try{let n=await G.fetch(P,{...o,...Q,headers:S});if(o.trace&&console.log("Response Headers: ",n.headers),n.status>=400){let g=await n.text(),q;try{let l=JSON.parse(g);q=new O(l.message,l.status,l.request_id)}catch{q=new Error(g)}throw q}if(n?.headers?.get("content-type")==="text/csv")return n.text();let I=await n.json(),_=I.results instanceof Array?T.concat(I.results):T;if(o?.pagination&&I.next_url){let g=I.next_url.replace(r,"");return u(g,{},Q,_)}else return o?.pagination?{...I,results:_,count:_.length,next_url:null}:I}catch(n){throw n}};return u(e,s,a)};var A=async(t,r,o,e,s,a,u,m)=>t(`/v2/aggs/ticker/${r}/range/${o}/${e}/${s}/${a}`,u,m);var D=async(t,r,o,e)=>t(`/v2/aggs/grouped/locale/global/market/crypto/${r}`,o,e);var w=async(t,r,o,e,s,a)=>t(`/v1/open-close/crypto/${r}/${o}/${e}`,s,a);var $=async(t,r,o,e)=>t(`/v3/trades/${r}`,o,e);var L=async(t,r,o,e,s)=>t(`/v1/last/crypto/${r}/${o}`,e,s);var E=async(t,r,o,e)=>t(`/v2/aggs/ticker/${r}/prev`,o,e);var F=(t,r,o)=>t("/v2/snapshot/locale/global/markets/crypto/tickers",r,o),U=(t,r,o,e)=>t(`/v2/snapshot/locale/global/markets/crypto/${r}`,o,e),M=(t,r,o,e)=>t(`/v2/snapshot/locale/global/markets/crypto/tickers/${r}`,o,e),W=(t,r,o,e)=>t(`/v2/snapshot/locale/global/markets/crypto/tickers/${r}/book`,o,e);var z=async(t,r,o)=>t("/v1/summaries",r,o);var y=async(t,r,o,e)=>t(`/v1/indicators/sma/${r}`,o,e);var N=async(t,r,o,e)=>t(`/v1/indicators/sma/${r}`,o,e);var d=async(t,r,o,e)=>t(`/v1/indicators/ema/${r}`,o,e);var H=async(t,r,o,e)=>t(`/v1/indicators/ema/${r}`,o,e);var f=async(t,r,o,e)=>t(`/v1/indicators/macd/${r}`,o,e);var j=async(t,r,o,e)=>t(`/v1/indicators/macd/${r}`,o,e);var b=async(t,r,o,e)=>t(`/v1/indicators/rsi/${r}`,o,e);var V=async(t,r,o,e)=>t(`/v1/indicators/rsi/${r}`,o,e);var c=async(t,r,o)=>t("/v3/snapshot",r,o);var B=async(t,r,o)=>t("/v1/summaries",r,o);var X=(t,r="https://api.polygon.io",o)=>{let e=i(t,r,o);return{aggregates:(...s)=>A(e,...s),aggregatesGroupedDaily:(...s)=>D(e,...s),summaries:(...s)=>z(e,...s),dailyOpenClose:(...s)=>w(e,...s),lastTrade:(...s)=>L(e,...s),trades:(...s)=>$(e,...s),previousClose:(...s)=>E(e,...s),snapshotAllTickers:(...s)=>F(e,...s),snapshotGainersLosers:(...s)=>U(e,...s),snapshotTicker:(...s)=>M(e,...s),snapshotTickerFullBookL2:(...s)=>W(e,...s),sma:(...s)=>N(e,...s),ema:(...s)=>H(e,...s),macd:(...s)=>j(e,...s),rsi:(...s)=>V(e,...s),universalSnapshot:(...s)=>c(e,...s)}};var J=async(t,r,o,e,s,a,u,m)=>t(`/v2/aggs/ticker/${r}/range/${o}/${e}/${s}/${a}`,u,m);var Y=async(t,r,o,e)=>t(`/v2/aggs/grouped/locale/global/market/fx/${r}`,o,e);var Z=async(t,r,o,e,s)=>t(`/v1/conversion/${r}/${o}`,e,s);var K=async(t,r,o,e)=>t(`/v3/quotes/${r}`,o,e);var ee=(t,r,o,e,s)=>t(`/v1/last_quote/currencies/${r}/${o}`,e,s);var te=async(t,r,o,e)=>t(`/v2/aggs/ticker/${r}/prev`,o,e);var re=async(t,r,o)=>t("/v2/snapshot/locale/global/markets/forex/tickers",r,o),se=async(t,r,o,e)=>t(`/v2/snapshot/locale/global/markets/forex/${r}`,o,e),oe=async(t,r,o,e)=>t(`/v2/snapshot/locale/global/markets/forex/tickers/${r}`,o,e);var ne=async(t,r,o)=>t("/v1/summaries",r,o);var ie=async(t,r,o,e)=>t(`/v1/indicators/sma/${r}`,o,e);var ae=async(t,r,o,e)=>t(`/v1/indicators/ema/${r}`,o,e);var ue=async(t,r,o,e)=>t(`/v1/indicators/macd/${r}`,o,e);var pe=async(t,r,o,e)=>t(`/v1/indicators/rsi/${r}`,o,e);var me=(t,r="https://api.polygon.io",o)=>{let e=i(t,r,o);return{aggregates:(...s)=>J(e,...s),aggregatesGroupedDaily:(...s)=>Y(e,...s),summaries:(...s)=>ne(e,...s),conversion:(...s)=>Z(e,...s),quotes:(...s)=>K(e,...s),lastQuote:(...s)=>ee(e,...s),previousClose:(...s)=>te(e,...s),snapshotAllTickers:(...s)=>re(e,...s),snapshotGainersLosers:(...s)=>se(e,...s),snapshotTicker:(...s)=>oe(e,...s),sma:(...s)=>ie(e,...s),ema:(...s)=>ae(e,...s),macd:(...s)=>ue(e,...s),rsi:(...s)=>pe(e,...s),universalSnapshot:(...s)=>c(e,...s)}};var ce=async(t,r,o)=>t("/v3/reference/conditions",r,o);var Ie=async(t,r,o)=>t("/v3/reference/exchanges",r,o);var ge=async(t,r,o)=>t("/v1/marketstatus/upcoming",r,o);var le=async(t,r,o)=>t("/v1/marketstatus/now",r,o);var ye=(t,r,o,e)=>t(`/v3/reference/options/contracts/${r}`,o,e);var de=(t,r,o)=>t("/v3/reference/options/contracts",r,o);var fe=async(t,r,o)=>t("/v3/reference/dividends",r,o);var be=async(t,r,o)=>t("/v3/reference/splits",r,o);var xe=async(t,r,o)=>t("/vX/reference/financials",r,o);var he=async(t,r,o,e)=>t(`/v3/reference/tickers/${r}`,o,e);var ke=async(t,r,o)=>t("/v2/reference/news",r,o);var Qe=async(t,r,o)=>t("/v3/reference/tickers",r,o);var _e=async(t,r,o)=>t("/v3/reference/tickers/types",r,o);var qe=(t,r="https://api.polygon.io",o)=>{let e=i(t,r,o);return{conditions:(...s)=>ce(e,...s),exchanges:(...s)=>Ie(e,...s),marketHolidays:(...s)=>ge(e,...s),marketStatus:(...s)=>le(e,...s),optionsContract:(...s)=>ye(e,...s),optionsContracts:(...s)=>de(e,...s),dividends:(...s)=>fe(e,...s),stockSplits:(...s)=>be(e,...s),stockFinancials:(...s)=>xe(e,...s),tickerDetails:(...s)=>he(e,...s),tickerNews:(...s)=>ke(e,...s),tickers:(...s)=>Qe(e,...s),tickerTypes:(...s)=>_e(e,...s)}};var Oe=async(t,r,o,e,s,a,u,m)=>t(`/v2/aggs/ticker/${r}/range/${o}/${e}/${s}/${a}`,u,m);var ve=async(t,r,o,e,s)=>t(`/v1/open-close/${r}/${o}`,e,s);var Re=async(t,r,o,e)=>t(`/v2/aggs/ticker/${r}/prev`,o,e);var Te=async(t,r,o,e)=>t(`/v3/trades/${r}`,o,e);var Ce=async(t,r,o,e)=>t(`/v2/last/trade/${r}`,o,e);var Pe=async(t,r,o,e)=>t(`/v3/quotes/${r}`,o,e);var v=async(t,r,o,e)=>t(`/v3/snapshot/options/${r}`,o,e),R=async(t,r,o,e,s)=>t(`/v3/snapshot/options/${r}/${o}`,e,s);var Se=async(t,r,o)=>t("/v1/summaries",r,o);var Ge=async(t,r,o,e)=>t(`/v1/indicators/sma/${r}`,o,e);var Ae=async(t,r,o,e)=>t(`/v1/indicators/ema/${r}`,o,e);var De=async(t,r,o,e)=>t(`/v1/indicators/macd/${r}`,o,e);var we=async(t,r,o,e)=>t(`/v1/indicators/rsi/${r}`,o,e);var $e=(t,r="https://api.polygon.io",o)=>{let e=i(t,r,o);return{aggregates:(...s)=>Oe(e,...s),summaries:(...s)=>Se(e,...s),dailyOpenClose:(...s)=>ve(e,...s),previousClose:(...s)=>Re(e,...s),trades:(...s)=>Te(e,...s),lastTrade:(...s)=>Ce(e,...s),quotes:(...s)=>Pe(e,...s),snapshotOptionContract:(...s)=>R(e,...s),snapshotOptionChain:(...s)=>v(e,...s),sma:(...s)=>Ge(e,...s),ema:(...s)=>Ae(e,...s),macd:(...s)=>De(e,...s),rsi:(...s)=>we(e,...s),universalSnapshot:(...s)=>c(e,...s)}};var x=async(t,r,o,e,s,a,u,m)=>t(`/v2/aggs/ticker/${r}/range/${o}/${e}/${s}/${a}`,u,m);var Le=async(t,r,o,e)=>t(`/v2/aggs/grouped/locale/us/market/stocks/${r}`,o,e);var h=async(t,r,o,e,s)=>t(`/v1/open-close/${r}/${o}`,e,s);var k=async(t,r,o,e)=>t(`/v2/aggs/ticker/${r}/prev`,o,e);var Ee=async(t,r,o,e)=>t(`/v2/last/nbbo/${r}`,o,e);var Fe=async(t,r,o,e)=>t(`/v2/last/trade/${r}`,o,e);var Ue=async(t,r,o)=>t("/v2/snapshot/locale/us/markets/stocks/tickers",r,o),Me=async(t,r,o,e)=>t(`/v2/snapshot/locale/us/markets/stocks/${r}`,o,e),We=async(t,r,o,e)=>t(`/v2/snapshot/locale/us/markets/stocks/tickers/${r}`,o,e);var ze=async(t,r,o,e)=>t(`/v3/quotes/${r}`,o,e);var Ne=async(t,r,o,e)=>t(`/v3/trades/${r}`,o,e);var He=(t,r="https://api.polygon.io",o)=>{let e=i(t,r,o);return{aggregates:(...s)=>x(e,...s),aggregatesGroupedDaily:(...s)=>Le(e,...s),summaries:(...s)=>B(e,...s),dailyOpenClose:(...s)=>h(e,...s),lastQuote:(...s)=>Ee(e,...s),lastTrade:(...s)=>Fe(e,...s),previousClose:(...s)=>k(e,...s),quotes:(...s)=>ze(e,...s),snapshotAllTickers:(...s)=>Ue(e,...s),snapshotGainersLosers:(...s)=>Me(e,...s),snapshotTicker:(...s)=>We(e,...s),sma:(...s)=>y(e,...s),ema:(...s)=>d(e,...s),macd:(...s)=>f(e,...s),rsi:(...s)=>b(e,...s),trades:(...s)=>Ne(e,...s),universalSnapshot:(...s)=>c(e,...s)}};var je=async(t,r,o)=>t("/v3/snapshot/indices/",r,o);var Ve=(t,r="https://api.polygon.io",o)=>{let e=i(t,r,o);return{aggregates:(...s)=>x(e,...s),dailyOpenClose:(...s)=>h(e,...s),previousClose:(...s)=>k(e,...s),snapshotTicker:(...s)=>je(e,...s),sma:(...s)=>y(e,...s),ema:(...s)=>d(e,...s),macd:(...s)=>f(e,...s),rsi:(...s)=>b(e,...s)}};var ot=(t,r,o)=>({crypto:X(t,r,o),forex:me(t,r,o),reference:qe(t,r,o),options:$e(t,r,o),stocks:He(t,r,o),indices:Ve(t,r,o)}),Be=ot;import nt from"websocket";var p=(t,r)=>{if(!r)throw new Error("api key not provided.");let o=new nt.w3cwebsocket(t);return o.onopen=()=>{o.send(JSON.stringify({action:"auth",params:r}))},o};var Xe=(t,r="wss://socket.polygon.io")=>p(`${r}/crypto`,t);var Je=(t,r="wss://socket.polygon.io")=>p(`${r}/forex`,t);var Ye=(t,r="wss://socket.polygon.io")=>p(`${r}/indices`,t);var Ze=(t,r="wss://socket.polygon.io")=>p(`${r}/options`,t);var Ke=(t,r="wss://socket.polygon.io")=>p(`${r}/stocks`,t);var it=(t,r)=>({crypto:()=>Xe(t,r),forex:()=>Je(t,r),indices:()=>Ye(t,r),options:()=>Ze(t,r),stocks:()=>Ke(t,r)}),et=it;var at=(t,r,o)=>({rest:Be(t,r),websockets:et(t,o)}),Km=at;export{X as cryptoClient,Km as default,me as forexClient,Xe as getCryptoWebsocket,Je as getForexWebsocket,Ye as getIndicesWebsocket,Ze as getOptionsWebsocket,Ke as getStocksWebsocket,i as getWithGlobals,Ve as indicesClient,$e as optionsClient,at as polygonClient,qe as referenceClient,ot as restClient,v as snapshotOptionChain,R as snapshotOptionContract,He as stocksClient,c as universalSnapshot,it as websocketClient};