Skip to content

Align email scanner contract#36

Merged
alyldas merged 1 commit into
mainfrom
issue-35-shared-scanner-contract
Jul 1, 2026
Merged

Align email scanner contract#36
alyldas merged 1 commit into
mainfrom
issue-35-shared-scanner-contract

Conversation

@alyldas

@alyldas alyldas commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Keep the email scanner contract names as backward-compatible shared-shape adapters.
  • Export EmailScanHints and keep scanner range and sink shapes aligned with the shared range contract style.
  • Replace the local email masking wrapper with the shared core censorCodePointRanges() helper.
  • Add regression coverage for scanner contract typing and public censor wrapper alignment with scanner ranges.

Validation

  • npm ci
  • npm run check with a temporary npm cache because the local user cache has permission-owned files
  • npm run benchmark:email
  • npm pack --dry-run with a temporary npm cache

Benchmark Evidence

Baseline origin/main:

  • check short clean: 0.0002 avg ms
  • check hinted short clean: 0.0002 avg ms
  • check long clean: 0.0059 avg ms
  • check direct email: 0.0032 avg ms
  • check late-match email: 0.1332 avg ms
  • censor short clean: 0.0003 avg ms
  • censor long clean: 0.0206 avg ms
  • censor direct email: 0.0066 avg ms
  • censor late-match email: 0.2139 avg ms

This branch:

  • check short clean: 0.0004 avg ms
  • check hinted short clean: 0.0002 avg ms
  • check long clean: 0.0057 avg ms
  • check direct email: 0.0036 avg ms
  • check late-match email: 0.1314 avg ms
  • censor short clean: 0.0003 avg ms
  • censor long clean: 0.0206 avg ms
  • censor direct email: 0.0069 avg ms
  • censor late-match email: 0.2660 avg ms

The runtime change delegates masking to the existing core helper; scanner matching behavior is unchanged.

Compatibility Notes

  • Existing public API remains backward compatible.
  • createEmailFilter(), emailFilter(), filter, createEmailScanner(), scanEmailRanges(), collectEmailRanges(), and scanEmailRangeMatches() remain available.
  • Existing EmailScanInput, EmailRangeScanResult, EmailRangeMatch, and EmailRangeMatchSink names remain available.

Closes #35

BEGIN_COMMIT_OVERRIDE
feat: align email scanner contract
END_COMMIT_OVERRIDE

@alyldas alyldas merged commit a87c592 into main Jul 1, 2026
4 checks passed
@alyldas alyldas deleted the issue-35-shared-scanner-contract branch July 1, 2026 14:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

Align email scanner with shared scanner contract

1 participant