@graphcms/validation

This is the validation package for the GraphCMS server backend and the GraphCMS webapp frontend. The purpose of this package is to validate user inputs at the frontend and backend level.

Usage no npm install needed!

<script type="module">
  import graphcmsValidation from 'https://cdn.skypack.dev/@graphcms/validation';
</script>

README

GraphCMS/validation

This is the validation package for the GraphCMS server backend and the GraphCMS webapp frontend. The purpose of this package is to validate user inputs at the frontend and backend level.

Publishing to npm

Publishing is automated using Changesets:

  • On your feature branch when your are done with your changes, run yarn changeset to generate a changeset file, which will include a short desciption of the change and the generated version bump.
  • Commit the generated file, push, and open a PR. Check that the changeset is detected accordingly by github in the PR.
  • Once the PR gets merged to master, a package versions PR gets opened automatically containing all the changelog changes and versions bumps.
  • Once reviewed, merge it to trigger the npm pushes.

Usage

Let's say you want to check if some string is a valid model api id. Here is how you would do that:

import * as Validator from '@graphcms/validation';

const model = {
  apiId: 'TestModel', // The api id of the model in question
  displayName: 'TestModel',
  description: null,
}; 

Validator.object()
  .shape({
    data: Validator.object().shape({
      apiId: Validator.model.apiId,
      displayName: Validator.model.displayName,
      description: Validator.model.description,
    }),
  })
  .validateSync(model, {
    abortEarly: false,
  });

// Validation SUCCESSFUL

If a validation is NOT successful, a ValidationError will be thrown.

API

The export from this module looks like this:

import * as validation from '@graphcms/validation';

/* validation => */ {
  validation: Object                // The validation package object
    enumeration: Object             // Validators for various enumeration data
      apiId: yup.StringSchema       // Validator schema for enumeration api ids
      displayName: yup.StringSchema // Validator schema for enumeration display names
      value: yup.StringSchema       // Validator schema for enumeration entries 
    field: Object                   // Validators for various field data
      apiId: yup.StringSchema       // Validator schema for field api ids
      displayName: yup.StringSchema // Validator schema for field display names
    model: Object                   // Validators for various model data
      apiId: yup.StringSchema       // Validator schema for model api ids
      displayName: yup.StringSchema // Validator schema for model display names
    yup: Object                     // The yup.js validation package
}