ts-simple-type
telefunc
ts-simple-type | telefunc | |
---|---|---|
3 | 11 | |
35 | 609 | |
- | - | |
0.0 | 9.1 | |
about 1 year ago | 9 days ago | |
TypeScript | TypeScript | |
MIT License | 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.
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...
telefunc
-
tRPC – Move Fast and Break Nothing. End-to-end typesafe APIs made easy
Compared with tRPC: https://github.com/brillout/telefunc/issues/9
-
GraphQL vs. REST APIs: a complete guide
For JavaScript based projects TeleFunc[1] can make development way simpler by 'removing' the need for an API.
[1]: https://telefunc.com/
-
Next, Nest, Nuxt Nust?
- api routes (cloud functions) require another package (on purpose). see https://telefunc.com/ from the same maintainer
other than that, no gatchas i encountered. i would choose vite-plugin-ssr again.
-
Is there a library or a standard way of creating an interface for my api endpoints?
Another suggestion to solve your problem could be to use telefunc
-
Remote Functions. Instead of API
> My experience was that for the simplest use cases, the ergonomics were unbeatable.
Exactly.
> the “just a function” interface was a distraction and I found myself wishing for a more conventional RPC interface.
For real-time use cases, I agree. I believe functions are the wrong abstraction here for real-time. I do plan to support real-time but using a "it's just variables" abstraction instead, see https://github.com/brillout/telefunc/issues/36.
> cleverer abstractions usually mean more work overall to integrate everything and boring is better.
Yes, Telefunc's downside is that it requires a transformer. The Vite and Webpack one are reliable and used in production (using `es-module-lexer` under the hood). The hope here is that, as Telefunc's popularity grows, more and more stacks are reliably supported. Also, there is a prototype using Telefunc without a transformer at all, which works but needs polishing.
> I experimented with a higher-magic version of this a couple of years ago.
Neat, curious, is it on GitHub?
-
End-to-end type safety with tRPC (example repository)
An alternativeto tRPC that I find easier to use is telefunc
What are some alternatives?
fern-java - Generate Java models, clients, and server interfaces from your API definition.
electron-trpc - Build type-safe Electron inter-process communication using tRPC
ts-to-zod - Generate zod schemas from typescript types/interfaces
vike - 🔨 Like Next.js / Nuxt but as do-one-thing-do-it-well Vite plugin.
stytch-t3-example - An example app demonstrating how to use Stytch within the T3 stack
tRPC-example - e2e type safety with tRPC
vellum-client-python - Python SDK for Vellum API
wundergraph - WunderGraph is a Backend for Frontend Framework to optimize frontend, fullstack and backend developer workflows through API Composition.
vellum-client-generator - Vellum’s Fern API which is used to generate SDKs.
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.
spartan-schema - Ultra-minimal JSON schemas with Typescript inference
phero - Full-stack type-safety with pure TypeScript