UNPKG

@dvsa/smc-encounter-schema

Version:

Schemas required for Encounter submission as well as custom validators ## Developing ### Pre-requisites

1 lines 4.3 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator');var y=Object.defineProperty;var x=Object.getOwnPropertyDescriptor;var s=(t,e)=>y(t,"name",{value:e,configurable:true});var n=(t,e,a,r)=>{for(var E=r>1?void 0:r?x(e,a):e,u=t.length-1,m;u>=0;u--)(m=t[u])&&(E=(r?m(e,a,E):m(E))||E);return r&&E&&y(e,a,E),E};var f=class t{static{s(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return t.instance||(t.instance=new t),t.instance}getEncounterType(){return this.level}setEncounterType(e){this.level=e;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(e){this.officerType=e;}getRequestType(){return this.requestType}setRequestType(e){this.requestType=e;}isDeletedEncounter(){return this.requestType==="D"}};var p=class{validate(e,a){let r=a.constraints[0],E=f.getInstance(),u=E.getEncounterType(),m=E.getExaminerOfficerType();return r.level===0||r.exceptions?.includes(u)||r.level!==void 0&&r.level>u||r.roles?.length&&!r.roles.includes(m)&&!r.roles.includes("ANY")?true:e==null?false:typeof e=="string"?r.allowEmpty?true:e.trim().length>0:Array.isArray(e)?e.length===0?false:e.every((A,q)=>A==null?false:Object.entries(A).every(([$,T])=>typeof T=="string"?T.trim().length>0:T!=null)):true}};s(p,"MandatoryFieldConstraint"),p=n([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],p);function l(t,e){return (a,r)=>{classValidator.registerDecorator({name:"MandatoryField",target:a.constructor,propertyName:r,constraints:[t],options:e,validator:p});}}s(l,"MandatoryField");function o(){return classTransformer.Transform(({value:t})=>typeof t=="string"?t.toUpperCase():t)}s(o,"ToUpperCase");var c=class{static{s(this,"CommonPostAddress");}postTown;postcode};n([classValidator.Matches(/^(?!-|\s)(?!.*[&‘’',.-]{2})[A-Za-z0-9&‘’',. -]{0,20}$/,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(20,{message:"Must be no more than 20 characters in length",groups:["createEncounter"]}),o(),l({level:4},{groups:["createEncounter"]})],c.prototype,"postTown",2),n([classValidator.IsOptional(),classValidator.Matches(/^[A-Za-z0-9 -]*$/,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(8,{message:"Must be no more than 8 characters in length",groups:["createEncounter"]}),o()],c.prototype,"postcode",2);var i=class i extends c{static{s(this,"Address");}static REG_EX_ADDRESS_LINE=/^(?!-|\\s)(?!.*[&‘’',.-]{2})[A-Za-z0-9&‘’',. -]{0,60}$/;addressLine1;addressLine2;addressLine3;addressLine4;ukResident};n([classValidator.Matches(i.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),o(),l({level:4},{groups:["createEncounter"]})],i.prototype,"addressLine1",2),n([classValidator.IsOptional(),classValidator.Matches(i.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),o()],i.prototype,"addressLine2",2),n([classValidator.IsOptional(),classValidator.Matches(i.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),o()],i.prototype,"addressLine3",2),n([classValidator.IsOptional(),classValidator.Matches(i.REG_EX_ADDRESS_LINE,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(60,{message:"Must be no more than 60 characters in length",groups:["createEncounter"]}),o()],i.prototype,"addressLine4",2),n([classValidator.IsOptional(),o()],i.prototype,"ukResident",2);var O=i;var h=class{static{s(this,"CommonTradingAs");}tradingAs;address};n([classValidator.IsOptional(),classValidator.Matches(/^(?!-|\s)(?!.*[&@£#$¥,.:;\-]{2})[A-Za-z0-9&@£#$¥,.:; \-]*$/,{groups:["createEncounter"]}),o()],h.prototype,"tradingAs",2),n([classValidator.ValidateNested(),classTransformer.Type(()=>O),l({level:4},{groups:["createEncounter"]})],h.prototype,"address",2);exports.CommonTradingAs=h;