Ecosystem Map
This page maps the active repositories, packages, and ownership boundaries in the current Tsonic stack.
Compiler and user entrypoint
tsonic
tsonic owns:
- parsing, typing, validation, IR, emission, backend orchestration
- the CLI commands users run
- the workspace, project, and package model
- the compiler quality bar (
./test/scripts/run-all.sh)
Public docs: /tsonic/
Authoring packages
@tsonic/core
Language-facing types and intrinsics:
- numeric branded types such as
int,long,byte,double lang.jshelpers such asnameof,sizeof,defaultof,out,stackalloc,asinterface, andtrycast
@tsonic/globals
Shared ambient declarations used by surface and package layers.
These two packages are foundational, but they are not “ambient worlds” on their own. They support the compiler and the higher-level package model.
First-party TypeScript source packages
These are the public authored packages in the current stack.
@tsonic/js
Role:
- active JavaScript ambient surface
- first-party
tsonic-source-package - canonical source for JS-style globals and receiver methods
Examples of what it provides:
consoleJSONDateMap,Set- typed arrays
- timers
Public docs: /js/
@tsonic/nodejs
Role:
- first-party source package for Node-style modules
- layered on top of
@tsonic/js - package metadata declares
node:*aliases and runtime requirements
Examples of what it provides:
node:fsnode:pathnode:httpnode:cryptonode:streamnode:netnode:tls
Public docs: /nodejs/
@tsonic/express
Role:
- first-party source package for Express-style routing and middleware
- canonical package for the Express layer
- authored in TypeScript and consumed as source
Public docs: /express/
Generated CLR binding packages
These packages are generated by tsbindgen from CLR metadata.
Core families
@tsonic/dotnet@tsonic/aspnetcore@tsonic/microsoft-extensions@tsonic/efcore@tsonic/efcore-sqlite@tsonic/efcore-sqlserver@tsonic/efcore-npgsql
These are not authored source packages in the same sense as js, nodejs, and
express.
They exist to project CLR namespaces, members, overloads, extension methods, and metadata into TypeScript packages that Tsonic can consume.
Public docs: /tsbindgen/
Repo ownership model
| Repo / package family | Owns | Validation bar |
|---|---|---|
tsonic |
compiler + CLI + project model | full run-all |
js |
JS surface and authored source package | package selftest + downstreams |
nodejs |
Node-style source package | package selftest + downstreams |
express |
Express-style source package | package selftest + downstreams |
tsbindgen |
generated CLR binding pipeline | generator tests + wave preflight |
dotnet / aspnetcore / microsoft-extensions / efcore* |
generated CLR binding packages | regen + downstream verification |
proof-is-in-the-pudding, tsumo, clickmeter, Jotster |
ecosystem consumers | downstream verification |
Downstream verification repos
These repos are part of the real quality bar, not just demos:
proof-is-in-the-puddingtsumoclickmeter- Jotster
They matter because they exercise:
- real package graphs
- real generated projects
- runtime startup and request handling
- end-to-end integration with generated bindings
Current public mental model
Going forward, the correct explanation is:
- authored public packages are first-party TypeScript source packages
- CLR-facing packages are generated by
tsbindgen - the ecosystem is released as a verified wave, not as isolated repo islands