Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
a66dd13
Init
eldadfux Oct 18, 2025
62b4fa8
Add Kikobeats as a new source for free email domains and update domai…
eldadfux Oct 18, 2025
7c0aed9
fixes to format
eldadfux Oct 18, 2025
3c52d73
Update dependencies and refactor code for consistency and readability
eldadfux Oct 18, 2025
88f35d7
Update last updated timestamps in domain files and adjust comment for…
eldadfux Oct 18, 2025
3bdc14b
Add new disposable and free email domains, update last updated timest…
eldadfux Oct 18, 2025
6020556
Remove unnecessary whitespace in Email.php for cleaner code formatting
eldadfux Oct 18, 2025
73f5345
Update GitHub Actions workflows to use actions/checkout@v4 for improv…
eldadfux Oct 18, 2025
0a6a373
Refactor Email class to support unique email normalization and add pr…
eldadfux Oct 19, 2025
a7da806
Remove
eldadfux Oct 19, 2025
c0588ce
Update GitHub Actions workflow to rename job from CodeQL to Composer …
eldadfux Oct 19, 2025
a54616f
Enhance Email class by introducing formatting constants and updating …
eldadfux Oct 19, 2025
903f85e
Add additional email format constants to Email class for enhanced fle…
eldadfux Oct 19, 2025
2e7b660
Comment out plus addressing and dots removal in email normalization p…
eldadfux Oct 19, 2025
8ab64f5
Refactor Email class to implement canonical email normalization, repl…
eldadfux Oct 19, 2025
c9cb016
Enhance Email class by introducing a Domain instance for improved dom…
eldadfux Oct 19, 2025
8fa5a6b
Refactor Email class and clean up test files by removing unnecessary …
eldadfux Oct 19, 2025
72a1e4e
Update GitHub Actions workflows to use Composer 2.8 for improved depe…
eldadfux Oct 19, 2025
46d190c
Enhance Email class by adding validation for the disposable domains d…
eldadfux Oct 19, 2025
9abf985
Refactor Email class to improve code readability by adding whitespace…
eldadfux Oct 19, 2025
4d32e60
Update composer.json to modify PHPStan check command and upgrade PHPS…
eldadfux Oct 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: "Composer Checks"

on: [pull_request]
jobs:
lint:
name: Composer Checks
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Run Composer Checks
run: |
docker run --rm -v $PWD:/app composer:2.8 sh -c \
"composer install --profile --ignore-platform-reqs && composer check"

17 changes: 17 additions & 0 deletions .github/workflows/linter.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: "Linter"

on: [pull_request]
jobs:
lint:
name: Linter
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Run Linter
run: |
docker run --rm -v $PWD:/app composer:2.8 sh -c \
"composer install --profile --ignore-platform-reqs && composer lint"

29 changes: 29 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
name: "Tests"

on: [pull_request]
jobs:
test:
name: Tests ${{ matrix.php-versions }}
runs-on: ubuntu-latest
strategy:
matrix:
php-versions: ['8.1', '8.2', '8.3', 'nightly']

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup PHP ${{ matrix.php-versions }}
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}

- name: Validate composer.json and composer.lock
run: composer validate --strict

- name: Compose install
run: composer install --ignore-platform-reqs

- name: Run tests
run: composer test

323 changes: 323 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,323 @@
# Composer
/vendor/
composer.phar
composer.lock

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Logs
*.log

# Runtime
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage/

# nyc test coverage
.nyc_output

# Dependency directories
node_modules/

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# Temporary folders
tmp/
temp/

# Build artifacts
build/
dist/

# PHPUnit
.phpunit.result.cache

# PHPStan
.phpstan.neon

# PHP CS Fixer
.php_cs.cache

# Laravel Pint
.php-cs-fixer.cache

# PHP_CodeSniffer
.phpcs.xml

# Psalm
psalm.xml
psalm-baseline.xml

# PHPUnit coverage
clover.xml
coverage.xml
coverage/

# PHPUnit cache
.phpunit.result.cache

# PHPStan cache
.phpstan.cache

# PHP CS Fixer cache
.php_cs.cache

# Laravel Pint cache
.php-cs-fixer.cache

# PHP_CodeSniffer cache
.phpcs.cache

# Psalm cache
.psalm/

# IDE files
.vscode/
.idea/
*.swp
*.swo
*~

# OS files
.DS_Store
Thumbs.db

# Log files
*.log

# Runtime files
*.pid
*.seed
*.pid.lock

# Coverage directory
coverage/

# Dependency directories
node_modules/

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# Temporary folders
tmp/
temp/

# Build artifacts
build/
dist/

# PHPUnit
.phpunit.result.cache

# PHPStan
.phpstan.neon

# PHP CS Fixer
.php_cs.cache

# Laravel Pint
.php-cs-fixer.cache

# PHP_CodeSniffer
.phpcs.xml

# Psalm
psalm.xml
psalm-baseline.xml

# PHPUnit coverage
clover.xml
coverage.xml
coverage/

# PHPUnit cache
.phpunit.result.cache

# PHPStan cache
.phpstan.cache

# PHP CS Fixer cache
.php_cs.cache

# Laravel Pint cache
.php-cs-fixer.cache

# PHP_CodeSniffer cache
.phpcs.cache

# Psalm cache
.psalm/

# IDE files
.vscode/
.idea/
*.swp
*.swo
*~

# OS files
.DS_Store
Thumbs.db

# Log files
*.log

# Runtime files
*.pid
*.seed
*.pid.lock

# Coverage directory
coverage/

# Dependency directories
node_modules/

# Optional npm cache directory
.npm

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# next.js build output
.next

# nuxt.js build output
.nuxt

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# Temporary folders
tmp/
temp/

# Build artifacts
build/
dist/

Comment on lines +1 to +323
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Remove massive duplication in .gitignore.

The file contains the same ignore patterns repeated three times (lines 1-85, 86-204, 205-323). This appears to be a copy-paste error and should be consolidated to a single set of patterns.

Apply this fix to remove the duplication - keep only the first block (lines 1-85) and remove lines 86-323:

 # Composer
 /vendor/
 composer.phar
 composer.lock
 
 # IDE
 .vscode/
 .idea/
 *.swp
 *.swo
 *~
 
 # OS
 .DS_Store
 Thumbs.db
 
 # Logs
 *.log
 
 # Runtime
 *.pid
 *.seed
 *.pid.lock
 
 # Coverage directory used by tools like istanbul
 coverage/
 
 # nyc test coverage
 .nyc_output
 
 # Dependency directories
 node_modules/
 
 # Optional npm cache directory
 .npm
 
 # Optional REPL history
 .node_repl_history
 
 # Output of 'npm pack'
 *.tgz
 
 # Yarn Integrity file
 .yarn-integrity
 
 # dotenv environment variables file
 .env
 .env.test
 
 # parcel-bundler cache (https://parceljs.org/)
 .cache
 .parcel-cache
 
 # next.js build output
 .next
 
 # nuxt.js build output
 .nuxt
 
 # vuepress build output
 .vuepress/dist
 
 # Serverless directories
 .serverless
 
 # FuseBox cache
 .fusebox/
 
 # DynamoDB Local files
 .dynamodb/
 
 # TernJS port file
 .tern-port
 
 # Stores VSCode versions used for testing VSCode extensions
 .vscode-test
 
 # Temporary folders
 tmp/
 temp/
 
 # Build artifacts
 build/
 dist/
 
 # PHPUnit
 .phpunit.result.cache
 
 # PHPStan
 .phpstan.neon
 
 # PHP CS Fixer
 .php_cs.cache
 
 # Laravel Pint
 .php-cs-fixer.cache
 
 # PHP_CodeSniffer
 .phpcs.xml
 
 # Psalm
 psalm.xml
 psalm-baseline.xml
 
 # PHPUnit coverage
 clover.xml
 coverage.xml
 coverage/
-
-# PHPUnit cache
-.phpunit.result.cache
-
-# PHPStan cache
-.phpstan.cache
-
-# PHP CS Fixer cache
-.php_cs.cache
-
-# Laravel Pint cache
-.php-cs-fixer.cache
-
-# PHP_CodeSniffer cache
-.phpcs.cache
-
-# Psalm cache
-.psalm/
-
-# IDE files
-.vscode/
-.idea/
-*.swp
-*.swo
-*~
-
-# OS files
-.DS_Store
-Thumbs.db
-
-# Log files
-*.log
-
-# Runtime files
-*.pid
-*.seed
-*.pid.lock
-
-# Coverage directory
-coverage/
-
-# Dependency directories
-node_modules/
-
-# Optional npm cache directory
-.npm
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-.env.test
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-.parcel-cache
-
-# next.js build output
-.next
-
-# nuxt.js build output
-.nuxt
-
-# vuepress build output
-.vuepress/dist
-
-# Serverless directories
-.serverless
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-# Temporary folders
-tmp/
-temp/
-
-# Build artifacts
-build/
-dist/
-
-# PHPUnit
-.phpunit.result.cache
-
-# PHPStan
-.phpstan.neon
-
-# PHP CS Fixer
-.php_cs.cache
-
-# Laravel Pint
-.php-cs-fixer.cache
-
-# PHP_CodeSniffer
-.phpcs.xml
-
-# Psalm
-psalm.xml
-psalm-baseline.xml
-
-# PHPUnit coverage
-clover.xml
-coverage.xml
-coverage/
-
-# PHPUnit cache
-.phpunit.result.cache
-
-# PHPStan cache
-.phpstan.cache
-
-# PHP CS Fixer cache
-.php_cs.cache
-
-# Laravel Pint cache
-.php-cs-fixer.cache
-
-# PHP_CodeSniffer cache
-.phpcs.cache
-
-# Psalm cache
-.psalm/
-
-# IDE files
-.vscode/
-.idea/
-*.swp
-*.swo
-*~
-
-# OS files
-.DS_Store
-Thumbs.db
-
-# Log files
-*.log
-
-# Runtime files
-*.pid
-*.seed
-*.pid.lock
-
-# Coverage directory
-coverage/
-
-# Dependency directories
-node_modules/
-
-# Optional npm cache directory
-.npm
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variables file
-.env
-.env.test
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-.parcel-cache
-
-# next.js build output
-.next
-
-# nuxt.js build output
-.nuxt
-
-# vuepress build output
-.vuepress/dist
-
-# Serverless directories
-.serverless
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-# Temporary folders
-tmp/
-temp/
-
-# Build artifacts
-build/
-dist/
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
# Composer
/vendor/
composer.phar
composer.lock
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
# OS
.DS_Store
Thumbs.db
# Logs
*.log
# Runtime
*.pid
*.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage/
# nyc test coverage
.nyc_output
# Dependency directories
node_modules/
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# Temporary folders
tmp/
temp/
# Build artifacts
build/
dist/
# PHPUnit
.phpunit.result.cache
# PHPStan
.phpstan.neon
# PHP CS Fixer
.php_cs.cache
# Laravel Pint
.php-cs-fixer.cache
# PHP_CodeSniffer
.phpcs.xml
# Psalm
psalm.xml
psalm-baseline.xml
# PHPUnit coverage
clover.xml
coverage.xml
coverage/
# PHPUnit cache
.phpunit.result.cache
# PHPStan cache
.phpstan.cache
# PHP CS Fixer cache
.php_cs.cache
# Laravel Pint cache
.php-cs-fixer.cache
# PHP_CodeSniffer cache
.phpcs.cache
# Psalm cache
.psalm/
# IDE files
.vscode/
.idea/
*.swp
*.swo
*~
# OS files
.DS_Store
Thumbs.db
# Log files
*.log
# Runtime files
*.pid
*.seed
*.pid.lock
# Coverage directory
coverage/
# Dependency directories
node_modules/
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# Temporary folders
tmp/
temp/
# Build artifacts
build/
dist/
# PHPUnit
.phpunit.result.cache
# PHPStan
.phpstan.neon
# PHP CS Fixer
.php_cs.cache
# Laravel Pint
.php-cs-fixer.cache
# PHP_CodeSniffer
.phpcs.xml
# Psalm
psalm.xml
psalm-baseline.xml
# PHPUnit coverage
clover.xml
coverage.xml
coverage/
# PHPUnit cache
.phpunit.result.cache
# PHPStan cache
.phpstan.cache
# PHP CS Fixer cache
.php_cs.cache
# Laravel Pint cache
.php-cs-fixer.cache
# PHP_CodeSniffer cache
.phpcs.cache
# Psalm cache
.psalm/
# IDE files
.vscode/
.idea/
*.swp
*.swo
*~
# OS files
.DS_Store
Thumbs.db
# Log files
*.log
# Runtime files
*.pid
*.seed
*.pid.lock
# Coverage directory
coverage/
# Dependency directories
node_modules/
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# Temporary folders
tmp/
temp/
# Build artifacts
build/
dist/
# Composer
/vendor/
composer.phar
composer.lock
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
# OS
.DS_Store
Thumbs.db
# Logs
*.log
# Runtime
*.pid
*.seed
*.pid.lock
# Coverage directory used by tools like istanbul
coverage/
# nyc test coverage
.nyc_output
# Dependency directories
node_modules/
# Optional npm cache directory
.npm
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# next.js build output
.next
# nuxt.js build output
.nuxt
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# Temporary folders
tmp/
temp/
# Build artifacts
build/
dist/
# PHPUnit
.phpunit.result.cache
# PHPStan
.phpstan.neon
# PHP CS Fixer
.php_cs.cache
# Laravel Pint
.php-cs-fixer.cache
# PHP_CodeSniffer
.phpcs.xml
# Psalm
psalm.xml
psalm-baseline.xml
# PHPUnit coverage
clover.xml
coverage.xml
coverage/
🤖 Prompt for AI Agents
In .gitignore (lines 1-323) the same ignore patterns are duplicated across three
blocks; remove the duplicated blocks and consolidate to a single set of patterns
by keeping only the first block (lines 1-85) and deleting lines 86-323, ensuring
the resulting file ends with a single canonical list and a trailing newline.

Loading