Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@stnew/prismic-apollo-link

Package Overview
Dependencies
Maintainers
4
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@stnew/prismic-apollo-link

An ApolloLink to connect to Prismic's GraphQL API

latest
npmnpm
Version
1.2.4
Version published
Maintainers
4
Created
Source

@stnew/prismic-apollo-client

This package exports:

  • prismicApolloLink - An ApolloLink to connect to Prismic's GraphQL API

Install dependencies:

npm install @stnew/prismic-apollo-link @apollo/client prismic-javascript

To connect the the GraphQL API, create a new ApolloClient and pass the link to the constructor:

import { ApolloClient, InMemoryCache } from '@apollo/client'
import { prismicApolloLink } from ' @stnew/prismic-apollo-link'

export const prismicClient = new ApolloClient({
  cache: new InMemoryCache(),
  link: prismicApolloLink({
    repositoryName: 'your-repository-name',
    accessToken: 'YOUR_ACCESS_TOKEN',
  }),
})

Now you can use this client to query the API.

import { prismicClient } from 'lib/prismic'

const { data } = await prismicClient.query({
  query: gql`
    query($lang: String!, $uid: String!) {
      blog(lang: $lang, uid: $uid) {
        title
      }
    }
  `,
  variables: {
    uid: 'hello-world',
    lang: 'en-us',
  },
})

Handling Previews

The prismicApolloLink takes a second argument which handles preview refs from Prismic. You can handle this case by making your client a function that accepts the preview data as an argument.

export function prismicClient({ previewData }) {
  return new ApolloClient({
    cache: new InMemoryCache(),
    link: prismicApolloLink({
        repositoryName: 'your-repository-name',
        accessToken: 'YOUR_ACCESS_TOKEN',
      },
      previewData,
    ),
  })
}

And for example, in Next.js you would pass this data to the client.

export async function getStaticProps({ params, preview = false, previewData }) {
  const response = await prismicClient({ previewData }).query({
    query: gql`
      query($lang: String!, $uid: String!) {
        blog(lang: $lang, uid: $uid) {
          title
        }
      }
    `,
    variables: {
      uid: params.uid,
      lang: 'en-us',
    },
  })

  const data = response.data.blog

  return {
    props: {
      data,
      preview,
    },
  }
}

FAQs

Package last updated on 17 Mar 2021

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts