DEV Community

thinkThroo
thinkThroo

Posted on

Istanbul usage in tRPC source code

In this article, we analyze Istanbul usage in tRPC source code. I found this comment — istanbul ignore if. This hints that tRPC uses Istanbul.js, a tool that makes JavaScript test coverage simple.

This one took me a while to figure out that tRPC repository uses @vitest/coverage-istanbul, I was initially looking to see if there’s any scripts related to test defined in packages/clients but there were none.

After searching for istanbul across the codebase, that is when I saw Istanbul word in vitest.config.ts test scripts are defined in the root level’s package.json.

"test": "turbo codegen-tests && conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"",
"test-ci": "turbo codegen-tests && conc \"CI=true vitest run - coverage\" \"pnpm -F tests test-run:tsc\"",
"test-watch": "vitest",
Enter fullscreen mode Exit fullscreen mode

Below is coverage object picked from vitest.config.ts:

coverage: {
 provider: 'istanbul',
 include: ['**/src/**'],
 exclude: [
 '**/www/**',
 '**/examples/**',
 // skip codecov for experimental features
 // FIXME: delete me once they're stable
 '**/next/src/app-dir/**',
 '**/server/src/adapters/next-app-dir/**',
 ],
},
Enter fullscreen mode Exit fullscreen mode

Vitest supports another provider as well, it is ‘v8’. By default, provider is set to v8.

Let’s what happens when test script is run:

test script:

"test": "turbo codegen-tests && conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"",
Enter fullscreen mode Exit fullscreen mode

tRPC uses Turbo. Turbo is an incremental bundler and build system optimized for JavaScript and TypeScript, written in Rust.

turbo codegen-tests:

codegen-tests is a command defined in turbo.json and when you run this, it executes codegen-tests scripts defined in the packages. This is a monorepo setup.

codegen-scripts in packages:

- client/package.json

- next/package.json

- react-query/package.json

- server/package.json

conc -c

conc is a short alias for concurrently. Checkout concurrrently.

Below is an example usage of concurrently.

concurrently "command1 arg" "command2 arg"
(or)
conc "command1 arg" "command2 arg"
Enter fullscreen mode Exit fullscreen mode

tRPC uses this below command:

conc -c \"green,blue\" \"vitest run\" \"pnpm -F tests test-run:tsc\"
Enter fullscreen mode Exit fullscreen mode

About us:

At Thinkthroo, we study large open source projects and provide architectural guides. We have developed resubale Components, built with tailwind, that you can use in your project. We offer Next.js, React and Node development services.

Book a meeting with us to discuss your project.

Image description

Image description

References:

  1. https://github.com/trpc/trpc/blob/next/packages/client/src/links/httpBatchLink.ts#L91C12-L91C30

  2. https://github.com/gotwarlost/istanbul

  3. https://istanbul.js.org/

  4. https://github.com/istanbuljs

  5. https://github.com/trpc/trpc/blob/d603d860a3aeb12bbf6e836abd8c5a30c7b5d7a5/vitest.config.ts#L45

Top comments (0)