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

safe-global / safe-events-service / 42029761545
88%

Build:
DEFAULT BRANCH: main
Ran 05 Nov 2026 12:45PM UTC
Jobs 2
Files 50
Run time 1min
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

05 Nov 2026 12:44PM UTC coverage: 87.749% (+1.4%) from 86.344%
42029761545

push

github

web-flow
feat: Validate environment config at startup (#646)

* feat: Validate environment config at startup

- Add `EnvironmentVariables` (class-validator) with every env var, its type
  and default. The app does not start if a required var is missing or a value
  is invalid, and the error lists every problem
- Read config with typed `ConfigService.get(KEY, { infer: true })`. Remove
  hand-written number and boolean parsing and the defaults passed to `get`
- Make `ConfigModule` global and remove it from feature modules
- Read `URL_BASE_PATH`, `LOG_LEVEL`, `NODE_ENV` and the admin secrets through
  ConfigService instead of `process.env` at import time, so values set only in
  `.env` are applied
- Sync the DB schema only for `development`, `dev` and `test`, instead of for
  any `NODE_ENV` other than `production`
- Add missing admin secrets to `.env.docker`
- Update README config table, `.env.sample` and AGENTS.md

* docs: Name ormconfig.ts as the only direct process.env reader

* test: Cover database SSL options

* refactor: Rename adminRoot to adminBasePath in admin response patches

* refactor: Rename details to errorMessages in validate

* fix: Fail at startup on a blank SSE_AUTH_TOKEN

An empty SSE_AUTH_TOKEN disables SSE auth. The validation treated a
whitespace-only value as unset, so it fell back to the empty default and
turned auth off without any error.

A whitespace-only token, or one with whitespace inside, now stops the
app at startup. Outer whitespace is trimmed, so a trailing newline from
a secret file does not stop the pod.

* fix: Hide credentials when logging AMQP_URL

getAmqpUrl() logged the full AMQP_URL, password included. The log now
shows only scheme, host, port and vhost. The URL is not parsed, because
a password with unencoded #, / or ? is read as port, path or fragment
and would not be hidden.

458 of 536 branches covered (85.45%)

Branch coverage included in aggregate %.

159 of 172 new or added lines in 19 files covered. (92.44%)

1 existing line in 1 file now uncovered.

817 of 917 relevant lines covered (89.09%)

108.99 hits per line

Uncovered Changes

Lines Coverage ∆ File
6
0.0
0.0% src/main.ts
3
0.0
0.0% src/datasources/db/ormconfig.ts
2
95.05
src/config/environment.ts
1
91.43
-0.24% src/logging/pino-logger.config.ts
1
56.67
1.83% src/modules/admin/adminjs.ts

Coverage Regressions

Lines Coverage ∆ File
1
56.67
1.83% src/modules/admin/adminjs.ts
Jobs
ID Job ID Ran Files Coverage
1 run-test:cov - 42029761545.1 05 Nov 2026 12:46PM UTC 98
87.79
GitHub Action Run
2 run-test:e2e:cov - 42029761545.2 05 Nov 2026 12:45PM UTC 94
64.48
GitHub Action Run
Source Files on build 42029761545
  • Tree
  • List 50
  • Changed 36
  • Source Changed 23
  • Coverage Changed 36
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #42029761545
  • 0c550b05 on github
  • Prev Build on main (#41475750616)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc