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

valkyrjaio / sindri-ts / 30322548766 / 1
100%
26.x: 100%

Build:
DEFAULT BRANCH: 26.x
Ran 28 Jul 2026 02:15AM UTC
Files 45
Run time 1s
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

28 Jul 2026 02:14AM UTC coverage: 100.0%. Remained the same
30322548766.1

push

github

web-flow
[Sindri] Resolve package specifiers so framework providers reach the generated cache (#66)

# Description

Sindri followed the `AppConfig` component-provider tree only as far as
the application's own source. Any provider reached through a bare
package specifier — every one of the framework's own providers — was
silently dropped, so the generated `AppCliRoutingData` held only the
app's commands. In the starter app that meant a cache containing `test`
and nothing else: the framework built-ins `list`, `help`, `version`,
`list:bash` and `http:list` were absent, and `npm run cli list` failed
in cached (non-debug) mode. Debug mode worked only because the runtime
walks every CLI route provider itself.

The root cause is file-path resolution, not tree traversal.
`AstReader::resolveImportToFilePath` returned `''` for any module
specifier not starting with `.`, so `walkProvider` received an empty
path for `new CliWithHttpApplicationComponentProvider()` (imported from
`@valkyrjaio/valkyrja/…`) and never entered the framework subtree at
all. The walk itself is already config-driven and correct — once a
specifier resolves, the framework's own internal imports are relative
and the existing machinery handles them unchanged.

Bare specifiers now resolve through the TypeScript compiler's NodeNext
resolver, which honors a package's `exports` map, so an installed
package's providers are walked exactly like application source. Packages
that ship only `.js` or only `.d.ts` still resolve to nothing — there is
no source body for the AST readers to read.

Two things follow from actually reaching those providers:

**Route names.** The framework names its commands with constants
(`CliCommandName.LIST`), not string literals, and the CLI generator
skipped any route whose first argument was not a string literal. A
constant reference is now kept as the map key, emitted as a computed key
— matching the PHP reference implementation, and pinning the constant
rather than the value it ... (continued)

831 of 831 branches covered (100.0%)

Branch coverage included in aggregate %.

1327 of 1327 relevant lines covered (100.0%)

12.41 hits per line

Source Files on job 30322548766.1
  • Tree
  • List 45
  • Changed 9
  • Source Changed 9
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 30322548766
  • d4b1a22a on github
  • Prev Job for on 26.x (#30215597803.1)
  • Next Job for on 26.x (#30325084291.1)
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