@keystone-next/fields-cloudinary-image-legacydeprecated

KeystoneJS Cloudinary Image Field Type

Usage no npm install needed!

<script type="module">
  import keystoneNextFieldsCloudinaryImageLegacy from 'https://cdn.skypack.dev/@keystone-next/fields-cloudinary-image-legacy';
</script>

README

CloudinaryImage

The CloudinaryImage field extends the File field and allows uploading images to Cloudinary. It also exposes additional GraphQL functionality for querying your uploaded images.

Usage

This field must be used with the CoundinaryAdapter file adapter:

const { Keystone } = require('@keystone-next/keystone-legacy');
const { CloudinaryAdapter } = require('@keystone-next/file-adapters-legacy');
const { CloudinaryImage } = require('@keystone-next/fields-cloudinary-image-legacy');

const keystone = new Keystone({...});

const fileAdapter = new CloudinaryAdapter({
  cloudName: process.env.CLOUDINARY_CLOUD_NAME,
  apiKey: process.env.CLOUDINARY_KEY,
  apiSecret: process.env.CLOUDINARY_SECRET,
  folder: 'my-keystone-app',
});

keystone.createList('Image', {
  fields: {
    image: { type: CloudinaryImage, adapter: fileAdapter },
  },
});

Config

Since this field extends the File field, it accepts all the same config options.

GraphQL

Will add the following to the GraphQL schema:

"""
Mirrors the formatting options [Cloudinary provides](https://cloudinary.com/documentation/image_transformation_reference).
All options are strings as they ultimately end up in a URL.
"""
input CloudinaryImageFormat {
  """
  Rewrites the filename to be this pretty string. Do not include \`/\` or \`.\`
  """
  prettyName: String
  width: String
  height: String
  crop: String
  aspect_ratio: String
  gravity: String
  zoom: String
  x: String
  y: String
  format: String
  fetch_format: String
  quality: String
  radius: String
  angle: String
  effect: String
  opacity: String
  border: String
  background: String
  overlay: String
  underlay: String
  default_image: String
  delay: String
  color: String
  color_space: String
  dpr: String
  page: String
  density: String
  flags: String
  transformation: String
}

type CloudinaryImage_File {
  id: ID
  path: String
  filename: String
  originalFilename: String
  mimetype: String
  encoding: String
  publicUrl: String
  publicUrlTransformed(transformation: CloudinaryImageFormat): String
}

CloudinaryImage fields will have type CloudinaryImage_File in the schema. For example, to query an entry in our Image list, one could do:

query getFirstCloudinaryImage {
  allImages(first: 1) {
    image {
      filename
      publicUrlTransformed(transformation: { width: "120", crop: "limit" })
    }
  }
}