2.5.12 • Published 4 months ago
exframe-schema v2.5.12
exframe-schema
A module to handle building and validating document schemas based on information from the document-configuration service.
Validate a document
const { validate } = require('exframe-schema');
try {
validate(context, configuration, document);
// Document is valid
} catch (e) {
// For the case where coverageLimits.dwelling is required, but missing:
console.log(e.validationErrors[0].dataPath);
// ./coverageLimits
console.log(e.validationErrors[0].params);
// { missingProperty: 'dwelling' }
// For validation schema used to validate document
console.log(e.validationSchema);
}
Arguments:
- context object The context object. If the context object contains a log, debug information will be logged there. If not, debug information will not be logged.
- configuration object Contains coverage details and form fields
- coverageDetails object A coverageDetails object containing coverageLimits, coverageOptions and deductibles
- formFields array A collection of formFields objects
- document object The document to be validated
Create form fields from coverage options
const { addCoverageOptions } = require('exframe-schema');
let fields = addCoverageOptions(coverageDetails);
console.log(fields);
/*
[
{
path: 'coverageOptions',
type: 'object',
metaData: {},
children: [ 'coverageOptions.sinkholePerilCoverage' ],
required: [ 'coverageOptions.sinkholePerilCoverage' ],
group: 'coverage'
},
{
path: 'coverageOptions.sinkholePerilCoverage',
type: 'object',
displayText: 'Sinkhole Peril Coverage',
metaData: {},
children: [ 'coverageOptions.sinkholePerilCoverage.answer' ],
required: [ 'coverageOptions.sinkholePerilCoverage.answer' ]
},
{
path: 'coverageOptions.sinkholePerilCoverage.answer',
type: 'boolean',
metaData: { }
}
];
*/
Arguments:
- coverageDetails object A coverageDetails object containing coverageLimits, coverageOptions and deductibles
- document object (optional) The document to be validated
Create form fields from coverage limits
const { addCoverageLimits } = require('exframe-schema');
let fields = addCoverageLimits(coverageDetails);
console.log(fields);
/*
[
{
path: 'coverageLimits',
type: 'object',
metaData: {},
required: [ 'coverageLimits.dwelling' ],
children: [ 'coverageLimits.dwelling' ],
group: 'coverage'
},
{
path: 'coverageLimits.dwelling',
type: 'object',
metaData: {},
children: [ 'coverageLimits.dwelling.value', 'coverageLimits.dwelling.amount', 'coverageLimits.dwelling.letterDesignation' ],
required: [ 'coverageLimits.dwelling.value' ]
},
{
path: 'coverageLimits.dwelling.value',
type: 'string',
metaData: { }
},
{
path: 'coverageLimits.dwelling.amount',
type: 'integer',
metaData: {},
value: '${it.coverageLimits.dwelling.value}'
},
{
path: 'coverageLimits.dwelling.letterDesignation',
type: 'string',
metaData: {}
}
]
*/
fields = addCoverageLimits(coverageDetails, document);
console.log(fields);
/*
[
{
path: 'coverageLimits',
type: 'object',
metaData: {},
required: [ 'coverageLimits.dwelling' ],
children: [ 'coverageLimits.dwelling' ],
group: 'coverage'
},
{
path: 'coverageLimits.dwelling',
type: 'object',
metaData: {},
children: [ 'coverageLimits.dwelling.value', 'coverageLimits.dwelling.amount', 'coverageLimits.dwelling.letterDesignation' ],
required: [ 'coverageLimits.dwelling.value' ]
},
{
path: 'coverageLimits.dwelling.value',
type: 'string',
metaData: { }
},
{
path: 'coverageLimits.dwelling.amount',
type: 'integer',
metaData: {},
value: 200000
},
{
path: 'coverageLimits.dwelling.letterDesignation',
type: 'string',
metaData: {}
}
]
*/
Arguments:
- coverageDetails object A coverageDetails object containing coverageLimits, coverageOptions and deductibles
- document object (optional) The document to be validated
Create form fields from deductibles
const { addDeductibles } = require('exframe-schema');
let fields = addDeductibles(coverageDetails);
console.log(fields);
/*
[
{
path: 'deductibles',
type: 'object',
metaData: {},
children: [ 'deductibles.hurricane', 'deductibles.sinkhole' ],
required: [ 'deductibles.hurricane' ],
group: 'coverage'
},
{
path: 'deductibles.hurricane',
type: 'object',
metaData: {},
children: ['deductibles.hurricane.value', 'deductibles.hurricane.amount'],
required: ['deductibles.hurricane.value']
},
{
path: 'deductibles.hurricane.value',
type: 'integer',
metaData: {},
children: [],
required: []
},
{
path: 'deductibles.hurricane.amount',
type: 'integer',
metaData: {},
children: [],
required: [],
value: '${it.deductibles.hurricane.value}'
},
{
path: 'deductibles.sinkhole',
type: 'object',
metaData: {},
children: ['deductibles.sinkhole.value', 'deductibles.sinkhole.amount'],
required: ['deductibles.sinkhole.value']
},
{
path: 'deductibles.sinkhole.value',
type: 'integer',
metaData: {},
children: [],
required: []
},
{
path: 'deductibles.sinkhole.amount',
type: 'integer',
metaData: {},
children: [],
required: [],
value: '${it.deductibles.hurricane.value}'
}
];
*/
fields = addDeductibles(coverageDetails, document);
console.log(fields);
/*
[
{
path: 'deductibles',
type: 'object',
metaData: {},
children: [ 'deductibles.hurricane', 'deductibles.sinkhole' ],
required: [ 'deductibles.hurricane' ],
group: 'coverage'
},
{
path: 'deductibles.hurricane',
type: 'object',
metaData: {},
children: ['deductibles.hurricane.value', 'deductibles.hurricane.amount'],
required: ['deductibles.hurricane.value']
},
{
path: 'deductibles.hurricane.value',
type: 'integer',
metaData: {},
children: [],
required: []
},
{
path: 'deductibles.hurricane.amount',
type: 'integer',
metaData: {},
children: [],
required: [],
value: 10000
},
{
path: 'deductibles.sinkhole',
type: 'object',
metaData: {},
children: ['deductibles.sinkhole.value', 'deductibles.sinkhole.amount'],
required: ['deductibles.sinkhole.value']
},
{
path: 'deductibles.sinkhole.value',
type: 'integer',
metaData: {},
children: [],
required: []
},
{
path: 'deductibles.sinkhole.amount',
type: 'integer',
metaData: {},
children: [],
required: [],
value: 4000
}
];
*/
Arguments:
- coverageDetails object A coverageDetails object containing coverageLimits, coverageOptions and deductibles
- document object (optional) The document to be validated
2.5.12
4 months ago
2.5.11
6 months ago
2.5.6
8 months ago
2.5.8
8 months ago
2.5.7
8 months ago
2.5.9
8 months ago
2.5.10
7 months ago
2.5.5
9 months ago
2.5.2
11 months ago
2.5.4
10 months ago
2.5.3
10 months ago
2.5.1
11 months ago
2.5.0
1 year ago
2.4.15
1 year ago
2.4.14
1 year ago
2.4.13
1 year ago
2.4.10
2 years ago
2.4.12
1 year ago
2.4.11
2 years ago
2.4.9
2 years ago
2.4.8
2 years ago
2.4.3
2 years ago
2.4.2
2 years ago
2.4.5
2 years ago
2.4.4
2 years ago
2.4.7
2 years ago
2.4.6
2 years ago
2.4.1
2 years ago
2.4.0
2 years ago
2.3.0
2 years ago
2.2.0
3 years ago
2.1.0
3 years ago
2.0.1
4 years ago
2.0.0
4 years ago
1.2.0
4 years ago
1.1.0
4 years ago
1.0.10
5 years ago
1.0.9
5 years ago
1.0.8
5 years ago
1.0.7
5 years ago
1.0.6
5 years ago
1.0.5
5 years ago
1.0.4
5 years ago
1.0.3
5 years ago
1.0.2
5 years ago
1.0.1
5 years ago
1.0.0
5 years ago