3.0.476 • Published 10 months ago

@defra/forms-model v3.0.476

Weekly downloads
-
License
OGL-UK-3.0
Repository
github
Last release
10 months ago

Defra forms model

A model and validation library for Defra forms, providing the foundation for form definitions, components, validation, and data handling.

Features

  • 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

Installation

npm install @defra/forms-model

Usage

Form Definition

import { createForm } from '@defra/forms-model';

const form = createForm({
  name: 'my-form',
  pages: [
    {
      path: '/start',
      title: 'Start page',
      components: [/* components */]
    }
  ],
  sections: [/* sections */]
});

Component Usage

import { ComponentType } from '@defra/forms-model';

const textField = {
  type: ComponentType.TextField,
  name: 'fullName',
  title: 'Full name',
  schema: {
    min: 2,
    max: 100
  }
};

Form Validation

JSON Schema Files

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 Schemas
  • form-definition-schema.json - Full form definition validation
  • form-definition-v2-schema.json - Full form definition V2 validation
Component Schemas
  • component-schema.json - Component validation
  • component-schema-v2.json - Component validation (v2)
Page Schemas
  • page-schema.json - Page validation
  • page-schema-v2.json - Page validation (v2)
List Schemas
  • list-schema.json - List validation
  • list-schema-v2.json - List validation (v2)
Form Metadata Schemas
  • 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 Field Schemas
  • 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 Schemas
  • 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
Form Editor Field Schemas
  • 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 Submission Schemas
  • 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
Form Manager Schemas
  • patch-page-schema.json - Patch page validation
Section Schemas
  • question-schema.json - Question validation
Validation Schemas
  • 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
Common Schemas
  • 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

Development

Test Coverage

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

JSON Schema Generation and Publishing

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.

How It Works

When you run npm run build, the script scripts/generate-schemas.js is executed which:

  1. Converts Joi validation schemas to JSON Schema format
  2. Enhances schemas with titles and descriptions
  3. Writes schema files to the schemas/ directory

Known Quirks

  1. First Build Required: After a fresh clone, you must run npm run build before the schema files will be available locally.

License

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

About the license

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.

3.0.400

1 year ago

3.0.402

1 year ago

3.0.401

1 year ago

3.0.404

1 year ago

3.0.403

1 year ago

3.0.475

10 months ago

3.0.474

10 months ago

3.0.476

10 months ago

3.0.471

10 months ago

3.0.470

10 months ago

3.0.473

10 months ago

3.0.472

10 months ago

3.0.464

10 months ago

3.0.463

10 months ago

3.0.466

10 months ago

3.0.465

10 months ago

3.0.468

10 months ago

3.0.467

10 months ago

3.0.469

10 months ago

3.0.460

10 months ago

3.0.462

10 months ago

3.0.461

10 months ago

3.0.449

11 months ago

3.0.453

11 months ago

3.0.452

11 months ago

3.0.455

11 months ago

3.0.454

11 months ago

3.0.457

11 months ago

3.0.456

11 months ago

3.0.459

10 months ago

3.0.458

11 months ago

3.0.451

11 months ago

3.0.450

11 months ago

3.0.439

12 months ago

3.0.438

12 months ago

3.0.442

12 months ago

3.0.441

12 months ago

3.0.444

12 months ago

3.0.443

12 months ago

3.0.446

11 months ago

3.0.445

11 months ago

3.0.448

11 months ago

3.0.447

11 months ago

3.0.440

12 months ago

3.0.428

1 year ago

3.0.427

1 year ago

3.0.429

1 year ago

3.0.431

1 year ago

3.0.430

1 year ago

3.0.433

1 year ago

3.0.432

1 year ago

3.0.435

1 year ago

3.0.434

1 year ago

3.0.437

12 months ago

3.0.436

12 months ago

3.0.417

1 year ago

3.0.416

1 year ago

3.0.419

1 year ago

3.0.418

1 year ago

3.0.420

1 year ago

3.0.422

1 year ago

3.0.421

1 year ago

3.0.424

1 year ago

3.0.423

1 year ago

3.0.426

1 year ago

3.0.425

1 year ago

3.0.406

1 year ago

3.0.405

1 year ago

3.0.408

1 year ago

3.0.407

1 year ago

3.0.409

1 year ago

3.0.411

1 year ago

3.0.410

1 year ago

3.0.413

1 year ago

3.0.412

1 year ago

3.0.415

1 year ago

3.0.414

1 year ago

3.0.398

1 year ago

3.0.397

1 year ago

3.0.399

1 year ago

3.0.390

1 year ago

3.0.392

1 year ago

3.0.391

1 year ago

3.0.394

1 year ago

3.0.393

1 year ago

3.0.396

1 year ago

3.0.395

1 year ago

3.0.387

1 year ago

3.0.386

1 year ago

3.0.389

1 year ago

3.0.388

1 year ago

3.0.381

1 year ago

3.0.383

1 year ago

3.0.382

1 year ago

3.0.385

1 year ago

3.0.384

1 year ago

3.0.380

1 year ago

3.0.379

1 year ago

3.0.376

1 year ago

3.0.375

1 year ago

3.0.378

1 year ago

3.0.377

1 year ago

3.0.370

2 years ago

3.0.371

2 years ago

3.0.374

2 years ago

3.0.373

2 years ago

3.0.365

2 years ago

3.0.364

2 years ago

3.0.367

2 years ago

3.0.366

2 years ago

3.0.369

2 years ago

3.0.368

2 years ago

3.0.361

2 years ago

3.0.360

2 years ago

3.0.363

2 years ago

3.0.362

2 years ago

3.0.354

2 years ago

3.0.353

2 years ago

3.0.356

2 years ago

3.0.355

2 years ago

3.0.358

2 years ago

3.0.357

2 years ago

3.0.359

2 years ago

3.0.352

2 years ago

3.0.350

2 years ago

3.0.351

2 years ago

3.0.345

2 years ago

3.0.344

2 years ago

3.0.347

2 years ago

3.0.346

2 years ago

3.0.349

2 years ago

3.0.348

2 years ago

3.0.339

2 years ago

3.0.343

2 years ago

3.0.342

2 years ago

3.0.341

2 years ago

3.0.340

2 years ago

3.0.334

2 years ago

3.0.333

2 years ago

3.0.336

2 years ago

3.0.335

2 years ago

3.0.338

2 years ago

3.0.337

2 years ago

3.0.329

2 years ago

3.0.328

2 years ago

3.0.332

2 years ago

3.0.331

2 years ago

3.0.330

2 years ago

3.0.321

2 years ago

3.0.323

2 years ago

3.0.322

2 years ago

3.0.325

2 years ago

3.0.324

2 years ago

3.0.327

2 years ago

3.0.326

2 years ago

3.0.318

2 years ago

3.0.319

2 years ago

3.0.320

2 years ago

3.0.317

2 years ago

3.0.316

2 years ago

3.0.315

2 years ago

3.0.312

2 years ago

3.0.311

2 years ago

3.0.314

2 years ago

3.0.313

2 years ago

3.0.307

2 years ago

3.0.306

2 years ago

3.0.309

2 years ago

3.0.308

2 years ago

3.0.310

2 years ago

3.0.305

2 years ago

3.0.304

2 years ago

3.0.301

2 years ago

3.0.300

2 years ago

3.0.303

2 years ago

3.0.302

2 years ago

3.0.299

2 years ago

3.0.298

2 years ago

3.0.291

2 years ago

3.0.290

2 years ago

3.0.293

2 years ago

3.0.292

2 years ago

3.0.295

2 years ago

3.0.294

2 years ago

3.0.297

2 years ago

3.0.296

2 years ago

3.0.288

2 years ago

3.0.287

2 years ago

3.0.289

2 years ago

3.0.286

2 years ago

3.0.285

2 years ago

3.0.280

2 years ago

3.0.282

2 years ago

3.0.281

2 years ago

3.0.284

2 years ago

3.0.283

2 years ago

3.0.190

2 years ago

3.0.199

2 years ago

3.0.192

2 years ago

3.0.191

2 years ago

3.0.194

2 years ago

3.0.193

2 years ago

3.0.196

2 years ago

3.0.195

2 years ago

3.0.198

2 years ago

3.0.197

2 years ago

3.0.189

2 years ago

3.0.188

2 years ago

3.0.181

2 years ago

3.0.180

2 years ago

3.0.183

2 years ago

3.0.182

2 years ago

3.0.185

2 years ago

3.0.184

2 years ago

3.0.187

2 years ago

3.0.186

2 years ago

3.0.178

2 years ago

3.0.177

2 years ago

3.0.179

2 years ago

3.0.170

2 years ago

3.0.172

2 years ago

3.0.171

2 years ago

3.0.174

2 years ago

3.0.173

2 years ago

3.0.176

2 years ago

3.0.175

2 years ago

3.0.167

2 years ago

3.0.166

2 years ago

3.0.169

2 years ago

3.0.168

2 years ago

3.0.161

2 years ago

3.0.160

2 years ago

3.0.163

2 years ago

3.0.162

2 years ago

3.0.165

2 years ago

3.0.164

2 years ago

3.0.277

2 years ago

3.0.156

2 years ago

3.0.276

2 years ago

3.0.155

2 years ago

3.0.279

2 years ago

3.0.158

2 years ago

3.0.278

2 years ago

3.0.157

2 years ago

3.0.159

2 years ago

3.0.271

2 years ago

3.0.150

2 years ago

3.0.270

2 years ago

3.0.273

2 years ago

3.0.152

2 years ago

3.0.272

2 years ago

3.0.151

2 years ago

3.0.275

2 years ago

3.0.154

2 years ago

3.0.274

2 years ago

3.0.153

2 years ago

3.0.266

2 years ago

3.0.145

2 years ago

3.0.265

2 years ago

3.0.144

2 years ago

3.0.268

2 years ago

3.0.147

2 years ago

3.0.267

2 years ago

3.0.146

2 years ago

3.0.149

2 years ago

3.0.269

2 years ago

3.0.148

2 years ago

3.0.260

2 years ago

3.0.262

2 years ago

3.0.141

2 years ago

3.0.261

2 years ago

3.0.140

2 years ago

3.0.264

2 years ago

3.0.143

2 years ago

3.0.263

2 years ago

3.0.142

2 years ago

3.0.255

2 years ago

3.0.134

2 years ago

3.0.254

2 years ago

3.0.133

2 years ago

3.0.257

2 years ago

3.0.136

2 years ago

3.0.256

2 years ago

3.0.135

2 years ago

3.0.259

2 years ago

3.0.138

2 years ago

3.0.258

2 years ago

3.0.137

2 years ago

3.0.139

2 years ago

3.0.251

2 years ago

3.0.130

2 years ago

3.0.250

2 years ago

3.0.253

2 years ago

3.0.132

2 years ago

3.0.252

2 years ago

3.0.131

2 years ago

3.0.244

2 years ago

3.0.123

2 years ago

3.0.243

2 years ago

3.0.122

2 years ago

3.0.246

2 years ago

3.0.125

2 years ago

3.0.245

2 years ago

3.0.124

2 years ago

3.0.248

2 years ago

3.0.127

2 years ago

3.0.247

2 years ago

3.0.126

2 years ago

3.0.129

2 years ago

3.0.249

2 years ago

3.0.128

2 years ago

3.0.240

2 years ago

3.0.242

2 years ago

3.0.241

2 years ago

3.0.229

2 years ago

3.0.233

2 years ago

3.0.232

2 years ago

3.0.235

2 years ago

3.0.234

2 years ago

3.0.237

2 years ago

3.0.236

2 years ago

3.0.239

2 years ago

3.0.238

2 years ago

3.0.231

2 years ago

3.0.230

2 years ago

3.0.219

2 years ago

3.0.218

2 years ago

3.0.222

2 years ago

3.0.221

2 years ago

3.0.224

2 years ago

3.0.223

2 years ago

3.0.226

2 years ago

3.0.225

2 years ago

3.0.228

2 years ago

3.0.227

2 years ago

3.0.220

2 years ago

3.0.208

2 years ago

3.0.207

2 years ago

3.0.209

2 years ago

3.0.211

2 years ago

3.0.210

2 years ago

3.0.213

2 years ago

3.0.212

2 years ago

3.0.215

2 years ago

3.0.214

2 years ago

3.0.217

2 years ago

3.0.216

2 years ago

3.0.200

2 years ago

3.0.202

2 years ago

3.0.201

2 years ago

3.0.204

2 years ago

3.0.203

2 years ago

3.0.206

2 years ago

3.0.205

2 years ago

3.0.119

2 years ago

3.0.121

2 years ago

3.0.120

2 years ago

3.0.116

2 years ago

3.0.118

2 years ago

3.0.117

2 years ago

3.0.112

2 years ago

3.0.111

2 years ago

3.0.114

2 years ago

3.0.113

2 years ago

3.0.115

2 years ago

3.0.109

2 years ago

3.0.108

2 years ago

3.0.110

2 years ago

3.0.105

2 years ago

3.0.107

2 years ago

3.0.106

2 years ago

3.0.101

2 years ago

3.0.100

2 years ago

3.0.103

2 years ago

3.0.102

2 years ago

3.0.104

2 years ago

3.0.98

2 years ago

3.0.99

2 years ago

3.0.96

2 years ago

3.0.97

2 years ago

3.0.95

2 years ago

3.0.93

2 years ago

3.0.94

2 years ago

3.0.89

2 years ago

3.0.87

2 years ago

3.0.88

2 years ago

3.0.85

2 years ago

3.0.86

2 years ago

3.0.92

2 years ago

3.0.90

2 years ago

3.0.91

2 years ago

3.0.81

2 years ago

3.0.82

2 years ago

3.0.80

2 years ago

3.0.83

2 years ago

3.0.84

2 years ago

3.0.78

2 years ago

3.0.79

2 years ago

3.0.76

2 years ago

3.0.77

2 years ago

3.0.74

2 years ago

3.0.75

2 years ago

3.0.73

2 years ago

3.0.70

2 years ago

3.0.71

2 years ago

3.0.72

2 years ago

3.0.67

2 years ago

3.0.68

2 years ago

3.0.65

2 years ago

3.0.66

2 years ago

3.0.69

2 years ago

3.0.59

2 years ago

3.0.60

2 years ago

3.0.63

2 years ago

3.0.64

2 years ago

3.0.61

2 years ago

3.0.62

2 years ago

3.0.56

2 years ago

3.0.57

2 years ago

3.0.55

2 years ago

3.0.58

2 years ago

3.0.54

2 years ago

3.0.53

2 years ago

3.0.49

2 years ago

3.0.48

2 years ago

3.0.52

2 years ago

3.0.50

2 years ago

3.0.51

2 years ago

3.0.45

2 years ago

3.0.46

2 years ago

3.0.44

2 years ago

3.0.47

2 years ago

3.0.43

2 years ago

3.0.41

2 years ago

3.0.42

2 years ago

3.0.40

2 years ago

3.0.38

2 years ago

3.0.39

2 years ago

3.0.34

2 years ago

3.0.35

2 years ago

3.0.32

2 years ago

3.0.33

2 years ago

3.0.36

2 years ago

3.0.37

2 years ago

3.0.30

2 years ago

3.0.31

2 years ago

3.0.29

2 years ago

3.0.28

2 years ago

3.0.27

2 years ago

3.0.25

2 years ago

3.0.26

2 years ago

3.0.23

2 years ago

3.0.24

2 years ago

3.0.22

2 years ago

3.0.21

2 years ago

3.0.20

2 years ago

3.0.19

2 years ago

3.0.16

2 years ago

3.0.17

2 years ago

3.0.18

2 years ago

3.0.12

2 years ago

3.0.13

2 years ago

3.0.14

2 years ago

3.0.15

2 years ago

3.0.10

2 years ago

3.0.11

2 years ago

3.0.9

2 years ago

3.0.8

2 years ago

3.0.7

2 years ago

3.0.6

2 years ago

3.0.4

2 years ago

3.0.5

2 years ago

3.0.3

2 years ago

3.0.2

2 years ago