11// logging import and setup
2+ import type { MRZProperties } from '../types/mrzProperties' ;
23import { ListItemData } from '../constants/listItemData' ;
34
45const countryIsoJson = require ( '../constants/CountryIsoCodes.json' ) ;
@@ -40,7 +41,7 @@ export const checkSum = (text: string) => {
4041 return value ;
4142} ;
4243
43- export const parseMRZ = ( initialLines : string [ ] ) => {
44+ export const parseMRZ = ( initialLines : string [ ] ) : MRZProperties | undefined => {
4445 let lines : string [ ] = [ ] ;
4546
4647 let secondLine = initialLines [ initialLines . length - 1 ] ;
@@ -96,6 +97,7 @@ export const parseMRZ = (initialLines: string[]) => {
9697 }
9798 }
9899 } // end (lines.length >= 3)
100+
99101 return undefined ;
100102} ;
101103
@@ -113,16 +115,19 @@ export const parseMRZ = (initialLines: string[]) => {
113115 * idNumber: idNumber,
114116 * nationality
115117 */
116- const parse2LineMRZ = ( firstRow : string , secondRow : string ) => {
118+ const parse2LineMRZ = (
119+ firstRow : string ,
120+ secondRow : string
121+ ) : MRZProperties | undefined => {
117122 let docType = extractDocType ( firstRow ) ;
118123 let namesFromLine : { givenNames : string [ ] ; lastNames : string [ ] } =
119124 extractNamesFromLine ( 5 , firstRow ) ;
120125 let givenNames : string [ ] = namesFromLine . givenNames ;
121126 let lastNames : string [ ] = namesFromLine . lastNames ;
122127
123128 // Extract idNumber
124- let idNumber = extractIdNumber ( secondRow , 0 , 9 ) ;
125- if ( ! idNumber ) {
129+ let passportNumber = extractIdNumber ( secondRow , 0 , 9 ) ;
130+ if ( ! passportNumber ) {
126131 return undefined ;
127132 }
128133
@@ -133,28 +138,27 @@ const parse2LineMRZ = (firstRow: string, secondRow: string) => {
133138 let nationality = extractCountry ( secondRow , 10 , 13 ) ;
134139
135140 // extract dateOfBirth
136- let dob = extractDateOfBirthFromLine ( 13 , secondRow ) ;
141+ let birthDate = extractDateOfBirthFromLine ( 13 , secondRow ) ;
137142
138143 // Extract gender
139144 // let gender = extractGender(secondRow.charAt(20), issuingCountry, docType);
140145 let gender = extractGender ( secondRow . charAt ( 20 ) ) ;
141146 // let gender = secondRow.charAt(20);
142147
143148 // Extract expiration date then assign the YYYY-MM-DD string format to docExpirationDate
144- let docExpirationDate = extractDateOfExpirationFromLine ( 21 , secondRow ) ;
149+ let expiryDate = extractDateOfExpirationFromLine ( 21 , secondRow ) ;
145150
146151 return {
147152 docMRZ : `${ firstRow } \n${ secondRow } ` ,
148153 docType : docType ,
149154 issuingCountry : issuingCountry ,
150155 givenNames : givenNames . join ( ' ' ) . trim ( ) ,
151156 lastNames : lastNames . join ( ' ' ) . trim ( ) ,
152- idNumber : idNumber ,
157+ passportNumber ,
153158 nationality : nationality ,
154- dob : dob ,
155- gender : gender ,
156- docExpirationDate : docExpirationDate ,
157- additionalInformation : undefined , // TODO remove? (The logic for extracting additional information was deleted since we're not using it)
159+ birthDate,
160+ gender,
161+ expiryDate,
158162 } ;
159163} ;
160164
@@ -182,29 +186,29 @@ const parse3LineMRZ = (
182186 firstRow : string ,
183187 secondRow : string ,
184188 thirdRow : string
185- ) => {
189+ ) : MRZProperties | undefined => {
186190 let docType = extractDocType ( firstRow ) ;
187191 let namesFromLine : { givenNames : string [ ] ; lastNames : string [ ] } =
188192 extractNamesFromLine ( 0 , thirdRow ) ;
189193 let givenNames : string [ ] = namesFromLine . givenNames ;
190194 let lastNames : string [ ] = namesFromLine . lastNames ;
191195
192196 // Extract idNumber
193- let idNumber = extractIdNumber ( firstRow , 5 , 14 ) ;
194- if ( ! idNumber ) {
197+ let passportNumber = extractIdNumber ( firstRow , 5 , 14 ) ;
198+ if ( ! passportNumber ) {
195199 return undefined ;
196200 }
197201 // Extract issuingCountry
198202 let issuingCountry = extractCountry ( firstRow , 2 , 5 ) ;
199203 // Extract nationality
200204 let nationality = extractCountry ( secondRow , 15 , 18 ) ;
201205 // Extract date of birth
202- let dob = extractDateOfBirthFromLine ( 0 , secondRow ) ;
206+ let birthDate = extractDateOfBirthFromLine ( 0 , secondRow ) ;
203207 // Extract gender
204208 let gender = extractGender ( secondRow . charAt ( 7 ) ) ;
205209
206210 // Extract expiration date then store that date as a string in docExpirationDate
207- let docExpirationDate = extractDateOfExpirationFromLine ( 8 , secondRow ) ;
211+ let expiryDate = extractDateOfExpirationFromLine ( 8 , secondRow ) ;
208212 // extract additional information from first and second row
209213 let additionalInformation = '' ;
210214 additionalInformation =
@@ -220,11 +224,11 @@ const parse3LineMRZ = (
220224 issuingCountry : issuingCountry ,
221225 givenNames : givenNames . join ( ' ' ) . trim ( ) ,
222226 lastNames : lastNames . join ( ' ' ) . trim ( ) ,
223- idNumber : idNumber ,
227+ passportNumber ,
224228 nationality : nationality ,
225- dob : dob ,
226- gender : gender ,
227- docExpirationDate : docExpirationDate ,
229+ birthDate ,
230+ gender,
231+ expiryDate ,
228232 additionalInformation : additionalInformation ,
229233 } ;
230234} ;
0 commit comments