trpc-openapi
typescript-runtime-type-benchmarks
trpc-openapi | typescript-runtime-type-benchmarks | |
---|---|---|
11 | 33 | |
2,050 | 582 | |
4.4% | - | |
3.5 | 9.8 | |
about 2 months ago | 2 days 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.
trpc-openapi
-
Create Production-Ready SDKs for tRPC
tRPC does not natively export OpenAPI documents, but the trpc-openapi package adds this functionality. We'll start this tutorial by adding trpc-openapi to a project, and then we'll add a script to generate an OpenAPI schema and save it as a file.
-
Using OpenAPI to Detect Breaking Changes in tRPC
While trpc-openapi originally was used to expose REST endpoints of the tRPC router, we will use it to generate an OpenAPI specification for our API.
-
tRPC – Move Fast and Break Nothing. End-to-end typesafe APIs made easy
Sure it can, you can use https://github.com/prosepilot/trpc-openapi
-
Will you, and when will you, use trpc in your code?
You either have to go with react native or use https://github.com/jlalmes/trpc-openapi to generate rest endpoint using trpc. lol. Not sure how good the trpc-openapi package is though. Read somewhere it was missing stuff
-
Is tRPC redundant with SvelteKit?
As for exposing the API externally, neither (can) limit this but SvelteKit's API is generally considered to be an internal implementation detail that you don't use directly since it might change between versions. If you want to expose an API you should choose tRPC, probably alongside the OpenAPI plugin or something similar.
-
[AskTS] What do you think will be the future of runtime type checking?
In essence, features of the language made for static type checking at compilation are possibly being left favour of tools that act like a superset of the language that provide the static build type checking and offer runtime type checking too. An example I recently saw was the trpc-openapi package which uses Zod for creating the types of the schema for the http request and responses, it takes a zod schema as that is what it can use when compiled to JavaScript to generate the types for the openapi file at runtime, there's scarcely a type or interface in sight when using it but you have full type safety.
-
Help me get out of stack hell
Take a look at https://github.com/jlalmes/trpc-openapi which will give you a rest endpoint based on your trpc router. Ymmv in reality but basically this should give you some confidence that your trpc router can be called from another client (not just next).
-
Full-Stack TypeScript with tRPC and React
Ok thanks, I did find a good example here https://github.com/jlalmes/trpc-openapi/blob/master/examples/with-nextjs/src/server/router.ts
-
Why we ditched GraphQL for tRPC
There is an OpenAPI Extension for tRPC that can be used to create a more REST-like API from your procedures, and that in turn can be used for auto-generating documentation. But if my app needed to offer third-party API access, I would likely reach for GraphQL again.
tRPC is nice because you have type safety the whole way down. Someone has made a tRPC OpenaAPI for exposing tRPC procedures externally in the OpenAPI format https://github.com/jlalmes/trpc-openapi
typescript-runtime-type-benchmarks
-
TypeScript please give us types
Has been heavily optimized, both in terms of its types and runtime performance. Even including the static parser, many types are about an order of magnitude more efficient than equivalent Zod. Early results show it as marginally faster than any validator currently published to typescript-runtime-type-benchmarks, not including more complex cases where (2) would give ArkType a much more significant advantage.
-
What are some of the best libraries you cannot work without?
Zod is a bit of an underdog but it is not fast, AJV which is slightly more common can validate and generate types too but requires using JSON syntax, TypeBox offers familiar syntax to Zod while still being JSON syntax in the background.
-
[AskTS] What do you think will be the future of runtime type checking?
First, they're not fast (runtime type checking benchmarks).
-
Typescript really hits the middle ground between extremely rigid statically typed languages on one extreme and no types at all dynamic languages on another extreme. Best type system
Aha, so you're using a library in Java for this. You know about libraries in TS for this, there are plenty of them btw, but you don't use them because it's so easy. Express has `any` type for `req.body` because authors don't care about this either and it's so easy. And TypeScript is the one to blame in that you prefer to work with `any` type for incoming data rather than validating it.
-
TypeBox: Runtime Type System Built on Industry Standards
It is so much faster than Zod that Zod basically doesn't show, https://moltar.github.io/typescript-runtime-type-benchmarks/ and according to bundlejs, https://bundlejs.com/?q=zod%2Czod%2C%40sinclair%2Ftypebox&treeshake=%5B*%5D%2C%5B%7B+default+%7D%5D%2C%5B*%5D&config=%7B%22analysis%22%3Atrue%7D, it is even smaller. I genuinely have no clue why Zod is this popular in 2023.
- What’s your favourite validation library?
-
TypeBox: Template Literals + Conditional Types at Runtime
TypeBox is a bit different to other libraries in this space where it's mostly intended to be used with a auxiliary JSON Schema validator. Although it provides a built in JSON Schema compiler (which is currently the fastest (not-AOT) runtime validator available for JavaScript today), it's equally intended to be used with validators like Ajv (or any other standards compliant validator)
-
Introducing ArkType: The first isomorphic type system for TS/JS
I do plan to add some direct comparisons to https://github.com/moltar/typescript-runtime-type-benchmarks as well but haven't had a chance yet.
-
Is using zod as the primary source of truth for Typescript types sensible/sustainable?
I think it's more of a case of the extremely low performance bar that's been set by the status quo (for even the simplest of validation structures). There's been a lot of focus on the TS type inference, and less on the runtime performance (which actually matters more as it does reduce operational costs). It probably wouldn't be such an issue if the performance was reasonable, but I mean here's the full breakdown https://moltar.github.io/typescript-runtime-type-benchmarks/.
-
Best schema validator for intellisense performance?
I found a benchmark for runtime performance, but I haven't found any for intellisense/editor performance.
What are some alternatives?
spot - Spot is a concise, developer-friendly way to describe your API contract.
napi-rs - A framework for building compiled Node.js add-ons in Rust via Node-API
create-t3-app - The best way to start a full-stack, typesafe Next.js app
zod - TypeScript-first schema validation with static type inference
trpc-fe-boilerplate-next - ⚒️ Minimal tRPC frontend Nextjs boilerplate for separate BE-FE repositories. Easily consume fully typesafe APIs.
MikroORM - TypeScript ORM for Node.js based on Data Mapper, Unit of Work and Identity Map patterns. Supports MongoDB, MySQL, MariaDB, MS SQL Server, PostgreSQL and SQLite/libSQL databases.
openapi-typescript - Generate TypeScript types from OpenAPI 3 specs
.NET Runtime - .NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
ttype-safe - TypeScript runtime type validator generator that creates validation functions from TypeScript types with custom validation rules defined using JSDoc comments.
Wren - The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language.
bisonapp - A Full Stack Jamstack in-a-box brought to you by Echobind
Prisma - Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB