1import{g as m}from"./get-by-path-NvbZYNtT.js";import{T as k}from"./tradesman-identity-CN8TEbDP.js";import{h as v,b as N}from"./canonical-DoE6CGnv.js";(function(){try{var e=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};e.SENTRY_RELEASE={id:"8bad1ef1d1baf20043d4024cccb275075dbee4da"};var s=new e.Error().stack;s&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[s]="c48c4e25-1e7b-4b45-a12c-1b4ad64f59d2",e._sentryDebugIdIdentifier="sentry-dbid-c48c4e25-1e7b-4b45-a12c-1b4ad64f59d2")}catch{}})();const g={licenseNumber:"issuer.registration",licenceNumber:"issuer.registration",certificationNumber:"issuer.registration",recNumber:"issuer.registration",epa608CertNumber:"issuer.registration",safeElectricNumber:"issuer.registration",rgiiNumber:"issuer.registration",qualifiedCertifierNumber:"issuer.registration",licenseState:"issuer.scheme",licenceState:"issuer.scheme"},l={landlordName:"dutyHolder.name",landlordAddress:"dutyHolder.address"},p={engineerName:"issuer.name",gasSafeRegNumber:"issuer.registration",engineerId:"issuer.registration",schemeMembershipNumber:"issuer.registration",oftecRegNumber:"issuer.registration",hetasRegNumber:"issuer.registration",bafeSp101Number:"issuer.registration",rpiiRegNumber:"issuer.registration",bindtPcnNumber:"issuer.registration",waterSafeRegNumber:"issuer.registration",nsiSsaibRegNumber:"issuer.registration",safeElectricNumber:"issuer.registration",rgiNumber:"issuer.registration",competentPersonScheme:"issuer.scheme"};function S(e,s){for(const r of e.steps??[])for(const i of r.content??[])if(i.kind==="section")for(const o of i.fields)s(o);else if(i.kind==="repeating")for(const o of i.sections)for(const n of o.fields)s(n,i.key)}const E=["item.description","item.location","item.outcome","item.defects"];function R(e){const s=e.get("item.description")??e.get("item.location");if(s?.repeatKey)for(const r of E){const i=e.get(r);i&&i.repeatKey!==s.repeatKey&&e.delete(r)}}function h(e){const s=new Map,r=t=>{const c=s.get(t.role);c&&c.source==="declared"&&t.source==="derived"||s.set(t.role,t)};e.issueDateField&&r({role:"inspection.date",key:e.issueDateField,source:"derived",via:"issueDateField"});const i=e.propertySource;i?.address&&r({role:"subject.address",key:i.address,source:"derived",via:"propertySource"}),i?.postcode&&r({role:"subject.postcode",key:i.postcode,source:"derived",via:"propertySource"});const o=e.pdf?.sections?.find(t=>t.kind==="signatures"),n=o&&"signatures"in o?o.signatures[0]:void 0;n?.nameKey&&r({role:"issuer.name",key:n.nameKey,source:"derived",via:"signature nameKey"}),S(e,(t,c)=>{if(t.role){r({role:t.role,key:t.key,repeatKey:c,source:"declared"});return}if(c){t.key==="location"?r({role:"item.location",key:t.key,repeatKey:c,source:"derived",via:"item key"}):t.key==="description"&&r({role:"item.description",key:t.key,repeatKey:c,source:"derived",via:"item key"});return}t.prefillFrom&&p[t.prefillFrom]&&r({role:p[t.prefillFrom],key:t.key,source:"derived",via:`prefillFrom:${t.prefillFrom}`}),!i?.address&&(t.key==="propertyAddress"||t.key==="addressLine1")&&r({role:"subject.address",key:t.key,source:"derived",via:"default address key"}),!i?.postcode&&t.key==="postcode"&&r({role:"subject.postcode",key:t.key,source:"derived",via:"default postcode key"}),k.includes(t.key)&&r({role:"issuer.registration",key:t.key,source:"derived",via:"tradesman-identity"}),g[t.key]&&r({role:g[t.key],key:t.key,source:"derived",via:"credential key"}),l[t.key]&&r({role:l[t.key],key:t.key,source:"derived",via:"landlord key"})}),R(s);const a=e.ocs?.notApplicable,d=new Map(Object.entries(a??{}));return{bindings:s,notApplicable:d}}function f(e,s){const r=m(e,s);if(r!=null){if(typeof r=="string")return r.trim()||void 0;if(typeof r=="number")return Number.isFinite(r)?String(r):void 0;if(typeof r=="boolean")return r?"yes":"no";if(r instanceof Date)return Number.isNaN(r.getTime())?void 0:u(r)}}function u(e){const s=r=>String(r).padStart(2,"0");return`${e.getFullYear()}-${s(e.getMonth()+1)}-${s(e.getDate())}`}function _(e){const s=e instanceof Date?e:new Date(e);if(Number.isNaN(s.getTime()))throw new Error(`issuedAt is not a usable instant: ${String(e)}`);return s.toISOString()}function D(e,s){const r=m(e,s);if(r instanceof Date)return Number.isNaN(r.getTime())?void 0:u(r);const i=f(e,s);if(!i)return;if(/^\d{4}-\d{2}-\d{2}$/.test(i))return i;const o=/^(\d{4}-\d{2}-\d{2})T/.exec(i);if(o)return o[1];const n=new Date(i);return Number.isNaN(n.getTime())?void 0:u(n)}const T=[["item.description","description"],["item.location","location"],["item.outcome","outcome"],["item.defects","defects"]];function I(e,s){const i=(e.get("item.description")??e.get("item.location"))?.repeatKey;if(!i)return;const o=m(s,i);return!Array.isArray(o)||o.length===0?void 0:o.map(a=>{const d=a&&typeof a=="object"?a:{},t={};for(const[c,b]of T){const y=e.get(c);y?.repeatKey===i&&(t[b]=f(d,y.key))}return t})}function A(e){const{schema:s,formData:r,issuedAt:i}=e,{bindings:o}=h(s),n=t=>{const c=o.get(t);return c&&!c.repeatKey?f(r,c.key):void 0},a=o.get("inspection.date"),d=s.country??"GB";return{spec:N,subject:{address:n("subject.address"),postcode:n("subject.postcode")},dutyHolder:{name:n("dutyHolder.name"),address:n("dutyHolder.address")},issuer:{name:n("issuer.name"),registration:n("issuer.registration"),scheme:n("issuer.sc
1heme")},inspection:{date:a?D(r,a.key):void 0,type:`${d}/${s.typeCode}`,typeName:s.title},items:I(o,r),rules:{schemaId:`${d}/${s.typeCode}`,version:s.version},issuedAt:_(i),recordVersion:e.recordVersion??1,supersedes:e.supersedes}}async function K(e){const s=A(e);return{record:s,hash:await v(s)}}export{K as buildAndHashRecord,A as buildRecord};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.