laminar
laminar | typespec | |
---|---|---|
1 | 8 | |
2 | 2,851 | |
- | 21.3% | |
8.3 | 9.7 | |
2 months ago | 6 days ago | |
TypeScript | TypeScript | |
GNU General Public License v3.0 or later | 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.
laminar
-
Write OpenAPI with TypeSpec
Yeah also schema-first here. I think this is the “easy vs simple” debate all over again.
Writing code first schema is very easy, but when you start _using_ that api as part of a greater system is where the approach starts falling short.
Schema first allows for great communication between teams - one team requires changes to an api service, they can hash it out with the api, and then go back and implement both the client _and_ server simultaneously.
The great benefit here is the inevitable back-and forth can be done together, as each side might need to adjust the api while they are implementing the client/server as often happens with engineering efforts. And thats a lot easier to do while each side is working on it rather than the usual one side is “done” and moves to another task and needs to go back and modify.
In fact at the time I built quite a nice system of generating typescript types for both client and server - https://github.com/ivank/laminar
I guess because the project tried to introduce strong typing and fp style to node http servers plus a few other ideas stolen from here and there, it tried to do too much and never really got traction.
typespec
-
Write OpenAPI with TypeSpec
It does not exist, but it will be worked on fairly soon. You can track progress on GitHub [1]. It will be as you suggest - a one time conversion, after which you can iterate. We have this workflow for inside Azure, but the converter is Azure-specific (e.g. converts to TypeSpec that uses our extensive Azure-specific component library). It will take a bit to generalize.
[1]: https://github.com/microsoft/typespec/issues/3038
- TypeSpec
-
Write SDK “base” in Rust, wrap in other languages?
Afaik there's nothing that's widely used and of which I'd say I prefer it. But I'm having hopes for https://github.com/microsoft/typespec (former cadl). The reason being that yaml/JSON specs get huge very quickly, OpenAPI has to fight with restrictions of yaml/JSON ($refs, splitting up into files, oneOf, etc.) and tooling is ok but not great.
-
Ask HN: Why is there no specification for Command Line Interfaces?
You've touched on some use cases I've thought about and led me to ask the question.
I also recently saw Microsoft take a higher level approach with CADL/Typespec: https://microsoft.github.io/typespec/ which could be cool if it reaches wide adoption.
- Cadl
- Cadl: a language to describe APIs and generate schemas
- Cadl: A language to describe APIs and generate schemas
-
Cadl: a new IDL
This one just crossed my feed today: Cadl, "... a language for describing cloud service APIs and generating other API description languages, client and service code, documentation, and other assets."
What are some alternatives?
guardrail - Principled code generation from OpenAPI specifications
libninja - Generate client libraries that are featureful, human, well-documented, and async based on OpenAPI specs
core-crypto - MLS/Proteus multiplexer abstraction with encrypted persistent storage in Rust
rutie - “The Tie Between Ruby and Rust.”
connexion - Connexion is a modern Python web framework that makes spec-first and api-first development easy.
wasmer - 🚀 The leading Wasm Runtime supporting WASIX, WASI and Emscripten
vcr - Record your test suite's HTTP interactions and replay them during future test runs for fast, deterministic, accurate tests.
cli-guidelines - A guide to help you write better command-line programs, taking traditional UNIX principles and updating them for the modern day.
uniffi-rs - a multi-language bindings generator for rust
nballerina - Ballerina compiler that generates native executables.
jsii - jsii allows code in any language to naturally interact with JavaScript classes. It is the technology that enables the AWS Cloud Development Kit to deliver polyglot libraries from a single codebase!
cobra - A Commander for modern Go CLI interactions