@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 @@
|
|
|
1
|
+
{"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/normalization.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offset-map machinery for Stage 0 normalization.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
* ───────────────
|
|
6
|
+
* Detection runs on normalized text; substitution edits the ORIGINAL text.
|
|
7
|
+
* Every transform therefore produces, alongside its output text, an exact map
|
|
8
|
+
* back to its input. The final map for a whole pipeline is the composition of
|
|
9
|
+
* each stage's map — composing small verified maps is far easier to get right
|
|
10
|
+
* than building one map through four simultaneous transforms.
|
|
11
|
+
*
|
|
12
|
+
* MAP REPRESENTATION
|
|
13
|
+
* ──────────────────
|
|
14
|
+
* A map for a transform `input → output` is an Int32Array of length
|
|
15
|
+
* output.length + 1 (all indices are UTF-16 code units):
|
|
16
|
+
*
|
|
17
|
+
* map[i] = input index where the cluster that produced output
|
|
18
|
+
* index i begins
|
|
19
|
+
* map[output.length] = input.length (sentinel)
|
|
20
|
+
*
|
|
21
|
+
* The sentinel entry is the classic off-by-one: without it, the end of a span
|
|
22
|
+
* covering the last character could not be mapped. With it, an output span
|
|
23
|
+
* [s, e) maps to the input span [map[s], map[e]).
|
|
24
|
+
*
|
|
25
|
+
* DELETION ATTRIBUTION (a deliberate choice — read before editing)
|
|
26
|
+
* ───────────────────────────────────────────────────────────────
|
|
27
|
+
* Deleted input (stripped invisibles) produces no output index, so it cannot
|
|
28
|
+
* appear in the map directly. Each deleted run is attributed to the cluster
|
|
29
|
+
* that FOLLOWS it; a deleted run at the very end of the input falls under the
|
|
30
|
+
* sentinel. Consequences:
|
|
31
|
+
* • map[0] === 0 always holds when the output is non-empty, even if the
|
|
32
|
+
* input began with deleted characters — a stated invariant of the format.
|
|
33
|
+
* • A mapped span silently includes any deleted (invisible) characters
|
|
34
|
+
* immediately before the characters it covers, and — via the sentinel —
|
|
35
|
+
* any deleted characters at the end of the input. Substituting such a
|
|
36
|
+
* span removes those invisibles along with it, which is exactly what a
|
|
37
|
+
* masking pipeline wants: they are noise we would strip anyway.
|
|
38
|
+
* • Values are STRICTLY increasing across real cluster boundaries; equal
|
|
39
|
+
* adjacent values occur only inside a single cluster's multi-unit output
|
|
40
|
+
* (an expansion). mapNormalizedSpan() relies on this.
|
|
41
|
+
*
|
|
42
|
+
* EDGE CASE — everything deleted: when the output is empty the map is the
|
|
43
|
+
* single sentinel entry [inputLength], so map[0] === inputLength, not 0.
|
|
44
|
+
* That is the one place the "map[0] === 0" invariant cannot hold; every
|
|
45
|
+
* consumer and test conditions that invariant on a non-empty output.
|
|
46
|
+
*/
|
|
47
|
+
import type { TransformKind } from './types.js';
|
|
48
|
+
/** The identity map for a text of the given length: [0, 1, …, length]. */
|
|
49
|
+
export declare function identityMap(length: number): Int32Array;
|
|
50
|
+
/**
|
|
51
|
+
* Compose two offset maps.
|
|
52
|
+
*
|
|
53
|
+
* outer: maps indices of text B to indices of text A (length |B| + 1)
|
|
54
|
+
* inner: maps indices of text C to indices of text B (length |C| + 1)
|
|
55
|
+
* result: maps indices of text C to indices of text A (length |C| + 1)
|
|
56
|
+
*
|
|
57
|
+
* Because inner[|C|] = |B| and outer[|B|] = |A|, the sentinel composes for
|
|
58
|
+
* free, and the composition of monotone maps is monotone — both facts are
|
|
59
|
+
* covered by tests.
|
|
60
|
+
*/
|
|
61
|
+
export declare function composeMaps(outer: Int32Array, inner: Int32Array): Int32Array;
|
|
62
|
+
/**
|
|
63
|
+
* Build the reverse map (original index → normalized index) from a forward
|
|
64
|
+
* map.
|
|
65
|
+
*
|
|
66
|
+
* reverseMap[j] = normalized index of the start of the cluster
|
|
67
|
+
* whose original extent contains j; for a
|
|
68
|
+
* deleted character this is the normalized
|
|
69
|
+
* position where it was removed
|
|
70
|
+
* reverseMap[originalLength] = normalizedLength (sentinel)
|
|
71
|
+
*
|
|
72
|
+
* "Extent" is the half-open range [offsetMap[i], nextDistinctValue), i.e. it
|
|
73
|
+
* includes any deleted characters attributed to the cluster. The walk below
|
|
74
|
+
* precomputes each cluster's extent end (`ends`), then assigns every original
|
|
75
|
+
* index the FIRST normalized index whose extent reaches past it — which lands
|
|
76
|
+
* on the first unit of the covering cluster, also for expansions where several
|
|
77
|
+
* normalized units share one original cluster.
|
|
78
|
+
*/
|
|
79
|
+
export declare function buildReverseMap(offsetMap: Int32Array, originalLength: number): Int32Array;
|
|
80
|
+
/**
|
|
81
|
+
* Map a normalized span [start, end) to the original span it covers.
|
|
82
|
+
*
|
|
83
|
+
* For spans whose endpooints sit on cluster boundaries this is exactly
|
|
84
|
+
* [offsetMap[start], offsetMap[end]). When an endpoint lands INSIDE an
|
|
85
|
+
* expansion (one original cluster → several normalized units — e.g. matching
|
|
86
|
+
* only the "f" of the "fi" produced by the ligature U+FB01), the span is
|
|
87
|
+
* widened to cover the WHOLE original cluster: you cannot substitute half a
|
|
88
|
+
* ligature. Widening is the only sound choice for masking — the alternative,
|
|
89
|
+
* an empty or truncated original span, would silently leave sensitive
|
|
90
|
+
* characters behind.
|
|
91
|
+
*
|
|
92
|
+
* NOTE: two non-overlapping normalized spans that split the same expansion
|
|
93
|
+
* both widen to the same original cluster, so mapped spans can overlap in
|
|
94
|
+
* that one case. Substitution must merge overlapping original spans before
|
|
95
|
+
* splicing (covered by the substitution-safety property test).
|
|
96
|
+
*/
|
|
97
|
+
export declare function mapNormalizedSpan(offsetMap: Int32Array, start: number, end: number): {
|
|
98
|
+
start: number;
|
|
99
|
+
end: number;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* One change made by a single transform, in coordinates of THAT TRANSFORM'S
|
|
103
|
+
* INPUT. normalize() re-maps these to original-text coordinates before
|
|
104
|
+
* exposing them as TransformationRecord.
|
|
105
|
+
*/
|
|
106
|
+
export interface StepChange {
|
|
107
|
+
kind: TransformKind;
|
|
108
|
+
/** Range in the transform's input text. */
|
|
109
|
+
start: number;
|
|
110
|
+
end: number;
|
|
111
|
+
/** input.slice(start, end) — what was there. */
|
|
112
|
+
before: string;
|
|
113
|
+
/** What the transform emitted instead ('' for deletions). */
|
|
114
|
+
after: string;
|
|
115
|
+
}
|
|
116
|
+
/** What every transform returns; null means "nothing to do" (identity). */
|
|
117
|
+
export interface TransformStepResult {
|
|
118
|
+
text: string;
|
|
119
|
+
/** output index → input index, with sentinel (length text.length + 1). */
|
|
120
|
+
map: Int32Array;
|
|
121
|
+
changes: StepChange[];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Streaming builder used by every transform to produce output text and its
|
|
125
|
+
* offset map in one left-to-right pass. It enforces the deletion-attribution
|
|
126
|
+
* convention documented in the file header, so transforms cannot get it wrong
|
|
127
|
+
* individually.
|
|
128
|
+
*
|
|
129
|
+
* Usage contract: calls must cover the input strictly left to right —
|
|
130
|
+
* copyVerbatim / replaceRange / deleteRange with monotonically increasing,
|
|
131
|
+
* non-overlapping [start, end) ranges, then finish(inputLength) exactly once.
|
|
132
|
+
*/
|
|
133
|
+
export declare class MappedTextBuilder {
|
|
134
|
+
private readonly parts;
|
|
135
|
+
private readonly map;
|
|
136
|
+
/** Start of the input region not yet attributed to any output. */
|
|
137
|
+
private claimFrom;
|
|
138
|
+
/** How far the input has been consumed (for misuse detection). */
|
|
139
|
+
private cursor;
|
|
140
|
+
private advance;
|
|
141
|
+
/**
|
|
142
|
+
* Copy input.slice(start, end) through unchanged. Mapping is fine-grained
|
|
143
|
+
* (each output unit → its own input position), except that the first unit
|
|
144
|
+
* claims any pending deleted region before it.
|
|
145
|
+
*/
|
|
146
|
+
copyVerbatim(input: string, start: number, end: number): void;
|
|
147
|
+
/**
|
|
148
|
+
* Replace input.slice(start, end) with `replacement`. Every output unit
|
|
149
|
+
* maps to the start of the input cluster (including any pending deleted
|
|
150
|
+
* region before it) — a span covering part of the replacement covers the
|
|
151
|
+
* whole original cluster.
|
|
152
|
+
*/
|
|
153
|
+
replaceRange(replacement: string, start: number, end: number): void;
|
|
154
|
+
/**
|
|
155
|
+
* Delete input.slice(start, end): emits nothing. The region stays
|
|
156
|
+
* unclaimed and will be attributed to the next output (or the sentinel).
|
|
157
|
+
*/
|
|
158
|
+
deleteRange(start: number, end: number): void;
|
|
159
|
+
/** Finish the map with its sentinel entry and assemble the output text. */
|
|
160
|
+
finish(inputLength: number): {
|
|
161
|
+
text: string;
|
|
162
|
+
map: Int32Array;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=offsetMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offsetMap.d.ts","sourceRoot":"","sources":["../../src/offsetMap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAItD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,CAa5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,GAAG,UAAU,CAyBzF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAmBhC;AAMD;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,CAAC;IACpB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,GAAG,EAAE,UAAU,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAgB;IACpC,kEAAkE;IAClE,OAAO,CAAC,SAAS,CAAK;IACtB,kEAAkE;IAClE,OAAO,CAAC,MAAM,CAAK;IAEnB,OAAO,CAAC,OAAO;IAUf;;;;OAIG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAS7D;;;;;OAKG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAQnE;;;OAGG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7C,2EAA2E;IAC3E,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE;CAS/D"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Offset-map machinery for Stage 0 normalization.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
* ───────────────
|
|
6
|
+
* Detection runs on normalized text; substitution edits the ORIGINAL text.
|
|
7
|
+
* Every transform therefore produces, alongside its output text, an exact map
|
|
8
|
+
* back to its input. The final map for a whole pipeline is the composition of
|
|
9
|
+
* each stage's map — composing small verified maps is far easier to get right
|
|
10
|
+
* than building one map through four simultaneous transforms.
|
|
11
|
+
*
|
|
12
|
+
* MAP REPRESENTATION
|
|
13
|
+
* ──────────────────
|
|
14
|
+
* A map for a transform `input → output` is an Int32Array of length
|
|
15
|
+
* output.length + 1 (all indices are UTF-16 code units):
|
|
16
|
+
*
|
|
17
|
+
* map[i] = input index where the cluster that produced output
|
|
18
|
+
* index i begins
|
|
19
|
+
* map[output.length] = input.length (sentinel)
|
|
20
|
+
*
|
|
21
|
+
* The sentinel entry is the classic off-by-one: without it, the end of a span
|
|
22
|
+
* covering the last character could not be mapped. With it, an output span
|
|
23
|
+
* [s, e) maps to the input span [map[s], map[e]).
|
|
24
|
+
*
|
|
25
|
+
* DELETION ATTRIBUTION (a deliberate choice — read before editing)
|
|
26
|
+
* ───────────────────────────────────────────────────────────────
|
|
27
|
+
* Deleted input (stripped invisibles) produces no output index, so it cannot
|
|
28
|
+
* appear in the map directly. Each deleted run is attributed to the cluster
|
|
29
|
+
* that FOLLOWS it; a deleted run at the very end of the input falls under the
|
|
30
|
+
* sentinel. Consequences:
|
|
31
|
+
* • map[0] === 0 always holds when the output is non-empty, even if the
|
|
32
|
+
* input began with deleted characters — a stated invariant of the format.
|
|
33
|
+
* • A mapped span silently includes any deleted (invisible) characters
|
|
34
|
+
* immediately before the characters it covers, and — via the sentinel —
|
|
35
|
+
* any deleted characters at the end of the input. Substituting such a
|
|
36
|
+
* span removes those invisibles along with it, which is exactly what a
|
|
37
|
+
* masking pipeline wants: they are noise we would strip anyway.
|
|
38
|
+
* • Values are STRICTLY increasing across real cluster boundaries; equal
|
|
39
|
+
* adjacent values occur only inside a single cluster's multi-unit output
|
|
40
|
+
* (an expansion). mapNormalizedSpan() relies on this.
|
|
41
|
+
*
|
|
42
|
+
* EDGE CASE — everything deleted: when the output is empty the map is the
|
|
43
|
+
* single sentinel entry [inputLength], so map[0] === inputLength, not 0.
|
|
44
|
+
* That is the one place the "map[0] === 0" invariant cannot hold; every
|
|
45
|
+
* consumer and test conditions that invariant on a non-empty output.
|
|
46
|
+
*/
|
|
47
|
+
/** The identity map for a text of the given length: [0, 1, …, length]. */
|
|
48
|
+
export function identityMap(length) {
|
|
49
|
+
const map = new Int32Array(length + 1);
|
|
50
|
+
for (let i = 0; i <= length; i++)
|
|
51
|
+
map[i] = i;
|
|
52
|
+
return map;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Compose two offset maps.
|
|
56
|
+
*
|
|
57
|
+
* outer: maps indices of text B to indices of text A (length |B| + 1)
|
|
58
|
+
* inner: maps indices of text C to indices of text B (length |C| + 1)
|
|
59
|
+
* result: maps indices of text C to indices of text A (length |C| + 1)
|
|
60
|
+
*
|
|
61
|
+
* Because inner[|C|] = |B| and outer[|B|] = |A|, the sentinel composes for
|
|
62
|
+
* free, and the composition of monotone maps is monotone — both facts are
|
|
63
|
+
* covered by tests.
|
|
64
|
+
*/
|
|
65
|
+
export function composeMaps(outer, inner) {
|
|
66
|
+
const result = new Int32Array(inner.length);
|
|
67
|
+
const outerMax = outer.length - 1;
|
|
68
|
+
for (let i = 0; i < inner.length; i++) {
|
|
69
|
+
const via = inner[i];
|
|
70
|
+
if (via < 0 || via > outerMax) {
|
|
71
|
+
throw new Error(`composeMaps: inner map value ${via} at index ${i} is outside the outer map's domain [0, ${outerMax}]`);
|
|
72
|
+
}
|
|
73
|
+
result[i] = outer[via];
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Build the reverse map (original index → normalized index) from a forward
|
|
79
|
+
* map.
|
|
80
|
+
*
|
|
81
|
+
* reverseMap[j] = normalized index of the start of the cluster
|
|
82
|
+
* whose original extent contains j; for a
|
|
83
|
+
* deleted character this is the normalized
|
|
84
|
+
* position where it was removed
|
|
85
|
+
* reverseMap[originalLength] = normalizedLength (sentinel)
|
|
86
|
+
*
|
|
87
|
+
* "Extent" is the half-open range [offsetMap[i], nextDistinctValue), i.e. it
|
|
88
|
+
* includes any deleted characters attributed to the cluster. The walk below
|
|
89
|
+
* precomputes each cluster's extent end (`ends`), then assigns every original
|
|
90
|
+
* index the FIRST normalized index whose extent reaches past it — which lands
|
|
91
|
+
* on the first unit of the covering cluster, also for expansions where several
|
|
92
|
+
* normalized units share one original cluster.
|
|
93
|
+
*/
|
|
94
|
+
export function buildReverseMap(offsetMap, originalLength) {
|
|
95
|
+
const normalizedLength = offsetMap.length - 1;
|
|
96
|
+
const reverse = new Int32Array(originalLength + 1);
|
|
97
|
+
// ends[i] = original index one past the extent of the cluster covering
|
|
98
|
+
// normalized index i (= the next distinct map value, or originalLength).
|
|
99
|
+
const ends = new Int32Array(normalizedLength);
|
|
100
|
+
let nextDistinct = originalLength;
|
|
101
|
+
for (let i = normalizedLength - 1; i >= 0; i--) {
|
|
102
|
+
ends[i] = nextDistinct;
|
|
103
|
+
if (i === 0 || offsetMap[i - 1] !== offsetMap[i]) {
|
|
104
|
+
nextDistinct = offsetMap[i];
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
let i = 0;
|
|
108
|
+
for (let j = 0; j < originalLength; j++) {
|
|
109
|
+
while (i < normalizedLength && ends[i] <= j)
|
|
110
|
+
i++;
|
|
111
|
+
// If every cluster ends at or before j (possible only when the trailing
|
|
112
|
+
// input was deleted and absorbed by the sentinel), i === normalizedLength,
|
|
113
|
+
// which is exactly "the position where it was removed".
|
|
114
|
+
reverse[j] = i;
|
|
115
|
+
}
|
|
116
|
+
reverse[originalLength] = normalizedLength;
|
|
117
|
+
return reverse;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Map a normalized span [start, end) to the original span it covers.
|
|
121
|
+
*
|
|
122
|
+
* For spans whose endpooints sit on cluster boundaries this is exactly
|
|
123
|
+
* [offsetMap[start], offsetMap[end]). When an endpoint lands INSIDE an
|
|
124
|
+
* expansion (one original cluster → several normalized units — e.g. matching
|
|
125
|
+
* only the "f" of the "fi" produced by the ligature U+FB01), the span is
|
|
126
|
+
* widened to cover the WHOLE original cluster: you cannot substitute half a
|
|
127
|
+
* ligature. Widening is the only sound choice for masking — the alternative,
|
|
128
|
+
* an empty or truncated original span, would silently leave sensitive
|
|
129
|
+
* characters behind.
|
|
130
|
+
*
|
|
131
|
+
* NOTE: two non-overlapping normalized spans that split the same expansion
|
|
132
|
+
* both widen to the same original cluster, so mapped spans can overlap in
|
|
133
|
+
* that one case. Substitution must merge overlapping original spans before
|
|
134
|
+
* splicing (covered by the substitution-safety property test).
|
|
135
|
+
*/
|
|
136
|
+
export function mapNormalizedSpan(offsetMap, start, end) {
|
|
137
|
+
const normalizedLength = offsetMap.length - 1;
|
|
138
|
+
if (!(start >= 0 && start <= end && end <= normalizedLength)) {
|
|
139
|
+
throw new Error(`mapNormalizedSpan: invalid span [${start}, ${end}) for normalized length ${normalizedLength}`);
|
|
140
|
+
}
|
|
141
|
+
if (start === end) {
|
|
142
|
+
const at = offsetMap[start];
|
|
143
|
+
return { start: at, end: at };
|
|
144
|
+
}
|
|
145
|
+
const origStart = offsetMap[start];
|
|
146
|
+
// Find the original end of the cluster containing normalized index end-1:
|
|
147
|
+
// advance past normalized units that still share that cluster's start value.
|
|
148
|
+
// (Equal adjacent values occur only within one cluster — see header.)
|
|
149
|
+
const lastClusterStart = offsetMap[end - 1];
|
|
150
|
+
let k = end;
|
|
151
|
+
while (k < normalizedLength && offsetMap[k] === lastClusterStart)
|
|
152
|
+
k++;
|
|
153
|
+
return { start: origStart, end: offsetMap[k] };
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Streaming builder used by every transform to produce output text and its
|
|
157
|
+
* offset map in one left-to-right pass. It enforces the deletion-attribution
|
|
158
|
+
* convention documented in the file header, so transforms cannot get it wrong
|
|
159
|
+
* individually.
|
|
160
|
+
*
|
|
161
|
+
* Usage contract: calls must cover the input strictly left to right —
|
|
162
|
+
* copyVerbatim / replaceRange / deleteRange with monotonically increasing,
|
|
163
|
+
* non-overlapping [start, end) ranges, then finish(inputLength) exactly once.
|
|
164
|
+
*/
|
|
165
|
+
export class MappedTextBuilder {
|
|
166
|
+
parts = [];
|
|
167
|
+
map = [];
|
|
168
|
+
/** Start of the input region not yet attributed to any output. */
|
|
169
|
+
claimFrom = 0;
|
|
170
|
+
/** How far the input has been consumed (for misuse detection). */
|
|
171
|
+
cursor = 0;
|
|
172
|
+
advance(start, end) {
|
|
173
|
+
if (start !== this.cursor || end < start) {
|
|
174
|
+
throw new Error(`MappedTextBuilder: ranges must be contiguous and left-to-right ` +
|
|
175
|
+
`(cursor ${this.cursor}, got [${start}, ${end}))`);
|
|
176
|
+
}
|
|
177
|
+
this.cursor = end;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Copy input.slice(start, end) through unchanged. Mapping is fine-grained
|
|
181
|
+
* (each output unit → its own input position), except that the first unit
|
|
182
|
+
* claims any pending deleted region before it.
|
|
183
|
+
*/
|
|
184
|
+
copyVerbatim(input, start, end) {
|
|
185
|
+
this.advance(start, end);
|
|
186
|
+
if (start === end)
|
|
187
|
+
return;
|
|
188
|
+
this.parts.push(input.slice(start, end));
|
|
189
|
+
this.map.push(this.claimFrom);
|
|
190
|
+
for (let k = start + 1; k < end; k++)
|
|
191
|
+
this.map.push(k);
|
|
192
|
+
this.claimFrom = end;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Replace input.slice(start, end) with `replacement`. Every output unit
|
|
196
|
+
* maps to the start of the input cluster (including any pending deleted
|
|
197
|
+
* region before it) — a span covering part of the replacement covers the
|
|
198
|
+
* whole original cluster.
|
|
199
|
+
*/
|
|
200
|
+
replaceRange(replacement, start, end) {
|
|
201
|
+
this.advance(start, end);
|
|
202
|
+
const base = this.claimFrom;
|
|
203
|
+
for (let i = 0; i < replacement.length; i++)
|
|
204
|
+
this.map.push(base);
|
|
205
|
+
if (replacement.length > 0)
|
|
206
|
+
this.parts.push(replacement);
|
|
207
|
+
this.claimFrom = end;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Delete input.slice(start, end): emits nothing. The region stays
|
|
211
|
+
* unclaimed and will be attributed to the next output (or the sentinel).
|
|
212
|
+
*/
|
|
213
|
+
deleteRange(start, end) {
|
|
214
|
+
this.advance(start, end);
|
|
215
|
+
}
|
|
216
|
+
/** Finish the map with its sentinel entry and assemble the output text. */
|
|
217
|
+
finish(inputLength) {
|
|
218
|
+
if (this.cursor !== inputLength) {
|
|
219
|
+
throw new Error(`MappedTextBuilder: input not fully consumed (cursor ${this.cursor} of ${inputLength})`);
|
|
220
|
+
}
|
|
221
|
+
this.map.push(inputLength);
|
|
222
|
+
return { text: this.parts.join(''), map: Int32Array.from(this.map) };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=offsetMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offsetMap.js","sourceRoot":"","sources":["../../src/offsetMap.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composed detection pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Stages 0–3 in one supported entry point. Before this existed a caller had
|
|
5
|
+
* to run `runStage1`, then `runStage2`, then score the result — and Stage 3's
|
|
6
|
+
* evidence had to be threaded into Stage 1's validators by hand. That is not a
|
|
7
|
+
* detail a consumer should be trusted with: a caller who forgets the context
|
|
8
|
+
* hook silently gets a weaker pipeline, and one who forgets Stage 3 gets every
|
|
9
|
+
* false positive Stage 3 exists to remove.
|
|
10
|
+
*
|
|
11
|
+
* SPEC.md's non-negotiable applies to the whole composition: any detection
|
|
12
|
+
* error, timeout, or adapter failure must BLOCK, never degrade. Nothing here
|
|
13
|
+
* catches an error from a stage — a thrown `DetectionTimeoutError` or
|
|
14
|
+
* `DetectorError` propagates to the caller, which is what fail-closed means.
|
|
15
|
+
*
|
|
16
|
+
* The lower-level stage functions remain exported for tests and tooling that
|
|
17
|
+
* genuinely want one stage; `detect` is what consumers should use.
|
|
18
|
+
*/
|
|
19
|
+
import type { NormalizationResult } from './types.js';
|
|
20
|
+
import { type Stage1Options } from './detect/runner.js';
|
|
21
|
+
import type { NerRecognizer } from './ner/types.js';
|
|
22
|
+
import { type ContextOptions } from './context/score.js';
|
|
23
|
+
import type { ContextScoredCandidate, DocumentProfile } from './context/types.js';
|
|
24
|
+
export interface DetectOptions {
|
|
25
|
+
/** Stage 1 configuration. The context hook is supplied automatically. */
|
|
26
|
+
readonly stage1?: Omit<Stage1Options, 'contextFor'>;
|
|
27
|
+
/**
|
|
28
|
+
* Stage 2 engine. Omit to run without named-entity recognition — the
|
|
29
|
+
* playground and the Stage-1 eval baseline both do.
|
|
30
|
+
*/
|
|
31
|
+
readonly ner?: NerRecognizer;
|
|
32
|
+
/** Stage 3 configuration. Defaults to the bundled trigger lexicons. */
|
|
33
|
+
readonly context?: ContextOptions;
|
|
34
|
+
}
|
|
35
|
+
export interface DetectionOutcome {
|
|
36
|
+
/** Candidates Stage 3 kept, with their adjusted confidence and reasons. */
|
|
37
|
+
readonly emitted: readonly ContextScoredCandidate[];
|
|
38
|
+
/**
|
|
39
|
+
* Candidates Stage 3 suppressed, retained for eval and explanation.
|
|
40
|
+
*
|
|
41
|
+
* Kept rather than discarded because a suppression is a decision the
|
|
42
|
+
* pipeline must be able to justify: the review UI explains why something
|
|
43
|
+
* was NOT reported, and the eval measures whether a suppression rule is
|
|
44
|
+
* removing errors or removing detections.
|
|
45
|
+
*/
|
|
46
|
+
readonly suppressed: readonly ContextScoredCandidate[];
|
|
47
|
+
readonly profile: DocumentProfile;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Run Stages 0–3 over an already-normalized document.
|
|
51
|
+
*
|
|
52
|
+
* Takes the `NormalizationResult` rather than a string for the same reason
|
|
53
|
+
* `runStage1` does: without the offset map a candidate cannot be mapped back
|
|
54
|
+
* to the original text, and accepting a bare string would let a caller lose
|
|
55
|
+
* it silently.
|
|
56
|
+
*/
|
|
57
|
+
export declare function detect(normalization: NormalizationResult, options?: DetectOptions): Promise<DetectionOutcome>;
|
|
58
|
+
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AAErG,MAAM,WAAW,aAAa;IAC5B,yEAAyE;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACpD;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACpD;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAC1B,aAAa,EAAE,mBAAmB,EAClC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CA6B3B"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The composed detection pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Stages 0–3 in one supported entry point. Before this existed a caller had
|
|
5
|
+
* to run `runStage1`, then `runStage2`, then score the result — and Stage 3's
|
|
6
|
+
* evidence had to be threaded into Stage 1's validators by hand. That is not a
|
|
7
|
+
* detail a consumer should be trusted with: a caller who forgets the context
|
|
8
|
+
* hook silently gets a weaker pipeline, and one who forgets Stage 3 gets every
|
|
9
|
+
* false positive Stage 3 exists to remove.
|
|
10
|
+
*
|
|
11
|
+
* SPEC.md's non-negotiable applies to the whole composition: any detection
|
|
12
|
+
* error, timeout, or adapter failure must BLOCK, never degrade. Nothing here
|
|
13
|
+
* catches an error from a stage — a thrown `DetectionTimeoutError` or
|
|
14
|
+
* `DetectorError` propagates to the caller, which is what fail-closed means.
|
|
15
|
+
*
|
|
16
|
+
* The lower-level stage functions remain exported for tests and tooling that
|
|
17
|
+
* genuinely want one stage; `detect` is what consumers should use.
|
|
18
|
+
*/
|
|
19
|
+
import { DOMAIN_LEXICONS, TRIGGER_LEXICONS } from '@discretion/data';
|
|
20
|
+
import { runStage1 } from './detect/runner.js';
|
|
21
|
+
import { runStage2 } from './ner/runStage2.js';
|
|
22
|
+
import { analyzeContext } from './context/score.js';
|
|
23
|
+
/**
|
|
24
|
+
* Run Stages 0–3 over an already-normalized document.
|
|
25
|
+
*
|
|
26
|
+
* Takes the `NormalizationResult` rather than a string for the same reason
|
|
27
|
+
* `runStage1` does: without the offset map a candidate cannot be mapped back
|
|
28
|
+
* to the original text, and accepting a bare string would let a caller lose
|
|
29
|
+
* it silently.
|
|
30
|
+
*/
|
|
31
|
+
export async function detect(normalization, options = {}) {
|
|
32
|
+
const analysis = analyzeContext(normalization.normalizedText, {
|
|
33
|
+
triggerLexicons: TRIGGER_LEXICONS,
|
|
34
|
+
domainLexicon: DOMAIN_LEXICONS,
|
|
35
|
+
...options.context,
|
|
36
|
+
});
|
|
37
|
+
// Stage 1 validators receive Stage 3 evidence inline, which is what lets a
|
|
38
|
+
// detector that SPEC.md marks "requires context" see the signal at the
|
|
39
|
+
// moment it decides.
|
|
40
|
+
const stage1 = runStage1(normalization, {
|
|
41
|
+
...options.stage1,
|
|
42
|
+
contextFor: (start, end) => analysis.signalAt(start, end),
|
|
43
|
+
});
|
|
44
|
+
const stage2 = options.ner === undefined ? [] : await runStage2(normalization, options.ner);
|
|
45
|
+
const candidates = [...stage1, ...stage2];
|
|
46
|
+
const scored = analysis.score(candidates);
|
|
47
|
+
// NO STAGE 2C. SPEC.md asks for a verification pass over an ambiguous
|
|
48
|
+
// confidence band, and requires it be removed if the eval shows it does not
|
|
49
|
+
// improve results. It was built, measured, and removed — see ARCHITECTURE.md
|
|
50
|
+
// D20 and the BENCHMARKS.md M7 section for the numbers.
|
|
51
|
+
return {
|
|
52
|
+
emitted: scored.filter((c) => !c.suppressed),
|
|
53
|
+
suppressed: scored.filter((c) => c.suppressed),
|
|
54
|
+
profile: analysis.profile,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGrE,OAAO,EAAE,SAAS,EAAsB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AA8BzE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,aAAkC,EAClC,UAAyB,EAAE;IAE3B,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,cAAc,EAAE;QAC5D,eAAe,EAAE,gBAAgB;QACjC,aAAa,EAAE,eAAe;QAC9B,GAAG,OAAO,CAAC,OAAO;KACnB,CAAC,CAAC;IAEH,2EAA2E;IAC3E,uEAAuE;IACvE,qBAAqB;IACrB,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,EAAE;QACtC,GAAG,OAAO,CAAC,MAAM;QACjB,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;KAC1D,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5F,MAAM,UAAU,GAAwB,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE1C,sEAAsE;IACtE,4EAA4E;IAC5E,6EAA6E;IAC7E,wDAAwD;IACxD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9C,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC1B,CAAC;AACJ,CAAC"}
|