Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
ForgJs – A lightweight object validator (github.com/oussamahamdaoui)
38 points by forg_js on Dec 3, 2018 | hide | past | favorite | 16 comments


This is very cool, but I highly recommend using a standard like JSON schema instead. It will make your life easier long term. The initial hurdle of learning may be harder, but lots of libraries/languages support JSON schema.

If you are using typescript, I highly recommend using a generator to create JSON schema definitions. This one has worked really well recently https://github.com/YousefED/typescript-json-schema


Been using runtypes and it works well enough, but now I'm wondering if this may be a smarter option.


With two mature packages doing the same: Joi & ajv. What made you write this?

https://www.npmjs.com/package/joi

https://www.npmjs.com/package/ajv



Once forg has more features, won't it be bigger as well?


Not if their goal is to be “lightweight” like they say it is.


Very nice API. I do have a question, and not to be dismissive, but is there a strong reason to use Forg over Validatejs. The APIs are pretty similar so I don't know what I would choose Forg over ValidateJS.

Some things to address:

* Typescript definitions

* ES/6 import documentation

* There are a lot of tiny typos in the readme, it would make sense to spell check that.

Thanks for the contribution.


Thank you, i tried to fix typos but im sure some are left. I dont think that there is a strong reason, I just wanted a modern lightweight validation library where rules are easy to write and closer to buisness rules


Out of curiosity, why have a singular Rule class that has a type (with internal branching logic based on that field), rather than separate Rule classes for each type of Rule, with Rule being a base class that users can extend to define their own rules?


Very cool idea. Something I would enjoy using is a shorthand syntax for validation rule object declarations eg:

new Validator = ({ age: 'int 22-48' });

If memory serves you can parse that type of string in the Validator constructor and insert the Rule structures you already have in place of it.


I can't make this possible becacuse if there are nested objects forgjs cant make the diference between a rule and a value


I've found https://github.com/ianstormtaylor/superstruct to be really flexible/powerful.


Any attributes for required/optional fields?


by default every value is required, until optional is set to true


anything like this for Python?





Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: