Skip to content

Commit

Permalink
fix(gatsby-source-contentful): Correct supported image formats (#29562)
Browse files Browse the repository at this point in the history
  • Loading branch information
ascorbic committed Feb 18, 2021
1 parent df2f9d6 commit 3b4d32f
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
2 changes: 1 addition & 1 deletion packages/gatsby-plugin-image/src/resolver-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ export function getGatsbyImageFieldConfig<TSource, TContext>(
The image formats to generate. Valid values are AUTO (meaning the same format as the source image), JPG, PNG, WEBP and AVIF.
The default value is [AUTO, WEBP], and you should rarely need to change this. Take care if you specify JPG or PNG when you do
not know the formats of the source images, as this could lead to unwanted results such as converting JPEGs to PNGs. Specifying
both PNG and JPG is not supported and will be ignored. AVIF support is currently experimental.
both PNG and JPG is not supported and will be ignored.
`,
defaultValue: [`auto`, `webp`],
},
Expand Down
20 changes: 20 additions & 0 deletions packages/gatsby-source-contentful/src/extend-node-type.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ const {
GraphQLFloat,
GraphQLNonNull,
GraphQLJSON,
GraphQLList,
} = require(`gatsby/graphql`)
const qs = require(`qs`)
const { generateImageData } = require(`gatsby-plugin-image`)
Expand All @@ -33,6 +34,8 @@ const {
// cache is more likely to go stale than the images (which never go stale)
// Note that the same image might be requested multiple times in the same run

const validImageFormats = new Set([`jpg`, `png`, `webp`])

if (process.env.GATSBY_REMOTE_CACHE) {
console.warn(
`Note: \`GATSBY_REMOTE_CACHE\` will be removed soon because it has been renamed to \`GATSBY_CONTENTFUL_EXPERIMENTAL_REMOTE_CACHE\``
Expand Down Expand Up @@ -200,6 +203,13 @@ const generateImageSource = (
height = CONTENTFUL_IMAGE_MAX_SIZE
}

if (!validImageFormats.has(toFormat)) {
console.warn(
`[gatsby-source-contentful] Invalid image format "${toFormat}". Supported types are jpg, png and webp"`
)
return undefined
}

const src = createUrl(filename, {
width,
height,
Expand Down Expand Up @@ -781,6 +791,16 @@ exports.extendNodeType = ({ type, store, reporter }) => {
type: GraphQLInt,
defaultValue: 50,
},
formats: {
type: GraphQLList(ImageFormatType),
description: stripIndent`
The image formats to generate. Valid values are AUTO (meaning the same format as the source image), JPG, PNG, and WEBP.
The default value is [AUTO, WEBP], and you should rarely need to change this. Take care if you specify JPG or PNG when you do
not know the formats of the source images, as this could lead to unwanted results such as converting JPEGs to PNGs. Specifying
both PNG and JPG is not supported and will be ignored.
`,
defaultValue: [``, `webp`],
},
})

fieldConfig.type = GraphQLJSON
Expand Down
1 change: 1 addition & 0 deletions packages/gatsby-source-contentful/src/schemes.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const ImageFormatType = new GraphQLEnumType({
name: `ContentfulImageFormat`,
values: {
NO_CHANGE: { value: `` },
AUTO: { value: `` },
JPG: { value: `jpg` },
PNG: { value: `png` },
WEBP: { value: `webp` },
Expand Down

0 comments on commit 3b4d32f

Please sign in to comment.