• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

safe-global / safe-client-gateway / 26511058022
90%

Build:
DEFAULT BRANCH: main
Ran 27 May 2026 12:31PM UTC
Jobs 2
Files 1191
Run time 4min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 May 2026 12:27PM UTC coverage: 89.713% (+0.03%) from 89.679%
26511058022

push

github

web-flow
feat(auth): introduce EmailAddress schema (#3096)

* feat(auth): introduce branded EmailAddress schema

Adds a shared EmailAddressSchema and EmailAddress branded type under
validation/entities/schemas/. Replaces 5 inline z.email().max(255)
declarations and the hand-rolled .trim().toLowerCase() normalization
inside UsersRepository.

- EmailAddressSchema normalizes (trim + lowercase) and validates via
  z.email().max(255), then brands the output. Matches UuidSchema pattern.
- User (domain), DB User, Auth0Token, UserSession, and the three email
  env vars in configuration.schema now use the shared schema.
- UsersRepository.persistVerifiedEmail and assertEmailNotTaken drop the
  inline .trim().toLowerCase(); the schema produces an already-normalized
  EmailAddress at the boundary.

No HTTP-visible behavior change. Pre-work for WA-2327 (email invites).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(auth): migrate fake email construction to fakeEmailAddress helper

Test fixtures previously produced string-typed emails via
faker.internet.email() (sometimes with manual .toLowerCase()).
With EmailAddress now branded, every fixture must yield an
EmailAddress instance.

Adds fakeEmailAddress() under validation/entities/schemas/__tests__/
that wraps EmailAddressSchema.parse(faker.internet.email()). Spec
files across auth, users, and spaces modules migrate to it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* refactor(auth): derive EmailAddress type from the schema

Drop the manual `string & { __brand: 'EmailAddress' }` and the
explicit transform, and let the zod schema's `.toLowerCase()`
output drive the inferred type via `z.infer`. Same downstream
shape (lowercased, valid email, max 255 chars), one source of truth.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(auth): actually brand EmailAddress; revert config-var changes

Address review feedback on PR #3096:

- Add `.brand<'... (continued)

4297 of 5157 branches covered (83.32%)

Branch coverage included in aggregate %.

11 of 11 new or added lines in 6 files covered. (100.0%)

1 existing line in 1 file now uncovered.

16205 of 17696 relevant lines covered (91.57%)

618.21 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
88.1
-0.79% src/modules/relay/domain/relayers/no-fee-campaign.relayer.ts
Jobs
ID Job ID Ran Files Coverage
1 run-integration-tests - 26511058022.1 27 May 2026 12:32PM UTC 2285
78.12
GitHub Action Run
2 run-unit-tests - 26511058022.2 27 May 2026 12:31PM UTC 2088
57.62
GitHub Action Run
Source Files on build 26511058022
  • Tree
  • List 1191
  • Changed 337
  • Source Changed 6
  • Coverage Changed 337
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #26511058022
  • 169bc132 on github
  • Prev Build on main (#26508347679)
  • Next Build on main (#26524734011)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc