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

panates / opra / 38210735960
86%
main: 86%

Build:
Build:
LAST BUILD BRANCH: dev
DEFAULT BRANCH: main
Ran 12 Oct 2026 06:07AM UTC
Jobs 1
Files 392
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

12 Oct 2026 06:03AM UTC coverage: 85.923%. Remained the same
38210735960

push

github

erayhanoglu
fix(common,client): Stop publishing browser bundles that import undeclared packages

Both esbuild configs built their `external` list from dependencies plus
peerDependencies plus **devDependencies**. A devDependency that is
actually imported at runtime therefore survived into the published
`browser.js` as a bare import of a package nobody downstream installs,
and every consumer's bundler stopped on it:

    [vite]: Rollup failed to resolve import "@browsery/fs"
            from ".../node_modules/@opra/common/browser.js"

Comparing each bundle's bare imports against what the package declares
turned up four, one of them in a package the report did not mention:

    @opra/common   @browsery/fs, path-browserify, ts-gems
    @opra/client   @browsery/type-is

They are not the same kind of thing, so they are not fixed the same way.

`ts-gems` and `@browsery/type-is` are real runtime dependencies — the
first for `asMutable`, used throughout `@opra/common`'s own source and
by its Node build too, the second by three of the client's modules. Both
move to `dependencies`. `ts-gems` resolved until now only through
`valgen`'s transitive copy.

`@browsery/fs` and `path-browserify` stand in for `node:fs`/`node:path`
in the browser build alone (see each config's `alias`). Declaring them
would make every Node consumer install two browser shims it will never
load, so they are inlined instead.

`external` is now dependencies plus peerDependencies: what a consumer's
own install will actually have, and therefore the only thing a bundle
may leave as a bare import. Anything else is inlined, which turns this
class of mistake from a broken publish into a slightly larger bundle.
`@opra/common`'s browser bundle grows from 53 KB to 56 KB gzipped;
`@opra/client`'s is unchanged.

Verified in a clean room holding only the declared dependencies: before,
a consumer build fails to resolve `path-browserify`; after, it builds,
with no unresolved dynamic imports left.

`TranslationFileStor... (continued)

4801 of 6145 branches covered (78.13%)

Branch coverage included in aggregate %.

40863 of 47000 relevant lines covered (86.94%)

312.36 hits per line

Jobs
ID Job ID Ran Files Coverage
1 38210735960.1 12 Oct 2026 06:07AM UTC 392
85.92
GitHub Action Run
Source Files on build 38210735960
  • Tree
  • List 392
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #38210735960
  • ba7bf313 on github
  • Prev Build on dev (#37793069155)
  • Next Build on dev (#38211482106)
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