UNPKG

one-span-sign

Version:

Node module for the One Span E-Sign API.

76 lines (63 loc) 1.77 kB
const _ = require('lodash'); class Validated { constructor() {} requireProperties(...props) { this.requiredProperties = props; } hasRequiredProperties() { return _.every(this.requiredProperties, (prop) => !_.isNil(this[prop])); } missingProperties() { return _.filter(this.requiredProperties, (prop) => _.isNil(this[prop])); } } class Signer extends Validated { constructor({ role, firstName, lastName, email } = {}) { super(); this.role = role; this.firstName = firstName; this.lastName = lastName; this.email = email; // Determine what is required this.requireProperties('role', 'firstName', 'lastName', 'email'); } } class Field extends Validated { constructor({ name, role, template } = {}) { super(); this.name = name; this.role = role; this.template = template; // Determine what is required this.requireProperties('name'); } } class Document extends Validated { static convertStringsToFields(ar) { return _.map(ar, (field) => _.isString(field) ? new Field({ name: field }) : field); } constructor({ name, file, signatureFields, dateFields, initialFields } = {}) { super(); this.name = name; this.file = file; this._signatureFields = signatureFields; this._dateFields = dateFields; this._initialFields = initialFields; // Determine what is required this.requireProperties('name', 'file'); } get signatureFields() { return Document.convertStringsToFields(this._signatureFields); } get dateFields() { return Document.convertStringsToFields(this._dateFields); } get initialFields() { return Document.convertStringsToFields(this._initialFields); } } module.exports = { Signer, Field, Document };