tn-apollo-link-token-refresh

Apollo access token refresh using refresh token

Usage no npm install needed!

<script type="module">
  import tnApolloLinkTokenRefresh from 'https://cdn.skypack.dev/tn-apollo-link-token-refresh';
</script>

README

Bundle Size - 1.54 Kb gzipped

Apollo Refresh Link

export const apolloLinkRefresh = new ApolloLinkTokenRefresh({
  reduceExpireTime: 60,
  currentAccessToken: () => getAccessToken(),
  beforeFetch: () => null,
  fetch: fetch('http://localhost:5000/refresh', { method: 'POST' }),
  onResponse: async (res: Response) => {
    const { accessToken, refreshToken } = await res.json()
    setAccessToken(accessToken)
    setRefreshToken(refreshToken)
  },
  onError: (err) => console.log(err),
})

Creating Apollo Link

const apolloLinks = ApolloLink.from([
  apolloLinkRefresh, 
  apolloLinkRequest,
  apolloLinkHTTP
])

ApolloLinkTokenRefreshOptions

Property Type Note
reduceExpireTime seconds number A safety time so that AccessToken does not expire on the fly
currentAccessToken () => string A method returning current AccessToken
beforeFetch () => void This method will be called before fetching AccessToken
fetch () => Promise<Response> fetch() method
onResponse (res: Response) => void fetch().then( onResponse )
onError (err: Error) => void fetch().then.catch( onError )