crosswalk
ts-simple-type
crosswalk | ts-simple-type | |
---|---|---|
3 | 3 | |
85 | 35 | |
- | - | |
0.0 | 0.0 | |
about 2 years ago | about 1 year ago | |
TypeScript | TypeScript | |
- | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
crosswalk
-
TypeScript and SQL: Six Ways to Bridge the Divide
The lack of RTTI in TypeScript _is_ definitely a pain but the jump to "must use decorators" and "TypeScript is not a server language" is unjustified. There are many approaches to validation and RTTI with TS. For example, you can generate JSONSchema from your TS types (see https://github.com/danvk/crosswalk for an example of this approach) or you can use a tool like Zod (https://zod.dev/) to declare your schemas as runtime values and derive TS types from those.
Writing your backend in Java or C# comes with its own issues, i.e. you can't share code between backend and frontend.
-
tRPC – Move Fast and Break Nothing. End-to-end typesafe APIs made easy
I built something that sounds very similar at my last company called crosswalk. Open sourced here: https://github.com/danvk/crosswalk
One thing that worked surprisingly well: codegen TypeScript types from your database and use those in your API schema.
- recommended design pattern for TS+express?
ts-simple-type
-
tRPC – Move Fast and Break Nothing. End-to-end typesafe APIs made easy
We use an internal validator library that we infer request types from. It’s similar to Zod (but also predates it by a year).
I’ve also spent some time on a Typescript type to X compiler. My first prototype is open source and targets Thrift, Proto3, Python, and JSON schema: https://github.com/justjake/ts-simple-type/tree/main/src/com...
I’m not happy with the design decision in that codebase to try to “simplify” Typescript types before compiling, and probably won’t continue that implementation, but we have a few internal code generators that consume TS types and output test data builders and model clases we use in production.
- Ezno
-
Ultra-minimal JSON schemas with TypeScript inference
After some frustration with the TypeScript schema library ecosystem, I've decided that I'd prefer to declare my types using TypeScript's excellent type syntax, so I can take advantage of generics, mapped types, etc. Then, I'll take those TypeScript types and compile them to whatever alternative schema format I need.
There are many libraries that claim to convert your Typescript types to other formats, such as ts-json-schema-generator, ts-to-zod, or typeconv/core-types-ts. These libraries work by interpreting the Typescript AST, essentially re-implementing a bare-bones type system from scratch. Most do not support advanced Typescript features like generic application, mapped types, or string literal types. So, what's the point? To avoid those limitations, I use Typescript's first-party ts.TypeChecker API to analyze types, and an existing library called ts-simple-type (which I've forked) to convert from ts.Type to a more usable intermediate format. Then, I recurse over the intermediate format and emit "AST nodes". It's pretty simple, but seems promising.
So far, I have compilers from TypeScript type to Python 3 and Thrift. But I plan to add OpenAPI/JSONSchema, Protobuf (Proto3), Kotlin, Swift, and maybe Zod and Avro. Each target language is around ~300 LoC so they're pretty easy to put together.
Repo: https://github.com/justjake/ts-simple-type
Compiler input and output: https://github.com/justjake/ts-simple-type/blob/jake--compil...
Thrift compiler: https://github.com/justjake/ts-simple-type/blob/jake--compil...
Python compiler: https://github.com/justjake/ts-simple-type/blob/jake--compil...
What are some alternatives?
vellum-client-generator - Vellum’s Fern API which is used to generate SDKs.
fern-java - Generate Java models, clients, and server interfaces from your API definition.
sdk-node - Node.js SDK for the Squidex API
telefunc - Remote Functions. Instead of API.
oto - Go driven rpc code generation tool for right now.
ts-to-zod - Generate zod schemas from typescript types/interfaces
zact - Nothing to see here
stytch-t3-example - An example app demonstrating how to use Stytch within the T3 stack
vellum-client-python - Python SDK for Vellum API
ts-websocket-compressor - This library compresses data sent over a WebSocket connection to improve throughput on devices that can't use compression for one reason or another.