Skip to content

refactor [NET-1650]: Clean-up tsconfigs for the proto-rpc package#3274

Closed
mondoreale wants to merge 3 commits into
mainfrom
net-1650-clean-up-proto-rpc-package-tsconfigs
Closed

refactor [NET-1650]: Clean-up tsconfigs for the proto-rpc package#3274
mondoreale wants to merge 3 commits into
mainfrom
net-1650-clean-up-proto-rpc-package-tsconfigs

Conversation

@mondoreale

@mondoreale mondoreale commented Dec 8, 2025

Copy link
Copy Markdown
Contributor

This pull request updates TypeScript configuration and build scripts across several packages to improve project references and build reliability, especially for the proto-rpc package. The main changes focus on simplifying TypeScript project references, refining build and test scripts, and ensuring that test proto files are generated only when available.

Changes

TypeScript project reference updates:

  • Updated references in multiple tsconfig.jest.json and tsconfig.node.json files to point directly to the proto-rpc package directory instead of its tsconfig.node.json file, simplifying dependency management for packages such as autocertifier-server, cdn-location, dht, and trackerless-network.

  • Added a root-level tsconfig.json to proto-rpc to serve as a composite project, referencing its various config files for different environments.

  • Improved the structure of tsconfig.karma.json and tsconfig.node.json in proto-rpc for better compatibility and clarity, including updates to include paths and compiler options.

Build and test script Improvements:

  • Modified the prebuild, build, and check scripts in proto-rpc/package.json to ensure proto files for tests are generated only when necessary, and improved TypeScript checking by adding --noEmit for stricter type checks. Also, streamlined the test script to avoid duplicate proto generation.

  • Updated the test-proto.sh script to conditionally run protoc only if the test/protos directory exists, preventing errors during Docker builds where this directory may be absent.

Build cache configuration:

  • Added the packages/proto-rpc/test/proto directory to the cached build paths in the GitHub Actions workflow, ensuring generated test proto files are properly cached during CI runs.

Cleanup:

  • Removed the unused tsconfig.browser.json file from the proto-rpc package, reducing clutter.

Testing configuration:

  • Refined the tsconfig.jest.json in proto-rpc to include only the test directory and updated references for more accurate test builds.

@linear

linear Bot commented Dec 8, 2025

Copy link
Copy Markdown

@github-actions github-actions Bot added ci Related to CI configuration network Related to Network Package dht Related to DHT package proto-rpc labels Dec 8, 2025
@github-actions github-actions Bot removed the ci Related to CI configuration label Dec 8, 2025
@mondoreale mondoreale force-pushed the net-1650-clean-up-proto-rpc-package-tsconfigs branch from bc1b61a to a357d79 Compare December 8, 2025 18:55
@github-actions github-actions Bot added the ci Related to CI configuration label Dec 8, 2025
@mondoreale mondoreale requested review from juslesan and teogeb December 8, 2025 19:05
@mondoreale mondoreale marked this pull request as ready for review December 8, 2025 19:07
@mondoreale

Copy link
Copy Markdown
Contributor Author

Closing in favour or #3301.

We also don't need to build test-protos before the main build there!

@mondoreale mondoreale closed this Dec 15, 2025
@mondoreale mondoreale deleted the net-1650-clean-up-proto-rpc-package-tsconfigs branch December 15, 2025 19:25
mondoreale added a commit that referenced this pull request Dec 16, 2025
This pull request refactors TypeScript configuration across several
packages to simplify project structure and build scripts. It removes
redundant or legacy `tsconfig.node.json` and related files, consolidates
configuration into main `tsconfig.json` files, and updates references
and build scripts accordingly. The changes aim to reduce duplication,
streamline TypeScript project references, and make the build and test
processes more maintainable.

> [!NOTE]
> 
> In essence, this PR
> - Simplifies `build` – `tsc -b` across the board.
> - Simplifies `check` – `tsc -p tsconfig.jest.json`
> - Drops the Eslint-driven requirement of test files being in
package-level `tsconfig.json` files.
> 💡 `test/` dirs have their own `tsconfig.json` files that satisfy
eslint's project service resolver.
> - Renames `tsconfig.node.json` to `tsconfig.json` making it the main
entrypoint of each package.
> - Drop `references` field from `tsconfig.jest.json` files as these
produce a lot of unnecessary noise and we don't "build" through these.
> - Make the root `tsconfig.jest.json` disable emitting properly – we
\*don't* reference jest tsconfigs anymore!
> 💡 Although tsc does not complain, previously this behaviour was
against the rules of `composite` tsconfig setup – makes it hard to
predict what the outcome is (will it emit, or it won't?).
>
> It also covers a lot of what the following PRs offer:
> - #3271
> - #3272
> - #3273 
> - #3274
> - #3275
> - #3276
> - #3277 

### Changes

**TypeScript configuration consolidation:**

* Removed `tsconfig.node.json` and related files from multiple packages
(`autocertifier-server`, `cdn-location`, `cli-tools`), consolidating
configuration into main `tsconfig.json` files and updating their
`extends`, `include`, and `references` fields for clarity and
maintainability.
[[1]](diffhunk://#diff-b8ca01c11975250ba2d1cf703ecb4dfb3a3197b14d1e0fb1c92cab47c0f393efL1-L16)
[[2]](diffhunk://#diff-829757d9b00ea7fbff093ee2e216391cd3edcd5f46ddf05bde89e75eae6bfe83L1-L12)
[[3]](diffhunk://#diff-4e2d6360af04c468b2d5b2f6616a8ddd0c008d6f25cb3173a8b741cd15ec77d3L1-L18)
[[4]](diffhunk://#diff-4f7db719f0663c85b00b0dbfb67cd08b73003012b9de614802b30a1490546861L1-L9)
[[5]](diffhunk://#diff-6911c66f995472db595934d34bed8bb3b9d4f5f4e8dcef1329a16d498928e684L2-R14)
[[6]](diffhunk://#diff-6348cef142feb7833264b39ad43d4ef7281cf1ac9530f0ac807d3e6a547c9795L2-R10)
[[7]](diffhunk://#diff-38daa775ecafcf440e7c2b9817052481019197dfba8e0bbb482e7ce5efe0cfafL2-R16)
[[8]](diffhunk://#diff-ae13578e8d026eec67d6b00c439076ab2fc27081e16cb0744b996b414ec28a98L12-R12)

* Updated `tsconfig.jest.json` files to directly include relevant
source, test, and config files, and removed obsolete project references.
[[1]](diffhunk://#diff-08758b3945f3c6bf5569734c2c5d0528c21904deef2ca70414543e91107e6af9R4-L7)
[[2]](diffhunk://#diff-7b3ee0dcec62b1726878a419c615b3645198209626245d78f996ea5bb2a9ea31R4-L8)
[[3]](diffhunk://#diff-198e2b7b2035fa308d0d3c58fddc55ee01229e98c40f7c40ac11cffb40092f83L8-L14)

**Build and check script simplification:**

* Simplified `check` and `build` scripts in `package.json` files to use
the consolidated TypeScript configs, removing redundant or chained
TypeScript invocations.
[[1]](diffhunk://#diff-50299ff04a4b7e150c72c86a7d621a7a799aa89849e4885c6ac0887af7da9629L22-R22)
[[2]](diffhunk://#diff-650e71c74d8235428c25ec35eb19d1ab8daa27dc303d7564f493507a8c011b26L28-R28)
[[3]](diffhunk://#diff-2595495f28a036656bd9466e08f5fe32af851fb9bd3465eef7b2c202cd6ff83dL21-R21)
[[4]](diffhunk://#diff-48deceddbbe98a41ff1d0f560db132548031fbd96d790c09ffeed924a20e8a05L27-R29)

* Updated shell scripts and build commands to no longer rely on removed
config files.

**Test configuration improvements:**

* Added dedicated `test/tsconfig.json` files in several packages to
ensure test files are properly included and configured for TypeScript
and Jest.
[[1]](diffhunk://#diff-99570814e8a6d99b92ce03d11db23716ed24927bbc40da26f16424cb9135917cR1-R6)
[[2]](diffhunk://#diff-d33492e918ed4916dd23554eb003330d2983698030d26bbf2667c472e2bb0166R1-R6)

Overall, these changes make the TypeScript setup across packages more
consistent, easier to understand, and less error-prone.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci Related to CI configuration dht Related to DHT package network Related to Network Package proto-rpc

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants