@sheerid/jslib 2.252.0 → 2.253.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/_mysheerid-preview.css +4 -4
- package/_mysheerid-preview.js +45 -45
- package/chunk/{AddressComponent-DzD9VVa_.js → AddressComponent-DL9pd8Ow.js} +6 -6
- package/chunk/{AddressComponent-DSxFIF4x.js.map → AddressComponent-DL9pd8Ow.js.map} +1 -1
- package/chunk/{AddressComponent-DSxFIF4x.js → AddressComponent-Dmbx7wQb.js} +6 -6
- package/chunk/{AddressComponent-DzD9VVa_.js.map → AddressComponent-Dmbx7wQb.js.map} +1 -1
- package/chunk/{AnnouncingHeader-CLDpHgl_.js → AnnouncingHeader-C665jgXh.js} +6 -6
- package/chunk/{AnnouncingHeader-CLDpHgl_.js.map → AnnouncingHeader-C665jgXh.js.map} +1 -1
- package/chunk/{AnnouncingHeader-CXeTT64m.js → AnnouncingHeader-CRqImmVM.js} +6 -6
- package/chunk/{AnnouncingHeader-CXeTT64m.js.map → AnnouncingHeader-CRqImmVM.js.map} +1 -1
- package/chunk/{ApiUrls-B_EvoEh6.js → ApiUrls-B1l97XLd.js} +6 -6
- package/chunk/{ApiUrls--DdrEkPe.js.map → ApiUrls-B1l97XLd.js.map} +1 -1
- package/chunk/{ApiUrls--DdrEkPe.js → ApiUrls-BMVXJ1mM.js} +6 -6
- package/chunk/{ApiUrls-B_EvoEh6.js.map → ApiUrls-BMVXJ1mM.js.map} +1 -1
- package/chunk/{BirthDateComponent-BHIU3Biw.js → BirthDateComponent-D-98d9mx.js} +7 -7
- package/chunk/{BirthDateComponent-BHIU3Biw.js.map → BirthDateComponent-D-98d9mx.js.map} +1 -1
- package/chunk/{BirthDateComponent-Cy8ZXEl7.js → BirthDateComponent-DCXg16GU.js} +7 -7
- package/chunk/{BirthDateComponent-Cy8ZXEl7.js.map → BirthDateComponent-DCXg16GU.js.map} +1 -1
- package/chunk/{CaptchaComponent-BxNyzcXf.js → CaptchaComponent-B4PjRH23.js} +14 -14
- package/chunk/{CaptchaComponent-BORHB7bO.js.map → CaptchaComponent-B4PjRH23.js.map} +1 -1
- package/chunk/{CaptchaComponent-BORHB7bO.js → CaptchaComponent-BxjtTozO.js} +14 -14
- package/chunk/{CaptchaComponent-BxNyzcXf.js.map → CaptchaComponent-BxjtTozO.js.map} +1 -1
- package/chunk/{ChangeLocaleComponent-D-DQnbPA.js → ChangeLocaleComponent-Cqs8Ed1t.js} +7 -7
- package/chunk/{ChangeLocaleComponent-D-DQnbPA.js.map → ChangeLocaleComponent-Cqs8Ed1t.js.map} +1 -1
- package/chunk/{ChangeLocaleComponent-idsSKpgP.js → ChangeLocaleComponent-yTfSGHOP.js} +7 -7
- package/chunk/{ChangeLocaleComponent-idsSKpgP.js.map → ChangeLocaleComponent-yTfSGHOP.js.map} +1 -1
- package/chunk/{City-CL6havrT.js → City-Ccy5-tEQ.js} +6 -6
- package/chunk/{City-BykM6lTM.js.map → City-Ccy5-tEQ.js.map} +1 -1
- package/chunk/{City-BykM6lTM.js → City-DpGdS5VA.js} +6 -6
- package/chunk/{City-CL6havrT.js.map → City-DpGdS5VA.js.map} +1 -1
- package/chunk/{CollegeNameComponent-C9i2FJFx.js → CollegeNameComponent-5qe9ljjZ.js} +8 -8
- package/chunk/{CollegeNameComponent-5BVjBNq0.js.map → CollegeNameComponent-5qe9ljjZ.js.map} +1 -1
- package/chunk/{CollegeNameComponent-5BVjBNq0.js → CollegeNameComponent-CSlyVZ9K.js} +8 -8
- package/chunk/{CollegeNameComponent-C9i2FJFx.js.map → CollegeNameComponent-CSlyVZ9K.js.map} +1 -1
- package/chunk/{CopyToClipboardComponent-B2uEMMpR.js → CopyToClipboardComponent-CYURzymv.js} +6 -6
- package/chunk/{CopyToClipboardComponent-B2uEMMpR.js.map → CopyToClipboardComponent-CYURzymv.js.map} +1 -1
- package/chunk/{CopyToClipboardComponent-CyzLvXQJ.js → CopyToClipboardComponent-DssvbA6B.js} +6 -6
- package/chunk/{CopyToClipboardComponent-CyzLvXQJ.js.map → CopyToClipboardComponent-DssvbA6B.js.map} +1 -1
- package/chunk/{CountryComponentWrapper-CcHQo8OH.js → CountryComponentWrapper-D05UNMjA.js} +9 -9
- package/chunk/{CountryComponentWrapper-CaYmSjkG.js.map → CountryComponentWrapper-D05UNMjA.js.map} +1 -1
- package/chunk/{CountryComponentWrapper-CaYmSjkG.js → CountryComponentWrapper-DpGkBqyN.js} +9 -9
- package/chunk/{CountryComponentWrapper-CcHQo8OH.js.map → CountryComponentWrapper-DpGkBqyN.js.map} +1 -1
- package/chunk/{DischargeDateComponent-AcgnEjpb.js → DischargeDateComponent-B_NsMlit.js} +10 -10
- package/chunk/{DischargeDateComponent-AcgnEjpb.js.map → DischargeDateComponent-B_NsMlit.js.map} +1 -1
- package/chunk/{DischargeDateComponent-DdE_EyqK.js → DischargeDateComponent-DIkajREC.js} +10 -10
- package/chunk/{DischargeDateComponent-DdE_EyqK.js.map → DischargeDateComponent-DIkajREC.js.map} +1 -1
- package/chunk/{DriverLicenseNumberComponent-D9SDRAeV.js → DriverLicenseNumberComponent-C8WITgA-.js} +6 -6
- package/chunk/{DriverLicenseNumberComponent-D9SDRAeV.js.map → DriverLicenseNumberComponent-C8WITgA-.js.map} +1 -1
- package/chunk/{DriverLicenseNumberComponent-DYEKIU1G.js → DriverLicenseNumberComponent-H3LDFFs8.js} +6 -6
- package/chunk/{DriverLicenseNumberComponent-DYEKIU1G.js.map → DriverLicenseNumberComponent-H3LDFFs8.js.map} +1 -1
- package/chunk/{EmailLoopPending-1aY4gWSW.js → EmailLoopPending-BNRLFtBa.js} +9 -9
- package/chunk/{EmailLoopPending-1aY4gWSW.js.map → EmailLoopPending-BNRLFtBa.js.map} +1 -1
- package/chunk/{EmailLoopPending-CohuDy06.js → EmailLoopPending-Dl0ph2cL.js} +9 -9
- package/chunk/{EmailLoopPending-CohuDy06.js.map → EmailLoopPending-Dl0ph2cL.js.map} +1 -1
- package/chunk/{ExtraMessage-x7BWw0ei.js → ExtraMessage-BvCY4YpQ.js} +7 -7
- package/chunk/{ExtraMessage-CN18YvZT.js.map → ExtraMessage-BvCY4YpQ.js.map} +1 -1
- package/chunk/{ExtraMessage-CN18YvZT.js → ExtraMessage-Dkql53YF.js} +7 -7
- package/chunk/{ExtraMessage-x7BWw0ei.js.map → ExtraMessage-Dkql53YF.js.map} +1 -1
- package/chunk/{FirstResponderOrganizationComponent-gE3uH_Qu.js → FirstResponderOrganizationComponent-BUdtKpMV.js} +7 -7
- package/chunk/{FirstResponderOrganizationComponent-CFtRv00U.js.map → FirstResponderOrganizationComponent-BUdtKpMV.js.map} +1 -1
- package/chunk/{FirstResponderOrganizationComponent-CFtRv00U.js → FirstResponderOrganizationComponent-CfDgqpt-.js} +7 -7
- package/chunk/{FirstResponderOrganizationComponent-gE3uH_Qu.js.map → FirstResponderOrganizationComponent-CfDgqpt-.js.map} +1 -1
- package/chunk/{FormFieldInputSelect-BBmkWo4W.js → FormFieldInputSelect-BY24q7T0.js} +7 -7
- package/chunk/{FormFieldInputSelect-BBmkWo4W.js.map → FormFieldInputSelect-BY24q7T0.js.map} +1 -1
- package/chunk/{FormFieldInputSelect-D2TcQH6v.js → FormFieldInputSelect-Dz0l89FZ.js} +7 -7
- package/chunk/{FormFieldInputSelect-D2TcQH6v.js.map → FormFieldInputSelect-Dz0l89FZ.js.map} +1 -1
- package/chunk/{FormFieldLayout-CMLqr9t1.js → FormFieldLayout-C5-ReqYd.js} +6 -6
- package/chunk/{FormFieldLayout-D8zi4UuO.js.map → FormFieldLayout-C5-ReqYd.js.map} +1 -1
- package/chunk/{FormFieldLayout-D8zi4UuO.js → FormFieldLayout-CHV2U_Vf.js} +6 -6
- package/chunk/{FormFieldLayout-CMLqr9t1.js.map → FormFieldLayout-CHV2U_Vf.js.map} +1 -1
- package/chunk/{FormFieldText-Cn6-0trL.js → FormFieldText-BbdI2qod.js} +7 -7
- package/chunk/{FormFieldText-Cn6-0trL.js.map → FormFieldText-BbdI2qod.js.map} +1 -1
- package/chunk/{FormFieldText-DJOFzwWN.js → FormFieldText-CojbU6CY.js} +7 -7
- package/chunk/{FormFieldText-DJOFzwWN.js.map → FormFieldText-CojbU6CY.js.map} +1 -1
- package/chunk/{FormFieldTypeahead-owJNEvXI.js → FormFieldTypeahead-CNX3FDrh.js} +13 -13
- package/chunk/{FormFieldTypeahead-owJNEvXI.js.map → FormFieldTypeahead-CNX3FDrh.js.map} +1 -1
- package/chunk/{FormFieldTypeahead-DgFoEFiI.js → FormFieldTypeahead-CtEOFpYZ.js} +13 -13
- package/chunk/{FormFieldTypeahead-DgFoEFiI.js.map → FormFieldTypeahead-CtEOFpYZ.js.map} +1 -1
- package/chunk/{FormFooterComponent-DhQaJMxV.js → FormFooterComponent-B4pXl2Gg.js} +1419 -1323
- package/chunk/FormFooterComponent-B4pXl2Gg.js.map +1 -0
- package/chunk/{FormFooterComponent-CetDNO5o.js → FormFooterComponent-D4f181-M.js} +258 -162
- package/chunk/FormFooterComponent-D4f181-M.js.map +1 -0
- package/chunk/{FormSelectChoice-osDN1oLh.js → FormSelectChoice-5THzFmQH.js} +8 -8
- package/chunk/{FormSelectChoice-BhhHyaEw.js.map → FormSelectChoice-5THzFmQH.js.map} +1 -1
- package/chunk/{FormSelectChoice-BhhHyaEw.js → FormSelectChoice-BY7fTRbM.js} +8 -8
- package/chunk/{FormSelectChoice-osDN1oLh.js.map → FormSelectChoice-BY7fTRbM.js.map} +1 -1
- package/chunk/{InputText-CJnffm2K.js → InputText-AeuQFn-n.js} +7 -7
- package/chunk/{InputText-BWuKLYeX.js.map → InputText-AeuQFn-n.js.map} +1 -1
- package/chunk/{InputText-BWuKLYeX.js → InputText-C1KVw41V.js} +7 -7
- package/chunk/{InputText-CJnffm2K.js.map → InputText-C1KVw41V.js.map} +1 -1
- package/chunk/{LicensedProfessionalOrganizationComponent-C2rj3igZ.js → LicensedProfessionalOrganizationComponent-Cpw8UkAg.js} +7 -7
- package/chunk/{LicensedProfessionalOrganizationComponent-C2rj3igZ.js.map → LicensedProfessionalOrganizationComponent-Cpw8UkAg.js.map} +1 -1
- package/chunk/{LicensedProfessionalOrganizationComponent-Bs2Bbby5.js → LicensedProfessionalOrganizationComponent-Dt-B-KLT.js} +7 -7
- package/chunk/{LicensedProfessionalOrganizationComponent-Bs2Bbby5.js.map → LicensedProfessionalOrganizationComponent-Dt-B-KLT.js.map} +1 -1
- package/chunk/{LogoComponent-x1hhyiZ7.js → LogoComponent-BbjTQetI.js} +6 -6
- package/chunk/{LogoComponent-DgxgyyEk.js.map → LogoComponent-BbjTQetI.js.map} +1 -1
- package/chunk/{LogoComponent-DgxgyyEk.js → LogoComponent-Capadyoj.js} +6 -6
- package/chunk/{LogoComponent-x1hhyiZ7.js.map → LogoComponent-Capadyoj.js.map} +1 -1
- package/chunk/{LowIncomeOrganizationComponent-CUp0Zwff.js → LowIncomeOrganizationComponent-BmjqOHxV.js} +11 -11
- package/chunk/{LowIncomeOrganizationComponent-CUp0Zwff.js.map → LowIncomeOrganizationComponent-BmjqOHxV.js.map} +1 -1
- package/chunk/{LowIncomeOrganizationComponent-D-nhX8iT.js → LowIncomeOrganizationComponent-C8d-cPM9.js} +11 -11
- package/chunk/{LowIncomeOrganizationComponent-D-nhX8iT.js.map → LowIncomeOrganizationComponent-C8d-cPM9.js.map} +1 -1
- package/chunk/{MedicalProfessionalOrganizationComponent-CPj_iPSu.js → MedicalProfessionalOrganizationComponent-AEiTIh5y.js} +7 -7
- package/chunk/{MedicalProfessionalOrganizationComponent-CPj_iPSu.js.map → MedicalProfessionalOrganizationComponent-AEiTIh5y.js.map} +1 -1
- package/chunk/{MedicalProfessionalOrganizationComponent-DDOdWW0l.js → MedicalProfessionalOrganizationComponent-DGohlVeO.js} +7 -7
- package/chunk/{MedicalProfessionalOrganizationComponent-DDOdWW0l.js.map → MedicalProfessionalOrganizationComponent-DGohlVeO.js.map} +1 -1
- package/chunk/{MemberIdComponent-lHRDd-GD.js → MemberIdComponent-Bgj2RTIU.js} +6 -6
- package/chunk/{MemberIdComponent-CCd021Y2.js.map → MemberIdComponent-Bgj2RTIU.js.map} +1 -1
- package/chunk/{MemberIdComponent-CCd021Y2.js → MemberIdComponent-C4nH8HWl.js} +6 -6
- package/chunk/{MemberIdComponent-lHRDd-GD.js.map → MemberIdComponent-C4nH8HWl.js.map} +1 -1
- package/chunk/{MembershipOrganizationComponent-C4Lq8DDO.js → MembershipOrganizationComponent--cqePbSG.js} +7 -7
- package/chunk/{MembershipOrganizationComponent-C4Lq8DDO.js.map → MembershipOrganizationComponent--cqePbSG.js.map} +1 -1
- package/chunk/{MembershipOrganizationComponent-DFlV9g62.js → MembershipOrganizationComponent-DKndZo_l.js} +7 -7
- package/chunk/{MembershipOrganizationComponent-DFlV9g62.js.map → MembershipOrganizationComponent-DKndZo_l.js.map} +1 -1
- package/chunk/Onfido-CTCgAwnB.js +4 -4
- package/chunk/{PersonalInfoStepSubmitButton-BQc65TXU.js → PersonalInfoStepSubmitButton-B_cDlypb.js} +10 -10
- package/chunk/{PersonalInfoStepSubmitButton-BQc65TXU.js.map → PersonalInfoStepSubmitButton-B_cDlypb.js.map} +1 -1
- package/chunk/{PersonalInfoStepSubmitButton-Do9s_cOU.js → PersonalInfoStepSubmitButton-CXvt9o8S.js} +10 -10
- package/chunk/{PersonalInfoStepSubmitButton-Do9s_cOU.js.map → PersonalInfoStepSubmitButton-CXvt9o8S.js.map} +1 -1
- package/chunk/{PersonalInfoStepWrapper-CZNsVG-R.js → PersonalInfoStepWrapper-CdBLUd5V.js} +7 -7
- package/chunk/{PersonalInfoStepWrapper-CZNsVG-R.js.map → PersonalInfoStepWrapper-CdBLUd5V.js.map} +1 -1
- package/chunk/{PersonalInfoStepWrapper-BdHSrD2_.js → PersonalInfoStepWrapper-DAmzepBq.js} +8 -8
- package/chunk/{PersonalInfoStepWrapper-BdHSrD2_.js.map → PersonalInfoStepWrapper-DAmzepBq.js.map} +1 -1
- package/chunk/{PostalCodeComponent-1-YsGlqY.js → PostalCodeComponent-C5NIUmbp.js} +6 -6
- package/chunk/{PostalCodeComponent-1-YsGlqY.js.map → PostalCodeComponent-C5NIUmbp.js.map} +1 -1
- package/chunk/{PostalCodeComponent-DNUVgwF3.js → PostalCodeComponent-CUGDHlOa.js} +6 -6
- package/chunk/{PostalCodeComponent-DNUVgwF3.js.map → PostalCodeComponent-CUGDHlOa.js.map} +1 -1
- package/chunk/{SSN-BX8TdkJC.js → SSN-BZgf6MTH.js} +7 -7
- package/chunk/{SSN-BX8TdkJC.js.map → SSN-BZgf6MTH.js.map} +1 -1
- package/chunk/{SSN-BbJApc2I.js → SSN-COEXPfZd.js} +7 -7
- package/chunk/{SSN-BbJApc2I.js.map → SSN-COEXPfZd.js.map} +1 -1
- package/chunk/{StateSelectComponent-6kUzcwCo.js → StateSelectComponent-D9cuFwhj.js} +6 -6
- package/chunk/{StateSelectComponent-6kUzcwCo.js.map → StateSelectComponent-D9cuFwhj.js.map} +1 -1
- package/chunk/{StateSelectComponent-BSKKl9wF.js → StateSelectComponent-Dmp3aJ9_.js} +6 -6
- package/chunk/{StateSelectComponent-BSKKl9wF.js.map → StateSelectComponent-Dmp3aJ9_.js.map} +1 -1
- package/chunk/{StatusComponent-B68ABFjx.js → StatusComponent-54Lup0nO.js} +7 -7
- package/chunk/{StatusComponent-B68ABFjx.js.map → StatusComponent-54Lup0nO.js.map} +1 -1
- package/chunk/{StatusComponent-CV8Vb5eJ.js → StatusComponent-CJBJQf_t.js} +7 -7
- package/chunk/{StatusComponent-CV8Vb5eJ.js.map → StatusComponent-CJBJQf_t.js.map} +1 -1
- package/chunk/{StepActiveMilitaryPersonalInfoComponent-C8i62pcJ.js → StepActiveMilitaryPersonalInfoComponent-DYwwKWiP.js} +18 -18
- package/chunk/{StepActiveMilitaryPersonalInfoComponent-C8i62pcJ.js.map → StepActiveMilitaryPersonalInfoComponent-DYwwKWiP.js.map} +1 -1
- package/chunk/{StepActiveMilitaryPersonalInfoComponent-hoa8SxRd.js → StepActiveMilitaryPersonalInfoComponent-Dd9wZL69.js} +18 -18
- package/chunk/{StepActiveMilitaryPersonalInfoComponent-hoa8SxRd.js.map → StepActiveMilitaryPersonalInfoComponent-Dd9wZL69.js.map} +1 -1
- package/chunk/{StepAgePersonalInfo-BFhsxBUD.js → StepAgePersonalInfo-B6BaJSU9.js} +18 -18
- package/chunk/{StepAgePersonalInfo-BFhsxBUD.js.map → StepAgePersonalInfo-B6BaJSU9.js.map} +1 -1
- package/chunk/{StepAgePersonalInfo-DIWqbP3p.js → StepAgePersonalInfo-uB8J8jFk.js} +18 -18
- package/chunk/{StepAgePersonalInfo-DIWqbP3p.js.map → StepAgePersonalInfo-uB8J8jFk.js.map} +1 -1
- package/chunk/{StepCard-DRPVd5Xe.js → StepCard-B31RNuY9.js} +5 -5
- package/chunk/{StepCard-BEbyMH-c.js.map → StepCard-B31RNuY9.js.map} +1 -1
- package/chunk/{StepCard-BEbyMH-c.js → StepCard-PXVHWYeo.js} +5 -5
- package/chunk/{StepCard-DRPVd5Xe.js.map → StepCard-PXVHWYeo.js.map} +1 -1
- package/chunk/{StepCollectIdentifier-BSK3qDAU.js → StepCollectIdentifier-BPD70vxg.js} +8 -8
- package/chunk/{StepCollectIdentifier-Cy2aeT_j.js.map → StepCollectIdentifier-BPD70vxg.js.map} +1 -1
- package/chunk/{StepCollectIdentifier-Cy2aeT_j.js → StepCollectIdentifier-D5Mt1tDo.js} +8 -8
- package/chunk/{StepCollectIdentifier-BSK3qDAU.js.map → StepCollectIdentifier-D5Mt1tDo.js.map} +1 -1
- package/chunk/StepCollectMilitaryStatusComponent-CD7tdS_t.js +9 -0
- package/chunk/{StepCollectMilitaryStatusComponent-B0D4F5Hd.js → StepCollectMilitaryStatusComponent-Dk4ngVEf.js} +5 -5
- package/chunk/{StepCollectPersonalInfo-DrWJrhte.js → StepCollectPersonalInfo-CHC7DaGk.js} +30 -30
- package/chunk/{StepCollectPersonalInfo-DrWJrhte.js.map → StepCollectPersonalInfo-CHC7DaGk.js.map} +1 -1
- package/chunk/{StepCollectPersonalInfo-BhRo5AZW.js → StepCollectPersonalInfo-Jvy4xiYx.js} +30 -30
- package/chunk/{StepCollectPersonalInfo-BhRo5AZW.js.map → StepCollectPersonalInfo-Jvy4xiYx.js.map} +1 -1
- package/chunk/{StepCompleteAuthentication-BMYfHQDX.js → StepCompleteAuthentication-B3DbO_HZ.js} +7 -7
- package/chunk/{StepCompleteAuthentication-BMYfHQDX.js.map → StepCompleteAuthentication-B3DbO_HZ.js.map} +1 -1
- package/chunk/{StepCompleteAuthentication-Cu9GoQDP.js → StepCompleteAuthentication-khHRwXK7.js} +7 -7
- package/chunk/{StepCompleteAuthentication-Cu9GoQDP.js.map → StepCompleteAuthentication-khHRwXK7.js.map} +1 -1
- package/chunk/{StepConsolation-DmX3B6yh.js → StepConsolation-BdtjeVme.js} +9 -9
- package/chunk/{StepConsolation-DmX3B6yh.js.map → StepConsolation-BdtjeVme.js.map} +1 -1
- package/chunk/{StepConsolation-bt3asBBO.js → StepConsolation-CpG4ivzD.js} +9 -9
- package/chunk/{StepConsolation-bt3asBBO.js.map → StepConsolation-CpG4ivzD.js.map} +1 -1
- package/chunk/{StepDocUpload-DMUXunVM.js → StepDocUpload-C5274Wtg.js} +13 -13
- package/chunk/{StepDocUpload-DMUXunVM.js.map → StepDocUpload-C5274Wtg.js.map} +1 -1
- package/chunk/{StepDocUpload-CXRWsWyZ.js → StepDocUpload-CLVth33n.js} +13 -13
- package/chunk/{StepDocUpload-CXRWsWyZ.js.map → StepDocUpload-CLVth33n.js.map} +1 -1
- package/chunk/{StepDriverLicensePersonalInfoComponent-DAcFI9fH.js → StepDriverLicensePersonalInfoComponent-6akTvppj.js} +15 -15
- package/chunk/{StepDriverLicensePersonalInfoComponent-DAcFI9fH.js.map → StepDriverLicensePersonalInfoComponent-6akTvppj.js.map} +1 -1
- package/chunk/{StepDriverLicensePersonalInfoComponent-0uKhEZKS.js → StepDriverLicensePersonalInfoComponent-BnVL6avF.js} +15 -15
- package/chunk/{StepDriverLicensePersonalInfoComponent-0uKhEZKS.js.map → StepDriverLicensePersonalInfoComponent-BnVL6avF.js.map} +1 -1
- package/chunk/{StepEmailLoop-CNlnNJ-I.js → StepEmailLoop-D1KB0KwR.js} +11 -11
- package/chunk/{StepEmailLoop-CNlnNJ-I.js.map → StepEmailLoop-D1KB0KwR.js.map} +1 -1
- package/chunk/{StepEmailLoop-DvhrtkaW.js → StepEmailLoop-Dfug5ScA.js} +11 -11
- package/chunk/{StepEmailLoop-DvhrtkaW.js.map → StepEmailLoop-Dfug5ScA.js.map} +1 -1
- package/chunk/{StepEmploymentPersonalInfo-ChvYaKNw.js → StepEmploymentPersonalInfo-CFyNzULG.js} +18 -18
- package/chunk/{StepEmploymentPersonalInfo-B5JXd1cN.js.map → StepEmploymentPersonalInfo-CFyNzULG.js.map} +1 -1
- package/chunk/{StepEmploymentPersonalInfo-B5JXd1cN.js → StepEmploymentPersonalInfo-D7HGsB-p.js} +18 -18
- package/chunk/{StepEmploymentPersonalInfo-ChvYaKNw.js.map → StepEmploymentPersonalInfo-D7HGsB-p.js.map} +1 -1
- package/chunk/{StepFirstResponderPersonalInfo-LlsPNHdA.js → StepFirstResponderPersonalInfo-BulirlUs.js} +18 -18
- package/chunk/{StepFirstResponderPersonalInfo-LlsPNHdA.js.map → StepFirstResponderPersonalInfo-BulirlUs.js.map} +1 -1
- package/chunk/{StepFirstResponderPersonalInfo-RufrTrr8.js → StepFirstResponderPersonalInfo-Di_b4ACx.js} +18 -18
- package/chunk/{StepFirstResponderPersonalInfo-RufrTrr8.js.map → StepFirstResponderPersonalInfo-Di_b4ACx.js.map} +1 -1
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-BipfF6xU.js → StepGeneralIdentityPersonalInfoComponent-olZs-6Rj.js} +18 -18
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-BipfF6xU.js.map → StepGeneralIdentityPersonalInfoComponent-olZs-6Rj.js.map} +1 -1
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-CETkNIaC.js → StepGeneralIdentityPersonalInfoComponent-pQLGlnKM.js} +18 -18
- package/chunk/{StepGeneralIdentityPersonalInfoComponent-CETkNIaC.js.map → StepGeneralIdentityPersonalInfoComponent-pQLGlnKM.js.map} +1 -1
- package/chunk/{StepHybridIdentityPersonalInfoComponent-B2nuVc7l.js → StepHybridIdentityPersonalInfoComponent-BnDQUGJs.js} +19 -19
- package/chunk/{StepHybridIdentityPersonalInfoComponent-B2nuVc7l.js.map → StepHybridIdentityPersonalInfoComponent-BnDQUGJs.js.map} +1 -1
- package/chunk/{StepHybridIdentityPersonalInfoComponent-DBq__6K1.js → StepHybridIdentityPersonalInfoComponent-CE7BsdJg.js} +19 -19
- package/chunk/{StepHybridIdentityPersonalInfoComponent-DBq__6K1.js.map → StepHybridIdentityPersonalInfoComponent-CE7BsdJg.js.map} +1 -1
- package/chunk/{StepIDCheckLoop-OZcXlCYI.js → StepIDCheckLoop-C5285ynn.js} +8 -8
- package/chunk/{StepIDCheckLoop-DcepvoDq.js.map → StepIDCheckLoop-C5285ynn.js.map} +1 -1
- package/chunk/{StepIDCheckLoop-DcepvoDq.js → StepIDCheckLoop-CcZ5Uaf4.js} +8 -8
- package/chunk/{StepIDCheckLoop-OZcXlCYI.js.map → StepIDCheckLoop-CcZ5Uaf4.js.map} +1 -1
- package/chunk/{StepIDCheckLoopOnfido-CJzbMWT9.js → StepIDCheckLoopOnfido-BjjTPVOv.js} +11 -11
- package/chunk/{StepIDCheckLoopOnfido-CJzbMWT9.js.map → StepIDCheckLoopOnfido-BjjTPVOv.js.map} +1 -1
- package/chunk/{StepIDCheckLoopOnfido-BccaRXnf.js → StepIDCheckLoopOnfido-BmxPYTpf.js} +11 -11
- package/chunk/{StepIDCheckLoopOnfido-BccaRXnf.js.map → StepIDCheckLoopOnfido-BmxPYTpf.js.map} +1 -1
- package/chunk/{StepIDCheckLoopRegula-vJGTN04M.js → StepIDCheckLoopRegula-D7Zd3zod.js} +10 -10
- package/chunk/{StepIDCheckLoopRegula-BJNsxIhV.js.map → StepIDCheckLoopRegula-D7Zd3zod.js.map} +1 -1
- package/chunk/{StepIDCheckLoopRegula-BJNsxIhV.js → StepIDCheckLoopRegula-DBYXDNLU.js} +10 -10
- package/chunk/{StepIDCheckLoopRegula-vJGTN04M.js.map → StepIDCheckLoopRegula-DBYXDNLU.js.map} +1 -1
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-tDuo4mAi.js → StepInactiveMilitaryPersonalInfoComponent-HBJK96BR.js} +23 -23
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-CYJ86Qy2.js.map → StepInactiveMilitaryPersonalInfoComponent-HBJK96BR.js.map} +1 -1
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-CYJ86Qy2.js → StepInactiveMilitaryPersonalInfoComponent-T4We4W2c.js} +23 -23
- package/chunk/{StepInactiveMilitaryPersonalInfoComponent-tDuo4mAi.js.map → StepInactiveMilitaryPersonalInfoComponent-T4We4W2c.js.map} +1 -1
- package/chunk/{StepLicensedProfessionalPersonalInfo-CbxBDwSv.js → StepLicensedProfessionalPersonalInfo-Bo9cIVmu.js} +17 -17
- package/chunk/{StepLicensedProfessionalPersonalInfo-CbxBDwSv.js.map → StepLicensedProfessionalPersonalInfo-Bo9cIVmu.js.map} +1 -1
- package/chunk/{StepLicensedProfessionalPersonalInfo-D_c4v8UM.js → StepLicensedProfessionalPersonalInfo-_ENTeOP7.js} +17 -17
- package/chunk/{StepLicensedProfessionalPersonalInfo-D_c4v8UM.js.map → StepLicensedProfessionalPersonalInfo-_ENTeOP7.js.map} +1 -1
- package/chunk/{StepLowIncomePersonalInfo-w2zhOF1V.js → StepLowIncomePersonalInfo-DcuP9uCp.js} +21 -21
- package/chunk/{StepLowIncomePersonalInfo-DKfMG8ar.js.map → StepLowIncomePersonalInfo-DcuP9uCp.js.map} +1 -1
- package/chunk/{StepLowIncomePersonalInfo-DKfMG8ar.js → StepLowIncomePersonalInfo-Dp76iAAP.js} +21 -21
- package/chunk/{StepLowIncomePersonalInfo-w2zhOF1V.js.map → StepLowIncomePersonalInfo-Dp76iAAP.js.map} +1 -1
- package/chunk/{StepMedicalProfessionalPersonalInfo-DsJ1m9gg.js → StepMedicalProfessionalPersonalInfo--vo70WUw.js} +19 -19
- package/chunk/{StepMedicalProfessionalPersonalInfo-Bmtf2gGb.js.map → StepMedicalProfessionalPersonalInfo--vo70WUw.js.map} +1 -1
- package/chunk/{StepMedicalProfessionalPersonalInfo-Bmtf2gGb.js → StepMedicalProfessionalPersonalInfo-Cx6z5vv_.js} +19 -19
- package/chunk/{StepMedicalProfessionalPersonalInfo-DsJ1m9gg.js.map → StepMedicalProfessionalPersonalInfo-Cx6z5vv_.js.map} +1 -1
- package/chunk/{StepMemberPersonalInfo-Bizl9yj8.js → StepMemberPersonalInfo-6GXnE9oW.js} +16 -16
- package/chunk/{StepMemberPersonalInfo-Bizl9yj8.js.map → StepMemberPersonalInfo-6GXnE9oW.js.map} +1 -1
- package/chunk/{StepMemberPersonalInfo-grYM_Yf4.js → StepMemberPersonalInfo-DIK_Up4k.js} +16 -16
- package/chunk/{StepMemberPersonalInfo-grYM_Yf4.js.map → StepMemberPersonalInfo-DIK_Up4k.js.map} +1 -1
- package/chunk/{StepMoverPersonalInfo-D3aIlwOK.js → StepMoverPersonalInfo-BdCiAwgT.js} +14 -14
- package/chunk/{StepMoverPersonalInfo-D3aIlwOK.js.map → StepMoverPersonalInfo-BdCiAwgT.js.map} +1 -1
- package/chunk/{StepMoverPersonalInfo-DkQbmMny.js → StepMoverPersonalInfo-Cs-5V2Vf.js} +14 -14
- package/chunk/{StepMoverPersonalInfo-DkQbmMny.js.map → StepMoverPersonalInfo-Cs-5V2Vf.js.map} +1 -1
- package/chunk/{StepOverrideComponent-SqQZ3-Y0.js → StepOverrideComponent-BuCf5lHB.js} +11 -11
- package/chunk/{StepOverrideComponent-SqQZ3-Y0.js.map → StepOverrideComponent-BuCf5lHB.js.map} +1 -1
- package/chunk/{StepOverrideComponent-VSx5gkrS.js → StepOverrideComponent-CQ0ofUDQ.js} +11 -11
- package/chunk/{StepOverrideComponent-VSx5gkrS.js.map → StepOverrideComponent-CQ0ofUDQ.js.map} +1 -1
- package/chunk/{StepSMSLoop-Bnj6w5bM.js → StepSMSLoop-DMyuCz5p.js} +9 -9
- package/chunk/{StepSMSLoop-Bnj6w5bM.js.map → StepSMSLoop-DMyuCz5p.js.map} +1 -1
- package/chunk/{StepSMSLoop-CDS9I-nu.js → StepSMSLoop-SnRlOV_y.js} +9 -9
- package/chunk/{StepSMSLoop-CDS9I-nu.js.map → StepSMSLoop-SnRlOV_y.js.map} +1 -1
- package/chunk/StepSSO-BRFhNvkp.js +4 -4
- package/chunk/StepSSO-BaFk7RFJ.js +4 -4
- package/chunk/{StepSocialSecurityNumber-Be2LWoJF.js → StepSocialSecurityNumber-CKQQW5C5.js} +12 -12
- package/chunk/{StepSocialSecurityNumber-Be2LWoJF.js.map → StepSocialSecurityNumber-CKQQW5C5.js.map} +1 -1
- package/chunk/{StepSocialSecurityNumber-C6pBegcg.js → StepSocialSecurityNumber-D_PGuZD6.js} +12 -12
- package/chunk/{StepSocialSecurityNumber-C6pBegcg.js.map → StepSocialSecurityNumber-D_PGuZD6.js.map} +1 -1
- package/chunk/{StepStudentPersonalInfo-CJh-76B0.js → StepStudentPersonalInfo-CMD9-6V4.js} +16 -16
- package/chunk/{StepStudentPersonalInfo-06duqwlX.js.map → StepStudentPersonalInfo-CMD9-6V4.js.map} +1 -1
- package/chunk/{StepStudentPersonalInfo-06duqwlX.js → StepStudentPersonalInfo-Dm_l8-YI.js} +16 -16
- package/chunk/{StepStudentPersonalInfo-CJh-76B0.js.map → StepStudentPersonalInfo-Dm_l8-YI.js.map} +1 -1
- package/chunk/{StepSuccess-BgY9a0Cn.js → StepSuccess-3vU0mbVv.js} +11 -11
- package/chunk/{StepSuccess-BgY9a0Cn.js.map → StepSuccess-3vU0mbVv.js.map} +1 -1
- package/chunk/{StepSuccess-MVR8TAGq.js → StepSuccess-BMwq2W8N.js} +11 -11
- package/chunk/{StepSuccess-MVR8TAGq.js.map → StepSuccess-BMwq2W8N.js.map} +1 -1
- package/chunk/{StepTeacherPersonalInfo-CVudPe_L.js → StepTeacherPersonalInfo-262MHFWy.js} +17 -17
- package/chunk/{StepTeacherPersonalInfo-CVudPe_L.js.map → StepTeacherPersonalInfo-262MHFWy.js.map} +1 -1
- package/chunk/{StepTeacherPersonalInfo-DOmYn9G8.js → StepTeacherPersonalInfo-BR4J18vS.js} +17 -17
- package/chunk/{StepTeacherPersonalInfo-DOmYn9G8.js.map → StepTeacherPersonalInfo-BR4J18vS.js.map} +1 -1
- package/chunk/StepThirdPartyLoop-BGHCbduX.js +4 -4
- package/chunk/StepThirdPartyLoop-ZHByQpHa.js +4 -4
- package/chunk/{TeacherSchoolComponent-B5V_JYP1.js → TeacherSchoolComponent-B2lR7nTy.js} +8 -8
- package/chunk/{TeacherSchoolComponent-CVxRF20A.js.map → TeacherSchoolComponent-B2lR7nTy.js.map} +1 -1
- package/chunk/{TeacherSchoolComponent-CVxRF20A.js → TeacherSchoolComponent-Bbxea0Ji.js} +8 -8
- package/chunk/{TeacherSchoolComponent-B5V_JYP1.js.map → TeacherSchoolComponent-Bbxea0Ji.js.map} +1 -1
- package/chunk/{TestingRouteOverrides-D14rz0L4.js → TestingRouteOverrides-BogZlgPW.js} +6 -6
- package/chunk/{TestingRouteOverrides-D_76ZDo1.js.map → TestingRouteOverrides-BogZlgPW.js.map} +1 -1
- package/chunk/{TestingRouteOverrides-D_76ZDo1.js → TestingRouteOverrides-FAGpXyA6.js} +6 -6
- package/chunk/{TestingRouteOverrides-D14rz0L4.js.map → TestingRouteOverrides-FAGpXyA6.js.map} +1 -1
- package/chunk/ThreatMetrix-D_TbL50B.js +4 -4
- package/chunk/{VerificationApiClient-Bsq9nmb1.js → VerificationApiClient-BO8ElFmj.js} +8 -8
- package/chunk/{VerificationApiClient-Bsq9nmb1.js.map → VerificationApiClient-BO8ElFmj.js.map} +1 -1
- package/chunk/{VerificationApiClient-C9Eh-JpJ.js → VerificationApiClient-DPuicXlE.js} +8 -8
- package/chunk/{VerificationApiClient-C9Eh-JpJ.js.map → VerificationApiClient-DPuicXlE.js.map} +1 -1
- package/chunk/{VerificationApiUtils-DSadLMiz.js → VerificationApiUtils-BDFqaPsb.js} +7 -7
- package/chunk/{VerificationApiUtils-DA8QOxK3.js.map → VerificationApiUtils-BDFqaPsb.js.map} +1 -1
- package/chunk/{VerificationApiUtils-DA8QOxK3.js → VerificationApiUtils-k8zQodQ6.js} +7 -7
- package/chunk/{VerificationApiUtils-DSadLMiz.js.map → VerificationApiUtils-k8zQodQ6.js.map} +1 -1
- package/chunk/ar-wkBEXxD9.js +4 -4
- package/chunk/bg-D2-seofX.js +4 -4
- package/chunk/bn-IN-B5PyYaJU.js +4 -4
- package/chunk/{countryUtils-Cv7oNEHL.js → countryUtils-h1jZdv97.js} +5 -5
- package/chunk/{countryUtils-Cv7oNEHL.js.map → countryUtils-h1jZdv97.js.map} +1 -1
- package/chunk/countryUtils-vV17lva1.js +12 -0
- package/chunk/{countryUtils-ZN4SsRTU.js.map → countryUtils-vV17lva1.js.map} +1 -1
- package/chunk/cs-CsEnIopo.js +4 -4
- package/chunk/da-Da-m3VU_.js +4 -4
- package/chunk/de-BSoD5U3-.js +4 -4
- package/chunk/{downshift.esm-BzITPxIv.js → downshift.esm-Ba4YUxLv.js} +7 -7
- package/chunk/{downshift.esm-BzITPxIv.js.map → downshift.esm-Ba4YUxLv.js.map} +1 -1
- package/chunk/{downshift.esm-DjizeEtd.js → downshift.esm-aRmW_Ivn.js} +7 -7
- package/chunk/{downshift.esm-DjizeEtd.js.map → downshift.esm-aRmW_Ivn.js.map} +1 -1
- package/chunk/el-CFa6y9Ri.js +4 -4
- package/chunk/{empties-QXFZXxsa.js → empties-D0HcIbna.js} +5 -5
- package/chunk/{empties-QXFZXxsa.js.map → empties-D0HcIbna.js.map} +1 -1
- package/chunk/{empties-ddtrXdee.js → empties-oqufRVwJ.js} +5 -5
- package/chunk/{empties-ddtrXdee.js.map → empties-oqufRVwJ.js.map} +1 -1
- package/chunk/{en-GB-iLW1auh9.js → en-GB-V8XaGkaI.js} +5 -5
- package/chunk/{en-GB-iLW1auh9.js.map → en-GB-V8XaGkaI.js.map} +1 -1
- package/chunk/es-D18tLxcT.js +4 -4
- package/chunk/es-ES-7x2bVUQr.js +4 -4
- package/chunk/et-udrWMVlD.js +4 -4
- package/chunk/eventEmitter-CSG6jR7V.js +4 -4
- package/chunk/fa-DgwYULMs.js +4 -4
- package/chunk/fi-CkCWFGDC.js +4 -4
- package/chunk/fr-BprIFEa8.js +4 -4
- package/chunk/fr-CA-DrjICejr.js +4 -4
- package/chunk/ga-LaV5ZJgg.js +4 -4
- package/chunk/hi-IN-7dtEICYI.js +4 -4
- package/chunk/hr-2Bctl997.js +4 -4
- package/chunk/hu-BT0z6TPZ.js +4 -4
- package/chunk/id-BvyYep3X.js +4 -4
- package/chunk/{intl-BykyN0c9.js → intl-Cqlpm1sq.js} +6 -6
- package/chunk/intl-Cqlpm1sq.js.map +1 -0
- package/chunk/is-DOsKfa80.js +4 -4
- package/chunk/it-3dX9AQk7.js +4 -4
- package/chunk/iw-5I90wqQ8.js +4 -4
- package/chunk/ja-CHdgbMgX.js +4 -4
- package/chunk/{jsx-runtime-De-7jy-U.js → jsx-runtime-BnnxqtDz.js} +5 -5
- package/chunk/{jsx-runtime-De-7jy-U.js.map → jsx-runtime-BnnxqtDz.js.map} +1 -1
- package/chunk/{jsx-runtime-pfrjHhUf.js → jsx-runtime-C6z95NB7.js} +5 -5
- package/chunk/{jsx-runtime-pfrjHhUf.js.map → jsx-runtime-C6z95NB7.js.map} +1 -1
- package/chunk/kk-BriyNfHL.js +4 -4
- package/chunk/ko-DsMaax3V.js +4 -4
- package/chunk/lo-CjASRmNr.js +4 -4
- package/chunk/lt-DF29E1de.js +4 -4
- package/chunk/lv-DlHBZyt-.js +4 -4
- package/chunk/{militaryStepHelpers-DNAVjYXU.js → militaryStepHelpers-BqdwwAql.js} +5 -5
- package/chunk/{militaryStepHelpers-BfGvMNQt.js.map → militaryStepHelpers-BqdwwAql.js.map} +1 -1
- package/chunk/{militaryStepHelpers-BfGvMNQt.js → militaryStepHelpers-VWPmjXpn.js} +5 -5
- package/chunk/{militaryStepHelpers-DNAVjYXU.js.map → militaryStepHelpers-VWPmjXpn.js.map} +1 -1
- package/chunk/{mocks-Cw8Tvikf.js → mocks-BOj7lDRY.js} +6 -6
- package/chunk/{mocks-Cw8Tvikf.js.map → mocks-BOj7lDRY.js.map} +1 -1
- package/chunk/{mocks-CYKME7z2.js → mocks-CltQI45M.js} +6 -6
- package/chunk/{mocks-CYKME7z2.js.map → mocks-CltQI45M.js.map} +1 -1
- package/chunk/ms-B3vDtlFh.js +4 -4
- package/chunk/nl-BE-Dw1IGXuF.js +4 -4
- package/chunk/nl-Cqkrr5-r.js +4 -4
- package/chunk/no-876EdwkX.js +4 -4
- package/chunk/{options-DD3L-yYH.js → options-cl-8q9QM.js} +6 -6
- package/chunk/options-cl-8q9QM.js.map +1 -0
- package/chunk/pl-B_G8s05-.js +4 -4
- package/chunk/{programThemeGetters-CLmOMSOr.js → programThemeGetters-DVGRbK4m.js} +5 -5
- package/chunk/{programThemeGetters-CLmOMSOr.js.map → programThemeGetters-DVGRbK4m.js.map} +1 -1
- package/chunk/{programThemeGetters-CassSHQA.js → programThemeGetters-DzM8X50i.js} +5 -5
- package/chunk/{programThemeGetters-CassSHQA.js.map → programThemeGetters-DzM8X50i.js.map} +1 -1
- package/chunk/pt-BR-DWj043qk.js +4 -4
- package/chunk/pt-DckA3Jnn.js +4 -4
- package/chunk/{refs-CQhPE4Xu.js → refs-XWXF03m7.js} +5 -5
- package/chunk/{refs-C6-J-L7d.js.map → refs-XWXF03m7.js.map} +1 -1
- package/chunk/{refs-C6-J-L7d.js → refs-f1rcjYQG.js} +5 -5
- package/chunk/{refs-CQhPE4Xu.js.map → refs-f1rcjYQG.js.map} +1 -1
- package/chunk/ro-DukNcWCM.js +4 -4
- package/chunk/ru-RkdRQ7qb.js +4 -4
- package/chunk/sk-CPBgBtC5.js +4 -4
- package/chunk/sl-Cyj9PWmN.js +4 -4
- package/chunk/sr-Bm1GVW8m.js +4 -4
- package/chunk/strings-DWLVdUcm.js +4 -4
- package/chunk/sv-CcMmeZrG.js +4 -4
- package/chunk/sw-BPvl1ou6.js +4 -4
- package/chunk/ta-BPEH7IlE.js +4 -4
- package/chunk/th-Dd912RL5.js +4 -4
- package/chunk/tl-J_TdpjQz.js +4 -4
- package/chunk/tr-B-GrrJj0.js +4 -4
- package/chunk/uk-MohyvT_n.js +4 -4
- package/chunk/ur-CDYGpWMm.js +4 -4
- package/chunk/{useCollectFieldsEndpoint-CCQEbKu3.js → useCollectFieldsEndpoint-B9buDo08.js} +8 -8
- package/chunk/{useCollectFieldsEndpoint-CCQEbKu3.js.map → useCollectFieldsEndpoint-B9buDo08.js.map} +1 -1
- package/chunk/{useCollectFieldsEndpoint-DA5iaKdp.js → useCollectFieldsEndpoint-DaS1L_Gt.js} +8 -8
- package/chunk/{useCollectFieldsEndpoint-DA5iaKdp.js.map → useCollectFieldsEndpoint-DaS1L_Gt.js.map} +1 -1
- package/chunk/{useMetrics-CNmTjZ8z.js → useMetrics-BmW2t4Jt.js} +6 -6
- package/chunk/{useMetrics-CNmTjZ8z.js.map → useMetrics-BmW2t4Jt.js.map} +1 -1
- package/chunk/{useMetrics-DDpAqYvt.js → useMetrics-D6EfsiR5.js} +6 -6
- package/chunk/{useMetrics-DDpAqYvt.js.map → useMetrics-D6EfsiR5.js.map} +1 -1
- package/chunk/{validators-BBcVEbKF.js → validators-BvJvqT9j.js} +6 -6
- package/chunk/{validators-BBcVEbKF.js.map → validators-BvJvqT9j.js.map} +1 -1
- package/chunk/{validators-CG1DHHwp.js → validators-DxgVWbpr.js} +6 -6
- package/chunk/{validators-CG1DHHwp.js.map → validators-DxgVWbpr.js.map} +1 -1
- package/chunk/vi-CdPTWSev.js +4 -4
- package/chunk/zh-DhnjKBoc.js +4 -4
- package/chunk/zh-HK-CWKNP_HX.js +4 -4
- package/chunk/zu-BpMHS0oR.js +4 -4
- package/package.json +1 -1
- package/sheerid-install.css +4 -4
- package/sheerid-install.js +4 -4
- package/sheerid.css +4 -4
- package/sheerid.js +45 -45
- package/chunk/FormFooterComponent-CetDNO5o.js.map +0 -1
- package/chunk/FormFooterComponent-DhQaJMxV.js.map +0 -1
- package/chunk/StepCollectMilitaryStatusComponent-DegjipI2.js +0 -9
- package/chunk/countryUtils-ZN4SsRTU.js +0 -12
- package/chunk/intl-BykyN0c9.js.map +0 -1
- package/chunk/options-DD3L-yYH.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators-CG1DHHwp.js","names":[],"sources":["../../../node_modules/postcode-validator/lib/esm/postcode-types.js","../../../node_modules/postcode-validator/lib/esm/postcode-regexes.js","../../../node_modules/postcode-validator/lib/esm/main.js","../../../node_modules/fast-luhn/index.js","../../src/lib/types/types.ts","../../src/lib/validators/validatorOverride.ts","../../src/lib/validators/validators.ts"],"sourcesContent":["export var CountryCode;\n(function (CountryCode) {\n CountryCode[\"UK\"] = \"UK\";\n CountryCode[\"GB\"] = \"GB\";\n CountryCode[\"JE\"] = \"JE\";\n CountryCode[\"GG\"] = \"GG\";\n CountryCode[\"IM\"] = \"IM\";\n CountryCode[\"US\"] = \"US\";\n CountryCode[\"CA\"] = \"CA\";\n CountryCode[\"IE\"] = \"IE\";\n CountryCode[\"DE\"] = \"DE\";\n CountryCode[\"JP\"] = \"JP\";\n CountryCode[\"FR\"] = \"FR\";\n CountryCode[\"AU\"] = \"AU\";\n CountryCode[\"IT\"] = \"IT\";\n CountryCode[\"CH\"] = \"CH\";\n CountryCode[\"AT\"] = \"AT\";\n CountryCode[\"ES\"] = \"ES\";\n CountryCode[\"NL\"] = \"NL\";\n CountryCode[\"BE\"] = \"BE\";\n CountryCode[\"DK\"] = \"DK\";\n CountryCode[\"SE\"] = \"SE\";\n CountryCode[\"NO\"] = \"NO\";\n CountryCode[\"BR\"] = \"BR\";\n CountryCode[\"PT\"] = \"PT\";\n CountryCode[\"FI\"] = \"FI\";\n CountryCode[\"AX\"] = \"AX\";\n CountryCode[\"KR\"] = \"KR\";\n CountryCode[\"CN\"] = \"CN\";\n CountryCode[\"TW\"] = \"TW\";\n CountryCode[\"SG\"] = \"SG\";\n CountryCode[\"DZ\"] = \"DZ\";\n CountryCode[\"AD\"] = \"AD\";\n CountryCode[\"AR\"] = \"AR\";\n CountryCode[\"AM\"] = \"AM\";\n CountryCode[\"AZ\"] = \"AZ\";\n CountryCode[\"BH\"] = \"BH\";\n CountryCode[\"BD\"] = \"BD\";\n CountryCode[\"BB\"] = \"BB\";\n CountryCode[\"BY\"] = \"BY\";\n CountryCode[\"BM\"] = \"BM\";\n CountryCode[\"BA\"] = \"BA\";\n CountryCode[\"IO\"] = \"IO\";\n CountryCode[\"BN\"] = \"BN\";\n CountryCode[\"BG\"] = \"BG\";\n CountryCode[\"KH\"] = \"KH\";\n CountryCode[\"CV\"] = \"CV\";\n CountryCode[\"CL\"] = \"CL\";\n CountryCode[\"CR\"] = \"CR\";\n CountryCode[\"HR\"] = \"HR\";\n CountryCode[\"CY\"] = \"CY\";\n CountryCode[\"CZ\"] = \"CZ\";\n CountryCode[\"DO\"] = \"DO\";\n CountryCode[\"EC\"] = \"EC\";\n CountryCode[\"EG\"] = \"EG\";\n CountryCode[\"EE\"] = \"EE\";\n CountryCode[\"FO\"] = \"FO\";\n CountryCode[\"GE\"] = \"GE\";\n CountryCode[\"GR\"] = \"GR\";\n CountryCode[\"GL\"] = \"GL\";\n CountryCode[\"GT\"] = \"GT\";\n CountryCode[\"HT\"] = \"HT\";\n CountryCode[\"HN\"] = \"HN\";\n CountryCode[\"HU\"] = \"HU\";\n CountryCode[\"IS\"] = \"IS\";\n CountryCode[\"IN\"] = \"IN\";\n CountryCode[\"ID\"] = \"ID\";\n CountryCode[\"IL\"] = \"IL\";\n CountryCode[\"JO\"] = \"JO\";\n CountryCode[\"KZ\"] = \"KZ\";\n CountryCode[\"KE\"] = \"KE\";\n CountryCode[\"KW\"] = \"KW\";\n CountryCode[\"KY\"] = \"KY\";\n CountryCode[\"LA\"] = \"LA\";\n CountryCode[\"LV\"] = \"LV\";\n CountryCode[\"LB\"] = \"LB\";\n CountryCode[\"LI\"] = \"LI\";\n CountryCode[\"LT\"] = \"LT\";\n CountryCode[\"LU\"] = \"LU\";\n CountryCode[\"MK\"] = \"MK\";\n CountryCode[\"MY\"] = \"MY\";\n CountryCode[\"MV\"] = \"MV\";\n CountryCode[\"MT\"] = \"MT\";\n CountryCode[\"MU\"] = \"MU\";\n CountryCode[\"MX\"] = \"MX\";\n CountryCode[\"MD\"] = \"MD\";\n CountryCode[\"MC\"] = \"MC\";\n CountryCode[\"MA\"] = \"MA\";\n CountryCode[\"NP\"] = \"NP\";\n CountryCode[\"NZ\"] = \"NZ\";\n CountryCode[\"NI\"] = \"NI\";\n CountryCode[\"NG\"] = \"NG\";\n CountryCode[\"OM\"] = \"OM\";\n CountryCode[\"PA\"] = \"PA\";\n CountryCode[\"PK\"] = \"PK\";\n CountryCode[\"PY\"] = \"PY\";\n CountryCode[\"PH\"] = \"PH\";\n CountryCode[\"PL\"] = \"PL\";\n CountryCode[\"PR\"] = \"PR\";\n CountryCode[\"RO\"] = \"RO\";\n CountryCode[\"RU\"] = \"RU\";\n CountryCode[\"SM\"] = \"SM\";\n CountryCode[\"SA\"] = \"SA\";\n CountryCode[\"SN\"] = \"SN\";\n CountryCode[\"SK\"] = \"SK\";\n CountryCode[\"SI\"] = \"SI\";\n CountryCode[\"ZA\"] = \"ZA\";\n CountryCode[\"LK\"] = \"LK\";\n CountryCode[\"TJ\"] = \"TJ\";\n CountryCode[\"TH\"] = \"TH\";\n CountryCode[\"TN\"] = \"TN\";\n CountryCode[\"TR\"] = \"TR\";\n CountryCode[\"TM\"] = \"TM\";\n CountryCode[\"UA\"] = \"UA\";\n CountryCode[\"UY\"] = \"UY\";\n CountryCode[\"UZ\"] = \"UZ\";\n CountryCode[\"VA\"] = \"VA\";\n CountryCode[\"VE\"] = \"VE\";\n CountryCode[\"ZM\"] = \"ZM\";\n CountryCode[\"AS\"] = \"AS\";\n CountryCode[\"CC\"] = \"CC\";\n CountryCode[\"CK\"] = \"CK\";\n CountryCode[\"RS\"] = \"RS\";\n CountryCode[\"ME\"] = \"ME\";\n CountryCode[\"CS\"] = \"CS\";\n CountryCode[\"YU\"] = \"YU\";\n CountryCode[\"CX\"] = \"CX\";\n CountryCode[\"ET\"] = \"ET\";\n CountryCode[\"FK\"] = \"FK\";\n CountryCode[\"NF\"] = \"NF\";\n CountryCode[\"FM\"] = \"FM\";\n CountryCode[\"GF\"] = \"GF\";\n CountryCode[\"GN\"] = \"GN\";\n CountryCode[\"GP\"] = \"GP\";\n CountryCode[\"GS\"] = \"GS\";\n CountryCode[\"GU\"] = \"GU\";\n CountryCode[\"GW\"] = \"GW\";\n CountryCode[\"HM\"] = \"HM\";\n CountryCode[\"IQ\"] = \"IQ\";\n CountryCode[\"KG\"] = \"KG\";\n CountryCode[\"LR\"] = \"LR\";\n CountryCode[\"LS\"] = \"LS\";\n CountryCode[\"MG\"] = \"MG\";\n CountryCode[\"MH\"] = \"MH\";\n CountryCode[\"MN\"] = \"MN\";\n CountryCode[\"MP\"] = \"MP\";\n CountryCode[\"MQ\"] = \"MQ\";\n CountryCode[\"NC\"] = \"NC\";\n CountryCode[\"NE\"] = \"NE\";\n CountryCode[\"VI\"] = \"VI\";\n CountryCode[\"VN\"] = \"VN\";\n CountryCode[\"PF\"] = \"PF\";\n CountryCode[\"PG\"] = \"PG\";\n CountryCode[\"PM\"] = \"PM\";\n CountryCode[\"PN\"] = \"PN\";\n CountryCode[\"PW\"] = \"PW\";\n CountryCode[\"RE\"] = \"RE\";\n CountryCode[\"SH\"] = \"SH\";\n CountryCode[\"SJ\"] = \"SJ\";\n CountryCode[\"SO\"] = \"SO\";\n CountryCode[\"SZ\"] = \"SZ\";\n CountryCode[\"TC\"] = \"TC\";\n CountryCode[\"WF\"] = \"WF\";\n CountryCode[\"XK\"] = \"XK\";\n CountryCode[\"YT\"] = \"YT\";\n CountryCode[\"PE\"] = \"PE\";\n CountryCode[\"GI\"] = \"GI\";\n CountryCode[\"BT\"] = \"BT\";\n CountryCode[\"AL\"] = \"AL\";\n CountryCode[\"CU\"] = \"CU\";\n CountryCode[\"UM\"] = \"UM\";\n CountryCode[\"AI\"] = \"AI\";\n CountryCode[\"AF\"] = \"AF\";\n CountryCode[\"SD\"] = \"SD\";\n CountryCode[\"VC\"] = \"VC\";\n CountryCode[\"TA\"] = \"TA\";\n CountryCode[\"NA\"] = \"NA\";\n CountryCode[\"EH\"] = \"EH\";\n CountryCode[\"BL\"] = \"BL\";\n CountryCode[\"TZ\"] = \"TZ\";\n CountryCode[\"AC\"] = \"AC\";\n CountryCode[\"VG\"] = \"VG\";\n CountryCode[\"MZ\"] = \"MZ\";\n CountryCode[\"MF\"] = \"MF\";\n CountryCode[\"MM\"] = \"MM\";\n CountryCode[\"SV\"] = \"SV\";\n CountryCode[\"IR\"] = \"IR\";\n CountryCode[\"INTL\"] = \"INTL\";\n CountryCode[\"CO\"] = \"CO\";\n})(CountryCode || (CountryCode = {}));\n","import { CountryCode } from './postcode-types';\n// TODO: Remove CountryCode.UK in next major version release\nexport const POSTCODE_REGEXES = new Map([\n [\n CountryCode.UK,\n /^([A-Z]){1}([0-9][0-9]|[0-9]|[A-Z][0-9][A-Z]|[A-Z][0-9][0-9]|[A-Z][0-9]|[0-9][A-Z]){1}([ ])?([0-9][A-z][A-z]){1}$/i,\n ],\n [\n CountryCode.GB,\n /^([A-Z]){1}([0-9][0-9]|[0-9]|[A-Z][0-9][A-Z]|[A-Z][0-9][0-9]|[A-Z][0-9]|[0-9][A-Z]){1}([ ])?([0-9][A-z][A-z]){1}$/i,\n ],\n [CountryCode.JE, /^JE\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$/],\n [CountryCode.GG, /^GY\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$/],\n [CountryCode.IM, /^IM\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$/],\n [CountryCode.US, /^([0-9]{5})(?:-([0-9]{4}))?$/],\n [CountryCode.CA, /^([ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ])\\s*([0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])$/i],\n [CountryCode.IE, /^([AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$/],\n [CountryCode.DE, /^\\d{5}$/],\n [CountryCode.JP, /^\\d{3}-\\d{4}$/],\n [CountryCode.FR, /^\\d{2}[ ]?\\d{3}$/],\n [CountryCode.AU, /^\\d{4}$/],\n [CountryCode.IT, /^\\d{5}$/],\n [CountryCode.CH, /^\\d{4}$/],\n [CountryCode.AT, /^(?!0)\\d{4}$/],\n [CountryCode.ES, /^(?:0[1-9]|[1-4]\\d|5[0-2])\\d{3}$/],\n [CountryCode.NL, /^\\d{4}[ ]?[A-Z]{2}$/],\n [CountryCode.BE, /^\\d{4}$/],\n [CountryCode.DK, /^\\d{4}$/],\n [CountryCode.SE, /^(SE-)?\\d{3}[ ]?\\d{2}$/],\n [CountryCode.NO, /^\\d{4}$/],\n [CountryCode.BR, /^\\d{5}[\\-]?\\d{3}$/],\n [CountryCode.PT, /^\\d{4}([\\-]\\d{3})?$/],\n [CountryCode.FI, /^(FI-|AX-)?\\d{5}$/],\n [CountryCode.AX, /^22\\d{3}$/],\n [CountryCode.KR, /^\\d{5}$/],\n [CountryCode.CN, /^\\d{6}$/],\n [CountryCode.TW, /^\\d{3}(\\d{2,3})?$/],\n [CountryCode.SG, /^\\d{6}$/],\n [CountryCode.DZ, /^\\d{5}$/],\n [CountryCode.AD, /^AD\\d{3}$/],\n [CountryCode.AR, /^[A-HJ-NP-Z]\\d{4}([A-Z]{3})?$/],\n [CountryCode.AM, /^(37)?\\d{4}$/],\n [CountryCode.AZ, /^\\d{4}$/],\n [CountryCode.BH, /^((1[0-2]|[2-9])\\d{2})?$/],\n [CountryCode.BD, /^\\d{4}$/],\n [CountryCode.BB, /^(BB\\d{5})?$/],\n [CountryCode.BY, /^\\d{6}$/],\n [CountryCode.BM, /^[A-Z]{2}[ ]?[A-Z0-9]{2}$/],\n [CountryCode.BA, /^\\d{5}$/],\n [CountryCode.IO, /^BBND 1ZZ$/],\n [CountryCode.BN, /^[A-Z]{2}[ ]?\\d{4}$/],\n [CountryCode.BG, /^\\d{4}$/],\n [CountryCode.KH, /^\\d{5}$/],\n [CountryCode.CV, /^\\d{4}$/],\n [CountryCode.CL, /^\\d{7}$/],\n [CountryCode.CR, /^(\\d{4,5}|\\d{3}-\\d{4})$/],\n [CountryCode.HR, /^(HR-)?\\d{5}$/],\n [CountryCode.CY, /^\\d{4}$/],\n [CountryCode.CZ, /^\\d{3}[ ]?\\d{2}$/],\n [CountryCode.DO, /^\\d{5}$/],\n [CountryCode.EC, /^([A-Z]\\d{4}[A-Z]|(?:[A-Z]{2})?\\d{6})?$/],\n [CountryCode.EG, /^\\d{5}$/],\n [CountryCode.EE, /^\\d{5}$/],\n [CountryCode.FO, /^\\d{3}$/],\n [CountryCode.GE, /^\\d{4}$/],\n [CountryCode.GR, /^\\d{3}[ ]?\\d{2}$/],\n [CountryCode.GL, /^39\\d{2}$/],\n [CountryCode.GT, /^\\d{5}$/],\n [CountryCode.HT, /^\\d{4}$/],\n [CountryCode.HN, /^(?:\\d{5})?$/],\n [CountryCode.HU, /^\\d{4}$/],\n [CountryCode.IS, /^\\d{3}$/],\n [CountryCode.IN, /^\\d{6}$/],\n [CountryCode.ID, /^\\d{5}$/],\n [CountryCode.IL, /^\\d{5,7}$/],\n [CountryCode.JO, /^\\d{5}$/],\n [CountryCode.KZ, /^\\d{6}$/],\n [CountryCode.KE, /^\\d{5}$/],\n [CountryCode.KW, /^\\d{5}$/],\n [CountryCode.KY, /^KY[123]-\\d{4}$/],\n [CountryCode.LA, /^\\d{5}$/],\n [CountryCode.LV, /^(LV-)?\\d{4}$/],\n [CountryCode.LB, /^(\\d{4}([ ]?\\d{4})?)?$/],\n [CountryCode.LI, /^(948[5-9]|949[0-7])$/],\n [CountryCode.LT, /^(LT-)?\\d{5}$/],\n [CountryCode.LU, /^(L-)?\\d{4}$/],\n [CountryCode.MK, /^\\d{4}$/],\n [CountryCode.MY, /^\\d{5}$/],\n [CountryCode.MV, /^\\d{5}$/],\n [CountryCode.MT, /^[A-Z]{3}[ ]?\\d{2,4}$/],\n [CountryCode.MU, /^((\\d|[A-Z])\\d{4})?$/],\n [CountryCode.MX, /^\\d{5}$/],\n [CountryCode.MD, /^\\d{4}$/],\n [CountryCode.MC, /^980\\d{2}$/],\n [CountryCode.MA, /^\\d{5}$/],\n [CountryCode.NP, /^\\d{5}$/],\n [CountryCode.NZ, /^\\d{4}$/],\n [CountryCode.NI, /^((\\d{4}-)?\\d{3}-\\d{3}(-\\d{1})?)?$/],\n [CountryCode.NG, /^(\\d{6})?$/],\n [CountryCode.OM, /^(PC )?\\d{3}$/],\n [CountryCode.PA, /^\\d{4}$/],\n [CountryCode.PK, /^\\d{5}$/],\n [CountryCode.PY, /^\\d{4}$/],\n [CountryCode.PH, /^\\d{4}$/],\n [CountryCode.PL, /^\\d{2}-\\d{3}$/],\n [CountryCode.PR, /^00[679]\\d{2}([ \\-]\\d{4})?$/],\n [CountryCode.RO, /^\\d{6}$/],\n [CountryCode.RU, /^\\d{6}$/],\n [CountryCode.SM, /^4789\\d$/],\n [CountryCode.SA, /^\\d{5}$/],\n [CountryCode.SN, /^\\d{5}$/],\n [CountryCode.SK, /^\\d{3}[ ]?\\d{2}$/],\n [CountryCode.SI, /^(SI-)?\\d{4}$/],\n [CountryCode.ZA, /^\\d{4}$/],\n [CountryCode.LK, /^\\d{5}$/],\n [CountryCode.TJ, /^\\d{6}$/],\n [CountryCode.TH, /^\\d{5}$/],\n [CountryCode.TN, /^\\d{4}$/],\n [CountryCode.TR, /^\\d{5}$/],\n [CountryCode.TM, /^\\d{6}$/],\n [CountryCode.UA, /^\\d{5}$/],\n [CountryCode.UY, /^\\d{5}$/],\n [CountryCode.UZ, /^\\d{6}$/],\n [CountryCode.VA, /^00120$/],\n [CountryCode.VE, /^\\d{4}$/],\n [CountryCode.ZM, /^\\d{5}$/],\n [CountryCode.AS, /^96799$/],\n [CountryCode.CC, /^6799$/],\n [CountryCode.CK, /^\\d{4}$/],\n [CountryCode.RS, /^\\d{5,6}$/],\n [CountryCode.ME, /^8\\d{4}$/],\n [CountryCode.CS, /^\\d{5}$/],\n [CountryCode.YU, /^\\d{5}$/],\n [CountryCode.CX, /^6798$/],\n [CountryCode.ET, /^\\d{4}$/],\n [CountryCode.FK, /^FIQQ 1ZZ$/],\n [CountryCode.NF, /^2899$/],\n [CountryCode.FM, /^(9694[1-4])([ \\-]\\d{4})?$/],\n [CountryCode.GF, /^9[78]3\\d{2}$/],\n [CountryCode.GN, /^\\d{3}$/],\n [CountryCode.GP, /^9[78][01]\\d{2}$/],\n [CountryCode.GS, /^SIQQ 1ZZ$/],\n [CountryCode.GU, /^969[123]\\d([ \\-]\\d{4})?$/],\n [CountryCode.GW, /^\\d{4}$/],\n [CountryCode.HM, /^\\d{4}$/],\n [CountryCode.IQ, /^\\d{5}$/],\n [CountryCode.KG, /^\\d{6}$/],\n [CountryCode.LR, /^\\d{4}$/],\n [CountryCode.LS, /^\\d{3}$/],\n [CountryCode.MG, /^\\d{3}$/],\n [CountryCode.MH, /^969[67]\\d([ \\-]\\d{4})?$/],\n [CountryCode.MN, /^\\d{5}$/],\n [CountryCode.MP, /^9695[012]([ \\-]\\d{4})?$/],\n [CountryCode.MQ, /^9[78]2\\d{2}$/],\n [CountryCode.NC, /^988\\d{2}$/],\n [CountryCode.NE, /^\\d{4}$/],\n [CountryCode.VI, /^008(([0-4]\\d)|(5[01]))([ \\-]\\d{4})?$/],\n [CountryCode.VN, /^\\d{5,6}$/],\n [CountryCode.PF, /^987\\d{2}$/],\n [CountryCode.PG, /^\\d{3}$/],\n [CountryCode.PM, /^9[78]5\\d{2}$/],\n [CountryCode.PN, /^PCRN 1ZZ$/],\n [CountryCode.PW, /^96940$/],\n [CountryCode.RE, /^9[78]4\\d{2}$/],\n [CountryCode.SH, /^(ASCN|STHL) 1ZZ$/],\n [CountryCode.SJ, /^\\d{4}$/],\n [CountryCode.SO, /^\\d{5}$/],\n [CountryCode.SZ, /^[HLMS]\\d{3}$/],\n [CountryCode.TC, /^TKCA 1ZZ$/],\n [CountryCode.WF, /^986\\d{2}$/],\n [CountryCode.XK, /^\\d{5}$/],\n [CountryCode.YT, /^976\\d{2}$/],\n [CountryCode.GI, /^GX11 1AA/],\n [CountryCode.BT, /^\\d{5}/],\n [CountryCode.AL, /^\\d{4}/],\n [CountryCode.CU, /^\\d{5}/],\n [CountryCode.UM, /^96898/],\n [CountryCode.AI, /^(?:AI-)?2640/],\n [CountryCode.AF, /^\\d{4}/],\n [CountryCode.SD, /^\\d{5}/],\n [CountryCode.VC, /^VC\\d{4}/],\n [CountryCode.TA, /^TDCU 1ZZ/],\n [CountryCode.NA, /^\\d{5}/],\n [CountryCode.EH, /^\\d{5}/],\n [CountryCode.BL, /^9[78][01]\\d{2}/],\n [CountryCode.TZ, /^\\d{4,5}/],\n [CountryCode.AC, /^ASCN 1ZZ/],\n [CountryCode.VG, /^VG\\d{4}/],\n [CountryCode.MZ, /^\\d{4}/],\n [CountryCode.MF, /^9[78][01]\\d{2}/],\n [CountryCode.MM, /^\\d{5}/],\n [CountryCode.SV, /^CP [1-3][1-7][0-2]\\d/],\n [CountryCode.IR, /^\\d{5}-?\\d{5}/],\n [CountryCode.PE, /^[0-2]\\d{4}$/],\n [CountryCode.INTL, /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/i],\n [CountryCode.CO, /^(0[58]|1[135789]|2[0357]|4[147]|5[024]|6[368]|7[036]|8[1568]|9[4579])\\d{4}$/],\n]);\n","import { POSTCODE_REGEXES } from './postcode-regexes';\nexport { CountryCode } from './postcode-types';\nexport const postcodeValidator = (postcode, country) => {\n if (!POSTCODE_REGEXES.has(country)) {\n // throw Error if country code is unrecognised\n throw Error(`Invalid country code: ${country}`);\n }\n return POSTCODE_REGEXES.get(country).test(postcode);\n};\nexport const postcodeValidatorExistsForCountry = (country) => {\n return POSTCODE_REGEXES.has(country);\n};\n","'use strict'\n\nconst lookup = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]\n\nmodule.exports = function luhn (number) {\n if (typeof number !== 'string') throw new TypeError('Expected string input')\n if (!number) return false\n\n let index = number.length\n let x2 = true\n let sum = 0\n\n while (index) {\n const value = number.charCodeAt(--index) - 48\n if (value < 0 || value > 9) return false\n\n x2 = !x2\n sum += x2 ? lookup[value] : value\n }\n\n return sum % 10 === 0\n}\n","import { type Dispatch, type Store } from \"redux\";\nimport { type InjectedIntl } from \"react-intl\";\n\nimport { type Flags } from \"@jslib/shared/flags\";\nimport { type ThemeChoices } from \"@jslib/shared/CustomCssContextProvider\";\n\nimport { type FormFieldConfigType } from \"@components/FormFields/FormFieldCustom/FormFieldCustom\";\nimport { type TryAgainAction } from \"@components/TryAgainAction\";\n\nimport {\n type RewardDisplayEnum,\n type Locale,\n type IdCheckLoopServiceType,\n type ThirdPartyLoopProvider,\n} from \"@/lib/types/runtimeTypes\";\nimport { type hooks } from \"@/lib/hooks\";\nimport { type NestedKeyOf, type DeepPartial } from \"@/lib/types/helpers\";\nimport { type ViewModelUpdateOptions } from \"@/lib/VerificationService/ViewModel\";\n\nexport { type Locale } from \"./runtimeTypes\";\nexport type { NavigatorBeta } from \"@jslib/shared/runtimeTypes\";\n\n/**\n * SheerID Javascript Library types and interfaces\n */\n\n/**\n * The interface exposed on the window object\n */\nexport interface SheerIdJsApi {\n getMetadata(): Metadata;\n setMetadata(metadata: Metadata): void;\n resetMetadata(): void;\n setOptions(options: Options): void;\n resetOptions(): void;\n VerificationForm: new (element: HTMLElement, programId: DatabaseId) => void;\n addHook(hook: Hook): RegisteredHooks;\n refreshStore(): void;\n hooks: typeof hooks;\n conversion: Conversion;\n setViewModel(viewModel: ViewModel | {}): void;\n resetViewModel(): void;\n overrideComponent: (\n componentName: OverrideableComponentName,\n newComponent: StepComponent,\n ) => void;\n resetOverriddenComponents: () => void;\n postVerificationSizeUpdates(options: PostMessagesOptions): void;\n getMessages(\n locale: Locale,\n programThemeMessages?: ProgramThemeMessages,\n segment?: Segment,\n ): Promise<StringMap>;\n collectDeviceProfile(verificationId: string, programId: string): void;\n resetStore: () => void;\n setProgramTheme(theme: Partial<ProgramTheme>): void;\n}\n\nexport interface FormFieldConfig {\n fieldId: PersonalInfoFieldId | string; // should be camelCase. Will be used as the key in metadata where the value is stored. Also used to build localization message keys\n disabled?: boolean;\n requireIfOptional?: boolean; // Allows optional fields to be set as required\n hidden?: boolean;\n}\n\nexport interface CustomFormFieldConfig extends FormFieldConfig {\n fieldType: (typeof FormFieldConfigType)[keyof typeof FormFieldConfigType]; // Currently \"text\"|\"checkbox\"|\"select\"|\"radio\"|\"date\"|\"dateYm\"\n validate: (value: string | boolean) => ErrorId | ExtendedErrorId; // If value is invalid, return an error id or string so the error msg can be localized and shown\n showPlaceholderAndHideLabel?: boolean;\n required?: boolean;\n options?: string[]; // the options will be converted to a FormSelectChoice[] when passed into the formSelectComponent\n // each FormSelectChoice value will be each option and the labels will be prefixed with the fieldId. Example -> {config.fieldId}.{option}\n}\n\nexport interface UtilsApi {\n determineDevice: (verificationId: DatabaseId, programId: DatabaseId) => void;\n setOptions(options: Options): void;\n}\n\n// #region Private ---------------------------------------------------------------------\n/**\n * @description Require only properties of type T\n * @private\n * Example:\n type A = { foo: string }\n\n function bar(newObject: PropertiesOf<A>) {...}\n\n bar({ foo: 'baz' }) // valid\n bar({ otherProp: 'stuff' }) // invalid\n */\nexport type PropertiesOf<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]-?: Required<Pick<T, K>>;\n }[Keys];\n\n/**\n * @private\n */\nexport type StringMap = {\n [a: string]: string;\n};\n// #endregion Private ------------------------------------------------------------------\n\n// #region GeneralPurpose --------------------------------------------------------------\n/**\n * @example 5bbd127d9781852f68e14ddc\n * @template 24 digit hexadecimal\n */\nexport type DatabaseId = string;\n\n/**\n * @example { 'someKey': 'someValue' }\n */\nexport type Metadata = { [key: string]: string | boolean };\n\n// #endregion GeneralPurpose -----------------------------------------------------------\n\n// #region Options ---------------------------------------------------------------------\n/**\n * @description Configurable options that can be passed when initializing this library.\n */\nexport type Options = {\n restApi?: RestApiOptions;\n logLevel?: LogLevel;\n mockStep?: MockStep;\n mockSegment?: Segment;\n mockSubSegment?: SubSegment;\n mockErrorId?: ErrorId;\n mockErrorDetailId?: ErrorDetailId;\n mockCaptchaState?: MockCaptchaState;\n mockRewardCode?: string;\n mockRedirectUrl?: string;\n mockConsumerInfoState?: ConsumerInfoState;\n mockIdCheckLoopServiceType?: IdCheckLoopServiceType;\n mockPreviousStep?: VerificationStep;\n mockDocSelected?: string;\n installPageUrl?: string;\n mockResponse?: VerificationResponse;\n // Whether to fetch the program theme or not. False to avoid fetching the theme, for less network overhead.\n // Supply your own language, or use built-in defaults.\n doFetchTheme?: boolean;\n locale?: Locale;\n messages?: object;\n messagesWithLocale?: Partial<Record<Locale, object>>;\n urlFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlStudentFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlSeniorFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlAgeFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlMilitaryFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlTeacherFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlMemberFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlFirstResponderFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlMedicalFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlEmploymentFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlIdentityFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlLicensedProfessionalFaq?: string;\n urlLowIncomeFaq?: string;\n urlAddSchoolFaq?: string;\n urlAddSchoolForm?: string;\n customCss?: ProgramTheme[\"customCss\"];\n logoUrl?: ProgramTheme[\"logoUrl\"];\n privacyPolicyUrl?: ProgramTheme[\"privacyPolicyUrl\"];\n\n cookies?: CookieOptions;\n useFingerprinting?: boolean;\n marketConsent?: MarketConsentOptions;\n customMetadata?: MetadataConfig;\n verificationId?: string;\n externalUserId?: string;\n minimumOrganizationSearchLength?: number;\n\n httpRequestTimeout?: number;\n\n hideTestModeFlag?: boolean;\n\n /**\n * @deprecated\n */\n hideMilitaryFamilyAcceptableUploads?: boolean;\n\n customFormFields?: CustomFormFieldConfig[];\n formFieldConfig?: FormFieldConfig[];\n tryAgainAction?: TryAgainAction;\n\n // adding as part of HC-202 Launch Darkly experimentation trial\n _launchDarklyUserTargeting?: boolean;\n // provide Launch Darkly flags for MySheerID\n _launchDarklyFlagCb?: (flags: Flags) => void;\n\n /**\n * Supports backwards compatibility with consumers who render the a verification form directly on their page, preventing the landing page from rendering within their container.\n * This option may be removed in v2.\n */\n renderAs?: \"default\" | \"landingPage\";\n};\n\nexport type RestApiOptions = {\n serviceUrl: string;\n resources?: RestResources;\n};\n\n/**\n * @description Control how cookies behave\n * @field `expires` Number of days for cookie to expire in. Use 0 to expire in same browser session.\n * @field `secure` Whether the cookie is set securely.\n */\nexport type CookieOptions = {\n expires: number;\n secure: boolean;\n enabled: boolean;\n path?: string;\n domain?: string;\n sameSite?: \"lax\" | \"strict\" | \"none\";\n};\n\nexport type MockCaptchaState = \"loading\" | \"success\" | \"hidden\" | \"error\";\n\nexport type MarketConsentOptions = {\n enabled: boolean;\n required: boolean;\n message: string;\n};\n\nexport type MetadataConfig = {\n enabled: boolean;\n keys: string[];\n requiredKeys?: string[];\n};\n\nexport type RestResources = {\n verification: string;\n program: ProgramResources;\n conversion: ConversionResources;\n};\n\nexport type ProgramResources = {\n base: string;\n theme: string;\n organization: string;\n};\n\n/**\n * @description Configuration for a verification being displayed on an iframe.\n */\nexport type IframeUserConfiguration = {\n closeButtonText?: string;\n mobileRedirect?: boolean;\n mobileThreshold?: string | number;\n stopPropagation?: boolean;\n};\n\n/**\n * @description URL of a verification to be displayed.\n */\nexport type VerificationUrl = string;\n\n/**\n * @description Options for the message events send by a verification loaded on an iframe.\n * These event are used to resize a modal containing a verification.\n */\nexport type PostMessagesOptions = {\n origin: VerificationUrl;\n interval: number;\n};\n\nexport type PostMessageAction =\n | {\n type: \"updateHeight\";\n action?: \"updateHeight\"; // @deprecated - need to support older versions of the jslib\n height: number;\n }\n | {\n type: \"focus\";\n action?: \"focus\"; // @deprecated - need to support older versions of the jslib\n focusOn: \"firstElement\" | \"lastElement\";\n }\n | {\n type: \"hook\";\n action?: never;\n hook: HookData;\n };\n\nexport type PostMessageData = {\n verificationIframeUid: string;\n action: PostMessageAction;\n};\n/**\n * @description URLs related to conversion endpoints.\n */\nexport type ConversionResources = {\n base: string;\n};\n\nexport type LogLevel = \"info\" | \"log\" | \"warn\" | \"error\" | \"silent\";\n// #endregion Options ------------------------------------------------------------------\n\n// #region FormFields ------------------------------------------------------------------\n/**\n * @description Interface for individual field instances, such as BirthdateField\n * @example new sheerid.BirthdateField().setValue('2000-01-01');\n */\nexport interface DiscreteField {\n getValue(): any;\n setValue(value: any): void;\n onChange(callback: Function): void; // TODO callback should be of a type that receives value, isErrored, etc\n setIsErrored(value: boolean): void;\n render(): void;\n}\n\n/**\n * @todo document constraints here\n */\nexport type Email = string;\n\n/**\n * @example (111) 222-3333 | 1112223333 | 111-222-3333\n * TODO - Update this when PhoneNumberValidator regex changes.\n */\nexport type PhoneNumber = string;\n\n/**\n * @example 2013-03-06\n * @template ISO-8601 'YYYY-MM-DD'\n */\nexport type BirthDate = string;\n\n/**\n * @example 1234567 | A01205257\n */\nexport type MemberId = string;\n\n/**\n * @example 2013-03-06\n * @template ISO-8601 'YYYY-MM-DD'\n * The `day` portion of this date is not editable or displayed to the user\n */\nexport type DischargeDate = string;\n\n/**\n * @example 2013-03-06\n * @template ISO-8601 'YYYY-MM-DD'\n */\nexport type ActiveDutyStartDate = string;\n\n/**\n * @description TODO\n */\nexport const MILITARY_STATUS = [\n \"ACTIVE_DUTY\",\n \"VETERAN\",\n \"RESERVIST\",\n \"MILITARY_RETIREE\",\n \"MILITARY_FAMILY\",\n \"GOLD_STAR_FAMILY\",\n] as const;\nexport type MilitaryStatus = (typeof MILITARY_STATUS)[number];\n\n/**\n * @description TODO\n */\nexport const FIRST_RESPONDER_STATUS = [\n \"FIREFIGHTER\",\n \"EMT\",\n \"POLICE\",\n \"SEARCH_AND_RESCUE\",\n] as const;\nexport type FirstResponderStatus = (typeof FIRST_RESPONDER_STATUS)[number];\n\nexport const MEDICAL_PROFESSIONAL_STATUS = [\n \"NURSE\",\n \"DOCTOR\",\n \"DENTIST\",\n \"PHARMACIST\",\n \"OTHER_HEALTH_WORKER\",\n] as const;\nexport type MedicalProfessionalStatus = (typeof MEDICAL_PROFESSIONAL_STATUS)[number];\n\nexport const LICENSED_PROFESSIONAL_STATUS = [\n \"LICENSED_COSMETOLOGIST\",\n \"LICENSED_REAL_ESTATE_AGENT\",\n \"VETERINARIAN\",\n \"CHILD_CARE_WORKER\",\n \"LIBRARIAN\",\n \"INTERIOR_DESIGNER\",\n \"ARCHITECT\",\n \"GENERAL_CONTRACTOR\",\n \"NUTRITION_PROFESSIONAL\",\n] as const;\nexport type LicensedProfessionalStatus = (typeof LICENSED_PROFESSIONAL_STATUS)[number];\n\nexport const RECENT_MOVER_STATUS = [\"HOME_BUYER\", \"OTHER_MOVER\"] as const;\nexport type RecentMoverStatus = (typeof RECENT_MOVER_STATUS)[number];\n\nexport const LOW_INCOME_STATUS = [\n \"SNAP_BENEFITS\",\n \"OTHER_GOVERNMENT_ASSISTANCE\",\n \"COMMUNITY_ELIGIBILITY_PROVISION\",\n] as const;\nexport type LowIncomeStatus = (typeof LOW_INCOME_STATUS)[number];\n\n/**\n * @description TODO\n */\nexport type OrganizationId = number;\n\n/**\n * @description TODO\n */\nexport type OrganizationName = string;\n\n/**\n * @description All possible fields which show up on the personal info steps\n */\nexport type PersonalInfoFieldId =\n | \"firstName\"\n | \"lastName\"\n | \"memberId\"\n | \"organization\"\n | \"birthDate\"\n | \"email\"\n | \"phoneNumber\"\n | \"postalCode\"\n | \"address1\"\n | \"city\"\n | \"state\"\n | \"dischargeDate\"\n | \"activeDutyStartDate\"\n | \"status\"\n | \"statuses\"\n | \"country\"\n | \"socialSecurityNumber\"\n | \"marketConsentValue\"\n | \"ebtCardNumber\"\n | \"cvecNumber\"\n | \"driverLicenseNumber\";\n\n/**\n * @description All possible fields\n */\nexport type FieldId =\n | PersonalInfoFieldId\n | \"docUpload\"\n | \"carrierConsentValue\"\n | \"overrideCode\"\n | \"organizationEmail\"\n | \"authenticationCode\"\n | \"smsCode\"\n | \"captchaToken\";\n\nexport type FormValidationOptions = {\n minAge?: number;\n maxAge?: number;\n smsLoopEnabled?: boolean;\n strictMilitaryValidationEnabled?: boolean;\n transitionalMilitaryValidityDays?: number;\n currentStep?: VerificationStep;\n viewModel?: ViewModel;\n};\n\n/**\n * @description TODO\n */\nexport type ExtendedFieldId = FieldId | string;\n\n/**\n * @description The object that contains all possible field ids for setting & displaying field errors, if any\n */\nexport type FieldValidationErrors = {\n [P in FieldId]: ErrorId;\n};\n\n/**\n * @description TODO\n */\nexport type ExtendedFieldValidationErrors = StringMap;\n\n/**\n * @description TODO\n */\nexport type FieldContent =\n | string\n | number\n | File\n | FormSelectChoice<Country, string>\n | Organization\n | boolean;\n\n/**\n * @private\n */\nexport type Organization = {\n id: OrganizationId;\n name: OrganizationName;\n country?: Country;\n type?: OrganizationType;\n idExtended?: string;\n source?: OrganizationRemoteSource;\n city?: string;\n state?: string;\n latitude?: number;\n longitude?: number;\n};\n\n/**\n * @private\n */\nexport type OrganizationRemoteSource = \"EMPLOYER\" | \"PLACE\";\n\n/**\n * @private\n */\nexport type OrganizationSearchResp = Organization[];\n\n/**\n * @description A model to back many of this library's `<select>` elements.\n * For compatibility, a default for value of `string` or `number` is allowed.\n * Made generic to allow arbitrary types (e.g. `FormSelectChoice<Locale, string>`)\n */\nexport type FormSelectChoice<v = string | number, l = string> = {\n value: v;\n label: l;\n};\n\nexport type InputSelectOnKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => void;\n\nexport interface FormFieldComponentProps<T = any> {\n onChange: (value: T) => void;\n value: T;\n intl?: InjectedIntl;\n autoFocus?: boolean;\n isErrored?: boolean;\n errorId?: ErrorId;\n isRequired?: boolean;\n onKeyDown?: Function;\n placeholder?: string;\n label?: JSX.Element;\n verificationService?: VerificationService;\n disabled?: boolean;\n}\n\n// #region Refs ---------------------------------------------------------------------\n/**\n * @description Configurable refs that can be defined when rendering FormField components.\n */\nexport type FieldRef = {\n fieldId: FieldId | ExtendedFieldId;\n ref: HTMLElement;\n};\n\nexport interface VerificationServiceProps {\n verificationService: VerificationService;\n}\n\n// TODO fix \"any\" default type. I think it's supposed to be string | number\nexport interface InputSelectComponentProps<T = any> {\n onChange: (choice: T) => void;\n options: FormSelectChoice[];\n value: T;\n isErrored?: boolean;\n isRequired?: boolean;\n onKeyDown?: InputSelectOnKeyDown;\n placeholder?: string;\n label?: string | JSX.Element;\n intl?: InjectedIntl;\n suppressPlaceholder?: boolean;\n disabled?: boolean;\n}\n// #endregion FormFields ---------------------------------------------------------------\n\n// #region Errors ----------------------------------------------------------------------\nexport type ErrorId =\n | \"activeDutyStartDateBeforeBirthDate\"\n | \"apiRateLimitExceeded\"\n | \"dischargeDateBeforeBirthDate\"\n | \"docReviewLimitExceeded\"\n | \"inactiveProgram\"\n | \"expiredProgram\"\n | \"expiredEmailLoopToken\"\n | \"expiredSMSCode\"\n | \"expiredVerification\"\n | \"fraudRulesReject\"\n | \"futureBirthDate\"\n | \"futureDischargeDate\"\n | \"futureActiveDutyStartDate\"\n | \"incorrectVerificationOverrideCodeAttemptLimitExceeded\"\n | \"ineligibleOrganization\"\n | \"internalServerError\"\n | \"invalidActiveDutyStartDate\"\n | \"invalidAddress\"\n | \"invalidApiToken\"\n | \"invalidBirthDate\"\n | \"invalidCaptchaToken\"\n | \"invalidCity\"\n | \"invalidCountry\"\n | \"invalidCvecNumber\"\n | \"invalidDischargeDate\"\n | \"invalidDocUploadToken\"\n | \"invalidEbtCardNumber\"\n | \"invalidEmail\"\n | \"invalidFileSizeEmpty\"\n | \"invalidFileSizeMax\"\n | \"invalidFirstName\"\n | \"invalidFirstResponderStatus\"\n | \"invalidLastName\"\n | \"invalidMemberId\"\n | \"invalidMilitaryStatus\"\n | \"invalidNumberOfFiles\"\n | \"invalidOptIn\"\n | \"invalidOrganization\"\n | \"invalidOverrideCode\"\n | \"invalidPhoneNumber\"\n | \"invalidPostalCode\"\n | \"invalidProgram\"\n | \"invalidRequest\"\n | \"invalidSMSCode\"\n | \"invalidSocialSecurityNumber\"\n | \"invalidState\"\n | \"invalidStatus\"\n | \"invalidStatuses\"\n | \"invalidDriverLicenseNumber\"\n | \"invalidStep\"\n | \"invalidAuthenticationLoopToken\"\n | \"marketConsentRequired\"\n | \"maxMetadataLengthExceeded\"\n | \"maxMetadataValuesExceeded\"\n | \"maxSMSCodeLimitExceeded\"\n | \"incorrectSMSCodeAttemptLimitExceeded\"\n | \"noProgram\"\n | \"noRemainingRewardCodes\"\n | \"notApproved\"\n | \"notFound\"\n | \"noValidFiles\"\n | \"noVerification\"\n | \"outsideAgePerson\"\n | \"simulatedError\"\n | \"unauthorizedAccountStatus\"\n | \"unauthorizedDomain\"\n | \"underagePerson\"\n | \"unknownError\"\n | \"unsupportedDocMimeType\"\n | \"verificationLimitExceeded\"\n | \"invalidEmailLoopToken\"\n | \"missingRequiredMetadata\"\n | \"missingRequiredExternalId\"\n | \"invalidAuthenticationLoopToken\"\n | \"duplicateFile\"\n | NetworkErrorId;\n\nexport type NetworkErrorId = \"failedToFetch\" | \"requestTimeout\";\n\nexport type ExtendedErrorId = string | undefined;\n\nexport type WarningId = \"openOrganization\";\n\nexport type ErrorDetailId =\n | \"govIdOtherFailure\"\n | \"govIdMismatch\"\n | \"govIdRetakeBiometric\"\n | \"govIdRetakeId\"\n | \"govIdUnsupportedDoc\"\n | \"personLimit\"\n | \"troubleVerifying\"\n | \"unableToVerify\"\n | \"vpnsNotAllowed\";\n\nexport type RejectionReasons =\n | \"DOCUMENT_UNREADABLE\"\n | \"DOCUMENT_PASSWORD_PROTECTED\"\n | \"DOCUMENT_LIKELY_FRAUD\"\n | \"DOCUMENT_UNSUPPORTED\"\n | \"DOCUMENT_HANDWRITTEN\"\n | \"MISSING_INFORMATION\"\n | \"MISSING_INFORMATION_PERSON_NAME\"\n | \"MISSING_INFORMATION_ORGANIZATION_NAME\"\n | \"DOCUMENT_EXPIRED\"\n | \"DOCUMENT_OUTDATED\"\n | \"MISMATCH_PERSON_NAME\"\n | \"MISMATCH_ORGANIZATION\"\n | \"MISMATCH_STATUS\"\n | \"INELIGIBLE_ORGANIZATION\"\n | \"MISSING_INFORMATION_UNIVERSITY_ENROLLMENT\"\n | \"INELIGIBLE_PERSON_HIGH_SCHOOL_STUDENT\"\n | \"MISSING_INFORMATION_AFFILIATION_US_ARMED_FORCES\"\n | \"MISMATCH_COMPANY_NAME_OR_ADDRESS\"\n | \"PAYSTUB_OUTDATED_LAST_30_DAYS\"\n | \"MISSING_INFORMATION_BIRTHDATE\"\n | \"MISMATCH_BIRTHDATE\"\n | \"DOCUMENT_OUTDATED_FACULTY\"\n | \"MISSING_OR_MISMATCH_JOB_TITLE\"\n | \"RESTRICTED_DOCUMENT\"\n | \"DOCUMENT_EMAIL_SCREENSHOT\"\n | \"OTHER_CONTACT_US\";\n// #endregion Errors -----------------------------------------------------------------------\n\n// #region Steps -----------------------------------------------------------------------\nexport type VerificationStep =\n | \"collectStudentPersonalInfo\"\n | \"collectTeacherPersonalInfo\"\n | \"collectMemberPersonalInfo\"\n | \"collectMilitaryStatus\"\n | \"collectActiveMilitaryPersonalInfo\"\n | \"collectInactiveMilitaryPersonalInfo\"\n | \"collectSeniorPersonalInfo\"\n | \"collectAgePersonalInfo\"\n | \"collectFirstResponderPersonalInfo\"\n | \"collectMedicalProfessionalPersonalInfo\"\n | \"collectEmployeePersonalInfo\"\n | \"collectDriverLicensePersonalInfo\"\n | \"collectGeneralIdentityPersonalInfo\"\n | \"collectHybridIdentityPersonalInfo\"\n | \"collectLicensedProfessionalPersonalInfo\"\n | \"collectLowIncomePersonalInfo\"\n | \"collectMoverPersonalInfo\"\n | \"collectSocialSecurityNumber\"\n | \"collectIdentifier\"\n | \"collectPersonalInfo\"\n | \"cancelSocialSecurityNumber\"\n | \"docUpload\"\n | \"pending\"\n | \"docReviewLimitExceeded\"\n | \"success\"\n | \"error\"\n | \"sso\"\n | \"smsLoop\"\n | \"emailLoop\"\n | \"emailLoopCollectOrganizationEmail\"\n | \"completeAuthentication\"\n | \"cancelEmailLoop\"\n | \"idCheckLoop\"\n | \"consolation\"\n | \"override\"\n | \"cancelDocUpload\"\n | \"missingRequiredMetadata\"\n | \"missingRequiredExternalId\"\n | \"thirdPartyLoop\";\n\nexport type VerificationStepMap<T> = {\n [P in VerificationStep]: T;\n};\n\nexport type MockStep = VerificationStep | \"loading\" | \"collect\";\n\nexport type OverrideableComponentName =\n | \"StepStudentPersonalInfoComponent\"\n | \"StepSeniorPersonalInfoComponent\"\n | \"StepAgePersonalInfoComponent\"\n | \"StepTeacherPersonalInfoComponent\"\n | \"StepMemberPersonalInfoComponent\"\n | \"StepCollectMilitaryStatusComponent\"\n | \"StepActiveMilitaryPersonalInfoComponent\"\n | \"StepInactiveMilitaryPersonalInfoComponent\"\n | \"StepFirstResponderPersonalInfoComponent\"\n | \"StepMedicalProfessionalPersonalInfoComponent\"\n | \"StepEmploymentPersonalInfoComponent\"\n | \"StepDriverLicensePersonalInfoComponent\"\n | \"StepGeneralIdentityPersonalInfoComponent\"\n | \"StepHybridIdentityPersonalInfoComponent\"\n | \"StepLicensedProfessionalPersonalInfoComponent\"\n | \"StepLowIncomePersonalInfoComponent\"\n | \"StepMoverPersonalInfoComponent\"\n | \"StepSuccessComponent\"\n | \"StepConsolationComponent\"\n | \"StepDocUploadComponent\"\n | \"StepOverrideComponent\"\n | \"StepPendingComponent\"\n | \"StepPendingEmailLoopComponent\"\n | \"StepErrorComponent\"\n | \"StepSSOComponent\"\n | \"StepSMSLoopComponent\"\n | \"StepEmailLoopComponent\"\n | \"StepIDCheckLoopComponent\"\n | \"StepSocialSecurity\"\n | \"StepCollectIdentifierComponent\"\n | \"StepCompleteAuthentication\"\n | \"StepCollectPersonalInfo\"\n | \"StepThirdPartyLoopComponent\";\n\nexport type StepComponent = React.FunctionComponent<{ verificationService: VerificationService }>;\n// #endregion Steps -----------------------------------------------------------------------\n\n// #region Segments --------------------------------------------------------------------\nexport type Segment =\n | \"student\"\n | \"military\"\n | \"teacher\"\n | \"member\"\n | \"senior\"\n | \"age\"\n | \"firstResponder\"\n | \"medical\"\n | \"employment\"\n | \"identity\"\n | \"licensedProfessional\"\n | \"recentMover\"\n | \"lowIncome\";\n\nexport type SubSegment =\n | \"college\"\n | \"highSchool\"\n | \"police\"\n | \"emt\"\n | \"fireFighter\"\n | \"nurse\"\n | \"doctor\"\n | \"driverLicense\"\n | \"generalIdentity\"\n | \"hybridIdentity\"\n | \"licensedCosmetologists\"\n | \"licensedRealState\"\n | \"homeBuyer\"\n | \"otherMover\"\n | \"snapBenefits\"\n | SubSegmentMilitary;\n\nexport type SubSegmentMilitary =\n | \"activeDuty\"\n | \"reservist\"\n | \"veteran\"\n | \"retiree\"\n | \"militaryFamily\"\n | \"goldStarFamily\";\n// #endregion Segments -----------------------------------------------------------------------\n\n// #region Organization Types ----------------------------------------------------------\nexport type OrganizationType =\n | \"UNIVERSITY\"\n | \"POST_SECONDARY\"\n | \"MEMBERSHIP\"\n | \"MILITARY\"\n | \"FIRST_RESPONDER\"\n | \"MEDICAL\"\n | \"NON_PROFIT\"\n | \"CORPORATE\"\n | \"K12\"\n | \"AGE_ID\"\n | \"HIGH_SCHOOL\"\n | \"NONE\"\n | \"LOW_INCOME_PROGRAM\";\n// #endregion Organization Types -------------------------------------------------------\n\n// #region Requests and View Models ----------------------------------------------------\nexport type NewVerificationRequest = {\n programId: DatabaseId;\n trackingId?: string;\n installPageUrl?: string;\n};\n\nexport type AllStatuses =\n | MilitaryStatus\n | MedicalProfessionalStatus\n | FirstResponderStatus\n | RecentMoverStatus\n | LicensedProfessionalStatus\n | LowIncomeStatus\n | RecentMoverStatus;\n\n/**\n * @description The request to submit when verification is on the step \"collectStudentPersonalInfo\"\n */\nexport type StudentPersonalInfoRequest = {\n birthDate: BirthDate;\n cvecNumber?: string;\n} & WithOrganization &\n WithCoreFields;\n\nexport type StudentPersonalInfoViewModel = StudentPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectSeniorPersonalInfo\"\n */\nexport type SeniorPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n} & WithCoreFields;\n\nexport type SeniorPersonalInfoViewModel = SeniorPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectAgePersonalInfo\"\n */\nexport type AgePersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n phoneNumber: PhoneNumber;\n country: Country;\n city?: string;\n address1?: string;\n} & WithCoreFields;\n\nexport type AgePersonalInfoViewModel = AgePersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectMilitaryStatus\"\n */\nexport type MilitaryStatusRequest = {\n status: MilitaryStatus;\n};\n\n/**\n * @description The request to submit when verification is on the step \"collectActiveMilitaryPersonalInfo\"\n */\nexport type ActiveMilitaryPersonalInfoRequest = {\n birthDate: BirthDate;\n dischargeDate?: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type ActiveMilitaryPersonalInfoViewModel = {\n status: MilitaryStatus;\n} & ActiveMilitaryPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectInactiveMilitaryPersonalInfo\"\n */\nexport type InactiveMilitaryPersonalInfoRequest = {\n birthDate: BirthDate;\n dischargeDate: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type InactiveMilitaryPersonalInfoViewModel = {\n status: MilitaryStatus;\n city?: string;\n state?: State;\n address1?: string;\n postalCode?: string;\n} & InactiveMilitaryPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectTeacherPersonalInfo\"\n */\nexport type TeacherPersonalInfoRequest = {\n birthDate?: BirthDate;\n postalCode?: string;\n} & WithOrganization &\n WithCoreFields;\n\nexport type TeacherPersonalInfoViewModel = TeacherPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectMemberPersonalInfo\"\n */\nexport type MemberPersonalInfoRequest = {\n memberId?: MemberId;\n birthDate?: BirthDate;\n phoneNumber?: PhoneNumber;\n postalCode?: string;\n address1?: string;\n city?: string;\n state?: string;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type MemberPersonalInfoViewModel = MemberPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectFirstResponderPersonalInfo\"\n * Provide postalCode when organization.id = 0 for better verification results.\n */\nexport type FirstResponderPersonalInfoRequest = {\n birthDate: BirthDate;\n status: FirstResponderStatus;\n statuses?: FirstResponderStatus[];\n postalCode?: string;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type FirstResponderPersonalInfoViewModel = FirstResponderPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type MedicalStatusRequest = {\n status: MedicalProfessionalStatus;\n};\n\n/**\n * @description The request to submit when verification is on the step \"collectMedicalProfessionalPersonalInfo\"\n */\nexport type MedicalProfessionalPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n status: MedicalProfessionalStatus;\n memberId: string;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type MedicalProfessionalPersonalInfoViewModel = MedicalProfessionalPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectEmployeePersonalInfo\"\n */\nexport type EmploymentPersonalInfoRequest = {\n postalCode: string;\n phoneNumber?: PhoneNumber;\n shouldCollectAddress?: boolean;\n country?: Country;\n} & WithAddress &\n WithOrganization &\n WithCoreFields;\n\nexport type SMSLoopVerificationRequest = {\n smsCode: string;\n deviceFingerprintHash?: string;\n};\n\nexport type EmailLoopVerificationRequest = {\n emailToken: string;\n deviceFingerprintHash?: string;\n};\n\nexport type EmailLoopCollectOrganizationRequest = {\n emailAddress: string;\n};\n\nexport type IDCheckLoopVerificationRequest = {};\n\nexport type EmploymentPersonalInfoViewModel = EmploymentPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectDriverLicensePersonalInfo\"\n */\nexport type DriverLicensePersonalInfoRequest = {\n driverLicenseNumber: string;\n state: string;\n} & WithCoreFields;\n\nexport type DriverLicensePersonalInfoViewModel = DriverLicensePersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type GeneralIdentityPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n} & WithAddress &\n WithCoreFields;\n\nexport type GeneralIdentityPersonalInfoViewModel = GeneralIdentityPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type HybridIdentityPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n driverLicenseNumber: string;\n} & WithAddress &\n WithCoreFields;\n\nexport type HybridIdentityPersonalInfoViewModel = HybridIdentityPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectLicensedProfessionalPersonalInfo\"\n */\nexport type LicensedProfessionalPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n statuses: LicensedProfessionalStatus[];\n} & WithCoreFields &\n WithOrganization;\n\nexport type LicensedProfessionalPersonalInfoViewModel = LicensedProfessionalPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectMoverPersonalInfo\"\n */\nexport type MoverPersonalInfoRequest = {\n address1: string;\n postalCode: string;\n statuses: RecentMoverStatus[];\n} & WithCoreFields;\n\nexport type MoverPersonalInfoViewModel = MoverPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type SocialSecurityRequest = {\n socialSecurityNumber: number;\n};\n\nexport type SocialSecurityResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n cancelUrl: string;\n currentStep: \"collectSocialSecurityNumber\";\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\nexport type SocialSecurityViewModel = {\n socialSecurityNumber: string;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectLowIncomePersonalInfo\"\n */\nexport type LowIncomePersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n statuses: LowIncomeStatus[];\n ebtCardNumber?: string;\n} & WithCoreFields &\n WithAddress &\n Partial<WithOrganization>;\n\nexport type LowIncomePersonalInfoViewModel = LowIncomePersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type CollectIdentifierRequest = {\n email: string;\n};\n\nexport type CollectIdentifierResponse = {\n submissionUrl: string;\n} & VerificationResponse;\n\nexport type CollectIdentifierViewModel = {\n email: string;\n transactionId: string;\n expirationTimestamp: string;\n remembered: boolean;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type CompleteAuthenticationRequest = {\n authenticationToken: string;\n};\n\nexport type CompleteAuthenticationResponse = {\n cancelUrl: string;\n submissionUrl: string;\n} & VerificationResponse;\n\nexport type CompleteAuthenticationViewModel = {\n authenticationCode?: string;\n email?: string;\n didManuallyVerify?: boolean;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type CollectPersonalInfoRequest = {\n driverLicenseNumber?: string;\n memberId?: MemberId;\n postalCode?: string;\n ebtCardNumber?: string;\n statuses?: AllStatuses[];\n birthDate?: BirthDate;\n socialSecurityNumber?: string;\n dischargeDate?: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n country?: Country;\n} & Partial<WithCoreFields> &\n Partial<WithOrganization> &\n Partial<WithAddress>;\n\n/**\n * Response from REST API indicating that CollectPersonalInfoViewModel is expected to be submitted next.\n */\nexport type CollectPersonalInfoResponse = {\n submissionUrl: string;\n availableStatuses?: AllStatuses[];\n country?: string;\n currentStep: \"collectPersonalInfo\";\n segment: Segment;\n subSegment: SubSegment | SubSegmentMilitary;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type CollectPersonalInfoViewModel = {\n driverLicenseNumber?: string;\n memberId?: MemberId;\n postalCode?: string;\n ebtCardNumber?: string;\n status?: AllStatuses;\n statuses?: AllStatuses[];\n birthDate?: BirthDate;\n socialSecurityNumber?: string;\n dischargeDate?: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n} & Partial<WithCoreFields> &\n Partial<WithOrganization> &\n Partial<WithAddress> &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"docUpload\"\n */\nexport type DocUploadRequest = {\n file1: File;\n file2?: File;\n file3?: File;\n metadata?: Metadata;\n};\n\n/**\n * @description The request to enter a verification override code when it is on the step \"override\"\n */\nexport type OverrideVerificationRequest = {\n overrideCode: string;\n deviceFingerprintHash?: string;\n};\n\n// No difference between the ViewModel, and what we send to the REST endpoint at this time.\nexport type DocUploadViewModel = DocUploadRequest & {\n erroredFileNames?: string[];\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type SingleSignOnViewModel = {\n isSingleSignOnActive: boolean;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type OverrideViewModel = OverrideVerificationRequest & {\n overrideCode: string;\n deviceFingerprintHash?: string;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type SMSLoopViewModel = {\n smsCode: string;\n phoneNumber: string;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type EmailLoopViewModel = {\n emailToken: string;\n organizationEmail?: string;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type EmailLoopCollectOrganizationEmailViewModel = {\n organizationEmail?: string;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type IDCheckLoopViewModel = WithLocaleChoiceAndCountryChoice & WithFieldsToSkipValidation;\n\nexport type VerificationRequest =\n | StudentPersonalInfoRequest\n | AgePersonalInfoRequest\n | SeniorPersonalInfoRequest\n | TeacherPersonalInfoRequest\n | MemberPersonalInfoRequest\n | MilitaryStatusRequest\n | ActiveMilitaryPersonalInfoRequest\n | InactiveMilitaryPersonalInfoRequest\n | DocUploadRequest\n | OverrideVerificationRequest\n | FirstResponderPersonalInfoRequest\n | MedicalProfessionalPersonalInfoRequest\n | EmploymentPersonalInfoRequest\n | SocialSecurityRequest\n | SMSLoopVerificationRequest\n | EmailLoopVerificationRequest\n | DriverLicensePersonalInfoRequest\n | GeneralIdentityPersonalInfoRequest\n | HybridIdentityPersonalInfoRequest\n | LicensedProfessionalPersonalInfoRequest\n | LowIncomePersonalInfoRequest\n | MoverPersonalInfoRequest\n | CollectIdentifierRequest\n | CompleteAuthenticationRequest\n | CollectPersonalInfoRequest;\n\nexport type ViewModel =\n | StudentPersonalInfoViewModel\n | SeniorPersonalInfoViewModel\n | AgePersonalInfoViewModel\n | TeacherPersonalInfoViewModel\n | MemberPersonalInfoViewModel\n | ActiveMilitaryPersonalInfoViewModel\n | InactiveMilitaryPersonalInfoViewModel\n | DocUploadViewModel\n | SingleSignOnViewModel\n | OverrideViewModel\n | FirstResponderPersonalInfoViewModel\n | MedicalProfessionalPersonalInfoViewModel\n | EmploymentPersonalInfoViewModel\n | SocialSecurityViewModel\n | SMSLoopViewModel\n | EmailLoopViewModel\n | EmailLoopCollectOrganizationEmailViewModel\n | DriverLicensePersonalInfoViewModel\n | GeneralIdentityPersonalInfoViewModel\n | HybridIdentityPersonalInfoViewModel\n | LicensedProfessionalPersonalInfoViewModel\n | LowIncomePersonalInfoViewModel\n | MoverPersonalInfoViewModel\n | CollectIdentifierViewModel\n | CompleteAuthenticationViewModel\n | CollectPersonalInfoViewModel;\n\nexport type PersonalInfoViewModel =\n | StudentPersonalInfoViewModel\n | SeniorPersonalInfoViewModel\n | AgePersonalInfoViewModel\n | TeacherPersonalInfoViewModel\n | MemberPersonalInfoViewModel\n | ActiveMilitaryPersonalInfoViewModel\n | InactiveMilitaryPersonalInfoViewModel\n | FirstResponderPersonalInfoViewModel\n | MedicalProfessionalPersonalInfoViewModel\n | EmploymentPersonalInfoViewModel\n | DriverLicensePersonalInfoViewModel\n | GeneralIdentityPersonalInfoViewModel\n | HybridIdentityPersonalInfoViewModel\n | LicensedProfessionalPersonalInfoViewModel\n | LowIncomePersonalInfoViewModel\n | MoverPersonalInfoViewModel;\n\nexport type WithOrganization = {\n organization: Organization;\n};\n\nexport type WithAddress = {\n address1: string;\n city: string;\n state: string;\n};\n\nexport type WithCoreFields = {\n firstName: string;\n lastName: string;\n email: Email;\n phoneNumber?: PhoneNumber;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n locale?: Locale;\n externalUserId?: string;\n captchaToken?: string;\n};\n\nexport type WithFieldsToSkipValidation = {\n fieldsToSkipValidation?: FieldId[];\n};\n\nexport type WithLocaleChoiceAndCountryChoice = {\n // countryChoice.label is no longer used when displaying options\n countryChoice: FormSelectChoice<Country, string>;\n // localeChoice.label is no longer used when displaying options\n localeChoice: FormSelectChoice<Locale, string>;\n};\n\nexport type AddSchoolRequestViewModel = {\n programId: string;\n firstName: string;\n lastName: string;\n email: string;\n schoolCountry: Country;\n schoolName: string;\n schoolDomain: string;\n trackingId?: string;\n};\n\n// #endregion Requests and View Models -----------------------------------------------------------------------\n\n// #region Responses -------------------------------------------------------------------\nexport type WithLocaleAndCountryAndSegment = {\n segment: Segment;\n subSegment: SubSegment;\n locale: Locale;\n country?: Country;\n};\n\n/**\n * @description Base type for all responses\n */\nexport type VerificationResponse = {\n submissionUrl?: string;\n verificationId: DatabaseId;\n currentStep: VerificationStep;\n errorIds?: ErrorId[];\n maxAge?: number;\n minAge?: number;\n lastResponse?: VerificationResponse;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Intersection type for all *PersonalInfo responses\n */\nexport type PersonalInfoResponse =\n | StudentPersonalInfoResponse\n | SeniorPersonalInfoResponse\n | AgePersonalInfoResponse\n | TeacherPersonalInfoResponse\n | MemberPersonalInfoResponse\n | ActiveMilitaryPersonalInfoResponse\n | InactiveMilitaryPersonalInfoResponse\n | FirstResponderPersonalInfoResponse\n | MedicalProfessionalPersonalInfoResponse\n | EmploymentPersonalInfoResponse\n | DriverLicensePersonalInfoResponse\n | GeneralIdentityPersonalInfoResponse\n | HybridIdentityPersonalInfoResponse\n | LicensedProfessionalPersonalInfoResponse\n | LowIncomePersonalInfoResponse\n | MoverPersonalInfoResponse\n | CollectPersonalInfoResponse;\n\nexport type AllResponseTypes =\n | PersonalInfoResponse\n | SSOResponse\n | DocUploadResponse\n | SMSLoopResponse\n | EmailLoopResponse\n | IDCheckLoopResponse\n | SuccessResponse\n | ConsolationResponse\n | OverrideResponse\n | ErrorResponse\n | PendingResponse\n | SocialSecurityResponse\n | MilitaryStatusResponse\n | CollectIdentifierResponse\n | CompleteAuthenticationResponse\n | CollectPersonalInfoResponse\n | ThirdPartyLoopResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type StudentPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectStudentPersonalInfo\";\n segment: \"student\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that SeniorPersonalInfoViewModel is expected to be submitted next.\n */\nexport type SeniorPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectSeniorPersonalInfo\";\n segment: \"senior\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that AgePersonalInfoViewModel is expected to be submitted next.\n */\nexport type AgePersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectAgePersonalInfo\";\n segment: \"age\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n minAge?: number;\n maxAge?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that TeacherPersonalInfoViewModel is expected to be submitted next.\n */\nexport type TeacherPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectTeacherPersonalInfo\";\n segment: \"teacher\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type MemberPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectMemberPersonalInfo\";\n segment: \"member\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type MilitaryStatusResponse = {\n submissionUrl: string;\n currentStep: \"collectMilitaryStatus\";\n segment: \"military\";\n errorIds?: [ErrorId];\n availableStatuses?: MilitaryStatus[];\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type ActiveMilitaryPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectActiveMilitaryPersonalInfo\";\n segment: \"military\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type InactiveMilitaryPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectInactiveMilitaryPersonalInfo\";\n segment: \"military\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type FirstResponderPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectFirstResponderPersonalInfo\";\n segment: \"firstResponder\";\n errorIds?: [ErrorId];\n availableStatuses?: FirstResponderStatus[];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type MedicalProfessionalPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectMedicalProfessionalPersonalInfo\";\n segment: \"medical\";\n errorIds?: [ErrorId];\n availableStatuses?: MedicalProfessionalStatus[];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type EmploymentPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectEmployeePersonalInfo\";\n segment: \"employment\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that DriverLicensePersonalInfoViewModel is expected to be submitted next.\n */\nexport type DriverLicensePersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectDriverLicensePersonalInfo\";\n segment: \"identity\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type GeneralIdentityPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectGeneralIdentityPersonalInfo\";\n segment: \"identity\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type HybridIdentityPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectHybridIdentityPersonalInfo\";\n segment: \"identity\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type LicensedProfessionalPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectLicensedProfessionalPersonalInfo\";\n segment: \"licensedProfessional\";\n availableStatuses?: LicensedProfessionalStatus[];\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type MoverPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectMoverPersonalInfo\";\n segment: \"recentMover\";\n availableStatuses?: RecentMoverStatus[];\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type LowIncomePersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectLowIncomePersonalInfo\";\n segment: \"lowIncome\";\n availableStatuses?: LowIncomeStatus[];\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that DocUploadRequest is expected to be submitted next.\n */\nexport type DocUploadResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n currentStep: \"docUpload\";\n errorIds?: [ErrorId];\n rejectionReasons?: RejectionReasons[];\n maxReviewTime?: MaxReviewTime;\n estimatedReviewTime?: EstimatedReviewTime;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API indicating that SSO is expected to be submitted next.\n */\nexport type SSOResponse = {\n verificationId: DatabaseId;\n loginUrl: string;\n cancelUrl: string;\n currentStep: \"sso\";\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\nexport type ThirdPartyLoopResponse = {\n verificationId: DatabaseId;\n loginUrl: string;\n cancelUrl: string;\n currentStep: \"thirdPartyLoop\";\n thirdPartyLoopProvider: ThirdPartyLoopProvider;\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\nexport type SMSLoopResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n errorIds?: [ErrorId];\n currentStep: \"smsLoop\";\n} & WithLocaleAndCountryAndSegment;\n\nexport type EmailLoopResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n errorIds?: [ErrorId];\n currentStep: \"emailLoop\";\n currentState: \"collectOrganizationEmail\" | \"pending\";\n canResendEmailLoop: boolean;\n cancelUrl: string;\n} & WithLocaleAndCountryAndSegment;\n\nexport type IDCheckLoopResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n errorIds?: [ErrorId];\n currentStep: \"idCheckLoop\";\n sdkToken?: string;\n idCheckServiceType?: IdCheckLoopServiceType;\n uploadUrl?: string;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. No further requests are expected.\n */\nexport type SuccessResponse = {\n verificationId: DatabaseId;\n currentStep: \"success\";\n rewardCode: string;\n redirectUrl?: string;\n rewardData?: string[];\n consumerInfoState?: ConsumerInfoState;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. No further requests are expected.\n */\nexport type ConsolationResponse = {\n verificationId: DatabaseId;\n currentStep: \"consolation\";\n consolationRewardCode: string;\n segment: Segment;\n subSegment: SubSegment;\n redirectUrl?: string;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. No further requests are expected.\n */\nexport type OverrideResponse = {\n verificationId: DatabaseId;\n currentStep: \"override\";\n segment: Segment;\n subSegment: SubSegment;\n submissionUrl: string;\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. Unrecoverable error. No further requests are expected. Recommend starting over.\n */\nexport interface ErrorResponse\n extends\n Omit<VerificationResponse, \"subSegment\">,\n Omit<WithLocaleAndCountryAndSegment, \"subSegment\"> {\n verificationId: DatabaseId;\n currentStep: \"error\";\n subSegment: SubSegment | null;\n errorIds: [ErrorId]; // Don't supply a message, only an id like \"notEnoughInfo\" or \"unknown\", so we can look up the message based on locale\n errorDetailId?: ErrorDetailId;\n redirectUrl: string | null;\n}\n\n/**\n * @description Response from REST API. Poll statusUrl for updates while document is reviewed.\n */\nexport type PendingResponse = {\n verificationId: DatabaseId;\n currentStep: \"pending\";\n statusUrl: string;\n maxReviewTime?: MaxReviewTime;\n estimatedReviewTime?: EstimatedReviewTime;\n} & WithLocaleAndCountryAndSegment;\n\nexport type FieldDescription = {\n key: FieldId;\n};\n\nexport type FieldsToCollect = {\n required: FieldDescription[];\n optional: FieldDescription[];\n};\n\nexport type CollectFieldsResponse = {\n verificationId: DatabaseId;\n currentStep: VerificationStep;\n fieldsToCollect: FieldsToCollect;\n} & WithLocaleAndCountryAndSegment;\n\nexport type DocTypeResult = {\n [country: string]: { documentType: any }[];\n};\n\nexport type ApplicableDocTypesResponse = {\n results: DocTypeResult;\n};\n\nexport type ConsumerInfoState =\n | \"consumerNotFound\"\n | \"consumerFound\"\n | \"consumerFoundNewFieldsAvailable\"\n | \"consumerFoundNotActionable\"\n | \"UNKNOWN\";\n\n// #endregion Responses -----------------------------------------------------------------------\n\n// #region Theme -----------------------------------------------------------------------\n/**\n * @description Theme information about the Program that was created at my.sheerid.com\n */\nexport type ProgramTheme = {\n intl: {\n locale: Locale;\n messages: ProgramThemeMessages;\n };\n customCss: string; // this contains customer-provided CSS + auto-generated CSS from the program builder\n /** @deprecated - Use themeChoices.logoUrl instead */\n logoUrl?: string;\n privacyPolicyUrl?: string;\n isTestMode?: boolean;\n openOrgSearchEnabled?: boolean;\n isSmsNotifierConfigured?: boolean;\n remainingRewardCodes?: number | null;\n smsLoopEnabled?: boolean;\n overrideEnabled?: boolean;\n threatMetrixEnabled?: boolean;\n threatMetrixOrgId?: string;\n idCheckAddOnEnabled?: boolean;\n ipqsDeviceFingerprintEnabled?: boolean;\n fingerprintEnabled?: boolean;\n strictMilitaryValidationEnabled?: boolean;\n transitionalMilitaryValidityDays?: number;\n docUploadEnabled?: boolean;\n affinityProgramEnabled?: boolean;\n externalUserIdRequired?: boolean;\n config: {\n brandInfo?: {\n faqUrl: string | null;\n emailAddress: string | null;\n phoneNumber: string | null;\n };\n countries: Country[];\n states?: State[];\n locales: Locale[];\n maxReviewTime: MaxReviewTime;\n estimatedReviewTime: EstimatedReviewTime;\n marketConsent: MarketConsentOptions;\n customFaqLink: FaqUrl;\n customMetadata: MetadataConfig;\n orgSearchUrl: string;\n orgRemoteSource?: OrganizationRemoteSource;\n orgTypes: OrganizationType[];\n excludedOrganizationIds: number[];\n orgSearchCountryTags?: {\n [country in Country]?: string[];\n };\n orgSearchAffiliationOverrides?: {\n [a: string]: {\n [a: string]: string[];\n };\n };\n offerType: \"noCode\" | \"staticCode\" | \"rewardPool\" | undefined;\n minAge: number | null;\n maxAge: number | null;\n rewardDisplay: RewardDisplayEnum[];\n onfidoReportNames?: string[];\n onfidoIncludedCountries?: string[];\n segment?: Segment;\n // future: redirect URL\n };\n accountId?: string; // keep optional until HC-131 is completed\n themeChoices: ThemeChoices;\n captchaEnabled?: boolean;\n};\n\nexport type EstimatedReviewTime = \"A_FEW_MINUTES\" | \"A_HALF_HOUR\" | \"A_FEW_HOURS\" | \"A_FEW_DAYS\";\nexport type MaxReviewTime =\n | \"2_MIN\"\n | \"20_MIN\"\n | \"A_HALF_HOUR\"\n | \"2_HRS\"\n | \"24_HRS\"\n | \"2_DAY\"\n | \"3_DAY\";\nexport type FaqUrl = string;\n\n/**\n * @description List of countries supported by SheerID\n */\nexport type Country = keyof Countries;\n\nexport type State = keyof States;\n\nexport type Messages = DefaultMessages & SegmentSpecificMessages;\nexport type NestedMessagePaths = NestedKeyOf<Messages>;\n\nexport interface MessagesModule {\n defaultMessages: DefaultMessages;\n pluralizationsAndDateLocaleData: any; // from react-intl\n segmentMessages: Record<Segment, SegmentSpecificMessages>;\n}\n\n/**\n * @description These strings are set by a user editing your program in my.sheerid.com\n */\nexport type ProgramThemeMessages = {\n companyName?: string;\n imageLogo?: string;\n step?: {\n success?: {\n redirectUrl?: string;\n };\n };\n} & DeepPartial<DefaultMessages & SegmentSpecificMessages>;\n\n/**\n * @description These strings vary by program segment\n */\nexport type SegmentSpecificMessages = {\n emailExplanation?: string;\n addressExplanation?: string;\n schoolName?: string;\n schoolNamePlaceholder?: string;\n step: {\n personalInfo: {\n title: string;\n subtitle: string;\n howDoesVerifyingWorkDetails: string;\n tryAgain: {\n title: string;\n subtitle: string;\n };\n verifyingTitle: string;\n submitButtonText: string;\n };\n docUpload?: {\n whoIsSheerId: string;\n title: string;\n uploadInstructions: string;\n };\n success: {\n title: string;\n subtitle: string;\n redirectButtonText: string;\n };\n sso?: {\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n login?: string;\n cancel?: string;\n alternative?: string;\n };\n reclaim?: {\n title?: string;\n reclaimInfo: {\n login: string;\n review: string;\n display: string;\n consent: string;\n };\n legal?: {\n thirdPartyTools: string;\n thirdPartyToolsExplanation: string;\n secureLogin: string;\n secureLoginExplanation: string;\n consent: string;\n consentExplanation: string;\n moreInformation: string;\n moreInformationExplanation: string;\n };\n login?: string;\n cancel?: string;\n };\n emailLoop?: DeepPartial<DefaultMessages[\"step\"][\"emailLoop\"]>;\n };\n};\n\n/**\n * @description These strings are provided by default\n */\nexport type DefaultMessages = {\n activeDutyStartDate: string;\n address: string;\n addressPlaceholder: string;\n birthDate: string;\n branchOfService: string;\n branchOfServicePlaceholder: string;\n changeLanguage: string;\n city: string;\n cityPlaceholder: string;\n chooseCountry: string;\n clearAndOpenMenu: string;\n close: string;\n closeSection: string;\n company: string;\n companyPlaceholder: string;\n copied: string;\n country: string;\n countryPlaceholder: string;\n countries: Countries;\n cvecNumber: string;\n cvecNumberExplanation: string;\n \"_EXPERIMENTAL.cvecNumberExplanation\": string;\n dateTime: DateTimeMessages;\n dischargeDate: string;\n driverLicenseNumber: string;\n driverLicenseNumberPlaceholder: string;\n driverLicenseState: string;\n emailAddress: string;\n emailAddressPlaceholder: string;\n ebtCardNumber: string;\n error: string;\n errorId: {\n [P in ErrorId]: string;\n } & Record<ExtendedErrorId, string>;\n errorDetailId: {\n [P in ErrorDetailId]: string;\n };\n warningId: {\n [P in WarningId]: string;\n };\n firstName: string;\n firstNamePlaceholder: string;\n howDoesReviewWork: string;\n howDoesVerifyingWork: string;\n informationTransferredToUS: string;\n instant: string;\n lastName: string;\n lastNamePlaceholder: string;\n limitExceededError: string;\n memberId: string;\n memberIdPlaceholder: string;\n optional: string;\n loading: string;\n locales: {\n [P in Locale]: string;\n };\n militaryStatus: string;\n noOptions: string;\n lowRewardPool: string;\n organization: string;\n organizationPlaceholder: string;\n orgSearchSortByRelevance: string;\n orgSearchSortByDistance: string;\n orgSearchSortAccessibilityLabel: string;\n lowIncomeOrganization: string;\n lowIncomeOrganizationPlaceholder: string;\n optIn: string;\n openMenu: string;\n personalInformation: any;\n personalOrSchoolIsFine: string;\n phoneNumber: string;\n phoneNumberExplanation: string;\n phoneNumberWarnMessage1: string;\n phoneNumberWarnMessage2: string;\n phoneUsPlaceholder: string;\n postalCode: string;\n postalCodeExplanation: string;\n postalCodePlaceholder: string;\n poweredBy: string;\n proceed: string;\n cantFindYourSchool: string;\n requestSchool: string;\n multipleLocationsTips: string;\n tryFullNameTips: string;\n requiredFields: string;\n rewardCodeEmailNotification: string;\n school: string;\n schoolName: string;\n schoolNamePlaceholder: string;\n sheeridFaqs: string;\n privacyPolicy: string;\n smsCodePlaceholder: string;\n state: string;\n statePlaceholder: string;\n states: States;\n status: string;\n statusPlaceholder: string;\n step: {\n success: {\n copyCouponCode: string;\n emailNotification: string;\n verificationOnly: string;\n rememberMe: {\n consumerFound: {\n title: string;\n description: string;\n button: string;\n };\n consumerNotFound: {\n title: string;\n description: string;\n button: string;\n };\n };\n };\n consolation: {\n title: string;\n subtitle: string;\n verificationOnly: string;\n };\n override: {\n title: string;\n subtitle: string;\n subtitle2: string;\n verificationOverrideCodeLabel: string;\n submitOverrideCodeButtonLabel: string;\n errors: {\n invalidCode: string;\n codeOverrideLimit: string;\n };\n };\n pending: {\n titleReview: string;\n subtitle: string;\n turnaroundTime: string;\n subtitle2: string;\n subtitle3: string;\n idCheckLoop: {\n title: string;\n subtitle: string;\n subtitle2: string;\n };\n };\n personalInfo: {\n verifyingTitle: string;\n verifyingSubtitle: string;\n submitButtonText: string;\n emailFirstCollectInfo: {\n sendAgain: string;\n sent: string;\n needChanges: string;\n proceedHere: string;\n existingVerificationFound: {\n title: string;\n message: string;\n closing: string;\n };\n pendingVerification: {\n title: string;\n message: string;\n closing: string;\n };\n rejectedVerification: {\n title: string;\n message: string;\n closing: string;\n };\n };\n captcha: {\n retryButton: string;\n loading: string;\n success: string;\n error: string;\n };\n };\n collectMedicalPersonalInfo: {\n registrationNumberLabel: string;\n registrationNumberExplanation: string;\n numeroColegiadoLabel: string;\n numeroColegiadoExplanation: string;\n autorisationsIdLabel: string;\n autorisationsIdExplanation: string;\n gbrNummerLabel: string;\n gbrNummerExplanation: string;\n globalLocationNumberLabel: string;\n globalLocationNumberExplanation: string;\n };\n docUpload: {\n title: string;\n documentReviewProcess: string;\n whoIsSheerId: string;\n\n acceptableUploadExamples: string;\n acceptedTypes: string;\n addFile: string;\n confirm: string;\n rejectionReasons: {};\n rejectedSubtitle: string;\n nameChanged: string;\n allowedDocuments: string;\n\n documentsMustInclude: string;\n suggestedDocumentTypes: string;\n whatHappensNext: string;\n reviewTime: string;\n canIFinishLater: string;\n canIFinishLaterDetails: string;\n submitButtonLabel: string;\n rejectedNextStep: string;\n // These vary in structure as well as by-segment\n uploadInfo: {\n affiliation: string;\n dateCurrentYear: string;\n fullName: string;\n institutionName: string;\n organization: string;\n student: {\n school: string;\n enrollmentDate: string;\n };\n teacher: {\n school: string;\n currentSchoolYear: string;\n };\n military: {\n serviceBranch: string;\n dischargeDate: string;\n currentAffiliation: string;\n uploadInstructionsDependent: string;\n uploadInstructionsMilitaryIdTitle: string;\n uploadInstructionsMilitaryIdContent: string;\n militaryFamily: {\n status: string;\n };\n goldStarFamily: {\n status: string;\n };\n reservist: {\n status: string;\n };\n veteran: {\n status: string;\n };\n militaryRetiree: {\n status: string;\n };\n activeDuty: {\n status: string;\n };\n };\n senior: {\n birthDate: string;\n };\n age: {\n birthDate: string;\n consentDE: string;\n };\n firstResponder: {\n organization: string;\n currentAffiliation: string;\n license: string;\n emt: {\n status: string;\n };\n police: {\n status: string;\n };\n firefighter: {\n status: string;\n };\n };\n medical: {\n status: string;\n medicalRole: string;\n validDate: string;\n };\n employment: {\n company: string;\n currentAffiliation: string;\n };\n identity: {\n validDate: string;\n };\n licensedProfessional: {\n licenseStatus: string;\n validDate: string;\n };\n recentMover: {\n address: string;\n validDate: string;\n };\n lowIncome: {\n validDate: string;\n fullName: string;\n ebtNumber: string;\n };\n };\n // These vary in structure as well as by-segment\n acceptableUploads: {\n officialLetter: string;\n doNotUploadMilitaryIdTitle: string;\n doNotUploadMilitaryIdContent: string;\n student: {\n idCard: string;\n classSchedule: string;\n tuitionReceipt: string;\n };\n teacher: {\n idCard: string;\n payStub: string;\n };\n member: {\n idCard: string;\n payStub: string;\n };\n senior: {\n birthCertificate: string;\n driversLicense: string;\n passport: string;\n stateId: string;\n };\n age: {\n birthCertificate: string;\n driversLicense: string;\n passport: string;\n stateId: string;\n };\n military: {\n active: {\n leaveEarningStatement: string;\n uniformedServicesId: string;\n };\n militaryRetiree: {\n blueUniformedId: string;\n vaHealthBenefitsCard: string;\n retireeId: string;\n dd214Form: string;\n vaDigitalId: string;\n };\n vet: {\n dd214Form: string;\n dischargeCertificate: string;\n vaHealthBenefitsCard: string;\n vaDigitalId: string;\n driverLicenseVeteran: string;\n departmentVeteranId: string;\n };\n reservist: {\n leaveEarningStatement: string;\n uniformedServicesId: string;\n };\n // these are the legacy strings that can't be deleted yet\n activeDuty: string;\n veteran: string;\n reservistA: string;\n retiree: string;\n dependent: string;\n goldStarFamily: string;\n };\n medical: {\n licenseCertificate: string;\n idCard: string;\n photoPayStub: string;\n payStub: string;\n letterEmployment: string;\n };\n employment: {\n employeeIdCard: string;\n payStub: string;\n officialLetter: string;\n };\n firstResponder: {\n idCard: string;\n payStub: string;\n letter: string;\n };\n licensedProfessional: {\n license: string;\n };\n recentMover: {\n changeOfAddress: string;\n mortgageDeed: string;\n rentalAgreement: string;\n };\n lowIncome: {\n program: string;\n programCard: string;\n programApprovalLetter: string;\n programApprovalScreenshot: string;\n programBankStatement: string;\n };\n };\n };\n sso: {\n title: string;\n subtitle: string;\n subtitle2: string;\n cancel: string;\n login: string;\n preheader: string;\n alternative: string;\n };\n thirdPartyLoop: {\n signzy: {\n title: string;\n subtitle: string;\n login: string;\n cancel: string;\n };\n error: string;\n };\n collectSocialSecurityNumber: {\n selectOption: string;\n title: string;\n uploadDoc: string;\n uploadInstead: string;\n useSsn: string;\n };\n smsLoop: {\n titleWithNumber: string;\n titleWithoutNumber: string;\n verificationCode: string;\n errors: {\n codeVerification: string;\n codeExpired: string;\n codeResendLimit: string;\n resend: string;\n };\n successResend: string;\n incorrectNumber: {\n incorrectNumber1: string;\n incorrectNumber2: string;\n incorrectNumber3: string;\n };\n resendButton: string;\n submitButton: string;\n };\n emailLoop: {\n title: string;\n subtitleWithEmail: string;\n subtitleWithoutEmail: string;\n subtitle2: string;\n successResend: string;\n resendButton: string;\n errors: {\n resend: string;\n invalidEmail: string;\n };\n skipEmail: string;\n skipEmail2: string;\n skipEmailCTA: string;\n collectOrganizationEmail: {\n title: string;\n subtitle: string;\n email: {\n label: string;\n send: string;\n };\n alternative: string;\n };\n };\n idCheckLoop: {\n title: string;\n subtitle: string;\n continue: string;\n terms: string;\n disclaimer: string;\n steps: {\n idCheck: {\n title: string;\n subtitle: string;\n };\n selfie: {\n title: string;\n };\n docReview: {\n title: string;\n };\n };\n docTypes: {\n passport: {\n title: string;\n subtitle: string;\n };\n driverLicense: {\n title: string;\n subtitle: string;\n };\n residencePermit: {\n title: string;\n subtitle: string;\n };\n identityCard: {\n title: string;\n subtitle: string;\n };\n };\n countrySelector: {\n title: string;\n };\n docTypeSelector: {\n title: string;\n subtitle: string;\n };\n regula: {\n title: string;\n uploadTitle: string;\n uploadSubtitle: string;\n addFontImage: string;\n addBackImage: string;\n submit: string;\n uploadFileError: string;\n terms: string;\n info: {\n title: string;\n subtitle: string;\n };\n sdk: {\n title: string;\n subtitle: string;\n imageQualityErrorTitle: string;\n imageQualityError: string;\n rejectedImageNextStep: string;\n uploadAgain: string;\n };\n };\n };\n error: {\n title: string;\n errorId: {\n [P in ErrorId]?: {\n title?: string;\n buttonText?: string;\n };\n };\n };\n collectIdentifier: {\n submitButton: string;\n inputExplanation: string;\n };\n completeAuthentication: {\n title: string;\n subtitle: string;\n manuallyVerifyButton: string;\n };\n collectPersonalInfo: {\n submitButton: string;\n };\n };\n experiment: {\n step: {\n docUpload: {\n documentConsiderations: string;\n };\n };\n };\n streetAddress: string;\n ssn: string;\n ssnPlaceholder: string;\n universityName: string;\n verificationPurposesOnly: string;\n verifyAndContinue: string;\n verifyMyStudentStatus: string;\n verifyMyTeacherStatus: string;\n verifyMyMembershipStatus: string;\n verifyMyMilitaryStatus: string;\n verifyMyIdentityStatus: string;\n verifyMyMedicalProfessionalStatus: string;\n verifyMyEmploymentStatus: string;\n verifyMyLicensedProfessionalStatus: string;\n verifyMyMoverStatus: string;\n verifyMyLowIncomeStatus: string;\n FIREFIGHTER: string;\n POLICE: string;\n EMT: string;\n SEARCH_AND_RESCUE: string;\n verifyMyFirstResponderStatus: string;\n VETERAN: string;\n MILITARY_RETIREE: string;\n RESERVIST: string;\n ACTIVE_DUTY: string;\n MILITARY_FAMILY: string;\n GOLD_STAR_FAMILY: string;\n DOCTOR: string;\n NURSE: string;\n DENTIST: string;\n PHARMACIST: string;\n OTHER_HEALTH_WORKER: string;\n HOME_BUYER: string;\n OTHER_MOVER: string;\n SNAP_BENEFITS: string;\n OTHER_GOVERNMENT_ASSISTANCE: string;\n COMMUNITY_ELIGIBILITY_PROVISION: string;\n LICENSED_COSMETOLOGIST: string;\n LICENSED_REAL_ESTATE_AGENT: string;\n VETERINARIAN: string;\n CHILD_CARE_WORKER: string;\n LIBRARIAN: string;\n NUTRITION_PROFESSIONAL: string;\n INTERIOR_DESIGNER: string;\n ARCHITECT: string;\n GENERAL_CONTRACTOR: string;\n tryAgain: string;\n footerText: string;\n footerText_sso: string;\n captchaFooterText: string;\n infoShared1: string;\n infoShared2: string;\n studentInfoShared: string;\n militaryInfoShared: string;\n firstResponderInfoShared: string;\n getHelp: string;\n militaryFamilyCardNote: string;\n clearSelection: string;\n};\n\ntype DateTimeMessages = {\n january: string;\n february: string;\n march: string;\n april: string;\n may: string;\n june: string;\n july: string;\n august: string;\n september: string;\n october: string;\n november: string;\n december: string;\n month: string;\n day: string;\n year: string;\n \"2_MIN\": string;\n \"20_MIN\": string;\n \"2_HRS\": string;\n \"24_HRS\": string;\n \"2_DAY\": string;\n \"3_DAY\": string;\n A_FEW_MINUTES: string;\n A_HALF_HOUR: string;\n A_FEW_HOURS: string;\n A_FEW_DAYS: string;\n};\n\n// #endregion Theme -----------------------------------------------------------------------\n\n// #region VerificationService ---------------------------------------------------------\n/**\n * @description View-Model Verification Service\n * @private\n */\nexport interface VerificationService<T extends ViewModel = ViewModel>\n extends VerificationServiceValues<T>, VerificationServiceFunctions<T> {}\n\nexport interface VerificationServiceValues<T extends ViewModel = ViewModel> {\n readonly isLoading: boolean;\n readonly loadingStep?: VerificationStep;\n readonly isErrored: boolean;\n readonly fieldValidationErrors: FieldValidationErrors;\n readonly messages: StringMap;\n readonly verificationResponse: VerificationResponse;\n readonly viewModel: T;\n readonly programTheme: ProgramTheme;\n readonly previousViewModel: T;\n readonly previousVerificationResponse: VerificationResponse;\n readonly programId: DatabaseId;\n readonly formValidationOptions?: FormValidationOptions;\n readonly overrideStep?: VerificationStep;\n}\n\nexport interface VerificationServiceFunctions<T extends ViewModel = ViewModel> {\n readonly fetchNewVerificationRequest: (\n programId: DatabaseId,\n segment: Segment,\n previousViewModel: T,\n trackingId?: string,\n forceNewVerificationRequest?: boolean,\n ) => Promise<object>;\n readonly fetchExistingVerificationRequest: (\n programId: DatabaseId,\n verificationId: string,\n previousVerificationResponse?: VerificationResponse,\n previousViewModel?: T,\n needsLoading?: boolean,\n ) => Promise<object>;\n readonly updateViewModel: <\n Opts extends Partial<ViewModelUpdateOptions> = {\n partial: false;\n metadataCheck: false;\n externalUserIdCheck: false;\n },\n >(\n viewModel: Opts[\"partial\"] extends true ? Partial<T> : T,\n options?: Opts,\n ) => void;\n readonly updateProgramTheme: (programTheme: ProgramTheme) => void;\n readonly updateFieldValidationErrors: (fieldValidationErrors: FieldValidationErrors) => void;\n readonly submitStep: (\n stepName: VerificationStep,\n viewModel: T,\n previousResponse: VerificationResponse,\n ) => Promise<object>;\n readonly updateLocale: (locale: Locale, segment: Segment) => void;\n readonly resetState: () => void;\n readonly dispatch?: Dispatch;\n}\n// #endregion VerificationService -----------------------------------------------------------------------\n\n// #region Redux -----------------------------------------------------------------------\n/**\n * @private\n */\nexport type ReduxState = VerificationServiceValues;\n\nexport type VerificationStore = Store<ReduxState, VerificationServiceAction>;\n\n/**\n * @description Create a bound action (wrapped in Redux's dispatch and ready to call)\n */\nexport type BoundActionCreator = (dispatch: Dispatch, getState?: Function) => BoundAction;\nexport type BoundAction = (...args: any[]) => Promise<object>;\n\nexport interface GenericAction {\n type: string;\n payload: any;\n}\n\nexport interface SetMessagesAction {\n type: \"SET_MESSAGES\";\n messages: StringMap;\n}\n\nexport interface ProgramIdAction {\n type: \"PROGRAM_ID\";\n programId: DatabaseId;\n}\n\nexport interface VerificationResponseAction {\n type: \"VERIFICATION_RESPONSE\";\n verificationResponse: VerificationResponse;\n}\n\nexport interface FieldValidationErrorsAction {\n type: \"FIELD_VALIDATION_ERRORS\";\n fieldValidationErrors: FieldValidationErrors;\n}\n\nexport interface ViewModelAction {\n type: \"VIEW_MODEL\";\n viewModel: ViewModel | Partial<ViewModel>;\n partial?: boolean; // if false, replace previous viewModel in its entirety. Must pass a full viewModel object\n}\n\nexport interface FormValidationOptionsAction {\n type: \"FORM_VALIDATION_OPTIONS\";\n}\n\nexport interface RequiredMetadataAndExternalIdCheckAction {\n type: \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\";\n}\n\nexport interface CollectFieldsAction {\n type: \"COLLECT_FIELDS\";\n requiredFields: FieldDescription[];\n optionalFields: FieldDescription[];\n}\n\nexport interface PreviousViewModelAction {\n type: \"PREVIOUS_VIEW_MODEL\";\n previousViewModel: ViewModel;\n}\n\nexport interface ProgramThemeAction {\n type: \"PROGRAM_THEME\";\n programTheme: ProgramTheme;\n partial?: boolean; // if false, replace previous programTheme in its entirety. Must pass a full programTheme object\n}\n\nexport interface IsLoadingAction {\n type: \"IS_LOADING\";\n isLoading: boolean;\n loadingStep?: VerificationStep;\n}\n\nexport interface IsErroredAction {\n type: \"IS_ERRORED\";\n isErrored: boolean;\n}\n\nexport interface ResetStateAction {\n type: \"RESET_STATE\";\n}\n\nexport interface ForceUpdateAction {\n type: \"FORCE_UPDATE\";\n}\n\nexport type VerificationServiceAction =\n | SetMessagesAction\n | ProgramIdAction\n | VerificationResponseAction\n | FieldValidationErrorsAction\n | ViewModelAction\n | PreviousViewModelAction\n | ProgramThemeAction\n | IsLoadingAction\n | IsErroredAction\n | ResetStateAction\n | FormValidationOptionsAction\n | ForceUpdateAction\n | RequiredMetadataAndExternalIdCheckAction\n | CollectFieldsAction;\n\n/**\n * @private\n * @deprecated Use a specific action interface (or create one) from below\n */\nexport type ReduxAction = VerificationServiceAction;\n\n// #endregion Redux -----------------------------------------------------------------------\n\n// #region Hooks\n\n/**\n * @description Defines a list of hooks names that are available.\n * Certain events throughout the software will call an arbitrary callback, by this name.\n * These names are meant to be descriptive, to indicate when the callback (hook) will be called.\n */\nexport interface HookEvents {\n ON_VERIFICATION_READY: VerificationResponse;\n ON_VERIFICATION_SUCCESS: SuccessResponse;\n ON_VERIFICATION_STEP_CHANGE: AllResponseTypes | VerificationResponse;\n ON_FORM_LOCALE_CHANGE: Locale;\n}\n\nexport type HookData<K extends keyof HookEvents = keyof HookEvents> = {\n name: K;\n data: HookEvents[K];\n};\nexport type Hook<K extends keyof HookEvents = keyof HookEvents> = {\n name: K;\n callback: (data: HookEvents[K]) => void;\n};\n\n/**\n * This only exists for backwards compatibility.\n * @deprecated\n */\nexport type RegisteredHooks = {\n [name in HookName]?: Hook[];\n};\n\nexport type HookName = keyof HookEvents;\n// #endregion Hooks\n\n// #region Conversion\n/**\n * @description The shape of the request payload to send when calling a conversion endpoint.\n */\nexport type ConversionRequest = {\n amount?: number;\n currency?: string;\n tags?: string[];\n};\n\n/**\n * @description The shape of the response object after calling a conversion endpoint.\n */\nexport type ConversionResponse = {\n id: string;\n};\n\n/**\n * @description Methods related to performing a conversion with SheerID.\n */\nexport interface Conversion {\n /**\n * @description Record a conversion to the REST API using verificationId\n */\n convertByVerificationId(\n verificationId: DatabaseId,\n conversionRequest: ConversionRequest,\n ): Promise<ConversionResponse>;\n\n /**\n * @description Record a conversion to the REST API using a previously-supplied trackingId\n */\n convertByTrackingId(\n accountId: DatabaseId,\n trackingId: string,\n conversionRequest: ConversionRequest,\n ): Promise<ConversionResponse>;\n\n /**\n * @description Listen to a SheerID iFrame form and store verificationId as a cookie.\n * Use as step 1 of 2, in combination with convert()\n */\n listenForVerificationId(): void;\n\n /**\n * @description Attempt to record a conversion using a verificationId retrieved from cookies\n * Use as step 2 of 2, in combination with listenForVerificationId\n */\n convert(conversionRequest: ConversionRequest): void;\n}\n// #endregion Conversion\n\n// #region Validators\nexport type Validator = (\n value: FieldContent,\n formOptions?: FormValidationOptions,\n) => ErrorId | ExtendedErrorId;\n// #endregion Validators\n\n// #region Deprecated\n/**\n * @deprecated\n */\nexport type Intl = any;\n// #endregion Deprecated\n\ntype Countries = {\n AD: string;\n AE: string;\n AF: string;\n AG: string;\n AI: string;\n AL: string;\n AM: string;\n AN: string;\n AO: string;\n AR: string;\n AS: string;\n AT: string;\n AU: string;\n AW: string;\n AZ: string;\n BA: string;\n BB: string;\n BD: string;\n BE: string;\n BF: string;\n BG: string;\n BH: string;\n BI: string;\n BJ: string;\n BM: string;\n BN: string;\n BO: string;\n BR: string;\n BS: string;\n BT: string;\n BV: string;\n BW: string;\n BY: string;\n BZ: string;\n CA: string;\n CD: string;\n CF: string;\n CG: string;\n CH: string;\n CI: string;\n CK: string;\n CL: string;\n CM: string;\n CN: string;\n CO: string;\n CR: string;\n CU: string;\n CV: string;\n CW: string;\n CY: string;\n CZ: string;\n DE: string;\n DJ: string;\n DK: string;\n DM: string;\n DO: string;\n DZ: string;\n EC: string;\n EE: string;\n EG: string;\n EH: string;\n ER: string;\n ES: string;\n ET: string;\n FI: string;\n FJ: string;\n FK: string;\n FM: string;\n FO: string;\n FR: string;\n GA: string;\n GB: string;\n GD: string;\n GE: string;\n GF: string;\n GH: string;\n GI: string;\n GL: string;\n GM: string;\n GN: string;\n GP: string;\n GQ: string;\n GR: string;\n GS: string;\n GT: string;\n GU: string;\n GW: string;\n GY: string;\n HK: string;\n HM: string;\n HN: string;\n HR: string;\n HT: string;\n HU: string;\n ID: string;\n IE: string;\n IL: string;\n IN: string;\n IO: string;\n IQ: string;\n IR: string;\n IS: string;\n IT: string;\n JM: string;\n JO: string;\n JP: string;\n KE: string;\n KG: string;\n KH: string;\n KI: string;\n KM: string;\n KN: string;\n KP: string;\n KR: string;\n KW: string;\n KY: string;\n KZ: string;\n LA: string;\n LB: string;\n LC: string;\n LI: string;\n LK: string;\n LR: string;\n LS: string;\n LT: string;\n LU: string;\n LV: string;\n LY: string;\n MA: string;\n MC: string;\n MD: string;\n ME: string;\n MG: string;\n MH: string;\n MK: string;\n ML: string;\n MM: string;\n MN: string;\n MO: string;\n MP: string;\n MQ: string;\n MR: string;\n MS: string;\n MT: string;\n MU: string;\n MV: string;\n MW: string;\n MX: string;\n MY: string;\n MZ: string;\n NA: string;\n NC: string;\n NE: string;\n NF: string;\n NG: string;\n NI: string;\n NL: string;\n NO: string;\n NP: string;\n NR: string;\n NU: string;\n NZ: string;\n OM: string;\n PA: string;\n PE: string;\n PF: string;\n PG: string;\n PH: string;\n PK: string;\n PL: string;\n PM: string;\n PN: string;\n PR: string;\n PS: string;\n PT: string;\n PW: string;\n PY: string;\n QA: string;\n RE: string;\n RO: string;\n RS: string;\n RU: string;\n RW: string;\n SA: string;\n SB: string;\n SC: string;\n SD: string;\n SE: string;\n SG: string;\n SH: string;\n SI: string;\n SK: string;\n SL: string;\n SM: string;\n SN: string;\n SO: string;\n SR: string;\n SS: string;\n ST: string;\n SV: string;\n SY: string;\n SZ: string;\n TC: string;\n TD: string;\n TF: string;\n TG: string;\n TH: string;\n TJ: string;\n TK: string;\n TL: string;\n TM: string;\n TN: string;\n TO: string;\n TR: string;\n TT: string;\n TV: string;\n TW: string;\n TZ: string;\n UA: string;\n UG: string;\n UM: string;\n US: string;\n UY: string;\n UZ: string;\n VA: string;\n VC: string;\n VE: string;\n VG: string;\n VI: string;\n VN: string;\n VU: string;\n WF: string;\n WS: string;\n XK: string;\n YE: string;\n YT: string;\n ZA: string;\n ZM: string;\n ZW: string;\n};\n\nexport type States = {\n AK: string;\n AL: string;\n AR: string;\n AS: string;\n AZ: string;\n CA: string;\n CO: string;\n CT: string;\n DC: string;\n DE: string;\n FL: string;\n GA: string;\n GU: string;\n HI: string;\n IA: string;\n ID: string;\n IL: string;\n IN: string;\n KS: string;\n KY: string;\n LA: string;\n MA: string;\n MD: string;\n ME: string;\n MI: string;\n MN: string;\n MO: string;\n MS: string;\n MT: string;\n NC: string;\n ND: string;\n NE: string;\n NH: string;\n NJ: string;\n NM: string;\n NV: string;\n NY: string;\n OH: string;\n OK: string;\n OR: string;\n PA: string;\n PR: string;\n RI: string;\n SC: string;\n SD: string;\n TN: string;\n TX: string;\n UT: string;\n VA: string;\n VI: string;\n VT: string;\n WA: string;\n WI: string;\n WV: string;\n WY: string;\n};\n\nexport type DocUploadData = {\n fileName: string;\n mimeType: string;\n fileSize: number;\n};\n\nexport type DocumentData = {\n documentId: string;\n status: string;\n mimeType: string;\n fileSize: number;\n uploadUrl: string;\n errors: Array<string>;\n};\n\nexport type IdentifierField = \"EMAIL\";\n","import { logger } from \"@jslib/shared/utils/logger\";\n\nimport { type FieldId, type Validator } from \"../types/types\";\n\nlet overridenValidators = {};\n\nexport const overrideValidator = (validatorField: FieldId, newValidator: Validator) => {\n logger.log(`overrideValidator registering ${newValidator} for '${validatorField}'`);\n overridenValidators[validatorField] = newValidator;\n};\n\nexport const getOverridenValidator = (validatorField: FieldId): Validator => {\n if (overridenValidators[validatorField]) {\n logger.log(`getOverridenValidator returning '${validatorField}'`);\n return overridenValidators[validatorField];\n }\n return null;\n};\n\nexport const resetOverriddenValidators = () => {\n overridenValidators = {};\n logger.info(\"Overridden validators have been reset\");\n};\n","import { postcodeValidator, postcodeValidatorExistsForCountry } from \"postcode-validator\";\nimport luhn from \"fast-luhn\";\n\nimport { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport {\n type ErrorId,\n type FieldId,\n type FieldContent,\n type FieldValidationErrors,\n type ViewModel,\n type MilitaryStatus,\n type Organization,\n type Metadata,\n type FirstResponderStatus,\n type MedicalProfessionalStatus,\n type ExtendedFieldValidationErrors,\n type ExtendedFieldId,\n type Validator,\n type ExtendedErrorId,\n type DocUploadViewModel,\n type FormValidationOptions,\n type WithCoreFields,\n type InactiveMilitaryPersonalInfoViewModel,\n type Country,\n FIRST_RESPONDER_STATUS,\n MEDICAL_PROFESSIONAL_STATUS,\n MILITARY_STATUS,\n type LowIncomePersonalInfoViewModel,\n RECENT_MOVER_STATUS,\n type RecentMoverStatus,\n} from \"../types/types\";\nimport { assertValidFieldId } from \"../types/assertions\";\nimport {\n getFieldValidationErrorsEmpty,\n getExtendedFieldValidationErrorsEmpty,\n} from \"../types/empties\";\nimport { ACCEPTED_DOC_MIME_TYPES, AUTH_TOKEN_LENGTH, SSN_STRING_LENGTH } from \"../../constants\";\nimport { FieldIdEnum, StateEnum } from \"../types/runtimeTypes\";\nimport { getOptions } from \"../../options/options\";\n\nimport { getOverridenValidator } from \"./validatorOverride\";\nimport { getCustomValidatorFields, getCustomValidator } from \"./customValidators\";\n\nconst DECIMAL_RADIX = 10;\nconst ADOLESCENT_AGE = 16;\nconst MIN_BIRTHYEAR = 1900;\nconst MAX_BIRTHYEAR = 3000;\n\nexport const MAX_METADATA_KEYS = 50;\nexport const MAX_METADATA_KEY_LENGTH = 256;\nexport const MAX_METADATA_VALUE_LENGTH = 4096;\n\nexport const INTL_PHONE_NUMBER_REGEX = /^\\+(?:[0-9] ?){6,14}[0-9]$/;\n\nexport const VALID_PHONE_NUMBER_REGEXPS = [\n /^\\+?0*\\d{10,}(x[0-9]{0,5})?$/,\n /(^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$)/,\n];\n\ntype GetValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n) => ErrorId | undefined;\n\nexport const validateMetadata = (metadata: Metadata): boolean => {\n const metadataKeyCount = Object.keys(metadata).length;\n\n // TOOD: Other metadata restrictions?\n if (metadataKeyCount > MAX_METADATA_KEYS) {\n logger.error(`Invalid number of metadata keys (max ${MAX_METADATA_KEYS})`, \"metadata keys\");\n return false;\n }\n return true;\n};\n\nexport const ensureMaxMetadataKeyValueLengths = (metadata: Metadata): Metadata => {\n const modifiedMetadata: Metadata = {};\n // TODO fix next line\n\n for (const key in metadata) {\n let newKey = key;\n let newValue = metadata[key] as string;\n\n if (newValue.length > MAX_METADATA_VALUE_LENGTH) {\n logger.warn(\n `Truncating metadata value '${metadata[key]}' for key '${newKey}' (max length ${MAX_METADATA_VALUE_LENGTH} characters).`,\n );\n newValue = newValue.substring(0, MAX_METADATA_VALUE_LENGTH);\n }\n if (newKey.length > MAX_METADATA_KEY_LENGTH) {\n logger.warn(\n `Truncating metadata key '${key}' (max length ${MAX_METADATA_KEY_LENGTH} characters).`,\n );\n newKey = newKey.substring(0, MAX_METADATA_KEY_LENGTH);\n }\n\n modifiedMetadata[newKey] = newValue;\n }\n return modifiedMetadata;\n};\n\nexport const getFieldValidationErrors = (\n viewModel: ViewModel,\n formValidationOptions?: FormValidationOptions,\n): FieldValidationErrors => {\n const fieldValidationErrors = getEmptyFieldValidationErrors();\n const fieldsToSkip = getSafe(() => viewModel.fieldsToSkipValidation);\n const metadata = getSafe(() => (viewModel as WithCoreFields).metadata, null);\n\n // TODO fix next line\n\n for (const fieldId in fieldValidationErrors) {\n if (viewModel.hasOwnProperty(fieldId)) {\n if (Array.isArray(fieldsToSkip) && fieldsToSkip.indexOf(fieldId as FieldId) > -1) {\n continue;\n }\n const fieldValue = viewModel[fieldId] ? viewModel[fieldId] : \"\";\n fieldValidationErrors[fieldId] = validateFieldById(\n fieldId as FieldId,\n fieldValue,\n formValidationOptions,\n );\n } else if (\n metadata !== null &&\n typeof metadata === \"object\" &&\n metadata.hasOwnProperty(fieldId)\n ) {\n const fieldValue = metadata[fieldId] ? metadata[fieldId] : \"\";\n fieldValidationErrors[fieldId] = validateFieldById(\n fieldId as FieldId,\n fieldValue,\n formValidationOptions,\n );\n }\n }\n\n const { customFormFields } = getOptions();\n if (customFormFields) {\n customFormFields.forEach((customField) => {\n let errorId;\n try {\n errorId = customField.validate(viewModel.metadata[customField.fieldId]);\n } catch (e) {\n logger.warn(`Error validating custom field ${customField.fieldId}`, e);\n }\n if (errorId) {\n fieldValidationErrors[customField.fieldId] = errorId;\n } else {\n delete fieldValidationErrors[customField.fieldId];\n }\n });\n }\n\n const { formFieldConfig } = getOptions();\n if (formFieldConfig) {\n formFieldConfig.forEach((formField) => {\n const fieldValue = viewModel[formField.fieldId] ? viewModel[formField.fieldId] : \"\";\n const fieldInViewModel = viewModel.hasOwnProperty(formField.fieldId);\n const shouldSkipValidation = fieldsToSkip?.includes(formField.fieldId as FieldId);\n\n if (fieldInViewModel && formField.requireIfOptional && !shouldSkipValidation) {\n fieldValidationErrors[formField.fieldId] = validateFieldById(\n formField.fieldId as FieldId,\n fieldValue,\n formValidationOptions,\n );\n }\n });\n }\n\n return fieldValidationErrors;\n};\n\nexport const isFormFilled = (\n viewModel: ViewModel,\n formValidationOptions?: FormValidationOptions,\n): boolean => {\n const customValidatorFields = getCustomValidatorFields();\n\n // TODO fix next line\n\n for (const fieldId in viewModel) {\n const fieldValue = viewModel[fieldId] ? viewModel[fieldId] : \"\";\n const isFieldSkipped =\n viewModel.fieldsToSkipValidation &&\n viewModel.fieldsToSkipValidation.includes(fieldId as FieldId);\n\n if (\n FieldIdEnum[fieldId] &&\n typeof validateFieldById(fieldId, fieldValue, formValidationOptions) === \"string\" &&\n !isFieldSkipped\n ) {\n return false;\n }\n }\n\n const metadata = getSafe(() => (viewModel as WithCoreFields).metadata, null);\n if (metadata !== null) {\n // TODO fix next line\n\n for (const fieldId in metadata) {\n const fieldValue = metadata[fieldId] !== undefined ? metadata[fieldId] : \"\";\n\n if (\n customValidatorFields.includes(fieldId) &&\n typeof getCustomValidator(fieldId)(fieldValue, formValidationOptions) === \"string\"\n ) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nexport const isFormErrored = (currentFieldValidationErrors: FieldValidationErrors): boolean => {\n // TODO fix next line\n\n for (const field in currentFieldValidationErrors) {\n if (currentFieldValidationErrors[field]) {\n logger.info(`Field '${field}' has errorId '${currentFieldValidationErrors[field]}'`);\n return true;\n }\n }\n return false;\n};\n\nconst getValidationError = (\n fieldId: FieldId,\n value: FieldContent,\n defaultValidator: Validator,\n overriddenValidator?: Validator,\n formValidationOptions?: FormValidationOptions,\n): ErrorId => {\n if (overriddenValidator) {\n logger.info(`Using overridden validator for field '${fieldId}'`);\n return overriddenValidator(value, formValidationOptions) as ErrorId;\n }\n return defaultValidator(value, formValidationOptions) as ErrorId;\n};\n\nconst getEmptyFieldValidationErrors = (): FieldValidationErrors => {\n const emptyFieldValidationErrors: FieldValidationErrors = getFieldValidationErrorsEmpty();\n const emptyExtendedFieldValidationErrors: ExtendedFieldValidationErrors =\n getExtendedFieldValidationErrorsEmpty();\n const fieldValidationErrors: FieldValidationErrors = {\n ...emptyFieldValidationErrors,\n ...emptyExtendedFieldValidationErrors,\n };\n return fieldValidationErrors;\n};\n\nconst getCustomValidationError = (\n fieldId: ExtendedFieldId,\n value: FieldContent,\n formValidationOptions?: FormValidationOptions,\n): ExtendedErrorId => {\n const customValidator: Validator = getCustomValidator(fieldId);\n logger.info(`Using custom validator for custom field '${fieldId}'`);\n return customValidator ? customValidator(value, formValidationOptions) : undefined;\n};\n\nconst customValidatorExists = (fieldId: ExtendedFieldId): boolean => {\n const customValidatorFields = getCustomValidatorFields();\n\n if (customValidatorFields.length && customValidatorFields.indexOf(fieldId) >= 0) {\n return true;\n }\n return false;\n};\n\nconst getFirstNameValidationError = (value: FieldContent): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidFirstName\";\n\n if (value === undefined || !isValidName(value as string)) {\n return invalidError;\n }\n};\n\nconst getLastNameValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidLastName\";\n\n if (value === undefined || !isValidName(value)) {\n return invalidError;\n }\n};\n\nconst getMemberIdError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidMemberId\";\n\n if (value === undefined || value === \"\") {\n return invalidError;\n }\n};\n\nconst getCountryValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCountry\";\n if (!value) {\n return invalidError;\n }\n};\n\nexport const getEmailValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidEmail\";\n const VALID_EMAIL_REGEXP =\n /(^\\s*?[A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+)*@([A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+)+|\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])\\s*?$)/;\n\n if (value === undefined || !VALID_EMAIL_REGEXP.test(value)) {\n return invalidError;\n }\n};\n\nexport const getPhoneNumberValidationError =\n (failIfValueFalsy: boolean, options?: { country: Country }) =>\n (value: string): ErrorId => {\n const invalidPhoneNumber: ErrorId = \"invalidPhoneNumber\";\n if (!value) {\n return failIfValueFalsy ? invalidPhoneNumber : undefined;\n }\n\n if (options?.country && options.country !== \"US\" && !INTL_PHONE_NUMBER_REGEX.test(value)) {\n return invalidPhoneNumber;\n }\n\n const matchedPatterns = VALID_PHONE_NUMBER_REGEXPS.filter((regexp: RegExp) =>\n regexp.test(value),\n );\n\n if (matchedPatterns.length === 0) {\n return invalidPhoneNumber;\n }\n };\n\nconst getPhoneNumberValidator = (formValidationOptions?: FormValidationOptions): Validator => {\n const country = formValidationOptions?.viewModel?.countryChoice?.value;\n const shouldFailIfEmpty =\n (formValidationOptions && formValidationOptions.smsLoopEnabled) ||\n // restricting the non-US empty check to age programs to prevent any possible\n // leakage in case optional phone numbers are allowed on other program types.\n (formValidationOptions?.currentStep === \"collectAgePersonalInfo\" &&\n country &&\n country !== \"US\");\n return getPhoneNumberValidationError(shouldFailIfEmpty, { country });\n};\n\nconst getOrganizationValidationError = (value: Organization): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidOrganization\";\n if (\n value.id === undefined ||\n Number.isNaN(value.id) ||\n (value.source !== \"EMPLOYER\" && value.id < 0) ||\n (value.source === \"EMPLOYER\" && (value.id > -1 || !value.idExtended)) ||\n (value.id === 0 && value.name.length <= 0)\n ) {\n return invalidError;\n }\n};\n\nconst isBirthDateEmpty = (birthDate: any) => {\n const noUndefined = birthDate.split(\"undefined\").join(\"\");\n return noUndefined.length <= 2;\n};\n\nconst getBirthDateValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidBirthDate\";\n const underagePersonError: ErrorId = \"underagePerson\";\n const futureBirthDateError: ErrorId = \"futureBirthDate\";\n const outsideAgeError: ErrorId = \"outsideAgePerson\";\n const minAge = formValidationOptions?.minAge ?? undefined;\n const maxAge = formValidationOptions?.maxAge ?? undefined;\n\n if (getSafe(() => formValidationOptions.currentStep === \"collectMemberPersonalInfo\")) {\n if (value === undefined || value === \"\" || isBirthDateEmpty(value)) return;\n if (!isValidDateFormat(value) || !isValidDate(value)) {\n return invalidError;\n }\n } else if (value === undefined || !isValidDateFormat(value) || !isValidDate(value)) {\n return invalidError;\n }\n\n if (isAgeOutsideRange(value, minAge, maxAge)) {\n return outsideAgeError;\n }\n if (isFutureDate(value)) {\n return futureBirthDateError;\n }\n if (isUnderageDate(value, minAge)) {\n return underagePersonError;\n }\n};\n\nconst getFileValidationError = (\n file: File,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const hasFileExtension = (fileName: string): boolean => fileName && fileName.includes(\".\");\n const noValidFilesError: ErrorId = \"noValidFiles\";\n const invalidFileSizeMaxError: ErrorId = \"invalidFileSizeMax\";\n const invalidFileSizeEmptyError: ErrorId = \"invalidFileSizeEmpty\";\n const unsupportedDocMimeTypeError: ErrorId = \"unsupportedDocMimeType\";\n const duplicateFileError = \"duplicateFile\";\n const FILE_SIZE_10MB = 10485760;\n const validFileTypes: string[] = ACCEPTED_DOC_MIME_TYPES;\n if (formValidationOptions) {\n const vm = formValidationOptions.viewModel as DocUploadViewModel;\n const selectedfiles = [vm.file1, vm.file2, vm.file3];\n\n const isDuplicate = selectedfiles.some(\n (f) => f !== undefined && f.name === file.name && f.size === file.size,\n );\n if (isDuplicate) {\n return duplicateFileError;\n }\n }\n\n if (file === undefined) {\n return noValidFilesError;\n }\n // If no extension, allow upload so API can determine if valid mime type\n if (hasFileExtension(file.name) && !validFileTypes.includes(file.type)) {\n return unsupportedDocMimeTypeError;\n }\n if (file.size > FILE_SIZE_10MB) {\n return invalidFileSizeMaxError;\n }\n if (file.size <= 0) {\n return invalidFileSizeEmptyError;\n }\n};\n\nexport const getEbtCardValidationError: GetValidationError = (value, formValidationOptions) => {\n const vm = formValidationOptions.viewModel as LowIncomePersonalInfoViewModel;\n if (vm.statuses && vm.statuses.includes(\"SNAP_BENEFITS\")) {\n if (!value.match(/^\\d{16,19}$/)) {\n // Must be 16-19 digits\n return \"invalidEbtCardNumber\";\n }\n\n if (value.startsWith(\"610098\") && value.length !== 19) {\n // this prefix must be 19 digits\n return \"invalidEbtCardNumber\";\n }\n\n const checkSumExemptPrefixes = [\"600486\", \"507712\", \"507714\"] as const;\n const isExempt = checkSumExemptPrefixes.some((pref) => value.startsWith(pref));\n if (!isExempt && !luhn(value)) {\n // Failed checksum\n return \"invalidEbtCardNumber\";\n }\n }\n};\n\nexport const getPostalCodeValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const invalidPostalCode: ErrorId = \"invalidPostalCode\";\n const countryCode = getSafe(() => formValidationOptions.viewModel.countryChoice.value, \"US\");\n\n if (isValidPostalCode(countryCode, value)) {\n return;\n }\n return invalidPostalCode;\n};\n\nconst getAddress1ValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidAddress\";\n if (!value) {\n return invalidError;\n }\n};\n\nconst getCityValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCity\";\n if (!value) {\n return invalidError;\n }\n};\n\nconst getStateValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidState\";\n if (!isValidState(value)) {\n return invalidError;\n }\n};\n\nconst existsAndIsValidDate = (value?: string): boolean =>\n value !== undefined && isValidDateFormat(value) && isValidDate(value);\n\nconst isBeforeBirthdate = (value: string, vm: ViewModel): boolean => {\n const date = new Date(value);\n const birthDate = new Date((vm as InactiveMilitaryPersonalInfoViewModel).birthDate);\n\n return date < birthDate;\n};\n\nconst getDischargeDateValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const transitionalMilitaryValidityDays = formValidationOptions?.transitionalMilitaryValidityDays;\n const shouldValidateTransitionalMilitaryValidityDays = !!transitionalMilitaryValidityDays;\n if (!existsAndIsValidDate(value)) {\n return \"invalidDischargeDate\";\n }\n if (!shouldValidateTransitionalMilitaryValidityDays && isFutureDate(value)) {\n return \"futureDischargeDate\";\n }\n if (isBeforeBirthdate(value, formValidationOptions.viewModel)) {\n return \"dischargeDateBeforeBirthDate\";\n }\n if (\n shouldValidateTransitionalMilitaryValidityDays &&\n !isWithinTransitionalMilitaryValidityDays(value, transitionalMilitaryValidityDays)\n ) {\n return \"invalidDischargeDate\";\n }\n};\n\nconst getActiveDutyStartDateValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n if (!value && !formValidationOptions.strictMilitaryValidationEnabled) {\n // a falsey value is valid unless strictMilitaryValidation is enabled.\n return;\n }\n\n if (!existsAndIsValidDate(value)) {\n return \"invalidActiveDutyStartDate\";\n }\n if (isFutureDate(value)) {\n return \"futureActiveDutyStartDate\";\n }\n if (isBeforeBirthdate(value, formValidationOptions.viewModel)) {\n return \"activeDutyStartDateBeforeBirthDate\";\n }\n};\n\nconst getSsnValidationError = (value: number): ErrorId | undefined => {\n const invalidSocialSecurityNumber: ErrorId = \"invalidSocialSecurityNumber\";\n if (value.toString().length !== SSN_STRING_LENGTH) {\n return invalidSocialSecurityNumber;\n }\n};\n\nconst isValidLicensedProfessionalStatus = (value: string) => value.length > 0;\n\nconst isValidLowIncomeStatus = (value: string) => value.length > 0;\n\nconst getDriverLicenseNumberValidationError = (value: string): ErrorId | undefined => {\n const invalidDriverLicenseNumber: ErrorId = \"invalidDriverLicenseNumber\";\n const VALID_DRIVER_LICENSE_REGEXP = /^[A-Za-z0-9-\\*]{1,100}$/; // '*' is sometimes used in WA state\n\n if (value === undefined || !VALID_DRIVER_LICENSE_REGEXP.test(value)) {\n return invalidDriverLicenseNumber;\n }\n};\n\nconst getStatusesValidationError = (value: string): ErrorId | undefined => {\n const invalidStatuses: ErrorId = \"invalidStatuses\";\n if (!value || !isValidLicensedProfessionalStatus(value) || !isValidLowIncomeStatus(value)) {\n return invalidStatuses;\n }\n};\n\nconst isValidMilitaryStatus = (value: string) => MILITARY_STATUS.includes(value as MilitaryStatus);\n\nconst isValidFirstResponderStatus = (value: string): boolean =>\n FIRST_RESPONDER_STATUS.includes(value as FirstResponderStatus);\n\nconst isValidMedicalProfessionalStatus = (value: string) =>\n MEDICAL_PROFESSIONAL_STATUS.includes(value as MedicalProfessionalStatus);\n\nconst isRecentMoverStatus = (value: string) =>\n RECENT_MOVER_STATUS.includes(value as RecentMoverStatus);\n\nconst getStatusValidationError = (value: string): ErrorId | undefined => {\n const invalidStatus: ErrorId = \"invalidStatus\";\n\n if (\n !value ||\n (!isValidMilitaryStatus(value) &&\n !isValidFirstResponderStatus(value) &&\n !isValidMedicalProfessionalStatus(value) &&\n !isRecentMoverStatus(value) &&\n !isValidLowIncomeStatus(value) &&\n !isValidLicensedProfessionalStatus(value))\n ) {\n return invalidStatus;\n }\n};\n\nconst getAuthenticationCodeValidationError = (value: FieldContent): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidAuthenticationLoopToken\";\n\n if (value === undefined || value.toString().length !== AUTH_TOKEN_LENGTH) {\n return invalidError;\n }\n};\n\nexport const getCvecNumberValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCvecNumber\";\n const VALID_CVEC_NUMBER_REGEXP = /^(?:[a-zA-Z0-9]\\s*){12}$|^$/;\n\n if (value === undefined || !VALID_CVEC_NUMBER_REGEXP.test(value)) {\n return invalidError;\n }\n};\n\nexport const getCaptchaTokenValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCaptchaToken\";\n\n if (value === undefined || value === \"\") {\n return invalidError;\n }\n};\n\nexport const isValidName = (value: string, opts?: { _test_backup_regex: boolean }): boolean => {\n try {\n const VALID_NAME_REGEXP = /([\\p{Letter}\\p{Mark}\\p{Connector_Punctuation}\\p{Join_Control}]+)/v;\n if (opts?._test_backup_regex) {\n throw new Error(\"testing backup regex\");\n }\n return VALID_NAME_REGEXP.test(value);\n } catch {\n // unicode sets `/v` is unsupported in older browsers, notably iOS 15/16 so if that fails instead use a\n // simpler regex that will compile. It's less accurate but we have the safety of server-side validation.\n //\n // This regex matches most characters, but excludes some control characters, space, and ASCII digits (0-9).\n // eslint-disable-next-line no-control-regex\n const VALID_NAME_REGEXP = /([\\u0000-\\u0019\\u0021-\\u002F\\u003A-\\uFFFF]+)/;\n return VALID_NAME_REGEXP.test(value);\n }\n};\n\nconst isValidDate = (value: string): boolean => {\n const dateParts = value.split(\"-\");\n const dateYear = parseInt(dateParts[0], DECIMAL_RADIX);\n const dateMonth = parseInt(dateParts[1], DECIMAL_RADIX);\n const dateDay = parseInt(dateParts[2], DECIMAL_RADIX);\n const monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n if (dateYear < MIN_BIRTHYEAR || dateYear > MAX_BIRTHYEAR || dateMonth <= 0 || dateMonth > 12) {\n return false;\n }\n\n // Check for leap years\n if (dateYear % 400 === 0 || (dateYear % 100 !== 0 && dateYear % 4 === 0)) {\n monthDays[1] = 29;\n }\n\n if (dateDay <= 0 || dateDay > monthDays[dateMonth - 1]) {\n return false;\n }\n return true;\n};\n\nconst isValidDateFormat = (value: string): boolean => {\n const VALID_DATE_FORMAT_REGEXP = /^\\d{4}[\\-\\s\\/]\\d{1,2}[\\-\\s\\/]\\d{1,2}$/;\n\n if (VALID_DATE_FORMAT_REGEXP.test(value)) {\n return true;\n }\n return false;\n};\n\nconst isFutureDate = (value: string): boolean => {\n const currentDate = new Date();\n const candidateDate = new Date(value);\n return candidateDate > currentDate;\n};\n\nconst isWithinTransitionalMilitaryValidityDays = (\n value: string,\n transitionalMilitaryValidityDays: number,\n): boolean => {\n const candidateDate = new Date(`${value}T00:00:00Z`);\n\n const now = new Date();\n const todayUTC = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));\n\n const pastDischargeDateLimit = new Date(todayUTC.valueOf());\n pastDischargeDateLimit.setUTCDate(todayUTC.getUTCDate() - transitionalMilitaryValidityDays);\n\n const futureDischargeDateLimit = new Date(todayUTC.valueOf());\n futureDischargeDateLimit.setUTCDate(todayUTC.getUTCDate() + transitionalMilitaryValidityDays);\n\n return candidateDate >= pastDischargeDateLimit && candidateDate <= futureDischargeDateLimit;\n};\n\nconst isUnderageDate = (value: string, minAge = ADOLESCENT_AGE): boolean => {\n const birthDateParts = value.split(\"-\");\n const birthDateYear = parseInt(birthDateParts[0], DECIMAL_RADIX);\n const birthDateMonth = parseInt(birthDateParts[1], DECIMAL_RADIX);\n const birthDateDay = parseInt(birthDateParts[2], DECIMAL_RADIX);\n const currentYear = new Date().getFullYear();\n const currentMonth = new Date().getMonth() + 1;\n const currentDay = new Date().getDate();\n\n if (currentYear - birthDateYear === minAge) {\n if (currentMonth - birthDateMonth < 0) {\n return true;\n }\n\n if (currentMonth - birthDateMonth === 0) {\n if (currentDay - birthDateDay < 0) {\n return true;\n }\n }\n } else if (currentYear - birthDateYear < minAge) {\n return true;\n }\n return false;\n};\n\nconst isOverageDate = (value: string, maxAge = 120) => {\n const birthDateParts = value.split(\"-\");\n const birthDateYear = parseInt(birthDateParts[0], DECIMAL_RADIX);\n const birthDateMonth = parseInt(birthDateParts[1], DECIMAL_RADIX);\n const birthDateDay = parseInt(birthDateParts[2], DECIMAL_RADIX);\n const currentYear = new Date().getFullYear();\n const currentMonth = new Date().getMonth() + 1;\n const currentDay = new Date().getDate();\n\n if (currentYear - birthDateYear === maxAge) {\n if (currentMonth - birthDateMonth > 0) {\n return true;\n }\n\n if (currentMonth - birthDateMonth === 0) {\n if (currentDay - birthDateDay > 0) {\n return true;\n }\n }\n } else if (currentYear - birthDateYear > maxAge) {\n return true;\n }\n return false;\n};\n\nconst isAgeOutsideRange = (value: string, minAge?: number, maxAge?: number): boolean => {\n let isUnderage = false;\n let isOverage = false;\n\n if (minAge) {\n isUnderage = isUnderageDate(value, minAge);\n }\n if (maxAge) {\n isOverage = isOverageDate(value, maxAge);\n }\n return isUnderage || isOverage;\n};\n\nexport const isValidPostalCode = (countryCode: Country = \"US\", value: string) => {\n const countryCodeString = countryCode as any;\n if (postcodeValidatorExistsForCountry(countryCodeString)) {\n return postcodeValidator(value, countryCodeString);\n }\n return false;\n};\n\n/**\n * @deprecated Use `isValidPostalCode('US', value)` instead\n * */\nexport const isValidUsPostalCode = (value: string): boolean => isValidPostalCode(\"US\", value);\n\n/**\n * @deprecated Use `isValidPostalCode('CA', value)` instead\n * */\nexport const isValidCanadianPostalCode = (value: string): boolean => isValidPostalCode(\"CA\", value);\n\nconst isValidState = (value: string) => {\n if (!value) {\n return false;\n }\n const validStateCodes: StateEnum[] = Object.values(StateEnum);\n if (validStateCodes.indexOf(value.toUpperCase() as StateEnum) >= 0) {\n return true;\n }\n return false;\n};\n\nexport const validateFieldById = (\n fieldId: FieldId | ExtendedFieldId,\n value: FieldContent,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | ExtendedErrorId | undefined => {\n assertValidFieldId(fieldId);\n\n const defaultCoreFieldValidatorMap: Partial<Record<string, Validator>> = {\n [FieldIdEnum.firstName]: getFirstNameValidationError,\n [FieldIdEnum.lastName]: getLastNameValidationError,\n [FieldIdEnum.memberId]: getMemberIdError,\n [FieldIdEnum.email]: getEmailValidationError,\n [FieldIdEnum.organizationEmail]: getEmailValidationError,\n [FieldIdEnum.phoneNumber]: getPhoneNumberValidator(formValidationOptions),\n [FieldIdEnum.organization]: getOrganizationValidationError,\n [FieldIdEnum.birthDate]: getBirthDateValidationError,\n [FieldIdEnum.postalCode]: getPostalCodeValidationError,\n [FieldIdEnum.address1]: getAddress1ValidationError,\n [FieldIdEnum.city]: getCityValidationError,\n [FieldIdEnum.state]: getStateValidationError,\n [FieldIdEnum.country]: getCountryValidationError,\n [FieldIdEnum.dischargeDate]: getDischargeDateValidationError,\n [FieldIdEnum.activeDutyStartDate]: getActiveDutyStartDateValidationError,\n [FieldIdEnum.socialSecurityNumber]: getSsnValidationError,\n [FieldIdEnum.status]: getStatusValidationError,\n [FieldIdEnum.statuses]: getStatusesValidationError,\n [FieldIdEnum.driverLicenseNumber]: getDriverLicenseNumberValidationError,\n [FieldIdEnum.docUpload]: getFileValidationError,\n [FieldIdEnum.ebtCardNumber]: getEbtCardValidationError,\n [FieldIdEnum.authenticationCode]: getAuthenticationCodeValidationError,\n [FieldIdEnum.cvecNumber]: getCvecNumberValidationError,\n [FieldIdEnum.captchaToken]: getCaptchaTokenValidationError,\n };\n\n const defaultValidator = defaultCoreFieldValidatorMap[fieldId];\n if (defaultValidator) {\n const overriddenValidator: Validator = getOverridenValidator(fieldId as FieldId);\n return getValidationError(\n fieldId as FieldId,\n value,\n defaultValidator,\n overriddenValidator,\n formValidationOptions,\n );\n }\n\n if (customValidatorExists(fieldId)) {\n return getCustomValidationError(fieldId, value, formValidationOptions);\n }\n\n return undefined;\n};\n"],"x_google_ignoreList":[0,1,2,3],"mappings":";;;AAAA,IAAW;CACV,SAAU,GAAa;CA2LpB,AA1LA,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KA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"}
|
|
1
|
+
{"version":3,"file":"validators-DxgVWbpr.js","names":[],"sources":["../../../node_modules/postcode-validator/lib/esm/postcode-types.js","../../../node_modules/postcode-validator/lib/esm/postcode-regexes.js","../../../node_modules/postcode-validator/lib/esm/main.js","../../../node_modules/fast-luhn/index.js","../../src/lib/types/types.ts","../../src/lib/validators/validatorOverride.ts","../../src/lib/validators/validators.ts"],"sourcesContent":["export var CountryCode;\n(function (CountryCode) {\n CountryCode[\"UK\"] = \"UK\";\n CountryCode[\"GB\"] = \"GB\";\n CountryCode[\"JE\"] = \"JE\";\n CountryCode[\"GG\"] = \"GG\";\n CountryCode[\"IM\"] = \"IM\";\n CountryCode[\"US\"] = \"US\";\n CountryCode[\"CA\"] = \"CA\";\n CountryCode[\"IE\"] = \"IE\";\n CountryCode[\"DE\"] = \"DE\";\n CountryCode[\"JP\"] = \"JP\";\n CountryCode[\"FR\"] = \"FR\";\n CountryCode[\"AU\"] = \"AU\";\n CountryCode[\"IT\"] = \"IT\";\n CountryCode[\"CH\"] = \"CH\";\n CountryCode[\"AT\"] = \"AT\";\n CountryCode[\"ES\"] = \"ES\";\n CountryCode[\"NL\"] = \"NL\";\n CountryCode[\"BE\"] = \"BE\";\n CountryCode[\"DK\"] = \"DK\";\n CountryCode[\"SE\"] = \"SE\";\n CountryCode[\"NO\"] = \"NO\";\n CountryCode[\"BR\"] = \"BR\";\n CountryCode[\"PT\"] = \"PT\";\n CountryCode[\"FI\"] = \"FI\";\n CountryCode[\"AX\"] = \"AX\";\n CountryCode[\"KR\"] = \"KR\";\n CountryCode[\"CN\"] = \"CN\";\n CountryCode[\"TW\"] = \"TW\";\n CountryCode[\"SG\"] = \"SG\";\n CountryCode[\"DZ\"] = \"DZ\";\n CountryCode[\"AD\"] = \"AD\";\n CountryCode[\"AR\"] = \"AR\";\n CountryCode[\"AM\"] = \"AM\";\n CountryCode[\"AZ\"] = \"AZ\";\n CountryCode[\"BH\"] = \"BH\";\n CountryCode[\"BD\"] = \"BD\";\n CountryCode[\"BB\"] = \"BB\";\n CountryCode[\"BY\"] = \"BY\";\n CountryCode[\"BM\"] = \"BM\";\n CountryCode[\"BA\"] = \"BA\";\n CountryCode[\"IO\"] = \"IO\";\n CountryCode[\"BN\"] = \"BN\";\n CountryCode[\"BG\"] = \"BG\";\n CountryCode[\"KH\"] = \"KH\";\n CountryCode[\"CV\"] = \"CV\";\n CountryCode[\"CL\"] = \"CL\";\n CountryCode[\"CR\"] = \"CR\";\n CountryCode[\"HR\"] = \"HR\";\n CountryCode[\"CY\"] = \"CY\";\n CountryCode[\"CZ\"] = \"CZ\";\n CountryCode[\"DO\"] = \"DO\";\n CountryCode[\"EC\"] = \"EC\";\n CountryCode[\"EG\"] = \"EG\";\n CountryCode[\"EE\"] = \"EE\";\n CountryCode[\"FO\"] = \"FO\";\n CountryCode[\"GE\"] = \"GE\";\n CountryCode[\"GR\"] = \"GR\";\n CountryCode[\"GL\"] = \"GL\";\n CountryCode[\"GT\"] = \"GT\";\n CountryCode[\"HT\"] = \"HT\";\n CountryCode[\"HN\"] = \"HN\";\n CountryCode[\"HU\"] = \"HU\";\n CountryCode[\"IS\"] = \"IS\";\n CountryCode[\"IN\"] = \"IN\";\n CountryCode[\"ID\"] = \"ID\";\n CountryCode[\"IL\"] = \"IL\";\n CountryCode[\"JO\"] = \"JO\";\n CountryCode[\"KZ\"] = \"KZ\";\n CountryCode[\"KE\"] = \"KE\";\n CountryCode[\"KW\"] = \"KW\";\n CountryCode[\"KY\"] = \"KY\";\n CountryCode[\"LA\"] = \"LA\";\n CountryCode[\"LV\"] = \"LV\";\n CountryCode[\"LB\"] = \"LB\";\n CountryCode[\"LI\"] = \"LI\";\n CountryCode[\"LT\"] = \"LT\";\n CountryCode[\"LU\"] = \"LU\";\n CountryCode[\"MK\"] = \"MK\";\n CountryCode[\"MY\"] = \"MY\";\n CountryCode[\"MV\"] = \"MV\";\n CountryCode[\"MT\"] = \"MT\";\n CountryCode[\"MU\"] = \"MU\";\n CountryCode[\"MX\"] = \"MX\";\n CountryCode[\"MD\"] = \"MD\";\n CountryCode[\"MC\"] = \"MC\";\n CountryCode[\"MA\"] = \"MA\";\n CountryCode[\"NP\"] = \"NP\";\n CountryCode[\"NZ\"] = \"NZ\";\n CountryCode[\"NI\"] = \"NI\";\n CountryCode[\"NG\"] = \"NG\";\n CountryCode[\"OM\"] = \"OM\";\n CountryCode[\"PA\"] = \"PA\";\n CountryCode[\"PK\"] = \"PK\";\n CountryCode[\"PY\"] = \"PY\";\n CountryCode[\"PH\"] = \"PH\";\n CountryCode[\"PL\"] = \"PL\";\n CountryCode[\"PR\"] = \"PR\";\n CountryCode[\"RO\"] = \"RO\";\n CountryCode[\"RU\"] = \"RU\";\n CountryCode[\"SM\"] = \"SM\";\n CountryCode[\"SA\"] = \"SA\";\n CountryCode[\"SN\"] = \"SN\";\n CountryCode[\"SK\"] = \"SK\";\n CountryCode[\"SI\"] = \"SI\";\n CountryCode[\"ZA\"] = \"ZA\";\n CountryCode[\"LK\"] = \"LK\";\n CountryCode[\"TJ\"] = \"TJ\";\n CountryCode[\"TH\"] = \"TH\";\n CountryCode[\"TN\"] = \"TN\";\n CountryCode[\"TR\"] = \"TR\";\n CountryCode[\"TM\"] = \"TM\";\n CountryCode[\"UA\"] = \"UA\";\n CountryCode[\"UY\"] = \"UY\";\n CountryCode[\"UZ\"] = \"UZ\";\n CountryCode[\"VA\"] = \"VA\";\n CountryCode[\"VE\"] = \"VE\";\n CountryCode[\"ZM\"] = \"ZM\";\n CountryCode[\"AS\"] = \"AS\";\n CountryCode[\"CC\"] = \"CC\";\n CountryCode[\"CK\"] = \"CK\";\n CountryCode[\"RS\"] = \"RS\";\n CountryCode[\"ME\"] = \"ME\";\n CountryCode[\"CS\"] = \"CS\";\n CountryCode[\"YU\"] = \"YU\";\n CountryCode[\"CX\"] = \"CX\";\n CountryCode[\"ET\"] = \"ET\";\n CountryCode[\"FK\"] = \"FK\";\n CountryCode[\"NF\"] = \"NF\";\n CountryCode[\"FM\"] = \"FM\";\n CountryCode[\"GF\"] = \"GF\";\n CountryCode[\"GN\"] = \"GN\";\n CountryCode[\"GP\"] = \"GP\";\n CountryCode[\"GS\"] = \"GS\";\n CountryCode[\"GU\"] = \"GU\";\n CountryCode[\"GW\"] = \"GW\";\n CountryCode[\"HM\"] = \"HM\";\n CountryCode[\"IQ\"] = \"IQ\";\n CountryCode[\"KG\"] = \"KG\";\n CountryCode[\"LR\"] = \"LR\";\n CountryCode[\"LS\"] = \"LS\";\n CountryCode[\"MG\"] = \"MG\";\n CountryCode[\"MH\"] = \"MH\";\n CountryCode[\"MN\"] = \"MN\";\n CountryCode[\"MP\"] = \"MP\";\n CountryCode[\"MQ\"] = \"MQ\";\n CountryCode[\"NC\"] = \"NC\";\n CountryCode[\"NE\"] = \"NE\";\n CountryCode[\"VI\"] = \"VI\";\n CountryCode[\"VN\"] = \"VN\";\n CountryCode[\"PF\"] = \"PF\";\n CountryCode[\"PG\"] = \"PG\";\n CountryCode[\"PM\"] = \"PM\";\n CountryCode[\"PN\"] = \"PN\";\n CountryCode[\"PW\"] = \"PW\";\n CountryCode[\"RE\"] = \"RE\";\n CountryCode[\"SH\"] = \"SH\";\n CountryCode[\"SJ\"] = \"SJ\";\n CountryCode[\"SO\"] = \"SO\";\n CountryCode[\"SZ\"] = \"SZ\";\n CountryCode[\"TC\"] = \"TC\";\n CountryCode[\"WF\"] = \"WF\";\n CountryCode[\"XK\"] = \"XK\";\n CountryCode[\"YT\"] = \"YT\";\n CountryCode[\"PE\"] = \"PE\";\n CountryCode[\"GI\"] = \"GI\";\n CountryCode[\"BT\"] = \"BT\";\n CountryCode[\"AL\"] = \"AL\";\n CountryCode[\"CU\"] = \"CU\";\n CountryCode[\"UM\"] = \"UM\";\n CountryCode[\"AI\"] = \"AI\";\n CountryCode[\"AF\"] = \"AF\";\n CountryCode[\"SD\"] = \"SD\";\n CountryCode[\"VC\"] = \"VC\";\n CountryCode[\"TA\"] = \"TA\";\n CountryCode[\"NA\"] = \"NA\";\n CountryCode[\"EH\"] = \"EH\";\n CountryCode[\"BL\"] = \"BL\";\n CountryCode[\"TZ\"] = \"TZ\";\n CountryCode[\"AC\"] = \"AC\";\n CountryCode[\"VG\"] = \"VG\";\n CountryCode[\"MZ\"] = \"MZ\";\n CountryCode[\"MF\"] = \"MF\";\n CountryCode[\"MM\"] = \"MM\";\n CountryCode[\"SV\"] = \"SV\";\n CountryCode[\"IR\"] = \"IR\";\n CountryCode[\"INTL\"] = \"INTL\";\n CountryCode[\"CO\"] = \"CO\";\n})(CountryCode || (CountryCode = {}));\n","import { CountryCode } from './postcode-types';\n// TODO: Remove CountryCode.UK in next major version release\nexport const POSTCODE_REGEXES = new Map([\n [\n CountryCode.UK,\n /^([A-Z]){1}([0-9][0-9]|[0-9]|[A-Z][0-9][A-Z]|[A-Z][0-9][0-9]|[A-Z][0-9]|[0-9][A-Z]){1}([ ])?([0-9][A-z][A-z]){1}$/i,\n ],\n [\n CountryCode.GB,\n /^([A-Z]){1}([0-9][0-9]|[0-9]|[A-Z][0-9][A-Z]|[A-Z][0-9][0-9]|[A-Z][0-9]|[0-9][A-Z]){1}([ ])?([0-9][A-z][A-z]){1}$/i,\n ],\n [CountryCode.JE, /^JE\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$/],\n [CountryCode.GG, /^GY\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$/],\n [CountryCode.IM, /^IM\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$/],\n [CountryCode.US, /^([0-9]{5})(?:-([0-9]{4}))?$/],\n [CountryCode.CA, /^([ABCEGHJKLMNPRSTVXY][0-9][ABCEGHJKLMNPRSTVWXYZ])\\s*([0-9][ABCEGHJKLMNPRSTVWXYZ][0-9])$/i],\n [CountryCode.IE, /^([AC-FHKNPRTV-Y][0-9]{2}|D6W)[ -]?[0-9AC-FHKNPRTV-Y]{4}$/],\n [CountryCode.DE, /^\\d{5}$/],\n [CountryCode.JP, /^\\d{3}-\\d{4}$/],\n [CountryCode.FR, /^\\d{2}[ ]?\\d{3}$/],\n [CountryCode.AU, /^\\d{4}$/],\n [CountryCode.IT, /^\\d{5}$/],\n [CountryCode.CH, /^\\d{4}$/],\n [CountryCode.AT, /^(?!0)\\d{4}$/],\n [CountryCode.ES, /^(?:0[1-9]|[1-4]\\d|5[0-2])\\d{3}$/],\n [CountryCode.NL, /^\\d{4}[ ]?[A-Z]{2}$/],\n [CountryCode.BE, /^\\d{4}$/],\n [CountryCode.DK, /^\\d{4}$/],\n [CountryCode.SE, /^(SE-)?\\d{3}[ ]?\\d{2}$/],\n [CountryCode.NO, /^\\d{4}$/],\n [CountryCode.BR, /^\\d{5}[\\-]?\\d{3}$/],\n [CountryCode.PT, /^\\d{4}([\\-]\\d{3})?$/],\n [CountryCode.FI, /^(FI-|AX-)?\\d{5}$/],\n [CountryCode.AX, /^22\\d{3}$/],\n [CountryCode.KR, /^\\d{5}$/],\n [CountryCode.CN, /^\\d{6}$/],\n [CountryCode.TW, /^\\d{3}(\\d{2,3})?$/],\n [CountryCode.SG, /^\\d{6}$/],\n [CountryCode.DZ, /^\\d{5}$/],\n [CountryCode.AD, /^AD\\d{3}$/],\n [CountryCode.AR, /^[A-HJ-NP-Z]\\d{4}([A-Z]{3})?$/],\n [CountryCode.AM, /^(37)?\\d{4}$/],\n [CountryCode.AZ, /^\\d{4}$/],\n [CountryCode.BH, /^((1[0-2]|[2-9])\\d{2})?$/],\n [CountryCode.BD, /^\\d{4}$/],\n [CountryCode.BB, /^(BB\\d{5})?$/],\n [CountryCode.BY, /^\\d{6}$/],\n [CountryCode.BM, /^[A-Z]{2}[ ]?[A-Z0-9]{2}$/],\n [CountryCode.BA, /^\\d{5}$/],\n [CountryCode.IO, /^BBND 1ZZ$/],\n [CountryCode.BN, /^[A-Z]{2}[ ]?\\d{4}$/],\n [CountryCode.BG, /^\\d{4}$/],\n [CountryCode.KH, /^\\d{5}$/],\n [CountryCode.CV, /^\\d{4}$/],\n [CountryCode.CL, /^\\d{7}$/],\n [CountryCode.CR, /^(\\d{4,5}|\\d{3}-\\d{4})$/],\n [CountryCode.HR, /^(HR-)?\\d{5}$/],\n [CountryCode.CY, /^\\d{4}$/],\n [CountryCode.CZ, /^\\d{3}[ ]?\\d{2}$/],\n [CountryCode.DO, /^\\d{5}$/],\n [CountryCode.EC, /^([A-Z]\\d{4}[A-Z]|(?:[A-Z]{2})?\\d{6})?$/],\n [CountryCode.EG, /^\\d{5}$/],\n [CountryCode.EE, /^\\d{5}$/],\n [CountryCode.FO, /^\\d{3}$/],\n [CountryCode.GE, /^\\d{4}$/],\n [CountryCode.GR, /^\\d{3}[ ]?\\d{2}$/],\n [CountryCode.GL, /^39\\d{2}$/],\n [CountryCode.GT, /^\\d{5}$/],\n [CountryCode.HT, /^\\d{4}$/],\n [CountryCode.HN, /^(?:\\d{5})?$/],\n [CountryCode.HU, /^\\d{4}$/],\n [CountryCode.IS, /^\\d{3}$/],\n [CountryCode.IN, /^\\d{6}$/],\n [CountryCode.ID, /^\\d{5}$/],\n [CountryCode.IL, /^\\d{5,7}$/],\n [CountryCode.JO, /^\\d{5}$/],\n [CountryCode.KZ, /^\\d{6}$/],\n [CountryCode.KE, /^\\d{5}$/],\n [CountryCode.KW, /^\\d{5}$/],\n [CountryCode.KY, /^KY[123]-\\d{4}$/],\n [CountryCode.LA, /^\\d{5}$/],\n [CountryCode.LV, /^(LV-)?\\d{4}$/],\n [CountryCode.LB, /^(\\d{4}([ ]?\\d{4})?)?$/],\n [CountryCode.LI, /^(948[5-9]|949[0-7])$/],\n [CountryCode.LT, /^(LT-)?\\d{5}$/],\n [CountryCode.LU, /^(L-)?\\d{4}$/],\n [CountryCode.MK, /^\\d{4}$/],\n [CountryCode.MY, /^\\d{5}$/],\n [CountryCode.MV, /^\\d{5}$/],\n [CountryCode.MT, /^[A-Z]{3}[ ]?\\d{2,4}$/],\n [CountryCode.MU, /^((\\d|[A-Z])\\d{4})?$/],\n [CountryCode.MX, /^\\d{5}$/],\n [CountryCode.MD, /^\\d{4}$/],\n [CountryCode.MC, /^980\\d{2}$/],\n [CountryCode.MA, /^\\d{5}$/],\n [CountryCode.NP, /^\\d{5}$/],\n [CountryCode.NZ, /^\\d{4}$/],\n [CountryCode.NI, /^((\\d{4}-)?\\d{3}-\\d{3}(-\\d{1})?)?$/],\n [CountryCode.NG, /^(\\d{6})?$/],\n [CountryCode.OM, /^(PC )?\\d{3}$/],\n [CountryCode.PA, /^\\d{4}$/],\n [CountryCode.PK, /^\\d{5}$/],\n [CountryCode.PY, /^\\d{4}$/],\n [CountryCode.PH, /^\\d{4}$/],\n [CountryCode.PL, /^\\d{2}-\\d{3}$/],\n [CountryCode.PR, /^00[679]\\d{2}([ \\-]\\d{4})?$/],\n [CountryCode.RO, /^\\d{6}$/],\n [CountryCode.RU, /^\\d{6}$/],\n [CountryCode.SM, /^4789\\d$/],\n [CountryCode.SA, /^\\d{5}$/],\n [CountryCode.SN, /^\\d{5}$/],\n [CountryCode.SK, /^\\d{3}[ ]?\\d{2}$/],\n [CountryCode.SI, /^(SI-)?\\d{4}$/],\n [CountryCode.ZA, /^\\d{4}$/],\n [CountryCode.LK, /^\\d{5}$/],\n [CountryCode.TJ, /^\\d{6}$/],\n [CountryCode.TH, /^\\d{5}$/],\n [CountryCode.TN, /^\\d{4}$/],\n [CountryCode.TR, /^\\d{5}$/],\n [CountryCode.TM, /^\\d{6}$/],\n [CountryCode.UA, /^\\d{5}$/],\n [CountryCode.UY, /^\\d{5}$/],\n [CountryCode.UZ, /^\\d{6}$/],\n [CountryCode.VA, /^00120$/],\n [CountryCode.VE, /^\\d{4}$/],\n [CountryCode.ZM, /^\\d{5}$/],\n [CountryCode.AS, /^96799$/],\n [CountryCode.CC, /^6799$/],\n [CountryCode.CK, /^\\d{4}$/],\n [CountryCode.RS, /^\\d{5,6}$/],\n [CountryCode.ME, /^8\\d{4}$/],\n [CountryCode.CS, /^\\d{5}$/],\n [CountryCode.YU, /^\\d{5}$/],\n [CountryCode.CX, /^6798$/],\n [CountryCode.ET, /^\\d{4}$/],\n [CountryCode.FK, /^FIQQ 1ZZ$/],\n [CountryCode.NF, /^2899$/],\n [CountryCode.FM, /^(9694[1-4])([ \\-]\\d{4})?$/],\n [CountryCode.GF, /^9[78]3\\d{2}$/],\n [CountryCode.GN, /^\\d{3}$/],\n [CountryCode.GP, /^9[78][01]\\d{2}$/],\n [CountryCode.GS, /^SIQQ 1ZZ$/],\n [CountryCode.GU, /^969[123]\\d([ \\-]\\d{4})?$/],\n [CountryCode.GW, /^\\d{4}$/],\n [CountryCode.HM, /^\\d{4}$/],\n [CountryCode.IQ, /^\\d{5}$/],\n [CountryCode.KG, /^\\d{6}$/],\n [CountryCode.LR, /^\\d{4}$/],\n [CountryCode.LS, /^\\d{3}$/],\n [CountryCode.MG, /^\\d{3}$/],\n [CountryCode.MH, /^969[67]\\d([ \\-]\\d{4})?$/],\n [CountryCode.MN, /^\\d{5}$/],\n [CountryCode.MP, /^9695[012]([ \\-]\\d{4})?$/],\n [CountryCode.MQ, /^9[78]2\\d{2}$/],\n [CountryCode.NC, /^988\\d{2}$/],\n [CountryCode.NE, /^\\d{4}$/],\n [CountryCode.VI, /^008(([0-4]\\d)|(5[01]))([ \\-]\\d{4})?$/],\n [CountryCode.VN, /^\\d{5,6}$/],\n [CountryCode.PF, /^987\\d{2}$/],\n [CountryCode.PG, /^\\d{3}$/],\n [CountryCode.PM, /^9[78]5\\d{2}$/],\n [CountryCode.PN, /^PCRN 1ZZ$/],\n [CountryCode.PW, /^96940$/],\n [CountryCode.RE, /^9[78]4\\d{2}$/],\n [CountryCode.SH, /^(ASCN|STHL) 1ZZ$/],\n [CountryCode.SJ, /^\\d{4}$/],\n [CountryCode.SO, /^\\d{5}$/],\n [CountryCode.SZ, /^[HLMS]\\d{3}$/],\n [CountryCode.TC, /^TKCA 1ZZ$/],\n [CountryCode.WF, /^986\\d{2}$/],\n [CountryCode.XK, /^\\d{5}$/],\n [CountryCode.YT, /^976\\d{2}$/],\n [CountryCode.GI, /^GX11 1AA/],\n [CountryCode.BT, /^\\d{5}/],\n [CountryCode.AL, /^\\d{4}/],\n [CountryCode.CU, /^\\d{5}/],\n [CountryCode.UM, /^96898/],\n [CountryCode.AI, /^(?:AI-)?2640/],\n [CountryCode.AF, /^\\d{4}/],\n [CountryCode.SD, /^\\d{5}/],\n [CountryCode.VC, /^VC\\d{4}/],\n [CountryCode.TA, /^TDCU 1ZZ/],\n [CountryCode.NA, /^\\d{5}/],\n [CountryCode.EH, /^\\d{5}/],\n [CountryCode.BL, /^9[78][01]\\d{2}/],\n [CountryCode.TZ, /^\\d{4,5}/],\n [CountryCode.AC, /^ASCN 1ZZ/],\n [CountryCode.VG, /^VG\\d{4}/],\n [CountryCode.MZ, /^\\d{4}/],\n [CountryCode.MF, /^9[78][01]\\d{2}/],\n [CountryCode.MM, /^\\d{5}/],\n [CountryCode.SV, /^CP [1-3][1-7][0-2]\\d/],\n [CountryCode.IR, /^\\d{5}-?\\d{5}/],\n [CountryCode.PE, /^[0-2]\\d{4}$/],\n [CountryCode.INTL, /^(?:[A-Z0-9]+([- ]?[A-Z0-9]+)*)?$/i],\n [CountryCode.CO, /^(0[58]|1[135789]|2[0357]|4[147]|5[024]|6[368]|7[036]|8[1568]|9[4579])\\d{4}$/],\n]);\n","import { POSTCODE_REGEXES } from './postcode-regexes';\nexport { CountryCode } from './postcode-types';\nexport const postcodeValidator = (postcode, country) => {\n if (!POSTCODE_REGEXES.has(country)) {\n // throw Error if country code is unrecognised\n throw Error(`Invalid country code: ${country}`);\n }\n return POSTCODE_REGEXES.get(country).test(postcode);\n};\nexport const postcodeValidatorExistsForCountry = (country) => {\n return POSTCODE_REGEXES.has(country);\n};\n","'use strict'\n\nconst lookup = [0, 2, 4, 6, 8, 1, 3, 5, 7, 9]\n\nmodule.exports = function luhn (number) {\n if (typeof number !== 'string') throw new TypeError('Expected string input')\n if (!number) return false\n\n let index = number.length\n let x2 = true\n let sum = 0\n\n while (index) {\n const value = number.charCodeAt(--index) - 48\n if (value < 0 || value > 9) return false\n\n x2 = !x2\n sum += x2 ? lookup[value] : value\n }\n\n return sum % 10 === 0\n}\n","import { type Dispatch, type Store } from \"redux\";\nimport { type InjectedIntl } from \"react-intl\";\n\nimport { type Flags } from \"@jslib/shared/flags\";\nimport { type ThemeChoices } from \"@jslib/shared/CustomCssContextProvider\";\n\nimport { type FormFieldConfigType } from \"@components/FormFields/FormFieldCustom/FormFieldCustom\";\nimport { type TryAgainAction } from \"@components/TryAgainAction\";\n\nimport {\n type RewardDisplayEnum,\n type Locale,\n type IdCheckLoopServiceType,\n type ThirdPartyLoopProvider,\n} from \"@/lib/types/runtimeTypes\";\nimport { type hooks } from \"@/lib/hooks\";\nimport { type NestedKeyOf, type DeepPartial } from \"@/lib/types/helpers\";\nimport { type ViewModelUpdateOptions } from \"@/lib/VerificationService/ViewModel\";\n\nexport { type Locale } from \"./runtimeTypes\";\nexport type { NavigatorBeta } from \"@jslib/shared/runtimeTypes\";\n\n/**\n * SheerID Javascript Library types and interfaces\n */\n\n/**\n * The interface exposed on the window object\n */\nexport interface SheerIdJsApi {\n getMetadata(): Metadata;\n setMetadata(metadata: Metadata): void;\n resetMetadata(): void;\n setOptions(options: Options): void;\n resetOptions(): void;\n VerificationForm: new (element: HTMLElement, programId: DatabaseId) => void;\n addHook(hook: Hook): RegisteredHooks;\n refreshStore(): void;\n hooks: typeof hooks;\n conversion: Conversion;\n setViewModel(viewModel: ViewModel | {}): void;\n resetViewModel(): void;\n overrideComponent: (\n componentName: OverrideableComponentName,\n newComponent: StepComponent,\n ) => void;\n resetOverriddenComponents: () => void;\n postVerificationSizeUpdates(options: PostMessagesOptions): void;\n getMessages(\n locale: Locale,\n programThemeMessages?: ProgramThemeMessages,\n segment?: Segment,\n ): Promise<StringMap>;\n collectDeviceProfile(verificationId: string, programId: string): void;\n resetStore: () => void;\n setProgramTheme(theme: Partial<ProgramTheme>): void;\n}\n\nexport interface FormFieldConfig {\n fieldId: PersonalInfoFieldId | string; // should be camelCase. Will be used as the key in metadata where the value is stored. Also used to build localization message keys\n disabled?: boolean;\n requireIfOptional?: boolean; // Allows optional fields to be set as required\n hidden?: boolean;\n}\n\nexport interface CustomFormFieldConfig extends FormFieldConfig {\n fieldType: (typeof FormFieldConfigType)[keyof typeof FormFieldConfigType]; // Currently \"text\"|\"checkbox\"|\"select\"|\"radio\"|\"date\"|\"dateYm\"\n validate: (value: string | boolean) => ErrorId | ExtendedErrorId; // If value is invalid, return an error id or string so the error msg can be localized and shown\n showPlaceholderAndHideLabel?: boolean;\n required?: boolean;\n options?: string[]; // the options will be converted to a FormSelectChoice[] when passed into the formSelectComponent\n // each FormSelectChoice value will be each option and the labels will be prefixed with the fieldId. Example -> {config.fieldId}.{option}\n}\n\nexport interface UtilsApi {\n determineDevice: (verificationId: DatabaseId, programId: DatabaseId) => void;\n setOptions(options: Options): void;\n}\n\n// #region Private ---------------------------------------------------------------------\n/**\n * @description Require only properties of type T\n * @private\n * Example:\n type A = { foo: string }\n\n function bar(newObject: PropertiesOf<A>) {...}\n\n bar({ foo: 'baz' }) // valid\n bar({ otherProp: 'stuff' }) // invalid\n */\nexport type PropertiesOf<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n {\n [K in Keys]-?: Required<Pick<T, K>>;\n }[Keys];\n\n/**\n * @private\n */\nexport type StringMap = {\n [a: string]: string;\n};\n// #endregion Private ------------------------------------------------------------------\n\n// #region GeneralPurpose --------------------------------------------------------------\n/**\n * @example 5bbd127d9781852f68e14ddc\n * @template 24 digit hexadecimal\n */\nexport type DatabaseId = string;\n\n/**\n * @example { 'someKey': 'someValue' }\n */\nexport type Metadata = { [key: string]: string | boolean };\n\n// #endregion GeneralPurpose -----------------------------------------------------------\n\n// #region Options ---------------------------------------------------------------------\n/**\n * @description Configurable options that can be passed when initializing this library.\n */\nexport type Options = {\n restApi?: RestApiOptions;\n logLevel?: LogLevel;\n mockStep?: MockStep;\n mockSegment?: Segment;\n mockSubSegment?: SubSegment;\n mockErrorId?: ErrorId;\n mockErrorDetailId?: ErrorDetailId;\n mockCaptchaState?: MockCaptchaState;\n mockRewardCode?: string;\n mockRedirectUrl?: string;\n mockConsumerInfoState?: ConsumerInfoState;\n mockIdCheckLoopServiceType?: IdCheckLoopServiceType;\n mockPreviousStep?: VerificationStep;\n mockDocSelected?: string;\n installPageUrl?: string;\n mockResponse?: VerificationResponse;\n // Whether to fetch the program theme or not. False to avoid fetching the theme, for less network overhead.\n // Supply your own language, or use built-in defaults.\n doFetchTheme?: boolean;\n locale?: Locale;\n messages?: object;\n messagesWithLocale?: Partial<Record<Locale, object>>;\n urlFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlStudentFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlSeniorFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlAgeFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlMilitaryFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlTeacherFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlMemberFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlFirstResponderFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlMedicalFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlEmploymentFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlIdentityFaq?: string;\n /**\n * @deprecated since version 1.63\n */\n urlLicensedProfessionalFaq?: string;\n urlLowIncomeFaq?: string;\n urlAddSchoolFaq?: string;\n urlAddSchoolForm?: string;\n customCss?: ProgramTheme[\"customCss\"];\n logoUrl?: ProgramTheme[\"logoUrl\"];\n privacyPolicyUrl?: ProgramTheme[\"privacyPolicyUrl\"];\n\n cookies?: CookieOptions;\n useFingerprinting?: boolean;\n marketConsent?: MarketConsentOptions;\n customMetadata?: MetadataConfig;\n verificationId?: string;\n externalUserId?: string;\n minimumOrganizationSearchLength?: number;\n\n httpRequestTimeout?: number;\n\n hideTestModeFlag?: boolean;\n\n /**\n * @deprecated\n */\n hideMilitaryFamilyAcceptableUploads?: boolean;\n\n customFormFields?: CustomFormFieldConfig[];\n formFieldConfig?: FormFieldConfig[];\n tryAgainAction?: TryAgainAction;\n\n // adding as part of HC-202 Launch Darkly experimentation trial\n _launchDarklyUserTargeting?: boolean;\n // provide Launch Darkly flags for MySheerID\n _launchDarklyFlagCb?: (flags: Flags) => void;\n\n /**\n * Supports backwards compatibility with consumers who render the a verification form directly on their page, preventing the landing page from rendering within their container.\n * This option may be removed in v2.\n */\n renderAs?: \"default\" | \"landingPage\";\n};\n\nexport type RestApiOptions = {\n serviceUrl: string;\n resources?: RestResources;\n};\n\n/**\n * @description Control how cookies behave\n * @field `expires` Number of days for cookie to expire in. Use 0 to expire in same browser session.\n * @field `secure` Whether the cookie is set securely.\n */\nexport type CookieOptions = {\n expires: number;\n secure: boolean;\n enabled: boolean;\n path?: string;\n domain?: string;\n sameSite?: \"lax\" | \"strict\" | \"none\";\n};\n\nexport type MockCaptchaState = \"loading\" | \"success\" | \"hidden\" | \"error\";\n\nexport type MarketConsentOptions = {\n enabled: boolean;\n required: boolean;\n message: string;\n};\n\nexport type MetadataConfig = {\n enabled: boolean;\n keys: string[];\n requiredKeys?: string[];\n};\n\nexport type RestResources = {\n verification: string;\n program: ProgramResources;\n conversion: ConversionResources;\n};\n\nexport type ProgramResources = {\n base: string;\n theme: string;\n organization: string;\n};\n\n/**\n * @description Configuration for a verification being displayed on an iframe.\n */\nexport type IframeUserConfiguration = {\n closeButtonText?: string;\n mobileRedirect?: boolean;\n mobileThreshold?: string | number;\n stopPropagation?: boolean;\n};\n\n/**\n * @description URL of a verification to be displayed.\n */\nexport type VerificationUrl = string;\n\n/**\n * @description Options for the message events send by a verification loaded on an iframe.\n * These event are used to resize a modal containing a verification.\n */\nexport type PostMessagesOptions = {\n origin: VerificationUrl;\n interval: number;\n};\n\nexport type PostMessageAction =\n | {\n type: \"updateHeight\";\n action?: \"updateHeight\"; // @deprecated - need to support older versions of the jslib\n height: number;\n }\n | {\n type: \"focus\";\n action?: \"focus\"; // @deprecated - need to support older versions of the jslib\n focusOn: \"firstElement\" | \"lastElement\";\n }\n | {\n type: \"hook\";\n action?: never;\n hook: HookData;\n };\n\nexport type PostMessageData = {\n verificationIframeUid: string;\n action: PostMessageAction;\n};\n/**\n * @description URLs related to conversion endpoints.\n */\nexport type ConversionResources = {\n base: string;\n};\n\nexport type LogLevel = \"info\" | \"log\" | \"warn\" | \"error\" | \"silent\";\n// #endregion Options ------------------------------------------------------------------\n\n// #region FormFields ------------------------------------------------------------------\n/**\n * @description Interface for individual field instances, such as BirthdateField\n * @example new sheerid.BirthdateField().setValue('2000-01-01');\n */\nexport interface DiscreteField {\n getValue(): any;\n setValue(value: any): void;\n onChange(callback: Function): void; // TODO callback should be of a type that receives value, isErrored, etc\n setIsErrored(value: boolean): void;\n render(): void;\n}\n\n/**\n * @todo document constraints here\n */\nexport type Email = string;\n\n/**\n * @example (111) 222-3333 | 1112223333 | 111-222-3333\n * TODO - Update this when PhoneNumberValidator regex changes.\n */\nexport type PhoneNumber = string;\n\n/**\n * @example 2013-03-06\n * @template ISO-8601 'YYYY-MM-DD'\n */\nexport type BirthDate = string;\n\n/**\n * @example 1234567 | A01205257\n */\nexport type MemberId = string;\n\n/**\n * @example 2013-03-06\n * @template ISO-8601 'YYYY-MM-DD'\n * The `day` portion of this date is not editable or displayed to the user\n */\nexport type DischargeDate = string;\n\n/**\n * @example 2013-03-06\n * @template ISO-8601 'YYYY-MM-DD'\n */\nexport type ActiveDutyStartDate = string;\n\n/**\n * @description TODO\n */\nexport const MILITARY_STATUS = [\n \"ACTIVE_DUTY\",\n \"VETERAN\",\n \"RESERVIST\",\n \"MILITARY_RETIREE\",\n \"MILITARY_FAMILY\",\n \"GOLD_STAR_FAMILY\",\n] as const;\nexport type MilitaryStatus = (typeof MILITARY_STATUS)[number];\n\n/**\n * @description TODO\n */\nexport const FIRST_RESPONDER_STATUS = [\n \"FIREFIGHTER\",\n \"EMT\",\n \"POLICE\",\n \"SEARCH_AND_RESCUE\",\n] as const;\nexport type FirstResponderStatus = (typeof FIRST_RESPONDER_STATUS)[number];\n\nexport const MEDICAL_PROFESSIONAL_STATUS = [\n \"NURSE\",\n \"DOCTOR\",\n \"DENTIST\",\n \"PHARMACIST\",\n \"OTHER_HEALTH_WORKER\",\n] as const;\nexport type MedicalProfessionalStatus = (typeof MEDICAL_PROFESSIONAL_STATUS)[number];\n\nexport const LICENSED_PROFESSIONAL_STATUS = [\n \"LICENSED_COSMETOLOGIST\",\n \"LICENSED_REAL_ESTATE_AGENT\",\n \"VETERINARIAN\",\n \"CHILD_CARE_WORKER\",\n \"LIBRARIAN\",\n \"INTERIOR_DESIGNER\",\n \"ARCHITECT\",\n \"GENERAL_CONTRACTOR\",\n \"NUTRITION_PROFESSIONAL\",\n] as const;\nexport type LicensedProfessionalStatus = (typeof LICENSED_PROFESSIONAL_STATUS)[number];\n\nexport const RECENT_MOVER_STATUS = [\"HOME_BUYER\", \"OTHER_MOVER\"] as const;\nexport type RecentMoverStatus = (typeof RECENT_MOVER_STATUS)[number];\n\nexport const LOW_INCOME_STATUS = [\n \"SNAP_BENEFITS\",\n \"OTHER_GOVERNMENT_ASSISTANCE\",\n \"COMMUNITY_ELIGIBILITY_PROVISION\",\n] as const;\nexport type LowIncomeStatus = (typeof LOW_INCOME_STATUS)[number];\n\n/**\n * @description TODO\n */\nexport type OrganizationId = number;\n\n/**\n * @description TODO\n */\nexport type OrganizationName = string;\n\n/**\n * @description All possible fields which show up on the personal info steps\n */\nexport type PersonalInfoFieldId =\n | \"firstName\"\n | \"lastName\"\n | \"memberId\"\n | \"organization\"\n | \"birthDate\"\n | \"email\"\n | \"phoneNumber\"\n | \"postalCode\"\n | \"address1\"\n | \"city\"\n | \"state\"\n | \"dischargeDate\"\n | \"activeDutyStartDate\"\n | \"status\"\n | \"statuses\"\n | \"country\"\n | \"socialSecurityNumber\"\n | \"marketConsentValue\"\n | \"ebtCardNumber\"\n | \"cvecNumber\"\n | \"driverLicenseNumber\";\n\n/**\n * @description All possible fields\n */\nexport type FieldId =\n | PersonalInfoFieldId\n | \"docUpload\"\n | \"carrierConsentValue\"\n | \"overrideCode\"\n | \"organizationEmail\"\n | \"authenticationCode\"\n | \"smsCode\"\n | \"captchaToken\";\n\nexport type FormValidationOptions = {\n minAge?: number;\n maxAge?: number;\n smsLoopEnabled?: boolean;\n strictMilitaryValidationEnabled?: boolean;\n transitionalMilitaryValidityDays?: number;\n currentStep?: VerificationStep;\n viewModel?: ViewModel;\n};\n\n/**\n * @description TODO\n */\nexport type ExtendedFieldId = FieldId | string;\n\n/**\n * @description The object that contains all possible field ids for setting & displaying field errors, if any\n */\nexport type FieldValidationErrors = {\n [P in FieldId]: ErrorId;\n};\n\n/**\n * @description TODO\n */\nexport type ExtendedFieldValidationErrors = StringMap;\n\n/**\n * @description TODO\n */\nexport type FieldContent =\n | string\n | number\n | File\n | FormSelectChoice<Country, string>\n | Organization\n | boolean;\n\n/**\n * @private\n */\nexport type Organization = {\n id: OrganizationId;\n name: OrganizationName;\n country?: Country;\n type?: OrganizationType;\n idExtended?: string;\n source?: OrganizationRemoteSource;\n city?: string;\n state?: string;\n latitude?: number;\n longitude?: number;\n};\n\n/**\n * @private\n */\nexport type OrganizationRemoteSource = \"EMPLOYER\" | \"PLACE\";\n\n/**\n * @private\n */\nexport type OrganizationSearchResp = Organization[];\n\n/**\n * @description A model to back many of this library's `<select>` elements.\n * For compatibility, a default for value of `string` or `number` is allowed.\n * Made generic to allow arbitrary types (e.g. `FormSelectChoice<Locale, string>`)\n */\nexport type FormSelectChoice<v = string | number, l = string> = {\n value: v;\n label: l;\n};\n\nexport type InputSelectOnKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => void;\n\nexport interface FormFieldComponentProps<T = any> {\n onChange: (value: T) => void;\n value: T;\n intl?: InjectedIntl;\n autoFocus?: boolean;\n isErrored?: boolean;\n errorId?: ErrorId;\n isRequired?: boolean;\n onKeyDown?: Function;\n placeholder?: string;\n label?: JSX.Element;\n verificationService?: VerificationService;\n disabled?: boolean;\n}\n\n// #region Refs ---------------------------------------------------------------------\n/**\n * @description Configurable refs that can be defined when rendering FormField components.\n */\nexport type FieldRef = {\n fieldId: FieldId | ExtendedFieldId;\n ref: HTMLElement;\n};\n\nexport interface VerificationServiceProps {\n verificationService: VerificationService;\n}\n\n// TODO fix \"any\" default type. I think it's supposed to be string | number\nexport interface InputSelectComponentProps<T = any> {\n onChange: (choice: T) => void;\n options: FormSelectChoice[];\n value: T;\n isErrored?: boolean;\n isRequired?: boolean;\n onKeyDown?: InputSelectOnKeyDown;\n placeholder?: string;\n label?: string | JSX.Element;\n intl?: InjectedIntl;\n suppressPlaceholder?: boolean;\n disabled?: boolean;\n}\n// #endregion FormFields ---------------------------------------------------------------\n\n// #region Errors ----------------------------------------------------------------------\nexport type ErrorId =\n | \"activeDutyStartDateBeforeBirthDate\"\n | \"apiRateLimitExceeded\"\n | \"dischargeDateBeforeBirthDate\"\n | \"docReviewLimitExceeded\"\n | \"inactiveProgram\"\n | \"expiredProgram\"\n | \"expiredEmailLoopToken\"\n | \"expiredSMSCode\"\n | \"expiredVerification\"\n | \"fraudRulesReject\"\n | \"futureBirthDate\"\n | \"futureDischargeDate\"\n | \"futureActiveDutyStartDate\"\n | \"incorrectVerificationOverrideCodeAttemptLimitExceeded\"\n | \"ineligibleOrganization\"\n | \"internalServerError\"\n | \"invalidActiveDutyStartDate\"\n | \"invalidAddress\"\n | \"invalidApiToken\"\n | \"invalidBirthDate\"\n | \"invalidCaptchaToken\"\n | \"invalidCity\"\n | \"invalidCountry\"\n | \"invalidCvecNumber\"\n | \"invalidDischargeDate\"\n | \"invalidDocUploadToken\"\n | \"invalidEbtCardNumber\"\n | \"invalidEmail\"\n | \"invalidFileSizeEmpty\"\n | \"invalidFileSizeMax\"\n | \"invalidFirstName\"\n | \"invalidFirstResponderStatus\"\n | \"invalidLastName\"\n | \"invalidMemberId\"\n | \"invalidMilitaryStatus\"\n | \"invalidNumberOfFiles\"\n | \"invalidOptIn\"\n | \"invalidOrganization\"\n | \"invalidOverrideCode\"\n | \"invalidPhoneNumber\"\n | \"invalidPostalCode\"\n | \"invalidProgram\"\n | \"invalidRequest\"\n | \"invalidSMSCode\"\n | \"invalidSocialSecurityNumber\"\n | \"invalidState\"\n | \"invalidStatus\"\n | \"invalidStatuses\"\n | \"invalidDriverLicenseNumber\"\n | \"invalidStep\"\n | \"invalidAuthenticationLoopToken\"\n | \"marketConsentRequired\"\n | \"maxMetadataLengthExceeded\"\n | \"maxMetadataValuesExceeded\"\n | \"maxSMSCodeLimitExceeded\"\n | \"incorrectSMSCodeAttemptLimitExceeded\"\n | \"noProgram\"\n | \"noRemainingRewardCodes\"\n | \"notApproved\"\n | \"notFound\"\n | \"noValidFiles\"\n | \"noVerification\"\n | \"outsideAgePerson\"\n | \"simulatedError\"\n | \"unauthorizedAccountStatus\"\n | \"unauthorizedDomain\"\n | \"underagePerson\"\n | \"unknownError\"\n | \"unsupportedDocMimeType\"\n | \"verificationLimitExceeded\"\n | \"invalidEmailLoopToken\"\n | \"missingRequiredMetadata\"\n | \"missingRequiredExternalId\"\n | \"invalidAuthenticationLoopToken\"\n | \"duplicateFile\"\n | NetworkErrorId;\n\nexport type NetworkErrorId = \"failedToFetch\" | \"requestTimeout\";\n\nexport type ExtendedErrorId = string | undefined;\n\nexport type WarningId = \"openOrganization\";\n\nexport type ErrorDetailId =\n | \"govIdOtherFailure\"\n | \"govIdMismatch\"\n | \"govIdRetakeBiometric\"\n | \"govIdRetakeId\"\n | \"govIdUnsupportedDoc\"\n | \"personLimit\"\n | \"troubleVerifying\"\n | \"unableToVerify\"\n | \"vpnsNotAllowed\";\n\nexport type RejectionReasons =\n | \"DOCUMENT_UNREADABLE\"\n | \"DOCUMENT_PASSWORD_PROTECTED\"\n | \"DOCUMENT_LIKELY_FRAUD\"\n | \"DOCUMENT_UNSUPPORTED\"\n | \"DOCUMENT_HANDWRITTEN\"\n | \"MISSING_INFORMATION\"\n | \"MISSING_INFORMATION_PERSON_NAME\"\n | \"MISSING_INFORMATION_ORGANIZATION_NAME\"\n | \"DOCUMENT_EXPIRED\"\n | \"DOCUMENT_OUTDATED\"\n | \"MISMATCH_PERSON_NAME\"\n | \"MISMATCH_ORGANIZATION\"\n | \"MISMATCH_STATUS\"\n | \"INELIGIBLE_ORGANIZATION\"\n | \"MISSING_INFORMATION_UNIVERSITY_ENROLLMENT\"\n | \"INELIGIBLE_PERSON_HIGH_SCHOOL_STUDENT\"\n | \"MISSING_INFORMATION_AFFILIATION_US_ARMED_FORCES\"\n | \"MISMATCH_COMPANY_NAME_OR_ADDRESS\"\n | \"PAYSTUB_OUTDATED_LAST_30_DAYS\"\n | \"MISSING_INFORMATION_BIRTHDATE\"\n | \"MISMATCH_BIRTHDATE\"\n | \"DOCUMENT_OUTDATED_FACULTY\"\n | \"MISSING_OR_MISMATCH_JOB_TITLE\"\n | \"RESTRICTED_DOCUMENT\"\n | \"DOCUMENT_EMAIL_SCREENSHOT\"\n | \"OTHER_CONTACT_US\";\n// #endregion Errors -----------------------------------------------------------------------\n\n// #region Steps -----------------------------------------------------------------------\nexport type VerificationStep =\n | \"collectStudentPersonalInfo\"\n | \"collectTeacherPersonalInfo\"\n | \"collectMemberPersonalInfo\"\n | \"collectMilitaryStatus\"\n | \"collectActiveMilitaryPersonalInfo\"\n | \"collectInactiveMilitaryPersonalInfo\"\n | \"collectSeniorPersonalInfo\"\n | \"collectAgePersonalInfo\"\n | \"collectFirstResponderPersonalInfo\"\n | \"collectMedicalProfessionalPersonalInfo\"\n | \"collectEmployeePersonalInfo\"\n | \"collectDriverLicensePersonalInfo\"\n | \"collectGeneralIdentityPersonalInfo\"\n | \"collectHybridIdentityPersonalInfo\"\n | \"collectLicensedProfessionalPersonalInfo\"\n | \"collectLowIncomePersonalInfo\"\n | \"collectMoverPersonalInfo\"\n | \"collectSocialSecurityNumber\"\n | \"collectIdentifier\"\n | \"collectPersonalInfo\"\n | \"cancelSocialSecurityNumber\"\n | \"docUpload\"\n | \"pending\"\n | \"docReviewLimitExceeded\"\n | \"success\"\n | \"error\"\n | \"sso\"\n | \"smsLoop\"\n | \"emailLoop\"\n | \"emailLoopCollectOrganizationEmail\"\n | \"completeAuthentication\"\n | \"cancelEmailLoop\"\n | \"idCheckLoop\"\n | \"consolation\"\n | \"override\"\n | \"cancelDocUpload\"\n | \"missingRequiredMetadata\"\n | \"missingRequiredExternalId\"\n | \"thirdPartyLoop\";\n\nexport type VerificationStepMap<T> = {\n [P in VerificationStep]: T;\n};\n\nexport type MockStep = VerificationStep | \"loading\" | \"collect\";\n\nexport type OverrideableComponentName =\n | \"StepStudentPersonalInfoComponent\"\n | \"StepSeniorPersonalInfoComponent\"\n | \"StepAgePersonalInfoComponent\"\n | \"StepTeacherPersonalInfoComponent\"\n | \"StepMemberPersonalInfoComponent\"\n | \"StepCollectMilitaryStatusComponent\"\n | \"StepActiveMilitaryPersonalInfoComponent\"\n | \"StepInactiveMilitaryPersonalInfoComponent\"\n | \"StepFirstResponderPersonalInfoComponent\"\n | \"StepMedicalProfessionalPersonalInfoComponent\"\n | \"StepEmploymentPersonalInfoComponent\"\n | \"StepDriverLicensePersonalInfoComponent\"\n | \"StepGeneralIdentityPersonalInfoComponent\"\n | \"StepHybridIdentityPersonalInfoComponent\"\n | \"StepLicensedProfessionalPersonalInfoComponent\"\n | \"StepLowIncomePersonalInfoComponent\"\n | \"StepMoverPersonalInfoComponent\"\n | \"StepSuccessComponent\"\n | \"StepConsolationComponent\"\n | \"StepDocUploadComponent\"\n | \"StepOverrideComponent\"\n | \"StepPendingComponent\"\n | \"StepPendingEmailLoopComponent\"\n | \"StepErrorComponent\"\n | \"StepSSOComponent\"\n | \"StepSMSLoopComponent\"\n | \"StepEmailLoopComponent\"\n | \"StepIDCheckLoopComponent\"\n | \"StepSocialSecurity\"\n | \"StepCollectIdentifierComponent\"\n | \"StepCompleteAuthentication\"\n | \"StepCollectPersonalInfo\"\n | \"StepThirdPartyLoopComponent\";\n\nexport type StepComponent = React.FunctionComponent<{ verificationService: VerificationService }>;\n// #endregion Steps -----------------------------------------------------------------------\n\n// #region Segments --------------------------------------------------------------------\nexport type Segment =\n | \"student\"\n | \"military\"\n | \"teacher\"\n | \"member\"\n | \"senior\"\n | \"age\"\n | \"firstResponder\"\n | \"medical\"\n | \"employment\"\n | \"identity\"\n | \"licensedProfessional\"\n | \"recentMover\"\n | \"lowIncome\";\n\nexport type SubSegment =\n | \"college\"\n | \"highSchool\"\n | \"police\"\n | \"emt\"\n | \"fireFighter\"\n | \"nurse\"\n | \"doctor\"\n | \"driverLicense\"\n | \"generalIdentity\"\n | \"hybridIdentity\"\n | \"licensedCosmetologists\"\n | \"licensedRealState\"\n | \"homeBuyer\"\n | \"otherMover\"\n | \"snapBenefits\"\n | SubSegmentMilitary;\n\nexport type SubSegmentMilitary =\n | \"activeDuty\"\n | \"reservist\"\n | \"veteran\"\n | \"retiree\"\n | \"militaryFamily\"\n | \"goldStarFamily\";\n// #endregion Segments -----------------------------------------------------------------------\n\n// #region Organization Types ----------------------------------------------------------\nexport type OrganizationType =\n | \"UNIVERSITY\"\n | \"POST_SECONDARY\"\n | \"MEMBERSHIP\"\n | \"MILITARY\"\n | \"FIRST_RESPONDER\"\n | \"MEDICAL\"\n | \"NON_PROFIT\"\n | \"CORPORATE\"\n | \"K12\"\n | \"AGE_ID\"\n | \"HIGH_SCHOOL\"\n | \"NONE\"\n | \"LOW_INCOME_PROGRAM\";\n// #endregion Organization Types -------------------------------------------------------\n\n// #region Requests and View Models ----------------------------------------------------\nexport type NewVerificationRequest = {\n programId: DatabaseId;\n trackingId?: string;\n installPageUrl?: string;\n};\n\nexport type AllStatuses =\n | MilitaryStatus\n | MedicalProfessionalStatus\n | FirstResponderStatus\n | RecentMoverStatus\n | LicensedProfessionalStatus\n | LowIncomeStatus\n | RecentMoverStatus;\n\n/**\n * @description The request to submit when verification is on the step \"collectStudentPersonalInfo\"\n */\nexport type StudentPersonalInfoRequest = {\n birthDate: BirthDate;\n cvecNumber?: string;\n} & WithOrganization &\n WithCoreFields;\n\nexport type StudentPersonalInfoViewModel = StudentPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectSeniorPersonalInfo\"\n */\nexport type SeniorPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n} & WithCoreFields;\n\nexport type SeniorPersonalInfoViewModel = SeniorPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectAgePersonalInfo\"\n */\nexport type AgePersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n phoneNumber: PhoneNumber;\n country: Country;\n city?: string;\n address1?: string;\n} & WithCoreFields;\n\nexport type AgePersonalInfoViewModel = AgePersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectMilitaryStatus\"\n */\nexport type MilitaryStatusRequest = {\n status: MilitaryStatus;\n};\n\n/**\n * @description The request to submit when verification is on the step \"collectActiveMilitaryPersonalInfo\"\n */\nexport type ActiveMilitaryPersonalInfoRequest = {\n birthDate: BirthDate;\n dischargeDate?: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type ActiveMilitaryPersonalInfoViewModel = {\n status: MilitaryStatus;\n} & ActiveMilitaryPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectInactiveMilitaryPersonalInfo\"\n */\nexport type InactiveMilitaryPersonalInfoRequest = {\n birthDate: BirthDate;\n dischargeDate: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type InactiveMilitaryPersonalInfoViewModel = {\n status: MilitaryStatus;\n city?: string;\n state?: State;\n address1?: string;\n postalCode?: string;\n} & InactiveMilitaryPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectTeacherPersonalInfo\"\n */\nexport type TeacherPersonalInfoRequest = {\n birthDate?: BirthDate;\n postalCode?: string;\n} & WithOrganization &\n WithCoreFields;\n\nexport type TeacherPersonalInfoViewModel = TeacherPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectMemberPersonalInfo\"\n */\nexport type MemberPersonalInfoRequest = {\n memberId?: MemberId;\n birthDate?: BirthDate;\n phoneNumber?: PhoneNumber;\n postalCode?: string;\n address1?: string;\n city?: string;\n state?: string;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type MemberPersonalInfoViewModel = MemberPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectFirstResponderPersonalInfo\"\n * Provide postalCode when organization.id = 0 for better verification results.\n */\nexport type FirstResponderPersonalInfoRequest = {\n birthDate: BirthDate;\n status: FirstResponderStatus;\n statuses?: FirstResponderStatus[];\n postalCode?: string;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type FirstResponderPersonalInfoViewModel = FirstResponderPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type MedicalStatusRequest = {\n status: MedicalProfessionalStatus;\n};\n\n/**\n * @description The request to submit when verification is on the step \"collectMedicalProfessionalPersonalInfo\"\n */\nexport type MedicalProfessionalPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n status: MedicalProfessionalStatus;\n memberId: string;\n country?: Country;\n} & WithOrganization &\n WithCoreFields;\n\nexport type MedicalProfessionalPersonalInfoViewModel = MedicalProfessionalPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectEmployeePersonalInfo\"\n */\nexport type EmploymentPersonalInfoRequest = {\n postalCode: string;\n phoneNumber?: PhoneNumber;\n shouldCollectAddress?: boolean;\n country?: Country;\n} & WithAddress &\n WithOrganization &\n WithCoreFields;\n\nexport type SMSLoopVerificationRequest = {\n smsCode: string;\n deviceFingerprintHash?: string;\n};\n\nexport type EmailLoopVerificationRequest = {\n emailToken: string;\n deviceFingerprintHash?: string;\n};\n\nexport type EmailLoopCollectOrganizationRequest = {\n emailAddress: string;\n};\n\nexport type IDCheckLoopVerificationRequest = {};\n\nexport type EmploymentPersonalInfoViewModel = EmploymentPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectDriverLicensePersonalInfo\"\n */\nexport type DriverLicensePersonalInfoRequest = {\n driverLicenseNumber: string;\n state: string;\n} & WithCoreFields;\n\nexport type DriverLicensePersonalInfoViewModel = DriverLicensePersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type GeneralIdentityPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n} & WithAddress &\n WithCoreFields;\n\nexport type GeneralIdentityPersonalInfoViewModel = GeneralIdentityPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type HybridIdentityPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n driverLicenseNumber: string;\n} & WithAddress &\n WithCoreFields;\n\nexport type HybridIdentityPersonalInfoViewModel = HybridIdentityPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectLicensedProfessionalPersonalInfo\"\n */\nexport type LicensedProfessionalPersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n statuses: LicensedProfessionalStatus[];\n} & WithCoreFields &\n WithOrganization;\n\nexport type LicensedProfessionalPersonalInfoViewModel = LicensedProfessionalPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectMoverPersonalInfo\"\n */\nexport type MoverPersonalInfoRequest = {\n address1: string;\n postalCode: string;\n statuses: RecentMoverStatus[];\n} & WithCoreFields;\n\nexport type MoverPersonalInfoViewModel = MoverPersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type SocialSecurityRequest = {\n socialSecurityNumber: number;\n};\n\nexport type SocialSecurityResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n cancelUrl: string;\n currentStep: \"collectSocialSecurityNumber\";\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\nexport type SocialSecurityViewModel = {\n socialSecurityNumber: string;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"collectLowIncomePersonalInfo\"\n */\nexport type LowIncomePersonalInfoRequest = {\n birthDate: BirthDate;\n postalCode: string;\n statuses: LowIncomeStatus[];\n ebtCardNumber?: string;\n} & WithCoreFields &\n WithAddress &\n Partial<WithOrganization>;\n\nexport type LowIncomePersonalInfoViewModel = LowIncomePersonalInfoRequest &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type CollectIdentifierRequest = {\n email: string;\n};\n\nexport type CollectIdentifierResponse = {\n submissionUrl: string;\n} & VerificationResponse;\n\nexport type CollectIdentifierViewModel = {\n email: string;\n transactionId: string;\n expirationTimestamp: string;\n remembered: boolean;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type CompleteAuthenticationRequest = {\n authenticationToken: string;\n};\n\nexport type CompleteAuthenticationResponse = {\n cancelUrl: string;\n submissionUrl: string;\n} & VerificationResponse;\n\nexport type CompleteAuthenticationViewModel = {\n authenticationCode?: string;\n email?: string;\n didManuallyVerify?: boolean;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type CollectPersonalInfoRequest = {\n driverLicenseNumber?: string;\n memberId?: MemberId;\n postalCode?: string;\n ebtCardNumber?: string;\n statuses?: AllStatuses[];\n birthDate?: BirthDate;\n socialSecurityNumber?: string;\n dischargeDate?: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n country?: Country;\n} & Partial<WithCoreFields> &\n Partial<WithOrganization> &\n Partial<WithAddress>;\n\n/**\n * Response from REST API indicating that CollectPersonalInfoViewModel is expected to be submitted next.\n */\nexport type CollectPersonalInfoResponse = {\n submissionUrl: string;\n availableStatuses?: AllStatuses[];\n country?: string;\n currentStep: \"collectPersonalInfo\";\n segment: Segment;\n subSegment: SubSegment | SubSegmentMilitary;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type CollectPersonalInfoViewModel = {\n driverLicenseNumber?: string;\n memberId?: MemberId;\n postalCode?: string;\n ebtCardNumber?: string;\n status?: AllStatuses;\n statuses?: AllStatuses[];\n birthDate?: BirthDate;\n socialSecurityNumber?: string;\n dischargeDate?: DischargeDate;\n activeDutyStartDate?: ActiveDutyStartDate;\n} & Partial<WithCoreFields> &\n Partial<WithOrganization> &\n Partial<WithAddress> &\n WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\n/**\n * @description The request to submit when verification is on the step \"docUpload\"\n */\nexport type DocUploadRequest = {\n file1: File;\n file2?: File;\n file3?: File;\n metadata?: Metadata;\n};\n\n/**\n * @description The request to enter a verification override code when it is on the step \"override\"\n */\nexport type OverrideVerificationRequest = {\n overrideCode: string;\n deviceFingerprintHash?: string;\n};\n\n// No difference between the ViewModel, and what we send to the REST endpoint at this time.\nexport type DocUploadViewModel = DocUploadRequest & {\n erroredFileNames?: string[];\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type SingleSignOnViewModel = {\n isSingleSignOnActive: boolean;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type OverrideViewModel = OverrideVerificationRequest & {\n overrideCode: string;\n deviceFingerprintHash?: string;\n metadata?: Metadata;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type SMSLoopViewModel = {\n smsCode: string;\n phoneNumber: string;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type EmailLoopViewModel = {\n emailToken: string;\n organizationEmail?: string;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type EmailLoopCollectOrganizationEmailViewModel = {\n organizationEmail?: string;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n} & WithLocaleChoiceAndCountryChoice &\n WithFieldsToSkipValidation;\n\nexport type IDCheckLoopViewModel = WithLocaleChoiceAndCountryChoice & WithFieldsToSkipValidation;\n\nexport type VerificationRequest =\n | StudentPersonalInfoRequest\n | AgePersonalInfoRequest\n | SeniorPersonalInfoRequest\n | TeacherPersonalInfoRequest\n | MemberPersonalInfoRequest\n | MilitaryStatusRequest\n | ActiveMilitaryPersonalInfoRequest\n | InactiveMilitaryPersonalInfoRequest\n | DocUploadRequest\n | OverrideVerificationRequest\n | FirstResponderPersonalInfoRequest\n | MedicalProfessionalPersonalInfoRequest\n | EmploymentPersonalInfoRequest\n | SocialSecurityRequest\n | SMSLoopVerificationRequest\n | EmailLoopVerificationRequest\n | DriverLicensePersonalInfoRequest\n | GeneralIdentityPersonalInfoRequest\n | HybridIdentityPersonalInfoRequest\n | LicensedProfessionalPersonalInfoRequest\n | LowIncomePersonalInfoRequest\n | MoverPersonalInfoRequest\n | CollectIdentifierRequest\n | CompleteAuthenticationRequest\n | CollectPersonalInfoRequest;\n\nexport type ViewModel =\n | StudentPersonalInfoViewModel\n | SeniorPersonalInfoViewModel\n | AgePersonalInfoViewModel\n | TeacherPersonalInfoViewModel\n | MemberPersonalInfoViewModel\n | ActiveMilitaryPersonalInfoViewModel\n | InactiveMilitaryPersonalInfoViewModel\n | DocUploadViewModel\n | SingleSignOnViewModel\n | OverrideViewModel\n | FirstResponderPersonalInfoViewModel\n | MedicalProfessionalPersonalInfoViewModel\n | EmploymentPersonalInfoViewModel\n | SocialSecurityViewModel\n | SMSLoopViewModel\n | EmailLoopViewModel\n | EmailLoopCollectOrganizationEmailViewModel\n | DriverLicensePersonalInfoViewModel\n | GeneralIdentityPersonalInfoViewModel\n | HybridIdentityPersonalInfoViewModel\n | LicensedProfessionalPersonalInfoViewModel\n | LowIncomePersonalInfoViewModel\n | MoverPersonalInfoViewModel\n | CollectIdentifierViewModel\n | CompleteAuthenticationViewModel\n | CollectPersonalInfoViewModel;\n\nexport type PersonalInfoViewModel =\n | StudentPersonalInfoViewModel\n | SeniorPersonalInfoViewModel\n | AgePersonalInfoViewModel\n | TeacherPersonalInfoViewModel\n | MemberPersonalInfoViewModel\n | ActiveMilitaryPersonalInfoViewModel\n | InactiveMilitaryPersonalInfoViewModel\n | FirstResponderPersonalInfoViewModel\n | MedicalProfessionalPersonalInfoViewModel\n | EmploymentPersonalInfoViewModel\n | DriverLicensePersonalInfoViewModel\n | GeneralIdentityPersonalInfoViewModel\n | HybridIdentityPersonalInfoViewModel\n | LicensedProfessionalPersonalInfoViewModel\n | LowIncomePersonalInfoViewModel\n | MoverPersonalInfoViewModel;\n\nexport type WithOrganization = {\n organization: Organization;\n};\n\nexport type WithAddress = {\n address1: string;\n city: string;\n state: string;\n};\n\nexport type WithCoreFields = {\n firstName: string;\n lastName: string;\n email: Email;\n phoneNumber?: PhoneNumber;\n metadata?: Metadata;\n deviceFingerprintHash?: string;\n locale?: Locale;\n externalUserId?: string;\n captchaToken?: string;\n};\n\nexport type WithFieldsToSkipValidation = {\n fieldsToSkipValidation?: FieldId[];\n};\n\nexport type WithLocaleChoiceAndCountryChoice = {\n // countryChoice.label is no longer used when displaying options\n countryChoice: FormSelectChoice<Country, string>;\n // localeChoice.label is no longer used when displaying options\n localeChoice: FormSelectChoice<Locale, string>;\n};\n\nexport type AddSchoolRequestViewModel = {\n programId: string;\n firstName: string;\n lastName: string;\n email: string;\n schoolCountry: Country;\n schoolName: string;\n schoolDomain: string;\n trackingId?: string;\n};\n\n// #endregion Requests and View Models -----------------------------------------------------------------------\n\n// #region Responses -------------------------------------------------------------------\nexport type WithLocaleAndCountryAndSegment = {\n segment: Segment;\n subSegment: SubSegment;\n locale: Locale;\n country?: Country;\n};\n\n/**\n * @description Base type for all responses\n */\nexport type VerificationResponse = {\n submissionUrl?: string;\n verificationId: DatabaseId;\n currentStep: VerificationStep;\n errorIds?: ErrorId[];\n maxAge?: number;\n minAge?: number;\n lastResponse?: VerificationResponse;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Intersection type for all *PersonalInfo responses\n */\nexport type PersonalInfoResponse =\n | StudentPersonalInfoResponse\n | SeniorPersonalInfoResponse\n | AgePersonalInfoResponse\n | TeacherPersonalInfoResponse\n | MemberPersonalInfoResponse\n | ActiveMilitaryPersonalInfoResponse\n | InactiveMilitaryPersonalInfoResponse\n | FirstResponderPersonalInfoResponse\n | MedicalProfessionalPersonalInfoResponse\n | EmploymentPersonalInfoResponse\n | DriverLicensePersonalInfoResponse\n | GeneralIdentityPersonalInfoResponse\n | HybridIdentityPersonalInfoResponse\n | LicensedProfessionalPersonalInfoResponse\n | LowIncomePersonalInfoResponse\n | MoverPersonalInfoResponse\n | CollectPersonalInfoResponse;\n\nexport type AllResponseTypes =\n | PersonalInfoResponse\n | SSOResponse\n | DocUploadResponse\n | SMSLoopResponse\n | EmailLoopResponse\n | IDCheckLoopResponse\n | SuccessResponse\n | ConsolationResponse\n | OverrideResponse\n | ErrorResponse\n | PendingResponse\n | SocialSecurityResponse\n | MilitaryStatusResponse\n | CollectIdentifierResponse\n | CompleteAuthenticationResponse\n | CollectPersonalInfoResponse\n | ThirdPartyLoopResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type StudentPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectStudentPersonalInfo\";\n segment: \"student\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that SeniorPersonalInfoViewModel is expected to be submitted next.\n */\nexport type SeniorPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectSeniorPersonalInfo\";\n segment: \"senior\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that AgePersonalInfoViewModel is expected to be submitted next.\n */\nexport type AgePersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectAgePersonalInfo\";\n segment: \"age\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n minAge?: number;\n maxAge?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that TeacherPersonalInfoViewModel is expected to be submitted next.\n */\nexport type TeacherPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectTeacherPersonalInfo\";\n segment: \"teacher\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type MemberPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectMemberPersonalInfo\";\n segment: \"member\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type MilitaryStatusResponse = {\n submissionUrl: string;\n currentStep: \"collectMilitaryStatus\";\n segment: \"military\";\n errorIds?: [ErrorId];\n availableStatuses?: MilitaryStatus[];\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type ActiveMilitaryPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectActiveMilitaryPersonalInfo\";\n segment: \"military\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that StudentPersonalInfoViewModel is expected to be submitted next.\n */\nexport type InactiveMilitaryPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectInactiveMilitaryPersonalInfo\";\n segment: \"military\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type FirstResponderPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectFirstResponderPersonalInfo\";\n segment: \"firstResponder\";\n errorIds?: [ErrorId];\n availableStatuses?: FirstResponderStatus[];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type MedicalProfessionalPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectMedicalProfessionalPersonalInfo\";\n segment: \"medical\";\n errorIds?: [ErrorId];\n availableStatuses?: MedicalProfessionalStatus[];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type EmploymentPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectEmployeePersonalInfo\";\n segment: \"employment\";\n subSegment: null;\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that DriverLicensePersonalInfoViewModel is expected to be submitted next.\n */\nexport type DriverLicensePersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectDriverLicensePersonalInfo\";\n segment: \"identity\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type GeneralIdentityPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectGeneralIdentityPersonalInfo\";\n segment: \"identity\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type HybridIdentityPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectHybridIdentityPersonalInfo\";\n segment: \"identity\";\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type LicensedProfessionalPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectLicensedProfessionalPersonalInfo\";\n segment: \"licensedProfessional\";\n availableStatuses?: LicensedProfessionalStatus[];\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type MoverPersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectMoverPersonalInfo\";\n segment: \"recentMover\";\n availableStatuses?: RecentMoverStatus[];\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\nexport type LowIncomePersonalInfoResponse = {\n submissionUrl: string;\n currentStep: \"collectLowIncomePersonalInfo\";\n segment: \"lowIncome\";\n availableStatuses?: LowIncomeStatus[];\n errorIds?: [ErrorId];\n instantMatchAttempts?: number;\n} & VerificationResponse;\n\n/**\n * @description Response from REST API indicating that DocUploadRequest is expected to be submitted next.\n */\nexport type DocUploadResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n currentStep: \"docUpload\";\n errorIds?: [ErrorId];\n rejectionReasons?: RejectionReasons[];\n maxReviewTime?: MaxReviewTime;\n estimatedReviewTime?: EstimatedReviewTime;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API indicating that SSO is expected to be submitted next.\n */\nexport type SSOResponse = {\n verificationId: DatabaseId;\n loginUrl: string;\n cancelUrl: string;\n currentStep: \"sso\";\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\nexport type ThirdPartyLoopResponse = {\n verificationId: DatabaseId;\n loginUrl: string;\n cancelUrl: string;\n currentStep: \"thirdPartyLoop\";\n thirdPartyLoopProvider: ThirdPartyLoopProvider;\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\nexport type SMSLoopResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n errorIds?: [ErrorId];\n currentStep: \"smsLoop\";\n} & WithLocaleAndCountryAndSegment;\n\nexport type EmailLoopResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n errorIds?: [ErrorId];\n currentStep: \"emailLoop\";\n currentState: \"collectOrganizationEmail\" | \"pending\";\n canResendEmailLoop: boolean;\n cancelUrl: string;\n} & WithLocaleAndCountryAndSegment;\n\nexport type IDCheckLoopResponse = {\n verificationId: DatabaseId;\n submissionUrl: string;\n errorIds?: [ErrorId];\n currentStep: \"idCheckLoop\";\n sdkToken?: string;\n idCheckServiceType?: IdCheckLoopServiceType;\n uploadUrl?: string;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. No further requests are expected.\n */\nexport type SuccessResponse = {\n verificationId: DatabaseId;\n currentStep: \"success\";\n rewardCode: string;\n redirectUrl?: string;\n rewardData?: string[];\n consumerInfoState?: ConsumerInfoState;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. No further requests are expected.\n */\nexport type ConsolationResponse = {\n verificationId: DatabaseId;\n currentStep: \"consolation\";\n consolationRewardCode: string;\n segment: Segment;\n subSegment: SubSegment;\n redirectUrl?: string;\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. No further requests are expected.\n */\nexport type OverrideResponse = {\n verificationId: DatabaseId;\n currentStep: \"override\";\n segment: Segment;\n subSegment: SubSegment;\n submissionUrl: string;\n errorIds?: [ErrorId];\n} & WithLocaleAndCountryAndSegment;\n\n/**\n * @description Response from REST API. Unrecoverable error. No further requests are expected. Recommend starting over.\n */\nexport interface ErrorResponse\n extends\n Omit<VerificationResponse, \"subSegment\">,\n Omit<WithLocaleAndCountryAndSegment, \"subSegment\"> {\n verificationId: DatabaseId;\n currentStep: \"error\";\n subSegment: SubSegment | null;\n errorIds: [ErrorId]; // Don't supply a message, only an id like \"notEnoughInfo\" or \"unknown\", so we can look up the message based on locale\n errorDetailId?: ErrorDetailId;\n redirectUrl: string | null;\n}\n\n/**\n * @description Response from REST API. Poll statusUrl for updates while document is reviewed.\n */\nexport type PendingResponse = {\n verificationId: DatabaseId;\n currentStep: \"pending\";\n statusUrl: string;\n maxReviewTime?: MaxReviewTime;\n estimatedReviewTime?: EstimatedReviewTime;\n} & WithLocaleAndCountryAndSegment;\n\nexport type FieldDescription = {\n key: FieldId;\n};\n\nexport type FieldsToCollect = {\n required: FieldDescription[];\n optional: FieldDescription[];\n};\n\nexport type CollectFieldsResponse = {\n verificationId: DatabaseId;\n currentStep: VerificationStep;\n fieldsToCollect: FieldsToCollect;\n} & WithLocaleAndCountryAndSegment;\n\nexport type DocTypeResult = {\n [country: string]: { documentType: any }[];\n};\n\nexport type ApplicableDocTypesResponse = {\n results: DocTypeResult;\n};\n\nexport type ConsumerInfoState =\n | \"consumerNotFound\"\n | \"consumerFound\"\n | \"consumerFoundNewFieldsAvailable\"\n | \"consumerFoundNotActionable\"\n | \"UNKNOWN\";\n\n// #endregion Responses -----------------------------------------------------------------------\n\n// #region Theme -----------------------------------------------------------------------\n/**\n * @description Theme information about the Program that was created at my.sheerid.com\n */\nexport type ProgramTheme = {\n intl: {\n locale: Locale;\n messages: ProgramThemeMessages;\n };\n customCss: string; // this contains customer-provided CSS + auto-generated CSS from the program builder\n /** @deprecated - Use themeChoices.logoUrl instead */\n logoUrl?: string;\n privacyPolicyUrl?: string;\n isTestMode?: boolean;\n openOrgSearchEnabled?: boolean;\n isSmsNotifierConfigured?: boolean;\n remainingRewardCodes?: number | null;\n smsLoopEnabled?: boolean;\n overrideEnabled?: boolean;\n threatMetrixEnabled?: boolean;\n threatMetrixOrgId?: string;\n idCheckAddOnEnabled?: boolean;\n ipqsDeviceFingerprintEnabled?: boolean;\n fingerprintEnabled?: boolean;\n strictMilitaryValidationEnabled?: boolean;\n transitionalMilitaryValidityDays?: number;\n docUploadEnabled?: boolean;\n affinityProgramEnabled?: boolean;\n externalUserIdRequired?: boolean;\n config: {\n brandInfo?: {\n faqUrl: string | null;\n emailAddress: string | null;\n phoneNumber: string | null;\n };\n countries: Country[];\n states?: State[];\n locales: Locale[];\n maxReviewTime: MaxReviewTime;\n estimatedReviewTime: EstimatedReviewTime;\n marketConsent: MarketConsentOptions;\n customFaqLink: FaqUrl;\n customMetadata: MetadataConfig;\n orgSearchUrl: string;\n orgRemoteSource?: OrganizationRemoteSource;\n orgTypes: OrganizationType[];\n excludedOrganizationIds: number[];\n orgSearchCountryTags?: {\n [country in Country]?: string[];\n };\n orgSearchAffiliationOverrides?: {\n [a: string]: {\n [a: string]: string[];\n };\n };\n offerType: \"noCode\" | \"staticCode\" | \"rewardPool\" | undefined;\n minAge: number | null;\n maxAge: number | null;\n rewardDisplay: RewardDisplayEnum[];\n onfidoReportNames?: string[];\n onfidoIncludedCountries?: string[];\n segment?: Segment;\n // future: redirect URL\n };\n accountId?: string; // keep optional until HC-131 is completed\n themeChoices: ThemeChoices;\n captchaEnabled?: boolean;\n};\n\nexport type EstimatedReviewTime = \"A_FEW_MINUTES\" | \"A_HALF_HOUR\" | \"A_FEW_HOURS\" | \"A_FEW_DAYS\";\nexport type MaxReviewTime =\n | \"2_MIN\"\n | \"20_MIN\"\n | \"A_HALF_HOUR\"\n | \"2_HRS\"\n | \"24_HRS\"\n | \"2_DAY\"\n | \"3_DAY\";\nexport type FaqUrl = string;\n\n/**\n * @description List of countries supported by SheerID\n */\nexport type Country = keyof Countries;\n\nexport type State = keyof States;\n\nexport type Messages = DefaultMessages & SegmentSpecificMessages;\nexport type NestedMessagePaths = NestedKeyOf<Messages>;\n\nexport interface MessagesModule {\n defaultMessages: DefaultMessages;\n pluralizationsAndDateLocaleData: any; // from react-intl\n segmentMessages: Record<Segment, SegmentSpecificMessages>;\n}\n\n/**\n * @description These strings are set by a user editing your program in my.sheerid.com\n */\nexport type ProgramThemeMessages = {\n companyName?: string;\n imageLogo?: string;\n step?: {\n success?: {\n redirectUrl?: string;\n };\n };\n} & DeepPartial<DefaultMessages & SegmentSpecificMessages>;\n\n/**\n * @description These strings vary by program segment\n */\nexport type SegmentSpecificMessages = {\n emailExplanation?: string;\n addressExplanation?: string;\n schoolName?: string;\n schoolNamePlaceholder?: string;\n step: {\n personalInfo: {\n title: string;\n subtitle: string;\n howDoesVerifyingWorkDetails: string;\n tryAgain: {\n title: string;\n subtitle: string;\n };\n verifyingTitle: string;\n submitButtonText: string;\n };\n docUpload?: {\n whoIsSheerId: string;\n title: string;\n uploadInstructions: string;\n };\n success: {\n title: string;\n subtitle: string;\n redirectButtonText: string;\n };\n sso?: {\n title?: string;\n subtitle?: string;\n subtitle2?: string;\n login?: string;\n cancel?: string;\n alternative?: string;\n };\n reclaim?: {\n title?: string;\n reclaimInfo: {\n login: string;\n review: string;\n display: string;\n consent: string;\n };\n legal?: {\n thirdPartyTools: string;\n thirdPartyToolsExplanation: string;\n secureLogin: string;\n secureLoginExplanation: string;\n consent: string;\n consentExplanation: string;\n moreInformation: string;\n moreInformationExplanation: string;\n };\n login?: string;\n cancel?: string;\n };\n emailLoop?: DeepPartial<DefaultMessages[\"step\"][\"emailLoop\"]>;\n };\n};\n\n/**\n * @description These strings are provided by default\n */\nexport type DefaultMessages = {\n activeDutyStartDate: string;\n address: string;\n addressPlaceholder: string;\n birthDate: string;\n branchOfService: string;\n branchOfServicePlaceholder: string;\n changeLanguage: string;\n city: string;\n cityPlaceholder: string;\n chooseCountry: string;\n clearAndOpenMenu: string;\n close: string;\n closeSection: string;\n company: string;\n companyPlaceholder: string;\n copied: string;\n country: string;\n countryPlaceholder: string;\n countries: Countries;\n cvecNumber: string;\n cvecNumberExplanation: string;\n \"_EXPERIMENTAL.cvecNumberExplanation\": string;\n dateTime: DateTimeMessages;\n dischargeDate: string;\n driverLicenseNumber: string;\n driverLicenseNumberPlaceholder: string;\n driverLicenseState: string;\n emailAddress: string;\n emailAddressPlaceholder: string;\n ebtCardNumber: string;\n error: string;\n errorId: {\n [P in ErrorId]: string;\n } & Record<ExtendedErrorId, string>;\n errorDetailId: {\n [P in ErrorDetailId]: string;\n };\n warningId: {\n [P in WarningId]: string;\n };\n firstName: string;\n firstNamePlaceholder: string;\n howDoesReviewWork: string;\n howDoesVerifyingWork: string;\n informationTransferredToUS: string;\n instant: string;\n lastName: string;\n lastNamePlaceholder: string;\n limitExceededError: string;\n memberId: string;\n memberIdPlaceholder: string;\n optional: string;\n loading: string;\n locales: {\n [P in Locale]: string;\n };\n militaryStatus: string;\n noOptions: string;\n lowRewardPool: string;\n organization: string;\n organizationPlaceholder: string;\n orgSearchSortByRelevance: string;\n orgSearchSortByDistance: string;\n orgSearchSortAccessibilityLabel: string;\n lowIncomeOrganization: string;\n lowIncomeOrganizationPlaceholder: string;\n optIn: string;\n openMenu: string;\n personalInformation: any;\n personalOrSchoolIsFine: string;\n phoneNumber: string;\n phoneNumberExplanation: string;\n phoneNumberWarnMessage1: string;\n phoneNumberWarnMessage2: string;\n phoneUsPlaceholder: string;\n postalCode: string;\n postalCodeExplanation: string;\n postalCodePlaceholder: string;\n poweredBy: string;\n proceed: string;\n cantFindYourSchool: string;\n requestSchool: string;\n multipleLocationsTips: string;\n tryFullNameTips: string;\n requiredFields: string;\n rewardCodeEmailNotification: string;\n school: string;\n schoolName: string;\n schoolNamePlaceholder: string;\n sheeridFaqs: string;\n privacyPolicy: string;\n smsCodePlaceholder: string;\n state: string;\n statePlaceholder: string;\n states: States;\n status: string;\n statusPlaceholder: string;\n step: {\n success: {\n copyCouponCode: string;\n emailNotification: string;\n verificationOnly: string;\n rememberMe: {\n consumerFound: {\n title: string;\n description: string;\n button: string;\n };\n consumerNotFound: {\n title: string;\n description: string;\n button: string;\n };\n };\n };\n consolation: {\n title: string;\n subtitle: string;\n verificationOnly: string;\n };\n override: {\n title: string;\n subtitle: string;\n subtitle2: string;\n verificationOverrideCodeLabel: string;\n submitOverrideCodeButtonLabel: string;\n errors: {\n invalidCode: string;\n codeOverrideLimit: string;\n };\n };\n pending: {\n titleReview: string;\n subtitle: string;\n turnaroundTime: string;\n subtitle2: string;\n subtitle3: string;\n idCheckLoop: {\n title: string;\n subtitle: string;\n subtitle2: string;\n };\n };\n personalInfo: {\n verifyingTitle: string;\n verifyingSubtitle: string;\n submitButtonText: string;\n emailFirstCollectInfo: {\n sendAgain: string;\n sent: string;\n needChanges: string;\n proceedHere: string;\n existingVerificationFound: {\n title: string;\n message: string;\n closing: string;\n };\n pendingVerification: {\n title: string;\n message: string;\n closing: string;\n };\n rejectedVerification: {\n title: string;\n message: string;\n closing: string;\n };\n };\n captcha: {\n retryButton: string;\n loading: string;\n success: string;\n error: string;\n };\n };\n collectMedicalPersonalInfo: {\n registrationNumberLabel: string;\n registrationNumberExplanation: string;\n numeroColegiadoLabel: string;\n numeroColegiadoExplanation: string;\n autorisationsIdLabel: string;\n autorisationsIdExplanation: string;\n gbrNummerLabel: string;\n gbrNummerExplanation: string;\n globalLocationNumberLabel: string;\n globalLocationNumberExplanation: string;\n };\n docUpload: {\n title: string;\n documentReviewProcess: string;\n whoIsSheerId: string;\n\n acceptableUploadExamples: string;\n acceptedTypes: string;\n addFile: string;\n confirm: string;\n rejectionReasons: {};\n rejectedSubtitle: string;\n nameChanged: string;\n allowedDocuments: string;\n\n documentsMustInclude: string;\n suggestedDocumentTypes: string;\n whatHappensNext: string;\n reviewTime: string;\n canIFinishLater: string;\n canIFinishLaterDetails: string;\n submitButtonLabel: string;\n rejectedNextStep: string;\n // These vary in structure as well as by-segment\n uploadInfo: {\n affiliation: string;\n dateCurrentYear: string;\n fullName: string;\n institutionName: string;\n organization: string;\n student: {\n school: string;\n enrollmentDate: string;\n };\n teacher: {\n school: string;\n currentSchoolYear: string;\n };\n military: {\n serviceBranch: string;\n dischargeDate: string;\n currentAffiliation: string;\n uploadInstructionsDependent: string;\n uploadInstructionsMilitaryIdTitle: string;\n uploadInstructionsMilitaryIdContent: string;\n militaryFamily: {\n status: string;\n };\n goldStarFamily: {\n status: string;\n };\n reservist: {\n status: string;\n };\n veteran: {\n status: string;\n };\n militaryRetiree: {\n status: string;\n };\n activeDuty: {\n status: string;\n };\n };\n senior: {\n birthDate: string;\n };\n age: {\n birthDate: string;\n consentDE: string;\n };\n firstResponder: {\n organization: string;\n currentAffiliation: string;\n license: string;\n emt: {\n status: string;\n };\n police: {\n status: string;\n };\n firefighter: {\n status: string;\n };\n };\n medical: {\n status: string;\n medicalRole: string;\n validDate: string;\n };\n employment: {\n company: string;\n currentAffiliation: string;\n };\n identity: {\n validDate: string;\n };\n licensedProfessional: {\n licenseStatus: string;\n validDate: string;\n };\n recentMover: {\n address: string;\n validDate: string;\n };\n lowIncome: {\n validDate: string;\n fullName: string;\n ebtNumber: string;\n };\n };\n // These vary in structure as well as by-segment\n acceptableUploads: {\n officialLetter: string;\n doNotUploadMilitaryIdTitle: string;\n doNotUploadMilitaryIdContent: string;\n student: {\n idCard: string;\n classSchedule: string;\n tuitionReceipt: string;\n };\n teacher: {\n idCard: string;\n payStub: string;\n };\n member: {\n idCard: string;\n payStub: string;\n };\n senior: {\n birthCertificate: string;\n driversLicense: string;\n passport: string;\n stateId: string;\n };\n age: {\n birthCertificate: string;\n driversLicense: string;\n passport: string;\n stateId: string;\n };\n military: {\n active: {\n leaveEarningStatement: string;\n uniformedServicesId: string;\n };\n militaryRetiree: {\n blueUniformedId: string;\n vaHealthBenefitsCard: string;\n retireeId: string;\n dd214Form: string;\n vaDigitalId: string;\n };\n vet: {\n dd214Form: string;\n dischargeCertificate: string;\n vaHealthBenefitsCard: string;\n vaDigitalId: string;\n driverLicenseVeteran: string;\n departmentVeteranId: string;\n };\n reservist: {\n leaveEarningStatement: string;\n uniformedServicesId: string;\n };\n // these are the legacy strings that can't be deleted yet\n activeDuty: string;\n veteran: string;\n reservistA: string;\n retiree: string;\n dependent: string;\n goldStarFamily: string;\n };\n medical: {\n licenseCertificate: string;\n idCard: string;\n photoPayStub: string;\n payStub: string;\n letterEmployment: string;\n };\n employment: {\n employeeIdCard: string;\n payStub: string;\n officialLetter: string;\n };\n firstResponder: {\n idCard: string;\n payStub: string;\n letter: string;\n };\n licensedProfessional: {\n license: string;\n };\n recentMover: {\n changeOfAddress: string;\n mortgageDeed: string;\n rentalAgreement: string;\n };\n lowIncome: {\n program: string;\n programCard: string;\n programApprovalLetter: string;\n programApprovalScreenshot: string;\n programBankStatement: string;\n };\n };\n };\n sso: {\n title: string;\n subtitle: string;\n subtitle2: string;\n cancel: string;\n login: string;\n preheader: string;\n alternative: string;\n };\n thirdPartyLoop: {\n signzy: {\n title: string;\n subtitle: string;\n login: string;\n cancel: string;\n };\n error: string;\n };\n collectSocialSecurityNumber: {\n selectOption: string;\n title: string;\n uploadDoc: string;\n uploadInstead: string;\n useSsn: string;\n };\n smsLoop: {\n titleWithNumber: string;\n titleWithoutNumber: string;\n verificationCode: string;\n errors: {\n codeVerification: string;\n codeExpired: string;\n codeResendLimit: string;\n resend: string;\n };\n successResend: string;\n incorrectNumber: {\n incorrectNumber1: string;\n incorrectNumber2: string;\n incorrectNumber3: string;\n };\n resendButton: string;\n submitButton: string;\n };\n emailLoop: {\n title: string;\n subtitleWithEmail: string;\n subtitleWithoutEmail: string;\n subtitle2: string;\n successResend: string;\n resendButton: string;\n errors: {\n resend: string;\n invalidEmail: string;\n };\n skipEmail: string;\n skipEmail2: string;\n skipEmailCTA: string;\n collectOrganizationEmail: {\n title: string;\n subtitle: string;\n email: {\n label: string;\n send: string;\n };\n alternative: string;\n };\n };\n idCheckLoop: {\n title: string;\n subtitle: string;\n continue: string;\n terms: string;\n disclaimer: string;\n steps: {\n idCheck: {\n title: string;\n subtitle: string;\n };\n selfie: {\n title: string;\n };\n docReview: {\n title: string;\n };\n };\n docTypes: {\n passport: {\n title: string;\n subtitle: string;\n };\n driverLicense: {\n title: string;\n subtitle: string;\n };\n residencePermit: {\n title: string;\n subtitle: string;\n };\n identityCard: {\n title: string;\n subtitle: string;\n };\n };\n countrySelector: {\n title: string;\n };\n docTypeSelector: {\n title: string;\n subtitle: string;\n };\n regula: {\n title: string;\n uploadTitle: string;\n uploadSubtitle: string;\n addFontImage: string;\n addBackImage: string;\n submit: string;\n uploadFileError: string;\n terms: string;\n info: {\n title: string;\n subtitle: string;\n };\n sdk: {\n title: string;\n subtitle: string;\n imageQualityErrorTitle: string;\n imageQualityError: string;\n rejectedImageNextStep: string;\n uploadAgain: string;\n };\n };\n };\n error: {\n title: string;\n errorId: {\n [P in ErrorId]?: {\n title?: string;\n buttonText?: string;\n };\n };\n };\n collectIdentifier: {\n submitButton: string;\n inputExplanation: string;\n };\n completeAuthentication: {\n title: string;\n subtitle: string;\n manuallyVerifyButton: string;\n };\n collectPersonalInfo: {\n submitButton: string;\n };\n };\n experiment: {\n step: {\n docUpload: {\n documentConsiderations: string;\n };\n };\n };\n streetAddress: string;\n ssn: string;\n ssnPlaceholder: string;\n universityName: string;\n verificationPurposesOnly: string;\n verifyAndContinue: string;\n verifyMyStudentStatus: string;\n verifyMyTeacherStatus: string;\n verifyMyMembershipStatus: string;\n verifyMyMilitaryStatus: string;\n verifyMyIdentityStatus: string;\n verifyMyMedicalProfessionalStatus: string;\n verifyMyEmploymentStatus: string;\n verifyMyLicensedProfessionalStatus: string;\n verifyMyMoverStatus: string;\n verifyMyLowIncomeStatus: string;\n FIREFIGHTER: string;\n POLICE: string;\n EMT: string;\n SEARCH_AND_RESCUE: string;\n verifyMyFirstResponderStatus: string;\n VETERAN: string;\n MILITARY_RETIREE: string;\n RESERVIST: string;\n ACTIVE_DUTY: string;\n MILITARY_FAMILY: string;\n GOLD_STAR_FAMILY: string;\n DOCTOR: string;\n NURSE: string;\n DENTIST: string;\n PHARMACIST: string;\n OTHER_HEALTH_WORKER: string;\n HOME_BUYER: string;\n OTHER_MOVER: string;\n SNAP_BENEFITS: string;\n OTHER_GOVERNMENT_ASSISTANCE: string;\n COMMUNITY_ELIGIBILITY_PROVISION: string;\n LICENSED_COSMETOLOGIST: string;\n LICENSED_REAL_ESTATE_AGENT: string;\n VETERINARIAN: string;\n CHILD_CARE_WORKER: string;\n LIBRARIAN: string;\n NUTRITION_PROFESSIONAL: string;\n INTERIOR_DESIGNER: string;\n ARCHITECT: string;\n GENERAL_CONTRACTOR: string;\n tryAgain: string;\n footerText: string;\n footerText_sso: string;\n captchaFooterText: string;\n infoShared1: string;\n infoShared2: string;\n studentInfoShared: string;\n militaryInfoShared: string;\n firstResponderInfoShared: string;\n getHelp: string;\n militaryFamilyCardNote: string;\n clearSelection: string;\n};\n\ntype DateTimeMessages = {\n january: string;\n february: string;\n march: string;\n april: string;\n may: string;\n june: string;\n july: string;\n august: string;\n september: string;\n october: string;\n november: string;\n december: string;\n month: string;\n day: string;\n year: string;\n \"2_MIN\": string;\n \"20_MIN\": string;\n \"2_HRS\": string;\n \"24_HRS\": string;\n \"2_DAY\": string;\n \"3_DAY\": string;\n A_FEW_MINUTES: string;\n A_HALF_HOUR: string;\n A_FEW_HOURS: string;\n A_FEW_DAYS: string;\n};\n\n// #endregion Theme -----------------------------------------------------------------------\n\n// #region VerificationService ---------------------------------------------------------\n/**\n * @description View-Model Verification Service\n * @private\n */\nexport interface VerificationService<T extends ViewModel = ViewModel>\n extends VerificationServiceValues<T>, VerificationServiceFunctions<T> {}\n\nexport interface VerificationServiceValues<T extends ViewModel = ViewModel> {\n readonly isLoading: boolean;\n readonly loadingStep?: VerificationStep;\n readonly isErrored: boolean;\n readonly fieldValidationErrors: FieldValidationErrors;\n readonly messages: StringMap;\n readonly verificationResponse: VerificationResponse;\n readonly viewModel: T;\n readonly programTheme: ProgramTheme;\n readonly previousViewModel: T;\n readonly previousVerificationResponse: VerificationResponse;\n readonly programId: DatabaseId;\n readonly formValidationOptions?: FormValidationOptions;\n readonly overrideStep?: VerificationStep;\n}\n\nexport interface VerificationServiceFunctions<T extends ViewModel = ViewModel> {\n readonly fetchNewVerificationRequest: (\n programId: DatabaseId,\n segment: Segment,\n previousViewModel: T,\n trackingId?: string,\n forceNewVerificationRequest?: boolean,\n ) => Promise<object>;\n readonly fetchExistingVerificationRequest: (\n programId: DatabaseId,\n verificationId: string,\n previousVerificationResponse?: VerificationResponse,\n previousViewModel?: T,\n needsLoading?: boolean,\n ) => Promise<object>;\n readonly updateViewModel: <\n Opts extends Partial<ViewModelUpdateOptions> = {\n partial: false;\n metadataCheck: false;\n externalUserIdCheck: false;\n },\n >(\n viewModel: Opts[\"partial\"] extends true ? Partial<T> : T,\n options?: Opts,\n ) => void;\n readonly updateProgramTheme: (programTheme: ProgramTheme) => void;\n readonly updateFieldValidationErrors: (fieldValidationErrors: FieldValidationErrors) => void;\n readonly submitStep: (\n stepName: VerificationStep,\n viewModel: T,\n previousResponse: VerificationResponse,\n ) => Promise<object>;\n readonly updateLocale: (locale: Locale, segment: Segment) => void;\n readonly resetState: () => void;\n readonly dispatch?: Dispatch;\n}\n// #endregion VerificationService -----------------------------------------------------------------------\n\n// #region Redux -----------------------------------------------------------------------\n/**\n * @private\n */\nexport type ReduxState = VerificationServiceValues;\n\nexport type VerificationStore = Store<ReduxState, VerificationServiceAction>;\n\n/**\n * @description Create a bound action (wrapped in Redux's dispatch and ready to call)\n */\nexport type BoundActionCreator = (dispatch: Dispatch, getState?: Function) => BoundAction;\nexport type BoundAction = (...args: any[]) => Promise<object>;\n\nexport interface GenericAction {\n type: string;\n payload: any;\n}\n\nexport interface SetMessagesAction {\n type: \"SET_MESSAGES\";\n messages: StringMap;\n}\n\nexport interface ProgramIdAction {\n type: \"PROGRAM_ID\";\n programId: DatabaseId;\n}\n\nexport interface VerificationResponseAction {\n type: \"VERIFICATION_RESPONSE\";\n verificationResponse: VerificationResponse;\n}\n\nexport interface FieldValidationErrorsAction {\n type: \"FIELD_VALIDATION_ERRORS\";\n fieldValidationErrors: FieldValidationErrors;\n}\n\nexport interface ViewModelAction {\n type: \"VIEW_MODEL\";\n viewModel: ViewModel | Partial<ViewModel>;\n partial?: boolean; // if false, replace previous viewModel in its entirety. Must pass a full viewModel object\n}\n\nexport interface FormValidationOptionsAction {\n type: \"FORM_VALIDATION_OPTIONS\";\n}\n\nexport interface RequiredMetadataAndExternalIdCheckAction {\n type: \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\";\n}\n\nexport interface CollectFieldsAction {\n type: \"COLLECT_FIELDS\";\n requiredFields: FieldDescription[];\n optionalFields: FieldDescription[];\n}\n\nexport interface PreviousViewModelAction {\n type: \"PREVIOUS_VIEW_MODEL\";\n previousViewModel: ViewModel;\n}\n\nexport interface ProgramThemeAction {\n type: \"PROGRAM_THEME\";\n programTheme: ProgramTheme;\n partial?: boolean; // if false, replace previous programTheme in its entirety. Must pass a full programTheme object\n}\n\nexport interface IsLoadingAction {\n type: \"IS_LOADING\";\n isLoading: boolean;\n loadingStep?: VerificationStep;\n}\n\nexport interface IsErroredAction {\n type: \"IS_ERRORED\";\n isErrored: boolean;\n}\n\nexport interface ResetStateAction {\n type: \"RESET_STATE\";\n}\n\nexport interface ForceUpdateAction {\n type: \"FORCE_UPDATE\";\n}\n\nexport type VerificationServiceAction =\n | SetMessagesAction\n | ProgramIdAction\n | VerificationResponseAction\n | FieldValidationErrorsAction\n | ViewModelAction\n | PreviousViewModelAction\n | ProgramThemeAction\n | IsLoadingAction\n | IsErroredAction\n | ResetStateAction\n | FormValidationOptionsAction\n | ForceUpdateAction\n | RequiredMetadataAndExternalIdCheckAction\n | CollectFieldsAction;\n\n/**\n * @private\n * @deprecated Use a specific action interface (or create one) from below\n */\nexport type ReduxAction = VerificationServiceAction;\n\n// #endregion Redux -----------------------------------------------------------------------\n\n// #region Hooks\n\n/**\n * @description Defines a list of hooks names that are available.\n * Certain events throughout the software will call an arbitrary callback, by this name.\n * These names are meant to be descriptive, to indicate when the callback (hook) will be called.\n */\nexport interface HookEvents {\n ON_VERIFICATION_READY: VerificationResponse;\n ON_VERIFICATION_SUCCESS: SuccessResponse;\n ON_VERIFICATION_STEP_CHANGE: AllResponseTypes | VerificationResponse;\n ON_FORM_LOCALE_CHANGE: Locale;\n}\n\nexport type HookData<K extends keyof HookEvents = keyof HookEvents> = {\n name: K;\n data: HookEvents[K];\n};\nexport type Hook<K extends keyof HookEvents = keyof HookEvents> = {\n name: K;\n callback: (data: HookEvents[K]) => void;\n};\n\n/**\n * This only exists for backwards compatibility.\n * @deprecated\n */\nexport type RegisteredHooks = {\n [name in HookName]?: Hook[];\n};\n\nexport type HookName = keyof HookEvents;\n// #endregion Hooks\n\n// #region Conversion\n/**\n * @description The shape of the request payload to send when calling a conversion endpoint.\n */\nexport type ConversionRequest = {\n amount?: number;\n currency?: string;\n tags?: string[];\n};\n\n/**\n * @description The shape of the response object after calling a conversion endpoint.\n */\nexport type ConversionResponse = {\n id: string;\n};\n\n/**\n * @description Methods related to performing a conversion with SheerID.\n */\nexport interface Conversion {\n /**\n * @description Record a conversion to the REST API using verificationId\n */\n convertByVerificationId(\n verificationId: DatabaseId,\n conversionRequest: ConversionRequest,\n ): Promise<ConversionResponse>;\n\n /**\n * @description Record a conversion to the REST API using a previously-supplied trackingId\n */\n convertByTrackingId(\n accountId: DatabaseId,\n trackingId: string,\n conversionRequest: ConversionRequest,\n ): Promise<ConversionResponse>;\n\n /**\n * @description Listen to a SheerID iFrame form and store verificationId as a cookie.\n * Use as step 1 of 2, in combination with convert()\n */\n listenForVerificationId(): void;\n\n /**\n * @description Attempt to record a conversion using a verificationId retrieved from cookies\n * Use as step 2 of 2, in combination with listenForVerificationId\n */\n convert(conversionRequest: ConversionRequest): void;\n}\n// #endregion Conversion\n\n// #region Validators\nexport type Validator = (\n value: FieldContent,\n formOptions?: FormValidationOptions,\n) => ErrorId | ExtendedErrorId;\n// #endregion Validators\n\n// #region Deprecated\n/**\n * @deprecated\n */\nexport type Intl = any;\n// #endregion Deprecated\n\ntype Countries = {\n AD: string;\n AE: string;\n AF: string;\n AG: string;\n AI: string;\n AL: string;\n AM: string;\n AN: string;\n AO: string;\n AR: string;\n AS: string;\n AT: string;\n AU: string;\n AW: string;\n AZ: string;\n BA: string;\n BB: string;\n BD: string;\n BE: string;\n BF: string;\n BG: string;\n BH: string;\n BI: string;\n BJ: string;\n BM: string;\n BN: string;\n BO: string;\n BR: string;\n BS: string;\n BT: string;\n BV: string;\n BW: string;\n BY: string;\n BZ: string;\n CA: string;\n CD: string;\n CF: string;\n CG: string;\n CH: string;\n CI: string;\n CK: string;\n CL: string;\n CM: string;\n CN: string;\n CO: string;\n CR: string;\n CU: string;\n CV: string;\n CW: string;\n CY: string;\n CZ: string;\n DE: string;\n DJ: string;\n DK: string;\n DM: string;\n DO: string;\n DZ: string;\n EC: string;\n EE: string;\n EG: string;\n EH: string;\n ER: string;\n ES: string;\n ET: string;\n FI: string;\n FJ: string;\n FK: string;\n FM: string;\n FO: string;\n FR: string;\n GA: string;\n GB: string;\n GD: string;\n GE: string;\n GF: string;\n GH: string;\n GI: string;\n GL: string;\n GM: string;\n GN: string;\n GP: string;\n GQ: string;\n GR: string;\n GS: string;\n GT: string;\n GU: string;\n GW: string;\n GY: string;\n HK: string;\n HM: string;\n HN: string;\n HR: string;\n HT: string;\n HU: string;\n ID: string;\n IE: string;\n IL: string;\n IN: string;\n IO: string;\n IQ: string;\n IR: string;\n IS: string;\n IT: string;\n JM: string;\n JO: string;\n JP: string;\n KE: string;\n KG: string;\n KH: string;\n KI: string;\n KM: string;\n KN: string;\n KP: string;\n KR: string;\n KW: string;\n KY: string;\n KZ: string;\n LA: string;\n LB: string;\n LC: string;\n LI: string;\n LK: string;\n LR: string;\n LS: string;\n LT: string;\n LU: string;\n LV: string;\n LY: string;\n MA: string;\n MC: string;\n MD: string;\n ME: string;\n MG: string;\n MH: string;\n MK: string;\n ML: string;\n MM: string;\n MN: string;\n MO: string;\n MP: string;\n MQ: string;\n MR: string;\n MS: string;\n MT: string;\n MU: string;\n MV: string;\n MW: string;\n MX: string;\n MY: string;\n MZ: string;\n NA: string;\n NC: string;\n NE: string;\n NF: string;\n NG: string;\n NI: string;\n NL: string;\n NO: string;\n NP: string;\n NR: string;\n NU: string;\n NZ: string;\n OM: string;\n PA: string;\n PE: string;\n PF: string;\n PG: string;\n PH: string;\n PK: string;\n PL: string;\n PM: string;\n PN: string;\n PR: string;\n PS: string;\n PT: string;\n PW: string;\n PY: string;\n QA: string;\n RE: string;\n RO: string;\n RS: string;\n RU: string;\n RW: string;\n SA: string;\n SB: string;\n SC: string;\n SD: string;\n SE: string;\n SG: string;\n SH: string;\n SI: string;\n SK: string;\n SL: string;\n SM: string;\n SN: string;\n SO: string;\n SR: string;\n SS: string;\n ST: string;\n SV: string;\n SY: string;\n SZ: string;\n TC: string;\n TD: string;\n TF: string;\n TG: string;\n TH: string;\n TJ: string;\n TK: string;\n TL: string;\n TM: string;\n TN: string;\n TO: string;\n TR: string;\n TT: string;\n TV: string;\n TW: string;\n TZ: string;\n UA: string;\n UG: string;\n UM: string;\n US: string;\n UY: string;\n UZ: string;\n VA: string;\n VC: string;\n VE: string;\n VG: string;\n VI: string;\n VN: string;\n VU: string;\n WF: string;\n WS: string;\n XK: string;\n YE: string;\n YT: string;\n ZA: string;\n ZM: string;\n ZW: string;\n};\n\nexport type States = {\n AK: string;\n AL: string;\n AR: string;\n AS: string;\n AZ: string;\n CA: string;\n CO: string;\n CT: string;\n DC: string;\n DE: string;\n FL: string;\n GA: string;\n GU: string;\n HI: string;\n IA: string;\n ID: string;\n IL: string;\n IN: string;\n KS: string;\n KY: string;\n LA: string;\n MA: string;\n MD: string;\n ME: string;\n MI: string;\n MN: string;\n MO: string;\n MS: string;\n MT: string;\n NC: string;\n ND: string;\n NE: string;\n NH: string;\n NJ: string;\n NM: string;\n NV: string;\n NY: string;\n OH: string;\n OK: string;\n OR: string;\n PA: string;\n PR: string;\n RI: string;\n SC: string;\n SD: string;\n TN: string;\n TX: string;\n UT: string;\n VA: string;\n VI: string;\n VT: string;\n WA: string;\n WI: string;\n WV: string;\n WY: string;\n};\n\nexport type DocUploadData = {\n fileName: string;\n mimeType: string;\n fileSize: number;\n};\n\nexport type DocumentData = {\n documentId: string;\n status: string;\n mimeType: string;\n fileSize: number;\n uploadUrl: string;\n errors: Array<string>;\n};\n\nexport type IdentifierField = \"EMAIL\";\n","import { logger } from \"@jslib/shared/utils/logger\";\n\nimport { type FieldId, type Validator } from \"../types/types\";\n\nlet overridenValidators = {};\n\nexport const overrideValidator = (validatorField: FieldId, newValidator: Validator) => {\n logger.log(`overrideValidator registering ${newValidator} for '${validatorField}'`);\n overridenValidators[validatorField] = newValidator;\n};\n\nexport const getOverridenValidator = (validatorField: FieldId): Validator => {\n if (overridenValidators[validatorField]) {\n logger.log(`getOverridenValidator returning '${validatorField}'`);\n return overridenValidators[validatorField];\n }\n return null;\n};\n\nexport const resetOverriddenValidators = () => {\n overridenValidators = {};\n logger.info(\"Overridden validators have been reset\");\n};\n","import { postcodeValidator, postcodeValidatorExistsForCountry } from \"postcode-validator\";\nimport luhn from \"fast-luhn\";\n\nimport { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport {\n type ErrorId,\n type FieldId,\n type FieldContent,\n type FieldValidationErrors,\n type ViewModel,\n type MilitaryStatus,\n type Organization,\n type Metadata,\n type FirstResponderStatus,\n type MedicalProfessionalStatus,\n type ExtendedFieldValidationErrors,\n type ExtendedFieldId,\n type Validator,\n type ExtendedErrorId,\n type DocUploadViewModel,\n type FormValidationOptions,\n type WithCoreFields,\n type InactiveMilitaryPersonalInfoViewModel,\n type Country,\n FIRST_RESPONDER_STATUS,\n MEDICAL_PROFESSIONAL_STATUS,\n MILITARY_STATUS,\n type LowIncomePersonalInfoViewModel,\n RECENT_MOVER_STATUS,\n type RecentMoverStatus,\n} from \"../types/types\";\nimport { assertValidFieldId } from \"../types/assertions\";\nimport {\n getFieldValidationErrorsEmpty,\n getExtendedFieldValidationErrorsEmpty,\n} from \"../types/empties\";\nimport { ACCEPTED_DOC_MIME_TYPES, AUTH_TOKEN_LENGTH, SSN_STRING_LENGTH } from \"../../constants\";\nimport { FieldIdEnum, StateEnum } from \"../types/runtimeTypes\";\nimport { getOptions } from \"../../options/options\";\n\nimport { getOverridenValidator } from \"./validatorOverride\";\nimport { getCustomValidatorFields, getCustomValidator } from \"./customValidators\";\n\nconst DECIMAL_RADIX = 10;\nconst ADOLESCENT_AGE = 16;\nconst MIN_BIRTHYEAR = 1900;\nconst MAX_BIRTHYEAR = 3000;\n\nexport const MAX_METADATA_KEYS = 50;\nexport const MAX_METADATA_KEY_LENGTH = 256;\nexport const MAX_METADATA_VALUE_LENGTH = 4096;\n\nexport const INTL_PHONE_NUMBER_REGEX = /^\\+(?:[0-9] ?){6,14}[0-9]$/;\n\nexport const VALID_PHONE_NUMBER_REGEXPS = [\n /^\\+?0*\\d{10,}(x[0-9]{0,5})?$/,\n /(^\\D?(\\d{3})\\D?\\D?(\\d{3})\\D?(\\d{4})$)/,\n];\n\ntype GetValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n) => ErrorId | undefined;\n\nexport const validateMetadata = (metadata: Metadata): boolean => {\n const metadataKeyCount = Object.keys(metadata).length;\n\n // TOOD: Other metadata restrictions?\n if (metadataKeyCount > MAX_METADATA_KEYS) {\n logger.error(`Invalid number of metadata keys (max ${MAX_METADATA_KEYS})`, \"metadata keys\");\n return false;\n }\n return true;\n};\n\nexport const ensureMaxMetadataKeyValueLengths = (metadata: Metadata): Metadata => {\n const modifiedMetadata: Metadata = {};\n // TODO fix next line\n\n for (const key in metadata) {\n let newKey = key;\n let newValue = metadata[key] as string;\n\n if (newValue.length > MAX_METADATA_VALUE_LENGTH) {\n logger.warn(\n `Truncating metadata value '${metadata[key]}' for key '${newKey}' (max length ${MAX_METADATA_VALUE_LENGTH} characters).`,\n );\n newValue = newValue.substring(0, MAX_METADATA_VALUE_LENGTH);\n }\n if (newKey.length > MAX_METADATA_KEY_LENGTH) {\n logger.warn(\n `Truncating metadata key '${key}' (max length ${MAX_METADATA_KEY_LENGTH} characters).`,\n );\n newKey = newKey.substring(0, MAX_METADATA_KEY_LENGTH);\n }\n\n modifiedMetadata[newKey] = newValue;\n }\n return modifiedMetadata;\n};\n\nexport const getFieldValidationErrors = (\n viewModel: ViewModel,\n formValidationOptions?: FormValidationOptions,\n): FieldValidationErrors => {\n const fieldValidationErrors = getEmptyFieldValidationErrors();\n const fieldsToSkip = getSafe(() => viewModel.fieldsToSkipValidation);\n const metadata = getSafe(() => (viewModel as WithCoreFields).metadata, null);\n\n // TODO fix next line\n\n for (const fieldId in fieldValidationErrors) {\n if (viewModel.hasOwnProperty(fieldId)) {\n if (Array.isArray(fieldsToSkip) && fieldsToSkip.indexOf(fieldId as FieldId) > -1) {\n continue;\n }\n const fieldValue = viewModel[fieldId] ? viewModel[fieldId] : \"\";\n fieldValidationErrors[fieldId] = validateFieldById(\n fieldId as FieldId,\n fieldValue,\n formValidationOptions,\n );\n } else if (\n metadata !== null &&\n typeof metadata === \"object\" &&\n metadata.hasOwnProperty(fieldId)\n ) {\n const fieldValue = metadata[fieldId] ? metadata[fieldId] : \"\";\n fieldValidationErrors[fieldId] = validateFieldById(\n fieldId as FieldId,\n fieldValue,\n formValidationOptions,\n );\n }\n }\n\n const { customFormFields } = getOptions();\n if (customFormFields) {\n customFormFields.forEach((customField) => {\n let errorId;\n try {\n errorId = customField.validate(viewModel.metadata[customField.fieldId]);\n } catch (e) {\n logger.warn(`Error validating custom field ${customField.fieldId}`, e);\n }\n if (errorId) {\n fieldValidationErrors[customField.fieldId] = errorId;\n } else {\n delete fieldValidationErrors[customField.fieldId];\n }\n });\n }\n\n const { formFieldConfig } = getOptions();\n if (formFieldConfig) {\n formFieldConfig.forEach((formField) => {\n const fieldValue = viewModel[formField.fieldId] ? viewModel[formField.fieldId] : \"\";\n const fieldInViewModel = viewModel.hasOwnProperty(formField.fieldId);\n const shouldSkipValidation = fieldsToSkip?.includes(formField.fieldId as FieldId);\n\n if (fieldInViewModel && formField.requireIfOptional && !shouldSkipValidation) {\n fieldValidationErrors[formField.fieldId] = validateFieldById(\n formField.fieldId as FieldId,\n fieldValue,\n formValidationOptions,\n );\n }\n });\n }\n\n return fieldValidationErrors;\n};\n\nexport const isFormFilled = (\n viewModel: ViewModel,\n formValidationOptions?: FormValidationOptions,\n): boolean => {\n const customValidatorFields = getCustomValidatorFields();\n\n // TODO fix next line\n\n for (const fieldId in viewModel) {\n const fieldValue = viewModel[fieldId] ? viewModel[fieldId] : \"\";\n const isFieldSkipped =\n viewModel.fieldsToSkipValidation &&\n viewModel.fieldsToSkipValidation.includes(fieldId as FieldId);\n\n if (\n FieldIdEnum[fieldId] &&\n typeof validateFieldById(fieldId, fieldValue, formValidationOptions) === \"string\" &&\n !isFieldSkipped\n ) {\n return false;\n }\n }\n\n const metadata = getSafe(() => (viewModel as WithCoreFields).metadata, null);\n if (metadata !== null) {\n // TODO fix next line\n\n for (const fieldId in metadata) {\n const fieldValue = metadata[fieldId] !== undefined ? metadata[fieldId] : \"\";\n\n if (\n customValidatorFields.includes(fieldId) &&\n typeof getCustomValidator(fieldId)(fieldValue, formValidationOptions) === \"string\"\n ) {\n return false;\n }\n }\n }\n\n return true;\n};\n\nexport const isFormErrored = (currentFieldValidationErrors: FieldValidationErrors): boolean => {\n // TODO fix next line\n\n for (const field in currentFieldValidationErrors) {\n if (currentFieldValidationErrors[field]) {\n logger.info(`Field '${field}' has errorId '${currentFieldValidationErrors[field]}'`);\n return true;\n }\n }\n return false;\n};\n\nconst getValidationError = (\n fieldId: FieldId,\n value: FieldContent,\n defaultValidator: Validator,\n overriddenValidator?: Validator,\n formValidationOptions?: FormValidationOptions,\n): ErrorId => {\n if (overriddenValidator) {\n logger.info(`Using overridden validator for field '${fieldId}'`);\n return overriddenValidator(value, formValidationOptions) as ErrorId;\n }\n return defaultValidator(value, formValidationOptions) as ErrorId;\n};\n\nconst getEmptyFieldValidationErrors = (): FieldValidationErrors => {\n const emptyFieldValidationErrors: FieldValidationErrors = getFieldValidationErrorsEmpty();\n const emptyExtendedFieldValidationErrors: ExtendedFieldValidationErrors =\n getExtendedFieldValidationErrorsEmpty();\n const fieldValidationErrors: FieldValidationErrors = {\n ...emptyFieldValidationErrors,\n ...emptyExtendedFieldValidationErrors,\n };\n return fieldValidationErrors;\n};\n\nconst getCustomValidationError = (\n fieldId: ExtendedFieldId,\n value: FieldContent,\n formValidationOptions?: FormValidationOptions,\n): ExtendedErrorId => {\n const customValidator: Validator = getCustomValidator(fieldId);\n logger.info(`Using custom validator for custom field '${fieldId}'`);\n return customValidator ? customValidator(value, formValidationOptions) : undefined;\n};\n\nconst customValidatorExists = (fieldId: ExtendedFieldId): boolean => {\n const customValidatorFields = getCustomValidatorFields();\n\n if (customValidatorFields.length && customValidatorFields.indexOf(fieldId) >= 0) {\n return true;\n }\n return false;\n};\n\nconst getFirstNameValidationError = (value: FieldContent): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidFirstName\";\n\n if (value === undefined || !isValidName(value as string)) {\n return invalidError;\n }\n};\n\nconst getLastNameValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidLastName\";\n\n if (value === undefined || !isValidName(value)) {\n return invalidError;\n }\n};\n\nconst getMemberIdError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidMemberId\";\n\n if (value === undefined || value === \"\") {\n return invalidError;\n }\n};\n\nconst getCountryValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCountry\";\n if (!value) {\n return invalidError;\n }\n};\n\nexport const getEmailValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidEmail\";\n const VALID_EMAIL_REGEXP =\n /(^\\s*?[A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+)*@([A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+(\\.[A-Za-z0-9!#$%&''*+\\/=?^_`{|}~-]+)+|\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])\\s*?$)/;\n\n if (value === undefined || !VALID_EMAIL_REGEXP.test(value)) {\n return invalidError;\n }\n};\n\nexport const getPhoneNumberValidationError =\n (failIfValueFalsy: boolean, options?: { country: Country }) =>\n (value: string): ErrorId => {\n const invalidPhoneNumber: ErrorId = \"invalidPhoneNumber\";\n if (!value) {\n return failIfValueFalsy ? invalidPhoneNumber : undefined;\n }\n\n if (options?.country && options.country !== \"US\" && !INTL_PHONE_NUMBER_REGEX.test(value)) {\n return invalidPhoneNumber;\n }\n\n const matchedPatterns = VALID_PHONE_NUMBER_REGEXPS.filter((regexp: RegExp) =>\n regexp.test(value),\n );\n\n if (matchedPatterns.length === 0) {\n return invalidPhoneNumber;\n }\n };\n\nconst getPhoneNumberValidator = (formValidationOptions?: FormValidationOptions): Validator => {\n const country = formValidationOptions?.viewModel?.countryChoice?.value;\n const shouldFailIfEmpty =\n (formValidationOptions && formValidationOptions.smsLoopEnabled) ||\n // restricting the non-US empty check to age programs to prevent any possible\n // leakage in case optional phone numbers are allowed on other program types.\n (formValidationOptions?.currentStep === \"collectAgePersonalInfo\" &&\n country &&\n country !== \"US\");\n return getPhoneNumberValidationError(shouldFailIfEmpty, { country });\n};\n\nconst getOrganizationValidationError = (value: Organization): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidOrganization\";\n if (\n value.id === undefined ||\n Number.isNaN(value.id) ||\n (value.source !== \"EMPLOYER\" && value.id < 0) ||\n (value.source === \"EMPLOYER\" && (value.id > -1 || !value.idExtended)) ||\n (value.id === 0 && value.name.length <= 0)\n ) {\n return invalidError;\n }\n};\n\nconst isBirthDateEmpty = (birthDate: any) => {\n const noUndefined = birthDate.split(\"undefined\").join(\"\");\n return noUndefined.length <= 2;\n};\n\nconst getBirthDateValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidBirthDate\";\n const underagePersonError: ErrorId = \"underagePerson\";\n const futureBirthDateError: ErrorId = \"futureBirthDate\";\n const outsideAgeError: ErrorId = \"outsideAgePerson\";\n const minAge = formValidationOptions?.minAge ?? undefined;\n const maxAge = formValidationOptions?.maxAge ?? undefined;\n\n if (getSafe(() => formValidationOptions.currentStep === \"collectMemberPersonalInfo\")) {\n if (value === undefined || value === \"\" || isBirthDateEmpty(value)) return;\n if (!isValidDateFormat(value) || !isValidDate(value)) {\n return invalidError;\n }\n } else if (value === undefined || !isValidDateFormat(value) || !isValidDate(value)) {\n return invalidError;\n }\n\n if (isAgeOutsideRange(value, minAge, maxAge)) {\n return outsideAgeError;\n }\n if (isFutureDate(value)) {\n return futureBirthDateError;\n }\n if (isUnderageDate(value, minAge)) {\n return underagePersonError;\n }\n};\n\nconst getFileValidationError = (\n file: File,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const hasFileExtension = (fileName: string): boolean => fileName && fileName.includes(\".\");\n const noValidFilesError: ErrorId = \"noValidFiles\";\n const invalidFileSizeMaxError: ErrorId = \"invalidFileSizeMax\";\n const invalidFileSizeEmptyError: ErrorId = \"invalidFileSizeEmpty\";\n const unsupportedDocMimeTypeError: ErrorId = \"unsupportedDocMimeType\";\n const duplicateFileError = \"duplicateFile\";\n const FILE_SIZE_10MB = 10485760;\n const validFileTypes: string[] = ACCEPTED_DOC_MIME_TYPES;\n if (formValidationOptions) {\n const vm = formValidationOptions.viewModel as DocUploadViewModel;\n const selectedfiles = [vm.file1, vm.file2, vm.file3];\n\n const isDuplicate = selectedfiles.some(\n (f) => f !== undefined && f.name === file.name && f.size === file.size,\n );\n if (isDuplicate) {\n return duplicateFileError;\n }\n }\n\n if (file === undefined) {\n return noValidFilesError;\n }\n // If no extension, allow upload so API can determine if valid mime type\n if (hasFileExtension(file.name) && !validFileTypes.includes(file.type)) {\n return unsupportedDocMimeTypeError;\n }\n if (file.size > FILE_SIZE_10MB) {\n return invalidFileSizeMaxError;\n }\n if (file.size <= 0) {\n return invalidFileSizeEmptyError;\n }\n};\n\nexport const getEbtCardValidationError: GetValidationError = (value, formValidationOptions) => {\n const vm = formValidationOptions.viewModel as LowIncomePersonalInfoViewModel;\n if (vm.statuses && vm.statuses.includes(\"SNAP_BENEFITS\")) {\n if (!value.match(/^\\d{16,19}$/)) {\n // Must be 16-19 digits\n return \"invalidEbtCardNumber\";\n }\n\n if (value.startsWith(\"610098\") && value.length !== 19) {\n // this prefix must be 19 digits\n return \"invalidEbtCardNumber\";\n }\n\n const checkSumExemptPrefixes = [\"600486\", \"507712\", \"507714\"] as const;\n const isExempt = checkSumExemptPrefixes.some((pref) => value.startsWith(pref));\n if (!isExempt && !luhn(value)) {\n // Failed checksum\n return \"invalidEbtCardNumber\";\n }\n }\n};\n\nexport const getPostalCodeValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const invalidPostalCode: ErrorId = \"invalidPostalCode\";\n const countryCode = getSafe(() => formValidationOptions.viewModel.countryChoice.value, \"US\");\n\n if (isValidPostalCode(countryCode, value)) {\n return;\n }\n return invalidPostalCode;\n};\n\nconst getAddress1ValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidAddress\";\n if (!value) {\n return invalidError;\n }\n};\n\nconst getCityValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCity\";\n if (!value) {\n return invalidError;\n }\n};\n\nconst getStateValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidState\";\n if (!isValidState(value)) {\n return invalidError;\n }\n};\n\nconst existsAndIsValidDate = (value?: string): boolean =>\n value !== undefined && isValidDateFormat(value) && isValidDate(value);\n\nconst isBeforeBirthdate = (value: string, vm: ViewModel): boolean => {\n const date = new Date(value);\n const birthDate = new Date((vm as InactiveMilitaryPersonalInfoViewModel).birthDate);\n\n return date < birthDate;\n};\n\nconst getDischargeDateValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n const transitionalMilitaryValidityDays = formValidationOptions?.transitionalMilitaryValidityDays;\n const shouldValidateTransitionalMilitaryValidityDays = !!transitionalMilitaryValidityDays;\n if (!existsAndIsValidDate(value)) {\n return \"invalidDischargeDate\";\n }\n if (!shouldValidateTransitionalMilitaryValidityDays && isFutureDate(value)) {\n return \"futureDischargeDate\";\n }\n if (isBeforeBirthdate(value, formValidationOptions.viewModel)) {\n return \"dischargeDateBeforeBirthDate\";\n }\n if (\n shouldValidateTransitionalMilitaryValidityDays &&\n !isWithinTransitionalMilitaryValidityDays(value, transitionalMilitaryValidityDays)\n ) {\n return \"invalidDischargeDate\";\n }\n};\n\nconst getActiveDutyStartDateValidationError = (\n value: string,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | undefined => {\n if (!value && !formValidationOptions.strictMilitaryValidationEnabled) {\n // a falsey value is valid unless strictMilitaryValidation is enabled.\n return;\n }\n\n if (!existsAndIsValidDate(value)) {\n return \"invalidActiveDutyStartDate\";\n }\n if (isFutureDate(value)) {\n return \"futureActiveDutyStartDate\";\n }\n if (isBeforeBirthdate(value, formValidationOptions.viewModel)) {\n return \"activeDutyStartDateBeforeBirthDate\";\n }\n};\n\nconst getSsnValidationError = (value: number): ErrorId | undefined => {\n const invalidSocialSecurityNumber: ErrorId = \"invalidSocialSecurityNumber\";\n if (value.toString().length !== SSN_STRING_LENGTH) {\n return invalidSocialSecurityNumber;\n }\n};\n\nconst isValidLicensedProfessionalStatus = (value: string) => value.length > 0;\n\nconst isValidLowIncomeStatus = (value: string) => value.length > 0;\n\nconst getDriverLicenseNumberValidationError = (value: string): ErrorId | undefined => {\n const invalidDriverLicenseNumber: ErrorId = \"invalidDriverLicenseNumber\";\n const VALID_DRIVER_LICENSE_REGEXP = /^[A-Za-z0-9-\\*]{1,100}$/; // '*' is sometimes used in WA state\n\n if (value === undefined || !VALID_DRIVER_LICENSE_REGEXP.test(value)) {\n return invalidDriverLicenseNumber;\n }\n};\n\nconst getStatusesValidationError = (value: string): ErrorId | undefined => {\n const invalidStatuses: ErrorId = \"invalidStatuses\";\n if (!value || !isValidLicensedProfessionalStatus(value) || !isValidLowIncomeStatus(value)) {\n return invalidStatuses;\n }\n};\n\nconst isValidMilitaryStatus = (value: string) => MILITARY_STATUS.includes(value as MilitaryStatus);\n\nconst isValidFirstResponderStatus = (value: string): boolean =>\n FIRST_RESPONDER_STATUS.includes(value as FirstResponderStatus);\n\nconst isValidMedicalProfessionalStatus = (value: string) =>\n MEDICAL_PROFESSIONAL_STATUS.includes(value as MedicalProfessionalStatus);\n\nconst isRecentMoverStatus = (value: string) =>\n RECENT_MOVER_STATUS.includes(value as RecentMoverStatus);\n\nconst getStatusValidationError = (value: string): ErrorId | undefined => {\n const invalidStatus: ErrorId = \"invalidStatus\";\n\n if (\n !value ||\n (!isValidMilitaryStatus(value) &&\n !isValidFirstResponderStatus(value) &&\n !isValidMedicalProfessionalStatus(value) &&\n !isRecentMoverStatus(value) &&\n !isValidLowIncomeStatus(value) &&\n !isValidLicensedProfessionalStatus(value))\n ) {\n return invalidStatus;\n }\n};\n\nconst getAuthenticationCodeValidationError = (value: FieldContent): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidAuthenticationLoopToken\";\n\n if (value === undefined || value.toString().length !== AUTH_TOKEN_LENGTH) {\n return invalidError;\n }\n};\n\nexport const getCvecNumberValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCvecNumber\";\n const VALID_CVEC_NUMBER_REGEXP = /^(?:[a-zA-Z0-9]\\s*){12}$|^$/;\n\n if (value === undefined || !VALID_CVEC_NUMBER_REGEXP.test(value)) {\n return invalidError;\n }\n};\n\nexport const getCaptchaTokenValidationError = (value: string): ErrorId | undefined => {\n const invalidError: ErrorId = \"invalidCaptchaToken\";\n\n if (value === undefined || value === \"\") {\n return invalidError;\n }\n};\n\nexport const isValidName = (value: string, opts?: { _test_backup_regex: boolean }): boolean => {\n try {\n const VALID_NAME_REGEXP = /([\\p{Letter}\\p{Mark}\\p{Connector_Punctuation}\\p{Join_Control}]+)/v;\n if (opts?._test_backup_regex) {\n throw new Error(\"testing backup regex\");\n }\n return VALID_NAME_REGEXP.test(value);\n } catch {\n // unicode sets `/v` is unsupported in older browsers, notably iOS 15/16 so if that fails instead use a\n // simpler regex that will compile. It's less accurate but we have the safety of server-side validation.\n //\n // This regex matches most characters, but excludes some control characters, space, and ASCII digits (0-9).\n // eslint-disable-next-line no-control-regex\n const VALID_NAME_REGEXP = /([\\u0000-\\u0019\\u0021-\\u002F\\u003A-\\uFFFF]+)/;\n return VALID_NAME_REGEXP.test(value);\n }\n};\n\nconst isValidDate = (value: string): boolean => {\n const dateParts = value.split(\"-\");\n const dateYear = parseInt(dateParts[0], DECIMAL_RADIX);\n const dateMonth = parseInt(dateParts[1], DECIMAL_RADIX);\n const dateDay = parseInt(dateParts[2], DECIMAL_RADIX);\n const monthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n if (dateYear < MIN_BIRTHYEAR || dateYear > MAX_BIRTHYEAR || dateMonth <= 0 || dateMonth > 12) {\n return false;\n }\n\n // Check for leap years\n if (dateYear % 400 === 0 || (dateYear % 100 !== 0 && dateYear % 4 === 0)) {\n monthDays[1] = 29;\n }\n\n if (dateDay <= 0 || dateDay > monthDays[dateMonth - 1]) {\n return false;\n }\n return true;\n};\n\nconst isValidDateFormat = (value: string): boolean => {\n const VALID_DATE_FORMAT_REGEXP = /^\\d{4}[\\-\\s\\/]\\d{1,2}[\\-\\s\\/]\\d{1,2}$/;\n\n if (VALID_DATE_FORMAT_REGEXP.test(value)) {\n return true;\n }\n return false;\n};\n\nconst isFutureDate = (value: string): boolean => {\n const currentDate = new Date();\n const candidateDate = new Date(value);\n return candidateDate > currentDate;\n};\n\nconst isWithinTransitionalMilitaryValidityDays = (\n value: string,\n transitionalMilitaryValidityDays: number,\n): boolean => {\n const candidateDate = new Date(`${value}T00:00:00Z`);\n\n const now = new Date();\n const todayUTC = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()));\n\n const pastDischargeDateLimit = new Date(todayUTC.valueOf());\n pastDischargeDateLimit.setUTCDate(todayUTC.getUTCDate() - transitionalMilitaryValidityDays);\n\n const futureDischargeDateLimit = new Date(todayUTC.valueOf());\n futureDischargeDateLimit.setUTCDate(todayUTC.getUTCDate() + transitionalMilitaryValidityDays);\n\n return candidateDate >= pastDischargeDateLimit && candidateDate <= futureDischargeDateLimit;\n};\n\nconst isUnderageDate = (value: string, minAge = ADOLESCENT_AGE): boolean => {\n const birthDateParts = value.split(\"-\");\n const birthDateYear = parseInt(birthDateParts[0], DECIMAL_RADIX);\n const birthDateMonth = parseInt(birthDateParts[1], DECIMAL_RADIX);\n const birthDateDay = parseInt(birthDateParts[2], DECIMAL_RADIX);\n const currentYear = new Date().getFullYear();\n const currentMonth = new Date().getMonth() + 1;\n const currentDay = new Date().getDate();\n\n if (currentYear - birthDateYear === minAge) {\n if (currentMonth - birthDateMonth < 0) {\n return true;\n }\n\n if (currentMonth - birthDateMonth === 0) {\n if (currentDay - birthDateDay < 0) {\n return true;\n }\n }\n } else if (currentYear - birthDateYear < minAge) {\n return true;\n }\n return false;\n};\n\nconst isOverageDate = (value: string, maxAge = 120) => {\n const birthDateParts = value.split(\"-\");\n const birthDateYear = parseInt(birthDateParts[0], DECIMAL_RADIX);\n const birthDateMonth = parseInt(birthDateParts[1], DECIMAL_RADIX);\n const birthDateDay = parseInt(birthDateParts[2], DECIMAL_RADIX);\n const currentYear = new Date().getFullYear();\n const currentMonth = new Date().getMonth() + 1;\n const currentDay = new Date().getDate();\n\n if (currentYear - birthDateYear === maxAge) {\n if (currentMonth - birthDateMonth > 0) {\n return true;\n }\n\n if (currentMonth - birthDateMonth === 0) {\n if (currentDay - birthDateDay > 0) {\n return true;\n }\n }\n } else if (currentYear - birthDateYear > maxAge) {\n return true;\n }\n return false;\n};\n\nconst isAgeOutsideRange = (value: string, minAge?: number, maxAge?: number): boolean => {\n let isUnderage = false;\n let isOverage = false;\n\n if (minAge) {\n isUnderage = isUnderageDate(value, minAge);\n }\n if (maxAge) {\n isOverage = isOverageDate(value, maxAge);\n }\n return isUnderage || isOverage;\n};\n\nexport const isValidPostalCode = (countryCode: Country = \"US\", value: string) => {\n const countryCodeString = countryCode as any;\n if (postcodeValidatorExistsForCountry(countryCodeString)) {\n return postcodeValidator(value, countryCodeString);\n }\n return false;\n};\n\n/**\n * @deprecated Use `isValidPostalCode('US', value)` instead\n * */\nexport const isValidUsPostalCode = (value: string): boolean => isValidPostalCode(\"US\", value);\n\n/**\n * @deprecated Use `isValidPostalCode('CA', value)` instead\n * */\nexport const isValidCanadianPostalCode = (value: string): boolean => isValidPostalCode(\"CA\", value);\n\nconst isValidState = (value: string) => {\n if (!value) {\n return false;\n }\n const validStateCodes: StateEnum[] = Object.values(StateEnum);\n if (validStateCodes.indexOf(value.toUpperCase() as StateEnum) >= 0) {\n return true;\n }\n return false;\n};\n\nexport const validateFieldById = (\n fieldId: FieldId | ExtendedFieldId,\n value: FieldContent,\n formValidationOptions?: FormValidationOptions,\n): ErrorId | ExtendedErrorId | undefined => {\n assertValidFieldId(fieldId);\n\n const defaultCoreFieldValidatorMap: Partial<Record<string, Validator>> = {\n [FieldIdEnum.firstName]: getFirstNameValidationError,\n [FieldIdEnum.lastName]: getLastNameValidationError,\n [FieldIdEnum.memberId]: getMemberIdError,\n [FieldIdEnum.email]: getEmailValidationError,\n [FieldIdEnum.organizationEmail]: getEmailValidationError,\n [FieldIdEnum.phoneNumber]: getPhoneNumberValidator(formValidationOptions),\n [FieldIdEnum.organization]: getOrganizationValidationError,\n [FieldIdEnum.birthDate]: getBirthDateValidationError,\n [FieldIdEnum.postalCode]: getPostalCodeValidationError,\n [FieldIdEnum.address1]: getAddress1ValidationError,\n [FieldIdEnum.city]: getCityValidationError,\n [FieldIdEnum.state]: getStateValidationError,\n [FieldIdEnum.country]: getCountryValidationError,\n [FieldIdEnum.dischargeDate]: getDischargeDateValidationError,\n [FieldIdEnum.activeDutyStartDate]: getActiveDutyStartDateValidationError,\n [FieldIdEnum.socialSecurityNumber]: getSsnValidationError,\n [FieldIdEnum.status]: getStatusValidationError,\n [FieldIdEnum.statuses]: getStatusesValidationError,\n [FieldIdEnum.driverLicenseNumber]: getDriverLicenseNumberValidationError,\n [FieldIdEnum.docUpload]: getFileValidationError,\n [FieldIdEnum.ebtCardNumber]: getEbtCardValidationError,\n [FieldIdEnum.authenticationCode]: getAuthenticationCodeValidationError,\n [FieldIdEnum.cvecNumber]: getCvecNumberValidationError,\n [FieldIdEnum.captchaToken]: getCaptchaTokenValidationError,\n };\n\n const defaultValidator = defaultCoreFieldValidatorMap[fieldId];\n if (defaultValidator) {\n const overriddenValidator: Validator = getOverridenValidator(fieldId as FieldId);\n return getValidationError(\n fieldId as FieldId,\n value,\n defaultValidator,\n overriddenValidator,\n formValidationOptions,\n );\n }\n\n if (customValidatorExists(fieldId)) {\n return getCustomValidationError(fieldId, value, formValidationOptions);\n }\n\n return undefined;\n};\n"],"x_google_ignoreList":[0,1,2,3],"mappings":";;;AAAA,IAAW;CACV,SAAU,GAAa;CA2LpB,AA1LA,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KAAQ,MACpB,EAAY,KA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"}
|