3 ms·
anything I could read to imitate that workflow ?
by agumonkey 1y ago
anything I could read to imitate that workflow ?
- crabmusket 1y agoI haven't written anything up - maybe one day - but our stack is `ts-morph` to get some basic metadata out of our "service definition" typescript files, `ts-json-schema-generator` to go from there to JSON Schema, `quicktype-core` to go to other languages. Schema validation and type generation vary by language. When we need to validate schemas in JS/TS land, we're using `ajv`. Our generation step exports the JSON Schema to a valid JS file, and we load that up with AJV and grab schemas for specific types using `getSchema`. I evaluated (shallowly) for our use case (TS/JS services, PHP monolith, several deployment platforms): - typespec.io (didn't like having a new IDL, mixes transport concerns with service definition) - trpc (focused on TS-only codebases, not multi language) - OpenAPI (too verbose to write by hand, too focused on HTTP) - protobuf/thrift/etc (too heavy, we just want JSON) I feel like I came across some others, but I didn't see anyone just using TypeScript as the IDL. I think it's quite good for that purpose, but of course it is a bit too powerful. I have yet to put in guardrails that will error out when you get a bit too type happy, or use generics, etc.
- agumonkey 1y agoCan't thank you enough. I'm gonna try these and see.
- crabmusket 1y agoOne day I hope to publish this as a tool, or at least parts of it. But you know, that won't put food on the table.