Basically YAGNI... but slightly over-inflated complaint in context. It's a large reason to suffix promise returning functions with "Async" as well as, when shimming async funcitons, just return Promise.resolve(value) if your intent is to actually replace async. Will also inject an await delay(1) inside such methods to force the intent.
const delay = (ms:number) => new Promise(r => setTimeout(r, ms));
Needs somw work... template strings are in JS, and the use of zod example should probably mention the library. Similar for the call at the end, give a zod validated example.
I may add methods like...
User.fromJSON = (json:string): User {
// parse
// validate or throw
// return User
}
For clearer data handling from untrusted sources. Using a FE/BE shared definitions and validation library even.
Still kinda cool... I've thought about using a similar approach to using a server-side state machine, where each node simply gets the diffs via wss. This way a centralized state machine can be used for interactive games, training courses, etc... without directly exposing the state transition logic, only the result stream and a validated input path.
Lately I just use docker compose with caddy, and have each sub-app running in .watch mode against the source directory.
This does work too though, and if you're in control of the full codebase and don't have other local dependencies (database, redis, etc), then this may be better.
Source is linked from the article towards the bottom.
Interesting... Haven't needed to do this in a while, and frankly try to avoid it, but it can help when you need certain components to match across a corporation/organization in a consistent way with live updates.
Not 100% sure on the live updates without a publish, or if this just caches/forward the federated components, it's still interesting.
Needs somw work... template strings are in JS, and the use of zod example should probably mention the library. Similar for the call at the end, give a zod validated example. I may add methods like... User.fromJSON = (json:string): User { // parse // validate or throw // return User } For clearer data handling from untrusted sources. Using a FE/BE shared definitions and validation library even.