A model and validation library for Defra forms, providing the foundation for form definitions, components, validation, and data handling.
- Form Definition - Core structures for forms, pages, components, and conditions
- Component Library - Pre-defined form components with validation
- JSON Schema - Ready-to-use JSON schema files for cross-platform validation
- Conditions Engine - Logic for determining form flow and visibility
- Type Definitions - Complete TypeScript type safety
- Metadata Handling - Support for form metadata, versioning, and state management
npm install @defra/forms-model
import { createForm } from '@defra/forms-model';
const form = createForm({
name: 'my-form',
pages: [
{
path: '/start',
title: 'Start page',
components: [/* components */]
}
],
sections: [/* sections */]
});
import { ComponentType } from '@defra/forms-model';
const textField = {
type: ComponentType.TextField,
name: 'fullName',
title: 'Full name',
schema: {
min: 2,
max: 100
}
};
This package includes pre-generated JSON schema files for use with external JSON Schema validators/ IDEs linting etc:
import formSchema from '@defra/forms-model/schemas/form-definition-schema.json';
Available schema files include:
-
form-definition-schema.json
- Full form definition validation -
form-definition-v2-payload-schema.json
- Form definition v2 payload validation
-
component-schema.json
- Component validation -
component-schema-v2.json
- Component validation (v2)
-
page-schema.json
- Page validation -
page-schema-v2.json
- Page validation (v2) -
page-schema-payload-v2.json
- Page payload validation (v2)
-
list-schema.json
- List validation -
list-schema-v2.json
- List validation (v2)
-
form-metadata-schema.json
- Form metadata validation -
form-metadata-author-schema.json
- Form metadata author validation -
form-metadata-input-schema.json
- Form metadata input validation -
form-metadata-state-schema.json
- Form metadata state validation
-
form-metadata-contact-schema.json
- Contact information validation -
form-metadata-email-schema.json
- Email validation -
form-metadata-online-schema.json
- Online form metadata validation
-
form-editor-input-page-schema.json
- Form editor input page validation -
form-editor-input-check-answers-setting-schema.json
- Check answers setting validation -
form-editor-input-question-schema.json
- Question input validation -
form-editor-input-page-settings-schema.json
- Page settings validation
-
page-type-schema.json
- Page type validation -
question-type-schema.json
- Question type validation -
question-type-full-schema.json
- Full question type validation -
written-answer-sub-schema.json
- Written answer sub-schema validation -
date-sub-schema.json
- Date sub-schema validation
-
form-submit-payload-schema.json
- Form submission payload validation -
form-submit-record-schema.json
- Form submission record validation -
form-submit-recordset-schema.json
- Form submission recordset validation
-
patch-page-schema.json
- Patch page validation
-
question-schema.json
- Question validation
-
min-schema.json
- Minimum value validation -
max-schema.json
- Maximum value validation -
min-length-schema.json
- Minimum length validation -
max-length-schema.json
- Maximum length validation -
max-future-schema.json
- Maximum future date validation -
max-past-schema.json
- Maximum past date validation
-
search-options-schema.json
- Search options validation -
query-options-schema.json
- Query options validation -
pagination-options-schema.json
- Pagination options validation -
sorting-options-schema.json
- Sorting options validation
Unit test coverage threshold, code coverage below which build will fail is set by using jest config, at the moment line coverage threshold is set as 92%, see jest.config.js
This package generates JSON Schema files from Joi validation schemas during the build process. These schemas are included in the published npm package and are available at runtime.
When you run npm run build
, the script scripts/generate-schemas.js
is executed which:
- Converts Joi validation schemas to JSON Schema format
- Enhances schemas with titles and descriptions
- Writes schema files to the
schemas/
directory
-
First Build Required: After a fresh clone, you must run
npm run build
before the schema files will be available locally.
THIS INFORMATION IS LICENSED UNDER THE CONDITIONS OF THE OPEN GOVERNMENT LICENCE found at:
http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3
The following attribution statement MUST be cited in your products and applications when using this information. `
Contains public sector information licensed under the Open Government license v3
The Open Government Licence (OGL) was developed by the Controller of Her Majesty's Stationery Office (HMSO) to enable information providers in the public sector to license the use and re-use of their information under a common open licence.
It is designed to encourage use and re-use of information freely and flexibly, with only a few conditions.