2.5.12 • Published 4 months ago

exframe-schema v2.5.12

Weekly downloads
-
License
ISC
Repository
bitbucket
Last release
4 months ago

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