UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 4.9 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator');var N=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var i=(t,e)=>N(t,"name",{value:e,configurable:true});var r=(t,e,p,n)=>{for(var E=n>1?void 0:n?M(e,p):e,f=t.length-1,g;f>=0;f--)(g=t[f])&&(E=(n?g(e,p,E):g(E))||E);return n&&E&&N(e,p,E),E};var m=class t{static{i(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 u=class{validate(e,p){let n=p.constraints[0],E=m.getInstance(),f=E.getEncounterType(),g=E.getExaminerOfficerType();return n.level===0||n.exceptions?.includes(f)||n.level!==void 0&&n.level>f||n.roles?.length&&!n.roles.includes(g)&&!n.roles.includes("ANY")?true:e==null?false:typeof e=="string"?n.allowEmpty?true:e.trim().length>0:Array.isArray(e)?e.length===0?false:e.every((d,P)=>d==null?false:Object.entries(d).every(([V,c])=>typeof c=="string"?c.trim().length>0:c!=null)):true}};i(u,"MandatoryFieldConstraint"),u=r([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],u);function o(t,e){return (p,n)=>{classValidator.registerDecorator({name:"MandatoryField",target:p.constructor,propertyName:n,constraints:[t],options:e,validator:u});}}i(o,"MandatoryField");function C(t){return (e,p)=>{classValidator.registerDecorator({name:"isNullableString",target:e.constructor,propertyName:p,options:t,validator:{validate(n,E){return n===null||typeof n=="string"},defaultMessage(n){return `${n.property} must be a string or null`}}});}}i(C,"IsNullableString");function R(){return classTransformer.Transform(({value:t})=>typeof t=="string"?t.toUpperCase():t)}i(R,"ToUpperCase");var s=class{static{i(this,"Nationality");}drivingLicenceAuthority;irlCountry;vehicleIndicator;cardIssuingAuthorityInd;intelligenceSubjectInd;intRegNumberCode;nonVosa;irlCode;deletionMarker;foreignOpNationalityInd;inrNationalityInd};r([o({level:4},{groups:["createEncounter"]})],s.prototype,"drivingLicenceAuthority",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"irlCountry",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"vehicleIndicator",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"cardIssuingAuthorityInd",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"intelligenceSubjectInd",2),r([classValidator.IsOptional()],s.prototype,"intRegNumberCode",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"nonVosa",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"irlCode",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"deletionMarker",2),r([o({level:4},{groups:["createEncounter"]})],s.prototype,"foreignOpNationalityInd",2),r([classValidator.IsOptional()],s.prototype,"inrNationalityInd",2);var a=class{static{i(this,"PoliceDefect");}sequenceNumber;imNumber;defectSeverity};r([classValidator.IsOptional()],a.prototype,"sequenceNumber",2),r([classValidator.IsOptional()],a.prototype,"imNumber",2),r([classValidator.IsOptional()],a.prototype,"defectSeverity",2);var T=class{static{i(this,"CommonVehicleWeights");}actGrossWeight;permGrossWeight;designGrossWeight};r([classValidator.Min(0,{groups:["createEncounter"]}),classValidator.Max(999999,{groups:["createEncounter"]})],T.prototype,"actGrossWeight",2),r([classValidator.Min(0,{groups:["createEncounter"]}),classValidator.Max(999999,{groups:["createEncounter"]})],T.prototype,"permGrossWeight",2),r([classValidator.IsOptional()],T.prototype,"designGrossWeight",2);var l=class l extends T{static{i(this,"CommonVehicle");}static REGEX_MODEL_MAKE=/^(?!-|\s)(?!.*[&()!#;:+?@‘’',.\-\/]{2})[A-Za-z0-9][A-Za-z0-9&()!#;:+?@‘’',. \-\/]{0,29}$/;vehicleAxles;vehicleColour;vehicleModel;vehicleMake;nationality;policeDefects;nationalitySummary};r([o({level:4},{groups:["createEncounter"]})],l.prototype,"vehicleAxles",2),r([C()],l.prototype,"vehicleColour",2),r([classValidator.IsOptional(),classValidator.Matches(l.REGEX_MODEL_MAKE,{groups:["createEncounter"]}),R()],l.prototype,"vehicleModel",2),r([classValidator.Matches(l.REGEX_MODEL_MAKE,{groups:["createEncounter"]}),R(),o({level:1},{groups:["createEncounter"]})],l.prototype,"vehicleMake",2),r([classValidator.ValidateNested(),classTransformer.Type(()=>s),o({level:4},{groups:["createEncounter"]})],l.prototype,"nationality",2),r([classTransformer.Type(()=>a)],l.prototype,"policeDefects",2),r([o({level:4},{groups:["createEncounter"]})],l.prototype,"nationalitySummary",2);var b=l;exports.CommonVehicle=b;