about summary refs log tree commit diff
path: root/src/lib/strings/email.ts
diff options
context:
space:
mode:
authorHailey <me@haileyok.com>2024-09-20 14:10:34 -0700
committerGitHub <noreply@github.com>2024-09-20 16:10:34 -0500
commitc88b555410e7eb6f9ded4648bd6236c9f653c731 (patch)
tree5f963c743aec144223b86d5a2120c95daf7cd441 /src/lib/strings/email.ts
parente07f5d5980e7647e78bcaf10c7a239725b08ce3d (diff)
downloadvoidsky-c88b555410e7eb6f9ded4648bd6236c9f653c731.tar.zst
Validate TLD in signup (#5426)
* add lib

* add validation

* log

* add some common typos

* add tests

* reset hasWarned state on edit

* shorten path

* Move test file, adjust regex, add test

* Get real nit picky

---------

Co-authored-by: Eric Bailey <git@esb.lol>
Diffstat (limited to 'src/lib/strings/email.ts')
-rw-r--r--src/lib/strings/email.ts9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/lib/strings/email.ts b/src/lib/strings/email.ts
new file mode 100644
index 000000000..04b603847
--- /dev/null
+++ b/src/lib/strings/email.ts
@@ -0,0 +1,9 @@
+import type tldts from 'tldts'
+
+const COMMON_ERROR_PATTERN =
+  /([a-zA-Z0-9._%+-]+)@(gnail\.(co|com)|gmaill\.(co|com)|gmai\.(co|com)|gmail\.co|gmal\.(co|com)|iclod\.(co|com)|icloud\.co|outllok\.(co|com)|outlok\.(co|com)|outlook\.co|yaoo\.(co|com)|yaho\.(co|com)|yahoo\.co|yahooo\.(co|com))$/
+
+export function isEmailMaybeInvalid(email: string, dynamicTldts: typeof tldts) {
+  const isIcann = dynamicTldts.parse(email).isIcann
+  return !isIcann || COMMON_ERROR_PATTERN.test(email)
+}