@discretion/core 0.1.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/CHANGELOG.md +117 -0
- package/LICENSE +21 -0
- package/README.md +319 -0
- package/dist/src/checksums/aba.d.ts +25 -0
- package/dist/src/checksums/aba.d.ts.map +1 -0
- package/dist/src/checksums/aba.js +47 -0
- package/dist/src/checksums/aba.js.map +1 -0
- package/dist/src/checksums/digits.d.ts +55 -0
- package/dist/src/checksums/digits.d.ts.map +1 -0
- package/dist/src/checksums/digits.js +114 -0
- package/dist/src/checksums/digits.js.map +1 -0
- package/dist/src/checksums/icao9303.d.ts +29 -0
- package/dist/src/checksums/icao9303.d.ts.map +1 -0
- package/dist/src/checksums/icao9303.js +56 -0
- package/dist/src/checksums/icao9303.js.map +1 -0
- package/dist/src/checksums/index.d.ts +21 -0
- package/dist/src/checksums/index.d.ts.map +1 -0
- package/dist/src/checksums/index.js +21 -0
- package/dist/src/checksums/index.js.map +1 -0
- package/dist/src/checksums/iso7064.d.ts +67 -0
- package/dist/src/checksums/iso7064.d.ts.map +1 -0
- package/dist/src/checksums/iso7064.js +159 -0
- package/dist/src/checksums/iso7064.js.map +1 -0
- package/dist/src/checksums/luhn.d.ts +32 -0
- package/dist/src/checksums/luhn.d.ts.map +1 -0
- package/dist/src/checksums/luhn.js +66 -0
- package/dist/src/checksums/luhn.js.map +1 -0
- package/dist/src/checksums/mod97.d.ts +55 -0
- package/dist/src/checksums/mod97.d.ts.map +1 -0
- package/dist/src/checksums/mod97.js +94 -0
- package/dist/src/checksums/mod97.js.map +1 -0
- package/dist/src/checksums/verhoeff.d.ts +28 -0
- package/dist/src/checksums/verhoeff.d.ts.map +1 -0
- package/dist/src/checksums/verhoeff.js +80 -0
- package/dist/src/checksums/verhoeff.js.map +1 -0
- package/dist/src/checksums/weighted.d.ts +64 -0
- package/dist/src/checksums/weighted.d.ts.map +1 -0
- package/dist/src/checksums/weighted.js +97 -0
- package/dist/src/checksums/weighted.js.map +1 -0
- package/dist/src/context/documentProfile.d.ts +34 -0
- package/dist/src/context/documentProfile.d.ts.map +1 -0
- package/dist/src/context/documentProfile.js +253 -0
- package/dist/src/context/documentProfile.js.map +1 -0
- package/dist/src/context/negativeRules.d.ts +60 -0
- package/dist/src/context/negativeRules.d.ts.map +1 -0
- package/dist/src/context/negativeRules.js +696 -0
- package/dist/src/context/negativeRules.js.map +1 -0
- package/dist/src/context/score.d.ts +52 -0
- package/dist/src/context/score.d.ts.map +1 -0
- package/dist/src/context/score.js +346 -0
- package/dist/src/context/score.js.map +1 -0
- package/dist/src/context/structure.d.ts +46 -0
- package/dist/src/context/structure.d.ts.map +1 -0
- package/dist/src/context/structure.js +528 -0
- package/dist/src/context/structure.js.map +1 -0
- package/dist/src/context/triggers.d.ts +73 -0
- package/dist/src/context/triggers.d.ts.map +1 -0
- package/dist/src/context/triggers.js +172 -0
- package/dist/src/context/triggers.js.map +1 -0
- package/dist/src/context/types.d.ts +137 -0
- package/dist/src/context/types.d.ts.map +1 -0
- package/dist/src/context/types.js +25 -0
- package/dist/src/context/types.js.map +1 -0
- package/dist/src/crypto/keccak256.d.ts +15 -0
- package/dist/src/crypto/keccak256.d.ts.map +1 -0
- package/dist/src/crypto/keccak256.js +89 -0
- package/dist/src/crypto/keccak256.js.map +1 -0
- package/dist/src/crypto/sha256.d.ts +16 -0
- package/dist/src/crypto/sha256.d.ts.map +1 -0
- package/dist/src/crypto/sha256.js +81 -0
- package/dist/src/crypto/sha256.js.map +1 -0
- package/dist/src/detect/detectors/bankcodes/auBsb.d.ts +11 -0
- package/dist/src/detect/detectors/bankcodes/auBsb.d.ts.map +1 -0
- package/dist/src/detect/detectors/bankcodes/auBsb.js +34 -0
- package/dist/src/detect/detectors/bankcodes/auBsb.js.map +1 -0
- package/dist/src/detect/detectors/bankcodes/brAgencia.d.ts +15 -0
- package/dist/src/detect/detectors/bankcodes/brAgencia.d.ts.map +1 -0
- package/dist/src/detect/detectors/bankcodes/brAgencia.js +43 -0
- package/dist/src/detect/detectors/bankcodes/brAgencia.js.map +1 -0
- package/dist/src/detect/detectors/bankcodes/caTransit.d.ts +13 -0
- package/dist/src/detect/detectors/bankcodes/caTransit.d.ts.map +1 -0
- package/dist/src/detect/detectors/bankcodes/caTransit.js +86 -0
- package/dist/src/detect/detectors/bankcodes/caTransit.js.map +1 -0
- package/dist/src/detect/detectors/bankcodes/inIfsc.d.ts +13 -0
- package/dist/src/detect/detectors/bankcodes/inIfsc.d.ts.map +1 -0
- package/dist/src/detect/detectors/bankcodes/inIfsc.js +37 -0
- package/dist/src/detect/detectors/bankcodes/inIfsc.js.map +1 -0
- package/dist/src/detect/detectors/bankcodes/index.d.ts +10 -0
- package/dist/src/detect/detectors/bankcodes/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/bankcodes/index.js +10 -0
- package/dist/src/detect/detectors/bankcodes/index.js.map +1 -0
- package/dist/src/detect/detectors/bankcodes/ukSortCode.d.ts +13 -0
- package/dist/src/detect/detectors/bankcodes/ukSortCode.d.ts.map +1 -0
- package/dist/src/detect/detectors/bankcodes/ukSortCode.js +36 -0
- package/dist/src/detect/detectors/bankcodes/ukSortCode.js.map +1 -0
- package/dist/src/detect/detectors/bankcodes/usRouting.d.ts +12 -0
- package/dist/src/detect/detectors/bankcodes/usRouting.d.ts.map +1 -0
- package/dist/src/detect/detectors/bankcodes/usRouting.js +45 -0
- package/dist/src/detect/detectors/bankcodes/usRouting.js.map +1 -0
- package/dist/src/detect/detectors/contact/email.d.ts +16 -0
- package/dist/src/detect/detectors/contact/email.d.ts.map +1 -0
- package/dist/src/detect/detectors/contact/email.js +111 -0
- package/dist/src/detect/detectors/contact/email.js.map +1 -0
- package/dist/src/detect/detectors/contact/index.d.ts +11 -0
- package/dist/src/detect/detectors/contact/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/contact/index.js +11 -0
- package/dist/src/detect/detectors/contact/index.js.map +1 -0
- package/dist/src/detect/detectors/contact/ipv4.d.ts +12 -0
- package/dist/src/detect/detectors/contact/ipv4.d.ts.map +1 -0
- package/dist/src/detect/detectors/contact/ipv4.js +109 -0
- package/dist/src/detect/detectors/contact/ipv4.js.map +1 -0
- package/dist/src/detect/detectors/contact/ipv6.d.ts +16 -0
- package/dist/src/detect/detectors/contact/ipv6.d.ts.map +1 -0
- package/dist/src/detect/detectors/contact/ipv6.js +187 -0
- package/dist/src/detect/detectors/contact/ipv6.js.map +1 -0
- package/dist/src/detect/detectors/contact/mac.d.ts +14 -0
- package/dist/src/detect/detectors/contact/mac.d.ts.map +1 -0
- package/dist/src/detect/detectors/contact/mac.js +64 -0
- package/dist/src/detect/detectors/contact/mac.js.map +1 -0
- package/dist/src/detect/detectors/contact/phone.d.ts +21 -0
- package/dist/src/detect/detectors/contact/phone.d.ts.map +1 -0
- package/dist/src/detect/detectors/contact/phone.js +76 -0
- package/dist/src/detect/detectors/contact/phone.js.map +1 -0
- package/dist/src/detect/detectors/contact/urlCredentials.d.ts +23 -0
- package/dist/src/detect/detectors/contact/urlCredentials.d.ts.map +1 -0
- package/dist/src/detect/detectors/contact/urlCredentials.js +123 -0
- package/dist/src/detect/detectors/contact/urlCredentials.js.map +1 -0
- package/dist/src/detect/detectors/crypto/ada.d.ts +13 -0
- package/dist/src/detect/detectors/crypto/ada.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/ada.js +51 -0
- package/dist/src/detect/detectors/crypto/ada.js.map +1 -0
- package/dist/src/detect/detectors/crypto/btc.d.ts +15 -0
- package/dist/src/detect/detectors/crypto/btc.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/btc.js +78 -0
- package/dist/src/detect/detectors/crypto/btc.js.map +1 -0
- package/dist/src/detect/detectors/crypto/dot.d.ts +13 -0
- package/dist/src/detect/detectors/crypto/dot.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/dot.js +41 -0
- package/dist/src/detect/detectors/crypto/dot.js.map +1 -0
- package/dist/src/detect/detectors/crypto/eth.d.ts +15 -0
- package/dist/src/detect/detectors/crypto/eth.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/eth.js +63 -0
- package/dist/src/detect/detectors/crypto/eth.js.map +1 -0
- package/dist/src/detect/detectors/crypto/index.d.ts +12 -0
- package/dist/src/detect/detectors/crypto/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/index.js +12 -0
- package/dist/src/detect/detectors/crypto/index.js.map +1 -0
- package/dist/src/detect/detectors/crypto/ltc.d.ts +12 -0
- package/dist/src/detect/detectors/crypto/ltc.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/ltc.js +71 -0
- package/dist/src/detect/detectors/crypto/ltc.js.map +1 -0
- package/dist/src/detect/detectors/crypto/sol.d.ts +13 -0
- package/dist/src/detect/detectors/crypto/sol.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/sol.js +39 -0
- package/dist/src/detect/detectors/crypto/sol.js.map +1 -0
- package/dist/src/detect/detectors/crypto/trx.d.ts +8 -0
- package/dist/src/detect/detectors/crypto/trx.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/trx.js +34 -0
- package/dist/src/detect/detectors/crypto/trx.js.map +1 -0
- package/dist/src/detect/detectors/crypto/xmr.d.ts +10 -0
- package/dist/src/detect/detectors/crypto/xmr.d.ts.map +1 -0
- package/dist/src/detect/detectors/crypto/xmr.js +51 -0
- package/dist/src/detect/detectors/crypto/xmr.js.map +1 -0
- package/dist/src/detect/detectors/documents/driversLicense.d.ts +24 -0
- package/dist/src/detect/detectors/documents/driversLicense.d.ts.map +1 -0
- package/dist/src/detect/detectors/documents/driversLicense.js +79 -0
- package/dist/src/detect/detectors/documents/driversLicense.js.map +1 -0
- package/dist/src/detect/detectors/documents/healthData.d.ts +23 -0
- package/dist/src/detect/detectors/documents/healthData.d.ts.map +1 -0
- package/dist/src/detect/detectors/documents/healthData.js +78 -0
- package/dist/src/detect/detectors/documents/healthData.js.map +1 -0
- package/dist/src/detect/detectors/documents/index.d.ts +9 -0
- package/dist/src/detect/detectors/documents/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/documents/index.js +9 -0
- package/dist/src/detect/detectors/documents/index.js.map +1 -0
- package/dist/src/detect/detectors/documents/passportMrz.d.ts +20 -0
- package/dist/src/detect/detectors/documents/passportMrz.d.ts.map +1 -0
- package/dist/src/detect/detectors/documents/passportMrz.js +194 -0
- package/dist/src/detect/detectors/documents/passportMrz.js.map +1 -0
- package/dist/src/detect/detectors/documents/usNpi.d.ts +16 -0
- package/dist/src/detect/detectors/documents/usNpi.d.ts.map +1 -0
- package/dist/src/detect/detectors/documents/usNpi.js +48 -0
- package/dist/src/detect/detectors/documents/usNpi.js.map +1 -0
- package/dist/src/detect/detectors/documents/vin.d.ts +15 -0
- package/dist/src/detect/detectors/documents/vin.d.ts.map +1 -0
- package/dist/src/detect/detectors/documents/vin.js +64 -0
- package/dist/src/detect/detectors/documents/vin.js.map +1 -0
- package/dist/src/detect/detectors/financial/creditCard.d.ts +23 -0
- package/dist/src/detect/detectors/financial/creditCard.d.ts.map +1 -0
- package/dist/src/detect/detectors/financial/creditCard.js +157 -0
- package/dist/src/detect/detectors/financial/creditCard.js.map +1 -0
- package/dist/src/detect/detectors/financial/iban.d.ts +18 -0
- package/dist/src/detect/detectors/financial/iban.d.ts.map +1 -0
- package/dist/src/detect/detectors/financial/iban.js +80 -0
- package/dist/src/detect/detectors/financial/iban.js.map +1 -0
- package/dist/src/detect/detectors/financial/ibanRegistry.d.ts +35 -0
- package/dist/src/detect/detectors/financial/ibanRegistry.d.ts.map +1 -0
- package/dist/src/detect/detectors/financial/ibanRegistry.js +92 -0
- package/dist/src/detect/detectors/financial/ibanRegistry.js.map +1 -0
- package/dist/src/detect/detectors/financial/index.d.ts +7 -0
- package/dist/src/detect/detectors/financial/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/financial/index.js +7 -0
- package/dist/src/detect/detectors/financial/index.js.map +1 -0
- package/dist/src/detect/detectors/financial/swiftBic.d.ts +17 -0
- package/dist/src/detect/detectors/financial/swiftBic.d.ts.map +1 -0
- package/dist/src/detect/detectors/financial/swiftBic.js +55 -0
- package/dist/src/detect/detectors/financial/swiftBic.js.map +1 -0
- package/dist/src/detect/detectors/index.d.ts +15 -0
- package/dist/src/detect/detectors/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/index.js +15 -0
- package/dist/src/detect/detectors/index.js.map +1 -0
- package/dist/src/detect/detectors/location/coordinates.d.ts +14 -0
- package/dist/src/detect/detectors/location/coordinates.d.ts.map +1 -0
- package/dist/src/detect/detectors/location/coordinates.js +79 -0
- package/dist/src/detect/detectors/location/coordinates.js.map +1 -0
- package/dist/src/detect/detectors/location/index.d.ts +7 -0
- package/dist/src/detect/detectors/location/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/location/index.js +7 -0
- package/dist/src/detect/detectors/location/index.js.map +1 -0
- package/dist/src/detect/detectors/location/postalCode.d.ts +13 -0
- package/dist/src/detect/detectors/location/postalCode.d.ts.map +1 -0
- package/dist/src/detect/detectors/location/postalCode.js +53 -0
- package/dist/src/detect/detectors/location/postalCode.js.map +1 -0
- package/dist/src/detect/detectors/location/postalRegistry.d.ts +19 -0
- package/dist/src/detect/detectors/location/postalRegistry.d.ts.map +1 -0
- package/dist/src/detect/detectors/location/postalRegistry.js +73 -0
- package/dist/src/detect/detectors/location/postalRegistry.js.map +1 -0
- package/dist/src/detect/detectors/location/streetAddress.d.ts +21 -0
- package/dist/src/detect/detectors/location/streetAddress.d.ts.map +1 -0
- package/dist/src/detect/detectors/location/streetAddress.js +70 -0
- package/dist/src/detect/detectors/location/streetAddress.js.map +1 -0
- package/dist/src/detect/detectors/natid/africa.d.ts +17 -0
- package/dist/src/detect/detectors/natid/africa.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/africa.js +106 -0
- package/dist/src/detect/detectors/natid/africa.js.map +1 -0
- package/dist/src/detect/detectors/natid/ar.d.ts +14 -0
- package/dist/src/detect/detectors/natid/ar.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/ar.js +62 -0
- package/dist/src/detect/detectors/natid/ar.js.map +1 -0
- package/dist/src/detect/detectors/natid/au.d.ts +13 -0
- package/dist/src/detect/detectors/natid/au.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/au.js +100 -0
- package/dist/src/detect/detectors/natid/au.js.map +1 -0
- package/dist/src/detect/detectors/natid/be.d.ts +8 -0
- package/dist/src/detect/detectors/natid/be.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/be.js +44 -0
- package/dist/src/detect/detectors/natid/be.js.map +1 -0
- package/dist/src/detect/detectors/natid/bg.d.ts +7 -0
- package/dist/src/detect/detectors/natid/bg.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/bg.js +44 -0
- package/dist/src/detect/detectors/natid/bg.js.map +1 -0
- package/dist/src/detect/detectors/natid/br.d.ts +8 -0
- package/dist/src/detect/detectors/natid/br.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/br.js +85 -0
- package/dist/src/detect/detectors/natid/br.js.map +1 -0
- package/dist/src/detect/detectors/natid/ca.d.ts +8 -0
- package/dist/src/detect/detectors/natid/ca.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/ca.js +41 -0
- package/dist/src/detect/detectors/natid/ca.js.map +1 -0
- package/dist/src/detect/detectors/natid/cl.d.ts +9 -0
- package/dist/src/detect/detectors/natid/cl.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/cl.js +47 -0
- package/dist/src/detect/detectors/natid/cl.js.map +1 -0
- package/dist/src/detect/detectors/natid/cn.d.ts +9 -0
- package/dist/src/detect/detectors/natid/cn.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/cn.js +49 -0
- package/dist/src/detect/detectors/natid/cn.js.map +1 -0
- package/dist/src/detect/detectors/natid/co.d.ts +10 -0
- package/dist/src/detect/detectors/natid/co.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/co.js +43 -0
- package/dist/src/detect/detectors/natid/co.js.map +1 -0
- package/dist/src/detect/detectors/natid/cz.d.ts +11 -0
- package/dist/src/detect/detectors/natid/cz.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/cz.js +44 -0
- package/dist/src/detect/detectors/natid/cz.js.map +1 -0
- package/dist/src/detect/detectors/natid/de.d.ts +16 -0
- package/dist/src/detect/detectors/natid/de.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/de.js +77 -0
- package/dist/src/detect/detectors/natid/de.js.map +1 -0
- package/dist/src/detect/detectors/natid/dk.d.ts +9 -0
- package/dist/src/detect/detectors/natid/dk.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/dk.js +31 -0
- package/dist/src/detect/detectors/natid/dk.js.map +1 -0
- package/dist/src/detect/detectors/natid/es.d.ts +12 -0
- package/dist/src/detect/detectors/natid/es.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/es.js +96 -0
- package/dist/src/detect/detectors/natid/es.js.map +1 -0
- package/dist/src/detect/detectors/natid/fi.d.ts +10 -0
- package/dist/src/detect/detectors/natid/fi.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/fi.js +40 -0
- package/dist/src/detect/detectors/natid/fi.js.map +1 -0
- package/dist/src/detect/detectors/natid/fr.d.ts +12 -0
- package/dist/src/detect/detectors/natid/fr.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/fr.js +61 -0
- package/dist/src/detect/detectors/natid/fr.js.map +1 -0
- package/dist/src/detect/detectors/natid/gb.d.ts +10 -0
- package/dist/src/detect/detectors/natid/gb.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/gb.js +72 -0
- package/dist/src/detect/detectors/natid/gb.js.map +1 -0
- package/dist/src/detect/detectors/natid/gr.d.ts +7 -0
- package/dist/src/detect/detectors/natid/gr.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/gr.js +36 -0
- package/dist/src/detect/detectors/natid/gr.js.map +1 -0
- package/dist/src/detect/detectors/natid/gulf.d.ts +16 -0
- package/dist/src/detect/detectors/natid/gulf.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/gulf.js +121 -0
- package/dist/src/detect/detectors/natid/gulf.js.map +1 -0
- package/dist/src/detect/detectors/natid/hk.d.ts +9 -0
- package/dist/src/detect/detectors/natid/hk.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/hk.js +41 -0
- package/dist/src/detect/detectors/natid/hk.js.map +1 -0
- package/dist/src/detect/detectors/natid/hr.d.ts +6 -0
- package/dist/src/detect/detectors/natid/hr.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/hr.js +32 -0
- package/dist/src/detect/detectors/natid/hr.js.map +1 -0
- package/dist/src/detect/detectors/natid/hu.d.ts +7 -0
- package/dist/src/detect/detectors/natid/hu.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/hu.js +37 -0
- package/dist/src/detect/detectors/natid/hu.js.map +1 -0
- package/dist/src/detect/detectors/natid/ie.d.ts +9 -0
- package/dist/src/detect/detectors/natid/ie.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/ie.js +36 -0
- package/dist/src/detect/detectors/natid/ie.js.map +1 -0
- package/dist/src/detect/detectors/natid/il.d.ts +10 -0
- package/dist/src/detect/detectors/natid/il.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/il.js +38 -0
- package/dist/src/detect/detectors/natid/il.js.map +1 -0
- package/dist/src/detect/detectors/natid/in.d.ts +17 -0
- package/dist/src/detect/detectors/natid/in.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/in.js +67 -0
- package/dist/src/detect/detectors/natid/in.js.map +1 -0
- package/dist/src/detect/detectors/natid/index.d.ts +55 -0
- package/dist/src/detect/detectors/natid/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/index.js +55 -0
- package/dist/src/detect/detectors/natid/index.js.map +1 -0
- package/dist/src/detect/detectors/natid/is.d.ts +8 -0
- package/dist/src/detect/detectors/natid/is.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/is.js +42 -0
- package/dist/src/detect/detectors/natid/is.js.map +1 -0
- package/dist/src/detect/detectors/natid/it.d.ts +12 -0
- package/dist/src/detect/detectors/natid/it.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/it.js +62 -0
- package/dist/src/detect/detectors/natid/it.js.map +1 -0
- package/dist/src/detect/detectors/natid/jp.d.ts +9 -0
- package/dist/src/detect/detectors/natid/jp.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/jp.js +46 -0
- package/dist/src/detect/detectors/natid/jp.js.map +1 -0
- package/dist/src/detect/detectors/natid/kr.d.ts +11 -0
- package/dist/src/detect/detectors/natid/kr.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/kr.js +40 -0
- package/dist/src/detect/detectors/natid/kr.js.map +1 -0
- package/dist/src/detect/detectors/natid/kz.d.ts +8 -0
- package/dist/src/detect/detectors/natid/kz.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/kz.js +46 -0
- package/dist/src/detect/detectors/natid/kz.js.map +1 -0
- package/dist/src/detect/detectors/natid/mx.d.ts +16 -0
- package/dist/src/detect/detectors/natid/mx.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/mx.js +82 -0
- package/dist/src/detect/detectors/natid/mx.js.map +1 -0
- package/dist/src/detect/detectors/natid/nl.d.ts +8 -0
- package/dist/src/detect/detectors/natid/nl.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/nl.js +40 -0
- package/dist/src/detect/detectors/natid/nl.js.map +1 -0
- package/dist/src/detect/detectors/natid/no.d.ts +9 -0
- package/dist/src/detect/detectors/natid/no.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/no.js +52 -0
- package/dist/src/detect/detectors/natid/no.js.map +1 -0
- package/dist/src/detect/detectors/natid/nz.d.ts +9 -0
- package/dist/src/detect/detectors/natid/nz.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/nz.js +52 -0
- package/dist/src/detect/detectors/natid/nz.js.map +1 -0
- package/dist/src/detect/detectors/natid/pe.d.ts +7 -0
- package/dist/src/detect/detectors/natid/pe.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/pe.js +26 -0
- package/dist/src/detect/detectors/natid/pe.js.map +1 -0
- package/dist/src/detect/detectors/natid/pl.d.ts +11 -0
- package/dist/src/detect/detectors/natid/pl.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/pl.js +105 -0
- package/dist/src/detect/detectors/natid/pl.js.map +1 -0
- package/dist/src/detect/detectors/natid/pt.d.ts +6 -0
- package/dist/src/detect/detectors/natid/pt.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/pt.js +35 -0
- package/dist/src/detect/detectors/natid/pt.js.map +1 -0
- package/dist/src/detect/detectors/natid/ro.d.ts +8 -0
- package/dist/src/detect/detectors/natid/ro.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/ro.js +48 -0
- package/dist/src/detect/detectors/natid/ro.js.map +1 -0
- package/dist/src/detect/detectors/natid/ru.d.ts +11 -0
- package/dist/src/detect/detectors/natid/ru.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/ru.js +86 -0
- package/dist/src/detect/detectors/natid/ru.js.map +1 -0
- package/dist/src/detect/detectors/natid/se.d.ts +9 -0
- package/dist/src/detect/detectors/natid/se.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/se.js +43 -0
- package/dist/src/detect/detectors/natid/se.js.map +1 -0
- package/dist/src/detect/detectors/natid/seasia.d.ts +19 -0
- package/dist/src/detect/detectors/natid/seasia.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/seasia.js +182 -0
- package/dist/src/detect/detectors/natid/seasia.js.map +1 -0
- package/dist/src/detect/detectors/natid/sg.d.ts +8 -0
- package/dist/src/detect/detectors/natid/sg.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/sg.js +39 -0
- package/dist/src/detect/detectors/natid/sg.js.map +1 -0
- package/dist/src/detect/detectors/natid/si.d.ts +8 -0
- package/dist/src/detect/detectors/natid/si.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/si.js +44 -0
- package/dist/src/detect/detectors/natid/si.js.map +1 -0
- package/dist/src/detect/detectors/natid/tr.d.ts +14 -0
- package/dist/src/detect/detectors/natid/tr.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/tr.js +79 -0
- package/dist/src/detect/detectors/natid/tr.js.map +1 -0
- package/dist/src/detect/detectors/natid/tw.d.ts +9 -0
- package/dist/src/detect/detectors/natid/tw.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/tw.js +40 -0
- package/dist/src/detect/detectors/natid/tw.js.map +1 -0
- package/dist/src/detect/detectors/natid/ua.d.ts +7 -0
- package/dist/src/detect/detectors/natid/ua.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/ua.js +38 -0
- package/dist/src/detect/detectors/natid/ua.js.map +1 -0
- package/dist/src/detect/detectors/natid/us.d.ts +15 -0
- package/dist/src/detect/detectors/natid/us.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/us.js +119 -0
- package/dist/src/detect/detectors/natid/us.js.map +1 -0
- package/dist/src/detect/detectors/natid/za.d.ts +9 -0
- package/dist/src/detect/detectors/natid/za.d.ts.map +1 -0
- package/dist/src/detect/detectors/natid/za.js +44 -0
- package/dist/src/detect/detectors/natid/za.js.map +1 -0
- package/dist/src/detect/detectors/secrets/apiKey.d.ts +14 -0
- package/dist/src/detect/detectors/secrets/apiKey.d.ts.map +1 -0
- package/dist/src/detect/detectors/secrets/apiKey.js +103 -0
- package/dist/src/detect/detectors/secrets/apiKey.js.map +1 -0
- package/dist/src/detect/detectors/secrets/connectionString.d.ts +12 -0
- package/dist/src/detect/detectors/secrets/connectionString.d.ts.map +1 -0
- package/dist/src/detect/detectors/secrets/connectionString.js +70 -0
- package/dist/src/detect/detectors/secrets/connectionString.js.map +1 -0
- package/dist/src/detect/detectors/secrets/genericSecret.d.ts +22 -0
- package/dist/src/detect/detectors/secrets/genericSecret.d.ts.map +1 -0
- package/dist/src/detect/detectors/secrets/genericSecret.js +77 -0
- package/dist/src/detect/detectors/secrets/genericSecret.js.map +1 -0
- package/dist/src/detect/detectors/secrets/index.d.ts +9 -0
- package/dist/src/detect/detectors/secrets/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/secrets/index.js +9 -0
- package/dist/src/detect/detectors/secrets/index.js.map +1 -0
- package/dist/src/detect/detectors/secrets/jwt.d.ts +11 -0
- package/dist/src/detect/detectors/secrets/jwt.d.ts.map +1 -0
- package/dist/src/detect/detectors/secrets/jwt.js +111 -0
- package/dist/src/detect/detectors/secrets/jwt.js.map +1 -0
- package/dist/src/detect/detectors/secrets/pemPrivateKey.d.ts +16 -0
- package/dist/src/detect/detectors/secrets/pemPrivateKey.d.ts.map +1 -0
- package/dist/src/detect/detectors/secrets/pemPrivateKey.js +56 -0
- package/dist/src/detect/detectors/secrets/pemPrivateKey.js.map +1 -0
- package/dist/src/detect/detectors/vat/euVat.d.ts +17 -0
- package/dist/src/detect/detectors/vat/euVat.d.ts.map +1 -0
- package/dist/src/detect/detectors/vat/euVat.js +293 -0
- package/dist/src/detect/detectors/vat/euVat.js.map +1 -0
- package/dist/src/detect/detectors/vat/index.d.ts +5 -0
- package/dist/src/detect/detectors/vat/index.d.ts.map +1 -0
- package/dist/src/detect/detectors/vat/index.js +5 -0
- package/dist/src/detect/detectors/vat/index.js.map +1 -0
- package/dist/src/detect/entropy.d.ts +28 -0
- package/dist/src/detect/entropy.d.ts.map +1 -0
- package/dist/src/detect/entropy.js +64 -0
- package/dist/src/detect/entropy.js.map +1 -0
- package/dist/src/detect/isoCountries.d.ts +10 -0
- package/dist/src/detect/isoCountries.d.ts.map +1 -0
- package/dist/src/detect/isoCountries.js +25 -0
- package/dist/src/detect/isoCountries.js.map +1 -0
- package/dist/src/detect/registry.d.ts +50 -0
- package/dist/src/detect/registry.d.ts.map +1 -0
- package/dist/src/detect/registry.js +110 -0
- package/dist/src/detect/registry.js.map +1 -0
- package/dist/src/detect/runner.d.ts +64 -0
- package/dist/src/detect/runner.d.ts.map +1 -0
- package/dist/src/detect/runner.js +142 -0
- package/dist/src/detect/runner.js.map +1 -0
- package/dist/src/detect/types.d.ts +251 -0
- package/dist/src/detect/types.d.ts.map +1 -0
- package/dist/src/detect/types.js +59 -0
- package/dist/src/detect/types.js.map +1 -0
- package/dist/src/encoding/base58.d.ts +26 -0
- package/dist/src/encoding/base58.d.ts.map +1 -0
- package/dist/src/encoding/base58.js +77 -0
- package/dist/src/encoding/base58.js.map +1 -0
- package/dist/src/encoding/base58monero.d.ts +15 -0
- package/dist/src/encoding/base58monero.d.ts.map +1 -0
- package/dist/src/encoding/base58monero.js +87 -0
- package/dist/src/encoding/base58monero.js.map +1 -0
- package/dist/src/encoding/bech32.d.ts +28 -0
- package/dist/src/encoding/bech32.d.ts.map +1 -0
- package/dist/src/encoding/bech32.js +108 -0
- package/dist/src/encoding/bech32.js.map +1 -0
- package/dist/src/encoding/bytes.d.ts +15 -0
- package/dist/src/encoding/bytes.d.ts.map +1 -0
- package/dist/src/encoding/bytes.js +46 -0
- package/dist/src/encoding/bytes.js.map +1 -0
- package/dist/src/entityFamily.d.ts +18 -0
- package/dist/src/entityFamily.d.ts.map +1 -0
- package/dist/src/entityFamily.js +54 -0
- package/dist/src/entityFamily.js.map +1 -0
- package/dist/src/entityLabel.d.ts +18 -0
- package/dist/src/entityLabel.d.ts.map +1 -0
- package/dist/src/entityLabel.js +53 -0
- package/dist/src/entityLabel.js.map +1 -0
- package/dist/src/entityTypes.d.ts +64 -0
- package/dist/src/entityTypes.d.ts.map +1 -0
- package/dist/src/entityTypes.js +94 -0
- package/dist/src/entityTypes.js.map +1 -0
- package/dist/src/exposure/index.d.ts +86 -0
- package/dist/src/exposure/index.d.ts.map +1 -0
- package/dist/src/exposure/index.js +134 -0
- package/dist/src/exposure/index.js.map +1 -0
- package/dist/src/fuse/calibrate.d.ts +95 -0
- package/dist/src/fuse/calibrate.d.ts.map +1 -0
- package/dist/src/fuse/calibrate.js +165 -0
- package/dist/src/fuse/calibrate.js.map +1 -0
- package/dist/src/fuse/defaultCalibration.d.ts +52 -0
- package/dist/src/fuse/defaultCalibration.d.ts.map +1 -0
- package/dist/src/fuse/defaultCalibration.js +41 -0
- package/dist/src/fuse/defaultCalibration.js.map +1 -0
- package/dist/src/fuse/explain.d.ts +55 -0
- package/dist/src/fuse/explain.d.ts.map +1 -0
- package/dist/src/fuse/explain.js +91 -0
- package/dist/src/fuse/explain.js.map +1 -0
- package/dist/src/fuse/profiles.d.ts +80 -0
- package/dist/src/fuse/profiles.d.ts.map +1 -0
- package/dist/src/fuse/profiles.js +126 -0
- package/dist/src/fuse/profiles.js.map +1 -0
- package/dist/src/fuse/resolve.d.ts +73 -0
- package/dist/src/fuse/resolve.d.ts.map +1 -0
- package/dist/src/fuse/resolve.js +206 -0
- package/dist/src/fuse/resolve.js.map +1 -0
- package/dist/src/gazetteer/index.d.ts +41 -0
- package/dist/src/gazetteer/index.d.ts.map +1 -0
- package/dist/src/gazetteer/index.js +117 -0
- package/dist/src/gazetteer/index.js.map +1 -0
- package/dist/src/generate/bankcodes.d.ts +20 -0
- package/dist/src/generate/bankcodes.d.ts.map +1 -0
- package/dist/src/generate/bankcodes.js +71 -0
- package/dist/src/generate/bankcodes.js.map +1 -0
- package/dist/src/generate/contact.d.ts +31 -0
- package/dist/src/generate/contact.d.ts.map +1 -0
- package/dist/src/generate/contact.js +139 -0
- package/dist/src/generate/contact.js.map +1 -0
- package/dist/src/generate/crypto.d.ts +27 -0
- package/dist/src/generate/crypto.d.ts.map +1 -0
- package/dist/src/generate/crypto.js +88 -0
- package/dist/src/generate/crypto.js.map +1 -0
- package/dist/src/generate/documents.d.ts +24 -0
- package/dist/src/generate/documents.d.ts.map +1 -0
- package/dist/src/generate/documents.js +124 -0
- package/dist/src/generate/documents.js.map +1 -0
- package/dist/src/generate/financial.d.ts +26 -0
- package/dist/src/generate/financial.d.ts.map +1 -0
- package/dist/src/generate/financial.js +136 -0
- package/dist/src/generate/financial.js.map +1 -0
- package/dist/src/generate/index.d.ts +23 -0
- package/dist/src/generate/index.d.ts.map +1 -0
- package/dist/src/generate/index.js +23 -0
- package/dist/src/generate/index.js.map +1 -0
- package/dist/src/generate/location.d.ts +12 -0
- package/dist/src/generate/location.d.ts.map +1 -0
- package/dist/src/generate/location.js +75 -0
- package/dist/src/generate/location.js.map +1 -0
- package/dist/src/generate/natidAmOc.d.ts +22 -0
- package/dist/src/generate/natidAmOc.d.ts.map +1 -0
- package/dist/src/generate/natidAmOc.js +181 -0
- package/dist/src/generate/natidAmOc.js.map +1 -0
- package/dist/src/generate/natidAsia.d.ts +20 -0
- package/dist/src/generate/natidAsia.d.ts.map +1 -0
- package/dist/src/generate/natidAsia.js +147 -0
- package/dist/src/generate/natidAsia.js.map +1 -0
- package/dist/src/generate/natidCee.d.ts +21 -0
- package/dist/src/generate/natidCee.d.ts.map +1 -0
- package/dist/src/generate/natidCee.js +181 -0
- package/dist/src/generate/natidCee.js.map +1 -0
- package/dist/src/generate/natidMeCis.d.ts +17 -0
- package/dist/src/generate/natidMeCis.d.ts.map +1 -0
- package/dist/src/generate/natidMeCis.js +121 -0
- package/dist/src/generate/natidMeCis.js.map +1 -0
- package/dist/src/generate/natidWest.d.ts +32 -0
- package/dist/src/generate/natidWest.d.ts.map +1 -0
- package/dist/src/generate/natidWest.js +187 -0
- package/dist/src/generate/natidWest.js.map +1 -0
- package/dist/src/generate/prng.d.ts +10 -0
- package/dist/src/generate/prng.d.ts.map +1 -0
- package/dist/src/generate/prng.js +18 -0
- package/dist/src/generate/prng.js.map +1 -0
- package/dist/src/generate/secrets.d.ts +23 -0
- package/dist/src/generate/secrets.d.ts.map +1 -0
- package/dist/src/generate/secrets.js +126 -0
- package/dist/src/generate/secrets.js.map +1 -0
- package/dist/src/generate/vat.d.ts +11 -0
- package/dist/src/generate/vat.d.ts.map +1 -0
- package/dist/src/generate/vat.js +233 -0
- package/dist/src/generate/vat.js.map +1 -0
- package/dist/src/index.d.ts +81 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +76 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/mask/egressGuard.d.ts +54 -0
- package/dist/src/mask/egressGuard.d.ts.map +1 -0
- package/dist/src/mask/egressGuard.js +67 -0
- package/dist/src/mask/egressGuard.js.map +1 -0
- package/dist/src/mask/masker.d.ts +76 -0
- package/dist/src/mask/masker.d.ts.map +1 -0
- package/dist/src/mask/masker.js +201 -0
- package/dist/src/mask/masker.js.map +1 -0
- package/dist/src/mask/restorer.d.ts +96 -0
- package/dist/src/mask/restorer.d.ts.map +1 -0
- package/dist/src/mask/restorer.js +263 -0
- package/dist/src/mask/restorer.js.map +1 -0
- package/dist/src/mask/surrogatePools.d.ts +33 -0
- package/dist/src/mask/surrogatePools.d.ts.map +1 -0
- package/dist/src/mask/surrogatePools.js +81 -0
- package/dist/src/mask/surrogatePools.js.map +1 -0
- package/dist/src/mask/surrogates.d.ts +45 -0
- package/dist/src/mask/surrogates.d.ts.map +1 -0
- package/dist/src/mask/surrogates.js +241 -0
- package/dist/src/mask/surrogates.js.map +1 -0
- package/dist/src/mask/vault.d.ts +76 -0
- package/dist/src/mask/vault.d.ts.map +1 -0
- package/dist/src/mask/vault.js +141 -0
- package/dist/src/mask/vault.js.map +1 -0
- package/dist/src/ner/align.d.ts +36 -0
- package/dist/src/ner/align.d.ts.map +1 -0
- package/dist/src/ner/align.js +73 -0
- package/dist/src/ner/align.js.map +1 -0
- package/dist/src/ner/chunk.d.ts +27 -0
- package/dist/src/ner/chunk.d.ts.map +1 -0
- package/dist/src/ner/chunk.js +55 -0
- package/dist/src/ner/chunk.js.map +1 -0
- package/dist/src/ner/chunkCache.d.ts +63 -0
- package/dist/src/ner/chunkCache.d.ts.map +1 -0
- package/dist/src/ner/chunkCache.js +99 -0
- package/dist/src/ner/chunkCache.js.map +1 -0
- package/dist/src/ner/engine.d.ts +53 -0
- package/dist/src/ner/engine.d.ts.map +1 -0
- package/dist/src/ner/engine.js +113 -0
- package/dist/src/ner/engine.js.map +1 -0
- package/dist/src/ner/merge.d.ts +26 -0
- package/dist/src/ner/merge.d.ts.map +1 -0
- package/dist/src/ner/merge.js +108 -0
- package/dist/src/ner/merge.js.map +1 -0
- package/dist/src/ner/runStage2.d.ts +17 -0
- package/dist/src/ner/runStage2.d.ts.map +1 -0
- package/dist/src/ner/runStage2.js +43 -0
- package/dist/src/ner/runStage2.js.map +1 -0
- package/dist/src/ner/stage2b.d.ts +59 -0
- package/dist/src/ner/stage2b.d.ts.map +1 -0
- package/dist/src/ner/stage2b.js +51 -0
- package/dist/src/ner/stage2b.js.map +1 -0
- package/dist/src/ner/transformersClassifier.d.ts +45 -0
- package/dist/src/ner/transformersClassifier.d.ts.map +1 -0
- package/dist/src/ner/transformersClassifier.js +40 -0
- package/dist/src/ner/transformersClassifier.js.map +1 -0
- package/dist/src/ner/types.d.ts +93 -0
- package/dist/src/ner/types.d.ts.map +1 -0
- package/dist/src/ner/types.js +12 -0
- package/dist/src/ner/types.js.map +1 -0
- package/dist/src/normalization.d.ts +24 -0
- package/dist/src/normalization.d.ts.map +1 -0
- package/dist/src/normalization.js +92 -0
- package/dist/src/normalization.js.map +1 -0
- package/dist/src/offsetMap.d.ts +165 -0
- package/dist/src/offsetMap.d.ts.map +1 -0
- package/dist/src/offsetMap.js +225 -0
- package/dist/src/offsetMap.js.map +1 -0
- package/dist/src/pipeline.d.ts +58 -0
- package/dist/src/pipeline.d.ts.map +1 -0
- package/dist/src/pipeline.js +57 -0
- package/dist/src/pipeline.js.map +1 -0
- package/dist/src/protect.d.ts +146 -0
- package/dist/src/protect.d.ts.map +1 -0
- package/dist/src/protect.js +161 -0
- package/dist/src/protect.js.map +1 -0
- package/dist/src/scripts.d.ts +37 -0
- package/dist/src/scripts.d.ts.map +1 -0
- package/dist/src/scripts.js +145 -0
- package/dist/src/scripts.js.map +1 -0
- package/dist/src/transforms/foldDigits.d.ts +49 -0
- package/dist/src/transforms/foldDigits.d.ts.map +1 -0
- package/dist/src/transforms/foldDigits.js +135 -0
- package/dist/src/transforms/foldDigits.js.map +1 -0
- package/dist/src/transforms/graphemes.d.ts +6 -0
- package/dist/src/transforms/graphemes.d.ts.map +1 -0
- package/dist/src/transforms/graphemes.js +6 -0
- package/dist/src/transforms/graphemes.js.map +1 -0
- package/dist/src/transforms/homoglyphFold.d.ts +5 -0
- package/dist/src/transforms/homoglyphFold.d.ts.map +1 -0
- package/dist/src/transforms/homoglyphFold.js +214 -0
- package/dist/src/transforms/homoglyphFold.js.map +1 -0
- package/dist/src/transforms/nfkc.d.ts +20 -0
- package/dist/src/transforms/nfkc.d.ts.map +1 -0
- package/dist/src/transforms/nfkc.js +48 -0
- package/dist/src/transforms/nfkc.js.map +1 -0
- package/dist/src/transforms/stripInvisibles.d.ts +37 -0
- package/dist/src/transforms/stripInvisibles.d.ts.map +1 -0
- package/dist/src/transforms/stripInvisibles.js +151 -0
- package/dist/src/transforms/stripInvisibles.js.map +1 -0
- package/dist/src/transforms/whitespacePunct.d.ts +21 -0
- package/dist/src/transforms/whitespacePunct.d.ts.map +1 -0
- package/dist/src/transforms/whitespacePunct.js +100 -0
- package/dist/src/transforms/whitespacePunct.js.map +1 -0
- package/dist/src/types.d.ts +212 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +14 -0
- package/dist/src/types.js.map +1 -0
- package/package.json +67 -0
- package/src/checksums/aba.ts +45 -0
- package/src/checksums/digits.ts +108 -0
- package/src/checksums/icao9303.ts +53 -0
- package/src/checksums/index.ts +36 -0
- package/src/checksums/iso7064.ts +168 -0
- package/src/checksums/luhn.ts +66 -0
- package/src/checksums/mod97.ts +91 -0
- package/src/checksums/verhoeff.ts +84 -0
- package/src/checksums/weighted.ts +108 -0
- package/src/context/documentProfile.ts +293 -0
- package/src/context/negativeRules.ts +765 -0
- package/src/context/score.ts +430 -0
- package/src/context/structure.ts +611 -0
- package/src/context/triggers.ts +266 -0
- package/src/context/types.ts +150 -0
- package/src/crypto/keccak256.ts +98 -0
- package/src/crypto/sha256.ts +76 -0
- package/src/detect/AUTHORING.md +50 -0
- package/src/detect/detectors/bankcodes/auBsb.ts +36 -0
- package/src/detect/detectors/bankcodes/brAgencia.ts +46 -0
- package/src/detect/detectors/bankcodes/caTransit.ts +89 -0
- package/src/detect/detectors/bankcodes/inIfsc.ts +40 -0
- package/src/detect/detectors/bankcodes/index.ts +9 -0
- package/src/detect/detectors/bankcodes/ukSortCode.ts +38 -0
- package/src/detect/detectors/bankcodes/usRouting.ts +47 -0
- package/src/detect/detectors/contact/email.ts +113 -0
- package/src/detect/detectors/contact/index.ts +10 -0
- package/src/detect/detectors/contact/ipv4.ts +112 -0
- package/src/detect/detectors/contact/ipv6.ts +188 -0
- package/src/detect/detectors/contact/mac.ts +68 -0
- package/src/detect/detectors/contact/phone.ts +81 -0
- package/src/detect/detectors/contact/urlCredentials.ts +124 -0
- package/src/detect/detectors/crypto/ada.ts +52 -0
- package/src/detect/detectors/crypto/btc.ts +77 -0
- package/src/detect/detectors/crypto/dot.ts +42 -0
- package/src/detect/detectors/crypto/eth.ts +70 -0
- package/src/detect/detectors/crypto/index.ts +11 -0
- package/src/detect/detectors/crypto/ltc.ts +69 -0
- package/src/detect/detectors/crypto/sol.ts +41 -0
- package/src/detect/detectors/crypto/trx.ts +35 -0
- package/src/detect/detectors/crypto/xmr.ts +54 -0
- package/src/detect/detectors/documents/driversLicense.ts +83 -0
- package/src/detect/detectors/documents/healthData.ts +88 -0
- package/src/detect/detectors/documents/index.ts +8 -0
- package/src/detect/detectors/documents/passportMrz.ts +203 -0
- package/src/detect/detectors/documents/usNpi.ts +50 -0
- package/src/detect/detectors/documents/vin.ts +67 -0
- package/src/detect/detectors/financial/creditCard.ts +167 -0
- package/src/detect/detectors/financial/iban.ts +82 -0
- package/src/detect/detectors/financial/ibanRegistry.ts +112 -0
- package/src/detect/detectors/financial/index.ts +6 -0
- package/src/detect/detectors/financial/swiftBic.ts +61 -0
- package/src/detect/detectors/index.ts +14 -0
- package/src/detect/detectors/location/coordinates.ts +84 -0
- package/src/detect/detectors/location/index.ts +6 -0
- package/src/detect/detectors/location/postalCode.ts +56 -0
- package/src/detect/detectors/location/postalRegistry.ts +74 -0
- package/src/detect/detectors/location/streetAddress.ts +84 -0
- package/src/detect/detectors/natid/africa.ts +108 -0
- package/src/detect/detectors/natid/ar.ts +62 -0
- package/src/detect/detectors/natid/au.ts +99 -0
- package/src/detect/detectors/natid/be.ts +45 -0
- package/src/detect/detectors/natid/bg.ts +44 -0
- package/src/detect/detectors/natid/br.ts +81 -0
- package/src/detect/detectors/natid/ca.ts +40 -0
- package/src/detect/detectors/natid/cl.ts +47 -0
- package/src/detect/detectors/natid/cn.ts +48 -0
- package/src/detect/detectors/natid/co.ts +46 -0
- package/src/detect/detectors/natid/cz.ts +44 -0
- package/src/detect/detectors/natid/de.ts +75 -0
- package/src/detect/detectors/natid/dk.ts +31 -0
- package/src/detect/detectors/natid/es.ts +95 -0
- package/src/detect/detectors/natid/fi.ts +41 -0
- package/src/detect/detectors/natid/fr.ts +63 -0
- package/src/detect/detectors/natid/gb.ts +70 -0
- package/src/detect/detectors/natid/gr.ts +35 -0
- package/src/detect/detectors/natid/gulf.ts +116 -0
- package/src/detect/detectors/natid/hk.ts +42 -0
- package/src/detect/detectors/natid/hr.ts +32 -0
- package/src/detect/detectors/natid/hu.ts +36 -0
- package/src/detect/detectors/natid/ie.ts +37 -0
- package/src/detect/detectors/natid/il.ts +37 -0
- package/src/detect/detectors/natid/in.ts +67 -0
- package/src/detect/detectors/natid/index.ts +54 -0
- package/src/detect/detectors/natid/is.ts +42 -0
- package/src/detect/detectors/natid/it.ts +65 -0
- package/src/detect/detectors/natid/jp.ts +48 -0
- package/src/detect/detectors/natid/kr.ts +41 -0
- package/src/detect/detectors/natid/kz.ts +44 -0
- package/src/detect/detectors/natid/mx.ts +83 -0
- package/src/detect/detectors/natid/nl.ts +38 -0
- package/src/detect/detectors/natid/no.ts +50 -0
- package/src/detect/detectors/natid/nz.ts +53 -0
- package/src/detect/detectors/natid/pe.ts +28 -0
- package/src/detect/detectors/natid/pl.ts +100 -0
- package/src/detect/detectors/natid/pt.ts +36 -0
- package/src/detect/detectors/natid/ro.ts +47 -0
- package/src/detect/detectors/natid/ru.ts +82 -0
- package/src/detect/detectors/natid/se.ts +42 -0
- package/src/detect/detectors/natid/seasia.ts +174 -0
- package/src/detect/detectors/natid/sg.ts +39 -0
- package/src/detect/detectors/natid/si.ts +42 -0
- package/src/detect/detectors/natid/tr.ts +76 -0
- package/src/detect/detectors/natid/tw.ts +41 -0
- package/src/detect/detectors/natid/ua.ts +38 -0
- package/src/detect/detectors/natid/us.ts +118 -0
- package/src/detect/detectors/natid/za.ts +42 -0
- package/src/detect/detectors/secrets/apiKey.ts +115 -0
- package/src/detect/detectors/secrets/connectionString.ts +71 -0
- package/src/detect/detectors/secrets/genericSecret.ts +81 -0
- package/src/detect/detectors/secrets/index.ts +8 -0
- package/src/detect/detectors/secrets/jwt.ts +101 -0
- package/src/detect/detectors/secrets/pemPrivateKey.ts +59 -0
- package/src/detect/detectors/vat/euVat.ts +280 -0
- package/src/detect/detectors/vat/index.ts +4 -0
- package/src/detect/entropy.ts +60 -0
- package/src/detect/isoCountries.ts +30 -0
- package/src/detect/registry.ts +134 -0
- package/src/detect/runner.ts +187 -0
- package/src/detect/types.ts +296 -0
- package/src/encoding/base58.ts +85 -0
- package/src/encoding/base58monero.ts +90 -0
- package/src/encoding/bech32.ts +125 -0
- package/src/encoding/bytes.ts +48 -0
- package/src/entityFamily.ts +70 -0
- package/src/entityLabel.ts +56 -0
- package/src/entityTypes.ts +107 -0
- package/src/exposure/index.ts +189 -0
- package/src/fuse/calibrate.ts +224 -0
- package/src/fuse/defaultCalibration.ts +71 -0
- package/src/fuse/explain.ts +114 -0
- package/src/fuse/profiles.ts +187 -0
- package/src/fuse/resolve.ts +237 -0
- package/src/gazetteer/index.ts +139 -0
- package/src/generate/bankcodes.ts +82 -0
- package/src/generate/contact.ts +147 -0
- package/src/generate/crypto.ts +91 -0
- package/src/generate/documents.ts +142 -0
- package/src/generate/financial.ts +149 -0
- package/src/generate/index.ts +22 -0
- package/src/generate/location.ts +80 -0
- package/src/generate/natidAmOc.ts +198 -0
- package/src/generate/natidAsia.ts +162 -0
- package/src/generate/natidCee.ts +196 -0
- package/src/generate/natidMeCis.ts +131 -0
- package/src/generate/natidWest.ts +208 -0
- package/src/generate/prng.ts +17 -0
- package/src/generate/secrets.ts +141 -0
- package/src/generate/vat.ts +239 -0
- package/src/index.ts +186 -0
- package/src/mask/egressGuard.ts +88 -0
- package/src/mask/masker.ts +276 -0
- package/src/mask/restorer.ts +284 -0
- package/src/mask/surrogatePools.ts +96 -0
- package/src/mask/surrogates.ts +248 -0
- package/src/mask/vault.ts +153 -0
- package/src/ner/align.ts +86 -0
- package/src/ner/chunk.ts +65 -0
- package/src/ner/chunkCache.ts +110 -0
- package/src/ner/engine.ts +141 -0
- package/src/ner/merge.ts +123 -0
- package/src/ner/runStage2.ts +51 -0
- package/src/ner/stage2b.ts +73 -0
- package/src/ner/transformersClassifier.ts +79 -0
- package/src/ner/types.ts +99 -0
- package/src/normalization.ts +119 -0
- package/src/offsetMap.ts +271 -0
- package/src/pipeline.ts +96 -0
- package/src/protect.ts +284 -0
- package/src/scripts.ts +164 -0
- package/src/transforms/foldDigits.ts +138 -0
- package/src/transforms/graphemes.ts +5 -0
- package/src/transforms/homoglyphFold.ts +221 -0
- package/src/transforms/nfkc.ts +48 -0
- package/src/transforms/stripInvisibles.ts +158 -0
- package/src/transforms/whitespacePunct.ts +100 -0
- package/src/types.ts +339 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BR_AGENCIA — Brazilian bank branch codes.
|
|
3
|
+
*
|
|
4
|
+
* A bare four-digit agência is indistinguishable from any other four-digit
|
|
5
|
+
* number, and its optional check digit follows PER-BANK rules (Banco do
|
|
6
|
+
* Brasil mod-11, Bradesco a mod-10 variant) that cannot be verified without
|
|
7
|
+
* knowing the bank. So the FORMAT here includes the label — "ag.", "agência",
|
|
8
|
+
* "agencia" — which is part of how the identifier is actually written, the
|
|
9
|
+
* same way a URL's scheme is part of a URL. This is not Stage 3 context
|
|
10
|
+
* scoring; it is the notation. The span is narrowed to the number so the
|
|
11
|
+
* label is never masked. MEDIUM: the label plus shape is real evidence, but
|
|
12
|
+
* no checksum was verified.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { registerDetector } from '../../registry.js';
|
|
16
|
+
import { CONFIDENCE, invalid, valid } from '../../types.js';
|
|
17
|
+
import type { ValidationContext, ValidationResult } from '../../types.js';
|
|
18
|
+
|
|
19
|
+
function validateAgencia(ctx: ValidationContext): ValidationResult {
|
|
20
|
+
const raw = ctx.match[0];
|
|
21
|
+
const numberPart = ctx.match[1];
|
|
22
|
+
if (numberPart === undefined) return invalid('no branch number captured');
|
|
23
|
+
|
|
24
|
+
const numberStart = ctx.start + raw.lastIndexOf(numberPart);
|
|
25
|
+
const after = ctx.text[ctx.end];
|
|
26
|
+
if (after !== undefined && /[\d-]/.test(after)) return invalid('fragment of a longer sequence');
|
|
27
|
+
|
|
28
|
+
const [branch, check] = numberPart.split('-') as [string, string | undefined];
|
|
29
|
+
return valid({
|
|
30
|
+
canonical: numberPart,
|
|
31
|
+
metadata: { branch, ...(check !== undefined ? { checkDigit: check } : {}) },
|
|
32
|
+
validator: 'agencia-labeled',
|
|
33
|
+
span: { start: numberStart, end: ctx.start + raw.length },
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
registerDetector({
|
|
38
|
+
id: 'br-agencia',
|
|
39
|
+
entityType: 'BR_AGENCIA',
|
|
40
|
+
regions: ['BR'],
|
|
41
|
+
// The label is part of the notation; accents survive normalization.
|
|
42
|
+
pattern: /\b[Aa]g(?:ência|encia|\.)?\s*:?\s*(\d{4}(?:-\d)?)\b/gu,
|
|
43
|
+
baseConfidence: CONFIDENCE.MEDIUM,
|
|
44
|
+
description: 'Brazilian agência branch codes in their labeled notation; span covers the number only.',
|
|
45
|
+
validate: validateAgencia,
|
|
46
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CA_TRANSIT_NUMBER — Canadian branch transit in the paper (MICR) writing:
|
|
3
|
+
* 5-digit branch, hyphen, 3-digit institution.
|
|
4
|
+
*
|
|
5
|
+
* No public checksum covers the branch number, so validation rests on the
|
|
6
|
+
* institution number, which IS a closed set — the Payments Canada financial
|
|
7
|
+
* institution numbers. The list below carries the chartered banks, Crown
|
|
8
|
+
* institutions, and the major trust/credit-union centrals that appear in
|
|
9
|
+
* practice. Membership → MEDIUM (a real table check, but not a checksum);
|
|
10
|
+
* an unknown institution number is a rejection, not a low-confidence hit.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { registerDetector } from '../../registry.js';
|
|
14
|
+
import { CONFIDENCE, invalid, valid } from '../../types.js';
|
|
15
|
+
import type { ValidationContext, ValidationResult } from '../../types.js';
|
|
16
|
+
|
|
17
|
+
/** Payments Canada institution numbers in active use. */
|
|
18
|
+
const INSTITUTIONS: ReadonlySet<string> = new Set([
|
|
19
|
+
'001', // Bank of Montreal
|
|
20
|
+
'002', // Scotiabank
|
|
21
|
+
'003', // RBC
|
|
22
|
+
'004', // TD
|
|
23
|
+
'006', // National Bank
|
|
24
|
+
'010', // CIBC
|
|
25
|
+
'016', // HSBC Canada
|
|
26
|
+
'030', // Canadian Western Bank
|
|
27
|
+
'039', // Laurentian
|
|
28
|
+
'117', // Government of Canada
|
|
29
|
+
'127', // Canada Post (money orders)
|
|
30
|
+
'177', // Bank of Canada
|
|
31
|
+
'219', // ATB Financial
|
|
32
|
+
'241', // Bank of America Canada
|
|
33
|
+
'245', // Bank of Tokyo-Mitsubishi
|
|
34
|
+
'260', // Citibank Canada
|
|
35
|
+
'265', // Deutsche Bank Canada
|
|
36
|
+
'269', // Mega International
|
|
37
|
+
'270', // JPMorgan Chase Canada
|
|
38
|
+
'290', // UBS Canada
|
|
39
|
+
'308', // Bank of China Canada
|
|
40
|
+
'309', // Vancity (Citizens)
|
|
41
|
+
'326', // President's Choice
|
|
42
|
+
'338', // Canadian Tire Bank
|
|
43
|
+
'340', // ICICI Canada
|
|
44
|
+
'509', // Canada Trust
|
|
45
|
+
'540', // Manulife Bank
|
|
46
|
+
'568', // Peace Hills Trust
|
|
47
|
+
'614', // Tangerine
|
|
48
|
+
'621', // KEB Hana Canada
|
|
49
|
+
'623', // EQ Bank / Equitable
|
|
50
|
+
'618', // B2B Bank
|
|
51
|
+
'809', // Central 1 (BC)
|
|
52
|
+
'815', // Desjardins (QC)
|
|
53
|
+
'819', // Desjardins (MB)
|
|
54
|
+
'828', // Central 1 (ON)
|
|
55
|
+
'829', // Desjardins (ON)
|
|
56
|
+
'837', // Meridian
|
|
57
|
+
'839', // Credit Union Atlantic
|
|
58
|
+
'849', // Brunswick Credit Union
|
|
59
|
+
'865', // Desjardins (Caisse populaire)
|
|
60
|
+
'879', // Credit Union Central MB
|
|
61
|
+
'889', // Credit Union Central SK
|
|
62
|
+
'899', // Alberta Central
|
|
63
|
+
]);
|
|
64
|
+
|
|
65
|
+
function validateTransit(ctx: ValidationContext): ValidationResult {
|
|
66
|
+
const before = ctx.start > 0 ? ctx.text[ctx.start - 1] : '';
|
|
67
|
+
if (/[\d-]/.test(before ?? '')) return invalid('fragment of a longer sequence');
|
|
68
|
+
const after = ctx.text.slice(ctx.end, ctx.end + 2);
|
|
69
|
+
if (/^\d/.test(after) || /^-\d/.test(after)) return invalid('fragment of a longer sequence');
|
|
70
|
+
|
|
71
|
+
const [branch, institution] = ctx.match[0].split('-') as [string, string];
|
|
72
|
+
if (!INSTITUTIONS.has(institution)) return invalid('unknown institution number');
|
|
73
|
+
|
|
74
|
+
return valid({
|
|
75
|
+
canonical: `${branch}-${institution}`,
|
|
76
|
+
metadata: { branch, institution },
|
|
77
|
+
validator: 'transit-institution-table',
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
registerDetector({
|
|
82
|
+
id: 'ca-transit-number',
|
|
83
|
+
entityType: 'CA_TRANSIT_NUMBER',
|
|
84
|
+
regions: ['CA'],
|
|
85
|
+
pattern: /\b\d{5}-\d{3}\b/g,
|
|
86
|
+
baseConfidence: CONFIDENCE.MEDIUM,
|
|
87
|
+
description: 'Canadian branch-institution transit numbers, institution validated against the Payments Canada table.',
|
|
88
|
+
validate: validateTransit,
|
|
89
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IN_IFSC — Indian Financial System Codes.
|
|
3
|
+
*
|
|
4
|
+
* Structure: 4 uppercase letters (bank), a MANDATORY '0' (reserved fifth
|
|
5
|
+
* character), 6 alphanumerics (branch). The fixed zero at position five is
|
|
6
|
+
* what makes this format strong: no English word or acronym has that shape,
|
|
7
|
+
* so unlike SWIFT BICs the all-letter collision class is empty and HIGH
|
|
8
|
+
* confidence is warranted despite the absence of a checksum. A bank-code
|
|
9
|
+
* whitelist was considered and rejected — the RBI issues new bank codes
|
|
10
|
+
* routinely, and a stale table would silently reject real branches.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { registerDetector } from '../../registry.js';
|
|
14
|
+
import { CONFIDENCE, invalid, valid } from '../../types.js';
|
|
15
|
+
import type { ValidationContext, ValidationResult } from '../../types.js';
|
|
16
|
+
|
|
17
|
+
function validateIfsc(ctx: ValidationContext): ValidationResult {
|
|
18
|
+
const code = ctx.match[0];
|
|
19
|
+
// The branch part must not be all letters: real branch codes carry at
|
|
20
|
+
// least one digit, and requiring it removes the residual word-shaped
|
|
21
|
+
// collisions (e.g. an uppercase heading "ABCD0EFGHI" would need exactly
|
|
22
|
+
// this test to sneak through).
|
|
23
|
+
if (!/\d/.test(code.slice(5))) return invalid('branch code carries no digit');
|
|
24
|
+
|
|
25
|
+
return valid({
|
|
26
|
+
canonical: code,
|
|
27
|
+
metadata: { bank: code.slice(0, 4), branch: code.slice(5) },
|
|
28
|
+
validator: 'ifsc-structural',
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
registerDetector({
|
|
33
|
+
id: 'in-ifsc',
|
|
34
|
+
entityType: 'IN_IFSC',
|
|
35
|
+
regions: ['IN'],
|
|
36
|
+
pattern: /\b[A-Z]{4}0[A-Z0-9]{6}\b/g,
|
|
37
|
+
baseConfidence: CONFIDENCE.HIGH,
|
|
38
|
+
description: 'Indian IFSC codes: four letters, the mandatory reserved zero, six-character branch.',
|
|
39
|
+
validate: validateIfsc,
|
|
40
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UK_SORT_CODE — six digits in the conventional 00-00-00 writing.
|
|
3
|
+
*
|
|
4
|
+
* NO CHECKSUM EXISTS for sort codes, so this is a structural detector and
|
|
5
|
+
* is capped at MEDIUM by design — SPEC.md forbids high confidence without a
|
|
6
|
+
* validator, and no validator is possible. Only the hyphenated form is
|
|
7
|
+
* matched: a bare six-digit run ("123456") is any quantity in the world,
|
|
8
|
+
* while the 2-2-2 hyphenation is the standard banking notation and rarely
|
|
9
|
+
* anything else. Stage 3 trigger evidence ("sort code", "acct") is what
|
|
10
|
+
* will raise or suppress these later.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { registerDetector } from '../../registry.js';
|
|
14
|
+
import { CONFIDENCE, invalid, valid } from '../../types.js';
|
|
15
|
+
import type { ValidationContext, ValidationResult } from '../../types.js';
|
|
16
|
+
|
|
17
|
+
function validateSortCode(ctx: ValidationContext): ValidationResult {
|
|
18
|
+
const before = ctx.start > 0 ? ctx.text[ctx.start - 1] : '';
|
|
19
|
+
if (/[\d-]/.test(before ?? '')) return invalid('fragment of a longer sequence');
|
|
20
|
+
const after = ctx.text.slice(ctx.end, ctx.end + 2);
|
|
21
|
+
if (/^\d/.test(after) || /^-\d/.test(after)) return invalid('fragment of a longer sequence');
|
|
22
|
+
|
|
23
|
+
const digits = ctx.match[0].replace(/-/g, '');
|
|
24
|
+
return valid({
|
|
25
|
+
canonical: digits,
|
|
26
|
+
validator: 'sort-code-structural',
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
registerDetector({
|
|
31
|
+
id: 'uk-sort-code',
|
|
32
|
+
entityType: 'UK_SORT_CODE',
|
|
33
|
+
regions: ['GB'],
|
|
34
|
+
pattern: /\b\d{2}-\d{2}-\d{2}\b/g,
|
|
35
|
+
baseConfidence: CONFIDENCE.MEDIUM,
|
|
36
|
+
description: 'UK sort codes in 00-00-00 notation. No checksum exists; capped at MEDIUM.',
|
|
37
|
+
validate: validateSortCode,
|
|
38
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* US_ROUTING_NUMBER — ABA checksum plus Federal Reserve prefix ranges.
|
|
3
|
+
*
|
|
4
|
+
* The checksum (shared library) is necessary but weak alone: one in ten
|
|
5
|
+
* arbitrary 9-digit runs passes. The first two digits must also be a real
|
|
6
|
+
* Federal Reserve routing symbol — 01–12 (primary districts), 21–32
|
|
7
|
+
* (thrift institutions), 61–72 (electronic transaction identifiers), 80
|
|
8
|
+
* (traveler's cheques). 00 is excluded deliberately: 000000000 sums to an
|
|
9
|
+
* ABA-valid zero but routes nowhere.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { abaValid } from '../../../checksums/index.js';
|
|
13
|
+
import { registerDetector } from '../../registry.js';
|
|
14
|
+
import { CONFIDENCE, invalid, valid } from '../../types.js';
|
|
15
|
+
import type { ValidationContext, ValidationResult } from '../../types.js';
|
|
16
|
+
|
|
17
|
+
function prefixValid(p: number): boolean {
|
|
18
|
+
return (p >= 1 && p <= 12) || (p >= 21 && p <= 32) || (p >= 61 && p <= 72) || p === 80;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function validateRouting(ctx: ValidationContext): ValidationResult {
|
|
22
|
+
const before = ctx.start > 0 ? ctx.text[ctx.start - 1] : '';
|
|
23
|
+
if (/[\d.-]/.test(before ?? '')) return invalid('fragment of a longer number');
|
|
24
|
+
const after = ctx.text.slice(ctx.end, ctx.end + 2);
|
|
25
|
+
if (/^[\d]/.test(after) || /^[.-]\d/.test(after)) return invalid('fragment of a longer number');
|
|
26
|
+
|
|
27
|
+
const digits = ctx.match[0];
|
|
28
|
+
const prefix = Number(digits.slice(0, 2));
|
|
29
|
+
if (!prefixValid(prefix)) return invalid('not a Federal Reserve routing prefix');
|
|
30
|
+
if (!abaValid(digits)) return invalid('ABA checksum failed');
|
|
31
|
+
|
|
32
|
+
return valid({
|
|
33
|
+
canonical: digits,
|
|
34
|
+
metadata: { prefix },
|
|
35
|
+
validator: 'aba-frb-prefix',
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
registerDetector({
|
|
40
|
+
id: 'us-routing-number',
|
|
41
|
+
entityType: 'US_ROUTING_NUMBER',
|
|
42
|
+
regions: ['US'],
|
|
43
|
+
pattern: /\b\d{9}\b/g,
|
|
44
|
+
baseConfidence: CONFIDENCE.HIGH,
|
|
45
|
+
description: 'US ABA routing numbers: checksum plus Federal Reserve prefix validation.',
|
|
46
|
+
validate: validateRouting,
|
|
47
|
+
});
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EMAIL — structural validation, IDN/punycode aware.
|
|
3
|
+
*
|
|
4
|
+
* SPEC.md: "EMAIL — structural validation, IDN/punycode aware, reject
|
|
5
|
+
* reserved example domains at high confidence." "Reject" there means reject
|
|
6
|
+
* as SENSITIVE: an address at example.com is detected (so eval can see it)
|
|
7
|
+
* but classified non-sensitive, the same treatment as test credit cards.
|
|
8
|
+
*
|
|
9
|
+
* The pattern over-generates: it accepts any plausible local@domain.tld run,
|
|
10
|
+
* including Unicode letters on both sides (IDN). The validator applies the
|
|
11
|
+
* structural rules that matter for precision — label lengths, hyphen and dot
|
|
12
|
+
* placement, TLD plausibility — rather than attempting full RFC 5322, whose
|
|
13
|
+
* grammar admits addresses no mail system accepts.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { registerDetector } from '../../registry.js';
|
|
17
|
+
import { CONFIDENCE, GLOBAL_REGION, invalid, valid } from '../../types.js';
|
|
18
|
+
import type { ValidationContext, ValidationResult } from '../../types.js';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Reserved names that can never be a real deliverable domain (RFC 2606 /
|
|
22
|
+
* RFC 6761). Addresses here are documentation examples: detected, but
|
|
23
|
+
* non-sensitive.
|
|
24
|
+
*/
|
|
25
|
+
const RESERVED_SECOND_LEVEL = new Set(['example.com', 'example.net', 'example.org']);
|
|
26
|
+
const RESERVED_TLDS = new Set(['test', 'example', 'invalid', 'localhost']);
|
|
27
|
+
|
|
28
|
+
/** atext (RFC 5322) plus Unicode letters/digits for EAI local parts. */
|
|
29
|
+
const UNQUOTED_LOCAL = /^[\p{L}\p{N}!#$%&'*+/=?^_`{|}~.-]+$/u;
|
|
30
|
+
|
|
31
|
+
/** One domain label: letters/digits with interior hyphens. */
|
|
32
|
+
const LABEL = /^[\p{L}\p{N}](?:[\p{L}\p{N}-]*[\p{L}\p{N}])?$/u;
|
|
33
|
+
|
|
34
|
+
/** Punycode labels must be pure LDH after the xn-- prefix. */
|
|
35
|
+
const PUNYCODE_LABEL = /^xn--[a-z0-9-]+$/;
|
|
36
|
+
|
|
37
|
+
function validateEmail(ctx: ValidationContext): ValidationResult {
|
|
38
|
+
let start = ctx.start;
|
|
39
|
+
const end = ctx.end;
|
|
40
|
+
let raw = ctx.text.slice(start, end);
|
|
41
|
+
|
|
42
|
+
// Sentence punctuation and quoting absorb into the local part because '.'
|
|
43
|
+
// and '\'' are legal atext: «Contact: .john@x.com» or «'john@x.com'».
|
|
44
|
+
// Trim from the left and narrow the span. Interior dots/apostrophes
|
|
45
|
+
// (o'brien@…) are untouched.
|
|
46
|
+
while (raw.length > 0 && (raw[0] === '.' || raw[0] === "'")) {
|
|
47
|
+
raw = raw.slice(1);
|
|
48
|
+
start += 1;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (raw.length > 254) return invalid('address exceeds 254 characters');
|
|
52
|
+
|
|
53
|
+
const at = raw.lastIndexOf('@');
|
|
54
|
+
if (at <= 0 || at === raw.length - 1) return invalid('missing local part or domain');
|
|
55
|
+
const local = raw.slice(0, at);
|
|
56
|
+
const domain = raw.slice(at + 1);
|
|
57
|
+
|
|
58
|
+
// Local part: quoted string or dot-atom.
|
|
59
|
+
if (local.startsWith('"') && local.endsWith('"') && local.length >= 3) {
|
|
60
|
+
if (local.length > 64) return invalid('local part exceeds 64 characters');
|
|
61
|
+
} else {
|
|
62
|
+
if (local.length > 64) return invalid('local part exceeds 64 characters');
|
|
63
|
+
if (!UNQUOTED_LOCAL.test(local)) return invalid('illegal character in local part');
|
|
64
|
+
if (local.startsWith('.') || local.endsWith('.')) return invalid('local part begins or ends with a dot');
|
|
65
|
+
if (local.includes('..')) return invalid('consecutive dots in local part');
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Domain: dot-separated labels, each individually checked.
|
|
69
|
+
const domainLower = domain.toLowerCase();
|
|
70
|
+
const labels = domainLower.split('.');
|
|
71
|
+
if (labels.length < 2) return invalid('domain has no top-level label');
|
|
72
|
+
for (const label of labels) {
|
|
73
|
+
if (label.length === 0 || label.length > 63) return invalid('domain label length out of range');
|
|
74
|
+
if (label.startsWith('xn--')) {
|
|
75
|
+
if (!PUNYCODE_LABEL.test(label)) return invalid('malformed punycode label');
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
if (!LABEL.test(label)) return invalid('malformed domain label');
|
|
79
|
+
}
|
|
80
|
+
const tld = labels[labels.length - 1]!;
|
|
81
|
+
if (tld.length < 2 && !tld.startsWith('xn--')) return invalid('implausible top-level domain');
|
|
82
|
+
if (/^[0-9]+$/.test(tld)) return invalid('all-numeric top-level domain');
|
|
83
|
+
|
|
84
|
+
// Reserved documentation domains: detected, classified non-sensitive.
|
|
85
|
+
const lastTwo = labels.slice(-2).join('.');
|
|
86
|
+
const reserved = RESERVED_TLDS.has(tld) || RESERVED_SECOND_LEVEL.has(lastTwo);
|
|
87
|
+
|
|
88
|
+
const hasUnicode = !/^[\x20-\x7e]*$/.test(raw);
|
|
89
|
+
|
|
90
|
+
return valid({
|
|
91
|
+
canonical: `${local}@${domainLower}`,
|
|
92
|
+
sensitive: !reserved,
|
|
93
|
+
metadata: {
|
|
94
|
+
domain: domainLower,
|
|
95
|
+
idn: hasUnicode,
|
|
96
|
+
punycode: labels.some((l) => l.startsWith('xn--')),
|
|
97
|
+
...(reserved ? { reserved: true } : {}),
|
|
98
|
+
},
|
|
99
|
+
validator: 'email-structural',
|
|
100
|
+
span: { start, end },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
registerDetector({
|
|
105
|
+
id: 'email',
|
|
106
|
+
entityType: 'EMAIL',
|
|
107
|
+
regions: [GLOBAL_REGION],
|
|
108
|
+
pattern:
|
|
109
|
+
/(?:"[^"\r\n]{1,62}"|[\p{L}\p{N}!#$%&'*+/=?^_`{|}~.-]+)@[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?(?:\.[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?)+/gu,
|
|
110
|
+
baseConfidence: CONFIDENCE.HIGH,
|
|
111
|
+
description: 'Email addresses, IDN/punycode aware; example-domain addresses non-sensitive.',
|
|
112
|
+
validate: validateEmail,
|
|
113
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contact & network detector family. Side-effect imports only — each file
|
|
3
|
+
* registers itself (see ../../AUTHORING.md).
|
|
4
|
+
*/
|
|
5
|
+
import './email.js';
|
|
6
|
+
import './phone.js';
|
|
7
|
+
import './ipv4.js';
|
|
8
|
+
import './ipv6.js';
|
|
9
|
+
import './mac.js';
|
|
10
|
+
import './urlCredentials.js';
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IP_ADDRESS (IPv4) — valid-range checking with scope classification.
|
|
3
|
+
*
|
|
4
|
+
* SPEC.md: "IP_ADDRESS — v4 and v6 with valid-range checking;
|
|
5
|
+
* private/reserved ranges classified separately and lower sensitivity by
|
|
6
|
+
* default." Scope drives both metadata and confidence: a routable public
|
|
7
|
+
* address is a strong signal; a 10.x.x.x reveals only that someone has a
|
|
8
|
+
* LAN. The TEST-NET documentation ranges are non-sensitive by construction —
|
|
9
|
+
* they exist so that documentation can contain addresses.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { registerDetector } from '../../registry.js';
|
|
13
|
+
import { CONFIDENCE, GLOBAL_REGION, invalid, valid } from '../../types.js';
|
|
14
|
+
import type { ValidationContext, ValidationResult } from '../../types.js';
|
|
15
|
+
|
|
16
|
+
type Ipv4Scope =
|
|
17
|
+
| 'public'
|
|
18
|
+
| 'private'
|
|
19
|
+
| 'loopback'
|
|
20
|
+
| 'link-local'
|
|
21
|
+
| 'cgn'
|
|
22
|
+
| 'documentation'
|
|
23
|
+
| 'benchmarking'
|
|
24
|
+
| 'multicast'
|
|
25
|
+
| 'reserved'
|
|
26
|
+
| 'broadcast'
|
|
27
|
+
| 'unspecified'
|
|
28
|
+
| 'this-network';
|
|
29
|
+
|
|
30
|
+
function classify(o: readonly [number, number, number, number]): Ipv4Scope {
|
|
31
|
+
const [a, b, c] = o;
|
|
32
|
+
if (a === 0) return o.every((x) => x === 0) ? 'unspecified' : 'this-network';
|
|
33
|
+
if (a === 10) return 'private';
|
|
34
|
+
if (a === 100 && b >= 64 && b <= 127) return 'cgn';
|
|
35
|
+
if (a === 127) return 'loopback';
|
|
36
|
+
if (a === 169 && b === 254) return 'link-local';
|
|
37
|
+
if (a === 172 && b >= 16 && b <= 31) return 'private';
|
|
38
|
+
if (a === 192 && b === 0 && c === 2) return 'documentation'; // TEST-NET-1
|
|
39
|
+
if (a === 192 && b === 168) return 'private';
|
|
40
|
+
if (a === 198 && (b === 18 || b === 19)) return 'benchmarking';
|
|
41
|
+
if (a === 198 && b === 51 && c === 100) return 'documentation'; // TEST-NET-2
|
|
42
|
+
if (a === 203 && b === 0 && c === 113) return 'documentation'; // TEST-NET-3
|
|
43
|
+
if (a >= 224 && a <= 239) return 'multicast';
|
|
44
|
+
if (o[0] === 255 && o[1] === 255 && o[2] === 255 && o[3] === 255) return 'broadcast';
|
|
45
|
+
if (a >= 240) return 'reserved';
|
|
46
|
+
return 'public';
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function validateIpv4(ctx: ValidationContext): ValidationResult {
|
|
50
|
+
// Reject dotted runs that are fragments of something longer: a version
|
|
51
|
+
// string ("v1.2.3.4"), a 5-part sequence ("1.2.3.4.5"), or a decimal
|
|
52
|
+
// neighbourhood. \b cannot see these, so the validator looks around.
|
|
53
|
+
const before = ctx.start > 0 ? ctx.text[ctx.start - 1] : '';
|
|
54
|
+
if (before === '.' || before === 'v' || before === 'V' || /\d/.test(before ?? '')) {
|
|
55
|
+
return invalid('embedded in a longer dotted sequence');
|
|
56
|
+
}
|
|
57
|
+
const after = ctx.text.slice(ctx.end, ctx.end + 2);
|
|
58
|
+
if (/^\.\d/.test(after)) return invalid('embedded in a longer dotted sequence');
|
|
59
|
+
|
|
60
|
+
const parts = ctx.match[0].split('.');
|
|
61
|
+
if (parts.length !== 4) return invalid('not four octets');
|
|
62
|
+
const octets: number[] = [];
|
|
63
|
+
for (const p of parts) {
|
|
64
|
+
if (p.length === 0 || p.length > 3) return invalid('octet length out of range');
|
|
65
|
+
const v = Number(p);
|
|
66
|
+
if (!Number.isInteger(v) || v < 0 || v > 255) return invalid('octet out of range');
|
|
67
|
+
octets.push(v);
|
|
68
|
+
}
|
|
69
|
+
const o = octets as unknown as readonly [number, number, number, number];
|
|
70
|
+
const scope = classify(o);
|
|
71
|
+
|
|
72
|
+
// Canonical form strips zero-padding ("192.168.001.001" → "192.168.1.1")
|
|
73
|
+
// so log-formatted and plain writings of one address share a vault entry.
|
|
74
|
+
const canonical = o.join('.');
|
|
75
|
+
|
|
76
|
+
if (scope === 'documentation') {
|
|
77
|
+
return valid({
|
|
78
|
+
canonical,
|
|
79
|
+
sensitive: false,
|
|
80
|
+
confidence: CONFIDENCE.MEDIUM,
|
|
81
|
+
metadata: { version: 4, scope },
|
|
82
|
+
validator: 'ipv4-range',
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (scope === 'broadcast' || scope === 'unspecified') {
|
|
86
|
+
// Well-known constants; identifying nothing.
|
|
87
|
+
return valid({
|
|
88
|
+
canonical,
|
|
89
|
+
sensitive: false,
|
|
90
|
+
confidence: CONFIDENCE.LOW,
|
|
91
|
+
metadata: { version: 4, scope },
|
|
92
|
+
validator: 'ipv4-range',
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
const isPublic = scope === 'public';
|
|
96
|
+
return valid({
|
|
97
|
+
canonical,
|
|
98
|
+
confidence: isPublic ? CONFIDENCE.HIGH : CONFIDENCE.MEDIUM,
|
|
99
|
+
metadata: { version: 4, scope },
|
|
100
|
+
validator: 'ipv4-range',
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
registerDetector({
|
|
105
|
+
id: 'ip-v4',
|
|
106
|
+
entityType: 'IP_ADDRESS',
|
|
107
|
+
regions: [GLOBAL_REGION],
|
|
108
|
+
pattern: /\b(?:\d{1,3}\.){3}\d{1,3}\b/g,
|
|
109
|
+
baseConfidence: CONFIDENCE.HIGH,
|
|
110
|
+
description: 'IPv4 addresses with range validation; private/reserved scopes classified at lower confidence.',
|
|
111
|
+
validate: validateIpv4,
|
|
112
|
+
});
|