js-lib
js-lib copied to clipboard
feat: make `j` rules immutable
In this PR, I showcase one pattern to make j immutable: with decorators on every method that mutates this.schema.
Why immutability? To avoid such issues:
export const mySchema = j.object({ ... })
// someone else
import { mySchema }
const schema = mySchema.optional() // <-- this makes `mySchema` optional **everywhere**